mirror of
https://github.com/volcengine/OpenViking.git
synced 2026-10-01 09:48:03 +08:00
cli@0.4.14
6
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
c61471ddc4 |
fix(deploy): harden bot and server deployment configuration (#3547)
* fix(bot): only require VKE credentials when the TOS storage path needs them Sweep findings: C-14. Gate AK/SK validation on an actual TOS deployment and drop the unused cluster ID. (cherry picked from commit |
||
|
|
bb22bac435 | fix(security): remove stale critical dependency locks (#2242) | ||
|
|
437cf314f1 |
fix(deploy): Helm readiness probe 改用 /ready 端点 (#1884)
K8s readiness probe 应使用 /ready 端点区分进程存活和可服务流量。 /ready 检查 AGFS、VectorDB、APIKeyManager 等子系统健康状况。 livenessProbe 保持不变继续使用 /health。 |
||
|
|
21854b5c58 |
feat(observability): add response feedback tracking to openapi (#1660)
* feat(observability): add response feedback tracking to openapi Persist response, feedback, and outcome signals so OpenAPI clients can attach stable feedback to assistant replies. Sync the same business events to Langfuse to make Q&A effectiveness observable across restarts. * refactor: remove response tracking and feedback features This commit removes the response tracking, feedback submission, and Langfuse integration features. The changes include: - Removing ResponseCompletedEvent and related response_id fields - Removing feedback models and endpoints - Removing Langfuse client integration - Simplifying the OpenAPI channel by removing response persistence - Updating tests to reflect these removals * docs: align feedback observability design with current implementation * feat(bot): implement phase 1 feedback observability primitives * feat(bot): add explicit feedback submission flow * feat(bot): add phase 3 response outcome evaluation * style: clean up imports and fix code style issues - remove unnecessary blank lines - reorder imports to follow conventions - fix string formatting in logging - group related imports together - fix import ordering in multiple files * refactor: remove unused abstract attribute and update config type Remove unused abstract attribute from MemoryStore and update config parameter type in resolve_require_mention to MochatChannelConfig for better type clarity * feat(observability): rename abandoned to follow_up_without_feedback for clarity refactor(session): add session locking and metadata merging - Implement per-session file locks to prevent concurrent write conflicts - Add metadata merging logic to preserve existing data during updates - Introduce update_session method for atomic read-modify-write operations fix(agent): skip outcome evaluation for heartbeat messages |
||
|
|
1b175344e8 |
Feature/vikingbot_opt: OpenAPI interface standardization;Feishu multi-user experience; observability enhancements; configuration system modernization. (#419)
* feat: add ov chat command and refactor channel architecture - Add ChatChannel for interactive chat with User:/Bot: labels and thinking display - Add SingleTurnChannel for one-off -m mode with minimal output - Add StdioChannel for JSON-based IPC with Rust TUI - Rename 'vikingbot agent' to 'vikingbot chat' - Add Python 'ov chat' command that proxies to vikingbot chat - Add Rust 'ov chat' command that proxies to vikingbot chat - Refactor ChannelManager to support both config and direct channel addition - Update event types for better thinking/tool_call/tool_result display - Default session key: cli__chat__default * feishu channel opt * feishu channel opt * fix: IM channels only process RESPONSE messages - Update feishu, dingtalk, discord, email, qq, slack, telegram, whatsapp - Add filter in send() to skip thinking/tool_call/tool_result messages - Only process is_normal_message (RESPONSE type) * feat(tracing): add abstract trace decorator for session-aware observability - Add vikingbot/utils/tracing.py with backend-agnostic @trace decorator - Use ContextVar for session_id propagation through nested calls - Implement lazy binding to Langfuse via propagate_attributes - Update AgentLoop._process_message() to use @trace decorator - Simplify langfuse initialization logging in commands.py - Add session_id parameter to litellm_provider.chat() - Clean up redundant code in utils/helpers.py The trace decorator abstracts observability concerns, allowing future switching between Langfuse, OpenTelemetry, or other backends without modifying business logic. 🤖 Generated with [Claude Code](https://claude.com/claude-code) * feat: add tracing base on langfuse * 1. feishu channel opt 2. support multi users * 1. feishu channel opt 2. support multi users * 1. feishu channel opt 2. support multi users * fix(langfuse): use module-level propagate_attributes from SDK v3 The propagate_attributes function is a module-level export in Langfuse Python SDK v3, not a method of the Langfuse client instance. - Import propagate_attributes from langfuse module - Remove misleading warning when propagate_kwargs is empty - Reduce log noise by changing info logs to debug Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * refactor: unify workspace_id naming and improve tracing integration Standardize terminology and clean up tracing/Langfuse integration: - Rename sandbox_key to workspace_id across agent, memory, and tools - Delete deprecated langfuse_decorator.py (superseded by tracing.py) - Fix Langfuse v3 SDK propagate_attributes usage (module-level function) - Improve session_id extraction with better signature inspection - Reduce log noise in Langfuse attribute propagation Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * 1. feishu channel opt 2. support multi users * feat(tracing): add user_id extraction support for Langfuse Add extract_user_id parameter to @trace decorator to enable user tracking in Langfuse. This allows grouping traces by user in the UI. - Add extract_user_id parameter to @trace decorator - Extract user_id from InboundMessage.sender_id - Pass user_id to Langfuse propagate_attributes - Update loop.py to use new lambda style for session_id extraction Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix http server * fix http server * fix http server * fix(langfuse): change propagate_attributes log level to info * feat(tracing): add @observe decorator to create Langfuse traces * fix(tracing): apply @observe at decoration time, not runtime * fix http server * fix(tracing): add detailed diagnostics for Langfuse client status * fix(langfuse): add diagnostic logging for client initialization * fix(langfuse): add diagnostic logging for config check * 飞书chat * opt http client * docs(readme): add Langfuse observability configuration guide * opt http client * opt http client * opt http client * opt http client * opt http client * fix(langfuse): fix token reporting to use usage_details format - Change usage to usage_details for Langfuse v3 SDK compatibility - Add support for cache_read_input_tokens (OpenAI/Anthropic prompt caching) - Add logger import and debug logging for token reporting Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * opt http client * eval command * eval command * eval command * md * cleanup(tests): remove obsolete test suite and related docs Remove the entire legacy test suite including: - Unit tests (test_agent, test_bus, test_channels, test_config) - Integration tests (test_agent_e2e) - Test fixtures, utilities, and OpenSpec config - Test runner tools (tester/) These tests were outdated and no longer maintained. Future testing should use a modern testing framework. * docs(readme): update configuration paths and chat examples - Update default config path to ~/.openviking/ov.conf - Add interactive chat mode examples (--no-markdown, --logs flags) - Remove VKE deployment guide section - Update Docker volume mount paths * docs(agent): add comprehensive docstrings to core classes Add detailed Google-style docstrings to: - AgentLoop.__init__() - parameters and examples - AgentLoop._publish_thinking_event() - event publishing - ToolContext - all attributes documented - Tool base class - complete usage example Improves code maintainability and IDE support. * feat(server): add bot API proxy support and CLI integration Server changes: - Add --with-bot flag to enable Bot API proxy - Register bot_router at /bot/v1 prefix - Add bot_api_url configuration option - Initialize bot proxy in bootstrap process CLI changes: - Update ov chat endpoint to /bot/v1/chat - Fix UTF-8 input handling - Add endpoint configuration via env var * feat(core): improve agent tools, tracing and session management - Enhance tool registry with better error handling - Update OpenAPI channel configuration - Improve session manager with better state handling - Enhance Langfuse tracing integration with diagnostic logging * feat(cli): add agent tools and improve CLI commands - Enhance CLI commands with new agent tool integration - Move plugin analysis doc to docs directory - Add RFC for OpenViking CLI ov-chat command - Add server restart script Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: DuTao <dutao.1786@bytedance.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: fujiajie.1030 <fujiajie.1030@bytedance.com> |
||
|
+6 |
006a06f5db |
feat/vikingbot: viking bot mvp based on openviking (#335)
* init vikingbot * fix sandbox bug * fix sandbox bug * fix sandbox bug * 默认关闭沙箱 * update * chore: add .gitignore for Node.js project Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai> * feat: Improve workspace management and sandbox behavior - Change default workspace to ~/.vikingbot/workspace/default - Lazy initialize workspace (create on first use, not on onboard) - Sandbox directories are parallel to default/ directory - Sandbox copies templates from source workspace directly - Pre-create sandbox directory when conversation starts - Add get_sandbox_parent_path and get_source_workspace_path helpers - Update SandboxManager to accept source_workspace_path - Update ContextBuilder for lazy initialization - Update onboard command to not create workspace upfront - Update gateway and tui commands for new sandbox behavior - Fix WebSearchTool import (from websearch module, not web) - Restrict to workspace default value changed to true * feat: Multiple feature enhancements ## New Features ### Workspace & Sandbox Improvements - Change default workspace to ~/.vikingbot/workspace/default - Add lazy initialization (create workspace on first use) - Make sandbox directory parallel to default in workspace/ - Copy templates and skills from source workspace instead of main workspace - Create sandbox directory early on conversation start - Change restrict_to_workspace default to true - Ensure ContextBuilder/MemoryStore/SkillsLoader read from sandbox when enabled ### WebSearch Tool - Add WebSearchTool using ddgs library - Add websearch/ tool directory with implementation - Add tests/test_websearch.py - Add ddgs dependency to pyproject.toml ### New Tools - Add ImageTool for image processing - Add MemoryTool for memory management ### Channels - Add multi-channel support design documentation (specs/04-channels.md) - Update all channel implementations for multi-channel support - Update channel manager - Update base channel class ### Docker & Build - Move Dockerfile to docker/ directory - Add docker/ directory with build files - Add package.json/package-lock.json for Node.js dependencies - Add srt-wrapper.mjs for SRT backend ### Scripts Organization - Create scripts/ directory - Add clean_vikingbot.py cleanup script - Add README_CLEANUP.md documentation - Remove core_agent_lines.sh (moved or deprecated) ### Skills - Add github-proxy skill - Update skills/README.md ### Agent Enhancements - Update AgentLoop max_iterations from 20 to 50 - Add vikingbot/agent/agents/ directory - Update subagent implementation - Update filesystem/shell/web tools - Update config loader - Update SRT sandbox backend - Update session manager ### Specs & Documentation - Update specs/02-agent.md (max_iterations) - Add multi-channel design to specs/04-channels.md * 完善沙箱工具测试及策略优化 - 新增沙箱工具单元测试(test_sandbox_tools.py) - 优化ExecTool安全策略:沙箱模式下跳过本地安全守卫 - 更新spec文档说明路径处理和删除文件策略 - 更新现有测试以匹配实际代码结构 * 修改沙箱默认策略:allowWrite默认为["/"] - 允许沙箱内文件的写入/删除操作 - 提高沙箱使用便利性 * 修复沙箱安全漏洞:限制allowWrite为沙箱工作目录 - 移除默认allowWrite: ["/"]的危险配置 - 在SRT后端动态添加沙箱工作目录到allowWrite - 确保只能操作沙箱内的文件,防止访问宿主机文件系统 * 更新spec文档:说明沙箱文件系统安全策略 - 说明SRT后端动态添加沙箱工作目录到allowWrite - 明确沙箱内可操作、沙箱外被阻止的行为 - 记录默认配置为空列表,无需手动配置 * 默认开放/tmp目录权限给沙箱用户 - 在SRT后端动态添加/tmp到allowWrite - 沙箱用户可以在/tmp目录下创建临时文件 * 添加VikingBot Gateway启动脚本 - 自动激活虚拟环境 - 自动kill旧进程 - nohup后台启动并输出日志到~/logs/output.log - 自动tail日志文件 * 自动继承NODE_PATH环境变量到SRT沙箱进程 - 在启动SRT进程时传递完整的环境变量 - 确保@anthropic-ai/sandbox-runtime能被正确找到 * feat: 添加Console Web UI和部署配置 - 新增Console Web UI模块,基于FastAPI - 添加配置管理、会话管理、工作区文件浏览API - 集成HTMX前端,提供简洁的Web界面 - 新增deploy目录,包含本地、ECS、VKE部署配置 - 重构docker目录结构,移动到deploy/local - 更新spec文档,添加13-console.md - 更新飞书通道,支持图片消息接收 - 添加fastapi和uvicorn依赖 * feat: improve deployment configuration and add TOS support - Add UV_HTTP_TIMEOUT to Dockerfile - Change service port from 18790 to 18791 - Add health check endpoints to liveness/readiness probes - Add TOS storage configuration and PV/PVC creation logic - Add command timeout handling in vke_deploy.py Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai> * feat: improve console server and auto-onboard logic - Refactor onboard command to extract _run_onboard_logic - Add auto-onboard in gateway command when config not found - Add /health and /healthz endpoints for Kubernetes probes - Change default host from 127.0.0.1 to 0.0.0.0 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai> * fix: correct path construction in workspace API and frontend - Fix relative path construction in list_files API - Fix file path construction in frontend index.html Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai> * feat: multiple improvements including media storage and session workspace ## 改动 1:媒体文件保存位置改为 workspace/media - 改动:所有频道(Feishu, Telegram, Discord)现在将媒体文件保存到 workspace/media 目录,而不是 ~/.vikingbot/media - 原因:媒体文件放在用户的 workspace 里面更合适,更容易管理和访问,也符合工作区的概念 ## 改动 2:Session workspace 初始化逻辑 - 改动:新增 session workspace 初始化逻辑,确保 ~/.vikingbot/workspace/{session_id} 目录在不存在时创建并复制模板,存在时跳过 - 原因:每个 session 应该有自己独立的 workspace,并且在创建时初始化模板文件(.md 和 skills 目录) ## 改动 3:其他改进 - Sandbox manager 改进 - SRT 后端改进 - Docker 配置更新 - Console UI 改进 - 新增 spec 文档 - 新增 .dockerignore Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai> * feat: 沙箱系统重构和优化 - 重构沙箱配置:去掉 enabled 开关,默认 backend 改为 direct,默认 mode 改为 shared - 新增沙箱后端:direct(直接执行)、opensandbox(Alibaba OpenSandbox)、aiosandbox(agent-sandbox SDK) - 优化 SRT 后端:文件操作通过 wrapper 进行,受沙箱规则保护;pwd 返回原始路径 - 优化 Direct 后端:重写文件操作方法,绝对路径直接使用 - 优化 AIO Sandbox 后端:修改路径处理,主目录可配置 - 移动 skills 目录:从 vikingbot/skills 移动到 workspace/skills,结构更清晰 - 更新 BUILTIN_SKILLS_DIR 路径:指向新的 workspace/skills 位置 - 更新 Console UI:去掉 Enable Sandbox 复选框,添加 Direct 选项 - 更新 Session Manager:去掉 enabled 检查,根据 mode 确保 workspace - 更新 Agent Loop:每次消息重新初始化 ContextBuilder 等组件,支持动态 workspace - 新增 spec 文档:16-sandbox-backends.md(沙箱后端配置指南)、17-vke-deployment.md(VKE 部署指南) - 删除旧 spec 文档:11-sandbox-integration.md、15-opensandbox-integration.md - 删除临时测试脚本:scripts/ 目录下的临时测试文件 - 更新测试文件:适配最新代码,MockBackend 添加缺少的方法 * feat: add html2text and beautifulsoup4 dependencies for HTML processing Adds html2text for HTML to Markdown conversion and beautifulsoup4 for HTML parsing, enabling richer content handling in Feishu channel. * feat: improve multi-channel matching logic in channel manager Supports matching channels by shorthand type name (e.g., 'feishu' matches 'feishu:cli_xxx') for better backward compatibility when multiple channels of the same type are configured. * feat: improve message tool default channel handling Adds better logic for handling the default channel, preferring the complete channel ID (including app_id) over shorthand when available, ensuring messages are sent to the correct channel when multiple channels of the same type are configured. * feat: add HTML to Markdown conversion and rich image support in Feishu channel Adds comprehensive HTML processing capabilities: - Image format validation using magic numbers to prevent uploading non-image content - HTML to Markdown conversion using readability-lxml and html2text - Markdown image extraction and upload to Feishu, with proper img element replacement - URL trailing punctuation stripping for more reliable downloads - Full support for rich content with images in Feishu interactive cards * feat: integrate OpenCode for enhanced AI capabilities Add OpenCode integration to enable more powerful AI features and code understanding. Why this change: - OpenCode provides advanced codebase analysis and session management capabilities - Enables better context understanding across sessions - Adds hooks system for extensibility What changed: - Added opencode-ai, beautifulsoup4, html2text dependencies - Implemented hooks system with Hook base class and HookManager - Added built-in OpenCode integration hooks - Added opencode_mount module for FUSE-based OpenCode data access - Added example files for hook integration - Added test files for OpenCode integration - Added OpenCode skill to workspace - Added hooks specification documentation Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai> * refactor: introduce SessionKey for multi-session isolation and better type safety Major refactor to replace channel:chat_id strings with SessionKey data structure. Why this change: - Original channel:chat_id string format was error-prone and not type-safe - Need proper isolation for multiple sessions from different channels - Enable per-session sandbox isolation - Better support for multiple instances of the same channel type What changed: - New SessionKey model with type, channel_id, chat_id fields (frozen for immutability) - Refactored InboundMessage and OutboundMessage to use SessionKey instead of separate channel/chat_id - Updated all channel implementations to use SessionKey - Refactored agent loop, context builder, and tools with SessionKey support - Added set_session_key() method to Tool base class for context-aware operations - Updated sandbox manager for per-session isolation - Refactored session manager to use SessionKey as key - Updated spec documentation (01, 02, 03, 04, 07) - Updated default model to openai/doubao-seed-2-0-pro-260215 - Changed default workspace to ~/.vikingbot/workspace/shared Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai> * chore: remove unused console screenshot files Remove vikingbot-console-dashboard.png and vikingbot-console-full.png which are no longer needed. Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai> * fix: adjust default config values Adjust default configuration values: - Change default workspace back to ~/.vikingbot/workspace - Increase heartbeat interval from 5 minutes to 10 minutes - Enable OpenCode hooks by default Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai> * feat: add default_skills config with all built-in skills Add default_skills configuration to AgentDefaults with all 9 built-in skills: opencode, github-proxy, github, memory, cron, weather, tmux, skill-creator, summarize. Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai> * opencode skill默认关闭 * 修改readme * 修复vikingbot agent和tui的爆粗9哦 * add openviking tools * add openviking tools * 优化hook * 优化hook * add openviking tools * add openviking tools * add openviking tools * add openviking tools * add openviking tools * support skill/tool memory * hooks提交一版 * hooks提交一版 * update * add openviking tools * add openviking tools * update readme * add openviking tools * add openviking tools * openviking memory * ov Server * ov Server * tools message * tools message * tools message * support skill memory * update part * refactor(deploy): 优化Docker部署配置 - 重构Dockerfile,优化构建流程和镜像大小 - 新增deploy/docker/Dockerfile,提供更灵活的构建配置 - 重构build-image.sh脚本,简化镜像构建流程 - 修改build-multiarch.sh,支持多架构构建 - 重构deploy.sh部署脚本,改进部署流程 - 新增docker-entrypoint.sh,优化容器启动流程 - 重构stop.sh脚本,改进容器停止逻辑 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai> * refactor(deploy): 重构VKE部署流程,移除Python脚本改用Shell - 移除README.md和VKE_DEPLOY_README.md文档 - 新增deploy.sh Shell脚本替代原Python部署脚本 - 移除test.sh测试脚本 - 简化vke_deploy.example.yaml配置文件 - 移除vke_deploy.py和vke_with_opensandbox_deploy.py Python脚本 - 整体简化VKE部署流程,使用Shell脚本替代Python实现 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai> * feat(agent): 增强Agent工具功能 - 修改context.py,优化上下文构建 - 修改tools/base.py,改进工具基类 - 修改tools/image.py,增强图像处理工具功能 - 修改tools/registry.py,优化工具注册机制 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai> * refactor(channels): 重构Channels模块,优化飞书渠道实现 - 重构base.py,改进基础Channel类实现 - 大幅重构feishu.py,优化飞书渠道的消息处理流程 - 重构utils.py,改进渠道工具函数 - 整体提升Channels模块的可维护性和性能 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai> * refactor: 优化Console和Hooks模块 - 修改console/console_gradio_simple.py,优化控制台界面 - 修改hooks/builtins/openviking_hooks.py,改进钩子实现 - 修改hooks/manager.py,优化钩子管理器 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai> * tools message * tools message * 添加从镜像安装的方法 * tools message * 添加从镜像安装的方法 * 版本限制不超过3.13(openviking 3.14上没有) * 版本限制不超过3.13(openviking 3.14上没有) * 版本限制不超过3.13(openviking 3.14上没有) * 版本限制不超过3.13(openviking 3.14上没有) * 版本限制不超过3.13(openviking 3.14上没有) * vikingbot * 优化图片生成逻辑 * vikingbot * vikingbot * vikingbot * vikingbot * vikingbot * 飞书图片部分优化 * update tool * vikingbot * feat(skill): support zip upload for add_skill API (#312) * feat(skill): support zip upload for add_skill API - Add temp_path field to AddSkillRequest model - Add zip extraction support in SkillProcessor._parse_skill() - Add smart dual-mode upload in AsyncHTTPClient.add_skill() This enables remote HTTP clients to upload skill directories as zip files, following the same pattern as add_resource. * feat(cli): add zip upload support for add_skill in Rust CLI - Add smart dual-mode upload in add_skill() (same as add_resource) - Fix missing auth headers in upload_temp_file() - Reuse build_headers() to avoid code duplication * feat(agfs): agfs新增binding client (#304) * feat(agfs): agfs新增binding client fix: viking_fs适配binding client, 简化agfs相关参数 * feat(agfs): agfs binding-client支持windows * docs: 补充agfs binding-client用法 * fix(agfs): 默认带上agfs binding-client依赖库; setup.py支持编译该库 * fix(agfs): add agfs binding-client linux so * fix(agfs): code format * fix(parser): remove redundant mkdir in DirectoryParser (#318) * fix: use original directory name for temp URI lookup in TreeBuilder (#319) _finalize_from_temp() applies sanitize_segment() to the temp document directory name (e.g. __test__ -> _test_), then uses the sanitized name to construct temp_doc_uri. However, the actual temp directory retains its original (unsanitized) name, causing FileNotFoundError during _move_temp_to_dest(). Use the original directory name for temp_doc_uri (locating the temp directory), while continuing to use the sanitized name for candidate_uri (the final destination URI). * fix: handle is_healthy() AttributeError when not initialized (closes #298) (#322) ObserverService.is_healthy() threw AttributeError when called before initialize() because self._config and self._vikingdb were None. - Add None guards to vikingdb and vlm properties returning unhealthy ComponentStatus instead of crashing - Add early return False in is_healthy() when dependencies not ready - Add 4 tests covering the uninitialized state Co-authored-by: r266-tech <r266-tech@users.noreply.github.com> * feat(docs,ci): 完善云上部署文档与 Docker CI 流程 (#320) - release workflow 新增 Docker 镜像构建推送至 GHCR - 重写 examples/cloud/GUIDE.md 云上部署指南,补充架构概览、systemd/Docker/Helm 三种部署方式、多租户管理、FAQ 等章节 - ov.conf.example 占位符改为 <your-xxx> 格式,移除 rerank 配置 - 中英文部署文档(docs/zh|en/guides/03-deployment.md)对齐:Docker 改用 GHCR 预构建镜像,Kubernetes 改用 Helm chart,并引用 GUIDE.md Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> * fix(agfs): import AGFSBindingClient error不阻塞http client使用 (#324) * feat: Enhance add-resource functionality in cli and add unit tests (#323) * tests(parsers): add unit tests for office extensions within add_resource directory * feat: enhance add-resource functionality with new options - Updated CLI commands to support additional parameters: --ignore-dirs, --include, --exclude, and --no-directly-upload-media. - Modified resource processing to handle new parameters for directory scanning and file inclusion/exclusion. - Improved README documentation for CLI usage and examples. This update allows for more flexible resource management and better control over file uploads. * feat(cli): enhance add-resource command with new options - Added support for additional parameters: --no-strict, --ignore-dirs, --include, --exclude, and --no-directly-upload-media. - Updated the handling of resource addition to accommodate new options for improved directory scanning and file management. - Enhanced README documentation with examples for the new functionality. This update provides users with greater flexibility in managing resources. * chore(cli): remove unused cargo feature for edition 2024 in Cargo.toml * chore(pyproject): update tag_regex in setuptools_scm configuration for version parsing * feat: expose session(must_exist) and session_exists() on public API (#321) The internal Session.exists() and SessionService.get() (added in #235) provide session existence checks at the service layer, but these are not accessible through the public client API (BaseClient and its implementations). This commit exposes two opt-in mechanisms at the public API level: 1. session(must_exist=True) — raises NotFoundError if the session directory does not exist. Default must_exist=False preserves full backward compatibility. 2. session_exists(session_id) — async convenience method returning True/False without loading the full session. Both delegate to the existing Session.exists() internally. No changes to session.py or session_service.py — this is purely a public API surface addition. Files changed (7): - base.py: updated abstract interface - local.py: must_exist via Session.exists(), session_exists() delegate - http.py: must_exist via get_session() HTTP call, session_exists() - sync_http.py: pass-through - async_client.py: session(must_exist) + session_exists() - sync_client.py: pass-through - test_session_lifecycle.py: 6 new tests * feat: wrapper ov command (#325) Co-authored-by: openviking <openviking@example.com> * Feat/vectordb interface refactor (#327) * refactor: route vector access through semantic gateway * refactor vector storage to collection-bound drivers * refactor(storage): collapse gateway/interface into single-collection backend * refactor vectordb backend to single-collection adapter model * chore: align naming with vikingdb and rename session test * fix * docs: add guide for integrating third-party vectordb adapters * vikingbot * vikingbot * vikingbot * read * vikingbot * vikingbot * 更新readme * vikingbot * vikingbot * vikingbot * 格式化 + 生成图片工具增加开关 直接发给用户(默认开) * upodate --------- Co-authored-by: chenjunwen <chenjunwen@bytedance.com> Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai> Co-authored-by: fujiajie.1030 <fujiajie.1030@bytedance.com> Co-authored-by: SeanZ <zhangxu.shon@bytedance.com> Co-authored-by: chuanbao666 <sunchuanbao@bytedance.com> Co-authored-by: Hon Jia Xuan <hjaxuan@gmail.com> Co-authored-by: ponsde <2126824294@qq.com> Co-authored-by: r266-tech <r2668940489@gmail.com> Co-authored-by: r266-tech <r266-tech@users.noreply.github.com> Co-authored-by: Qin Haojie <qinhaojie.exe@bytedance.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: Eric Shaw <shaoeric@foxmail.com> Co-authored-by: MaojiaSheng <shengmaojia@bytedance.com> Co-authored-by: openviking <openviking@example.com> Co-authored-by: kkkwjx <zhoujiahui.01@bytedance.com> |