Commit Graph
26 Commits
Author SHA1 Message Date
jiakun-lu b8738e05f1 feat(server): make HTTP keep-alive idle timeout configurable (#3743) 2026-08-06 14:11:46 +08:00
444cc87bf8 feat: OIDC and LDAP as new auth mode for OpenViking (#3708)
* feat: support oidc and ldap auth

* feat: support oidc and ldap auth

* fix: remove heima partner, clean up auth docs, add web-studio unsupported auth banner

- Remove heima from partner list in README (en/zh/ja)
- Remove unsupported env var references (OPENVIKING_AUTH_MODE, OPENVIKING_USERNAME,
  OPENVIKING_PASSWORD) from LDAP auth docs
- Remove temporary switch bash snippets from auth docs
- Fix ldap_password description
- Add web-studio unsupported-auth-mode banner for oidc/ldap servers

* fix: address OIDC/LDAP review comments on auth plugin design

Key changes driven by PR review:

- **Role mapping**: OIDC and LDAP external identities always resolve to
  USER role. Removed map_role() calls and group_membership-based role
  mapping. Admin access is gated by the root API key mechanism only.

- **LDAP credential extraction**: Removed query-parameter-based username/
  password extraction (security concern — passwords in URLs can leak via
  shell history, proxy logs, and monitoring). Clients must use Basic Auth
  header or form data.

- **OIDC identifier sanitization**: Auth0 and other providers may include
  characters like "|" in the `sub` claim. These are now replaced with "_"
  to produce valid OpenViking user identifiers.

- **Dead code removal**: Removed _extract_groups, memberof_attribute,
  require_root_api_key_for_admin, _initialize_api_key_manager, and
  get_request_context_checks from both plugins since they are no longer
  needed.

- **Docs**: Removed query-parameter curl example, memberof_attribute and
  require_root_api_key_for_admin config references.

Co-authored-by: TRAE CLI <noreply@bytedance.com>

* feat: support oidc and ldap auth

* feat: support oidc and ldap auth

* fix(auth): bind lazy OIDC imports at module scope

---------

Co-authored-by: TRAE CLI <noreply@bytedance.com>
Co-authored-by: qin-ctx <qinhaojie.exe@bytedance.com>
2026-08-06 12:36:37 +08:00
agent 0ec2bb0ec5 feat: live-reload Agent Evolution and add file usage sink (#3573)
* feat(agent-evolution): reload global switch at commit time

* feat(agent-evolution): expose configured account in status

* test(agent-evolution): cover account in status response

* fix(agent-evolution): align live config reload semantics

* fix(agent-evolution): tolerate non-object live config

* fix(usage-reporter): use snake case count fields

* feat(usage-reporter): add file log sink

* fix

* fix: address live reload and usage sink review findings

* fix(usage-reporter): complete file sink compatibility

* fix: make experience snapshot source unambiguous

* docs(usage-reporter): align count record implementation plan

* fix: address agent evolution review blockers

* fix(usage-reporter): preserve Windows rollover deadline

* fix(usage-reporter): encode file records as JSON envelopes

* fix(usage-reporter): use snake case unique id
2026-07-29 19:25:35 +08:00
Hao Zheandzhiheng.liu 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 8790ba509f)

* fix(server): apply configured temp_upload.default_mode to uploads

Sweep findings: B-11, D-01. Apply the documented configured upload mode when requests omit it.

(cherry picked from commit a0dc2498e8)

* fix(bot): make one-click Docker deployment generate a working config and port mapping

Sweep findings: C-12. Generate the active ov.conf and keep gateway and Docker ports aligned.

(cherry picked from commit c22af83ab6)

* fix(server): make --bot work and propagate bot flags to workers

Sweep findings: B-09, B-15. Honor the public Bot alias and replay resolved Bot settings in worker processes.

(cherry picked from commit 32a898ca14)

* fix(docker): derive entrypoint/health port from configured server port

Sweep findings: F-06. Keep server startup and every container health check on the same effective port.

(cherry picked from commit 000795c7e3)

---------

Co-authored-by: zhiheng.liu <zhiheng.liu@bytedance.com>
2026-07-28 18:11:26 +08:00
huangruitengandhuangruiteng f0d241e4a0 fix(bot): enable logs for config-started gateway (#3319)
Co-authored-by: huangruiteng <huangruiteng@bytedance.com>
2026-07-17 10:56:16 +08:00
DuTao cbfb387dc7 feat(bot): add unified VikingBot gateway routing and OpenViking auth (#3119)
* bot opt config\api check

* 优化vikingbot的启动链路

* 美化颜色

* docs: add VikingBot gateway routing diagram

* fix(bot): harden gateway auth and proxy routing
2026-07-10 17:45:41 +08:00
yepper 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
2026-04-30 17:12:34 +08:00
yeshion23333 31c33d7ce9 fix(bot):Fix bot api-channel auth check (#1640)
* 1. 修复bot api鉴权;
2. 修复--with-bot log 路径

* 1. 修复bot api鉴权;
2. 修复--with-bot log 路径

* 修复channel 鉴权

* 移除url的引用
2026-04-22 20:40:28 +08:00
Zayn JarvisandClaude Opus 4.7 1e51c54447 fix(bot): pre-flight port check + report installed version (#1566)
- bootstrap.py / vikingbot gateway: abort with a clear message when
  18790 is already held, before fork / before uvicorn startup.
  Avoids the silent fail-open caused by the existing 2s subprocess
  poll firing before uvicorn's bind attempt (~5s).
- vikingbot/__init__.py: read __version__ from openviking package
  metadata instead of a hardcoded "0.1.3" that lied in /health.

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-19 15:39:12 +08:00
MaojiaShengandopenviking e15f95eb46 reorg: collect all envs from everywhere, and defined in consts.py (#1490)
* refactor: all env are listed in openviking_cli/utils/config/consts.py

* refactor: all env are listed in openviking_cli/utils/config/consts.py

* refactor: all env are listed in openviking_cli/utils/config/consts.py

* refactor: all env are listed in openviking_cli/utils/config/consts.py

* refactor: all env are listed in openviking_cli/utils/config/consts.py

---------

Co-authored-by: openviking <openviking@example.com>
2026-04-16 16:58:20 +08:00
t0sakiandClaude Opus 4.6 4287e36195 feat: add openviking-server init interactive setup wizard for local Ollama model deployment (#1353)
* feat: add `ov init` interactive setup wizard for local model deployment

Add an interactive CLI wizard that guides users through configuring
OpenViking with local Ollama models, especially targeting macOS/Apple
Silicon beginners. The wizard auto-detects and installs Ollama,
recommends models based on system RAM, pulls selected models, and
generates a valid ov.conf.

Supported models:
- Embedding: qwen3-embedding (0.6b/4b/8b), embeddinggemma:300m
- VLM: qwen3.5 (2b-122b), gemma4 (e2b/e4b/26b/31b)

Also fixes `ov doctor` to recognize Ollama providers as valid without
requiring an API key.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat: add Ollama lifecycle management for server startup and health checks

Extract Ollama utilities into shared module (openviking_cli/utils/ollama.py)
so both `ov init` and `openviking-server` can reuse them. Server now
auto-detects Ollama from config and ensures it's running at startup
("ensure running, never stop" pattern). Adds Ollama connectivity to
`/ready` health check and `ov doctor` diagnostics.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* refactor: move init and doctor from ov to openviking-server subcommands

These are server-side configuration commands (generate/validate ov.conf),
not client operations. Having them under `ov` (the client CLI) was
confusing. Now:

  openviking-server init     # setup wizard
  openviking-server doctor   # diagnostics
  ov <subcommand>            # client operations only

* restore rust_cli.py

* refactor: update command references to use 'openviking-server doctor'

* fix: add existence check for example config in custom configuration wizard

* refactor: update references from 'ov init' to 'openviking-server init' in setup wizard and tests

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-14 14:39:01 +08:00
Jiahui Zhou e1e27e7434 feat(server): support host all to use dual stack netstat (#1273) 2026-04-07 17:54:20 +08:00
MaojiaShengandopenviking 5951d7e38b fix: exit with error if --with-bot fail (#1175)
Co-authored-by: openviking <openviking@example.com>
2026-04-02 17:44:03 +08:00
MaojiaShengandopenviking ce998873f9 lisence: change the main lisence to AGPL-3.0 (#1085)
* lisence: change the main lisence from Apache-2.0 to AGPL-v3

* lisence: change the main lisence from Apache-2.0 to AGPL-v3

* lisence: change the main lisence from Apache-2.0 to AGPL-v3

---------

Co-authored-by: openviking <openviking@example.com>
2026-03-30 14:37:42 +08:00
Qin HaojieandClaude Opus 4.6 7d9075af16 fix(config): validate config files consistently (#904)
Reject unknown ov.conf and ovcli.conf fields with friendly suggestions,
and fail fast during server startup instead of silently ignoring typos.

Co-Authored-By: Claude Opus 4.6
2026-03-24 11:31:57 +08:00
8d9773675a feat(resource): add preserve_structure option for directory scanning (#509)
* feat(resource): add preserve_structure option for directory scanning

Support preserving nested directory structure when adding resources.
When preserve_structure=True (default), files maintain their relative
path hierarchy under the resource URI root.
When False, all files are flattened to a single level (legacy behavior).

Configurable default via ov.conf.

Closes #490

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix(lint): resolve all ruff format and lint errors for PR

- Fix import sorting (I001) across 15+ files
- Remove unused imports (F401): signal, hashlib, time, asyncio, pytest, etc.
- Remove unused variables (F841): level, e
- Rename unused loop vars (B007): idx -> _idx
- Replace lambda with def (E731) in feishu.py
- Replace dict() with literal (C408) in resources.py
- Remove f-strings without placeholders (F541)
- Add TYPE_CHECKING imports for ExecToolConfig/CronService (F821)
- Add FastAPI/Depends/Header imports in openapi.py (F821)
- Remove duplicate import of load_config (F811)
- Auto-format 4 files with ruff format

---------

Co-authored-by: r266-tech <r266-tech@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 23:09:06 +08:00
chenjw 437c313a62 https://github.com/volcengine/OpenViking/issues/477 (#503) 2026-03-10 09:30:07 +08:00
chenjwandDuTao c4cdb5fb1b Fix/bot Fix Memory Consolidation Issues and Integrate Vikingbot as OpenViking Optional Dependency (#492)
* fix

* add log

* add log

* update

* Opt memory

* Opt memory

* Opt memory

* Opt memory

* Fix memory consolidation issues: duplicate session write, hook error, and async

- Fix _consolidate_memory hook error by creating temporary Session when given message list
- Remove duplicate session save logic from _consolidate_memory (handled by caller)
- Make normal memory consolidation async like /new command
- Other fixes: streaming response in CLI and OpenAPI channel

* Integrate vikingbot as openviking optional dependency

- Add vikingbot dependencies to pyproject.toml optional-dependencies
- Update install prompts from vikingbot[X] to openviking[bot-X]
- Update README installation instructions
- Configure setuptools to find vikingbot in bot/ directory
- Add vikingbot package data and script entry

* Remove bot/pyproject.toml

vikingbot is now integrated as part of openviking, no need for separate pyproject.toml

* Update vikingbot installation instructions in root READMEs

- Update from 'uv pip install -e bot/' to 'uv pip install -e ".[bot]"'
- Add quotes around openviking[bot] for shell safety

* update

* Use singleton pattern for VikingClient in hooks

Cache VikingClient instances by workspace_id to avoid repeated client creation
- Add _client_cache dictionary for caching
- Add get_cached_client() helper function
- Update both hooks to use cached client

* Use global singleton for VikingClient instead of per-workspace cache

- Change from per-workspace_id cache to true global singleton
- Create client with None as agent_id (works for all workspaces)
- Simplify client management

* uv run ruff format

---------

Co-authored-by: DuTao <dutao.1786@bytedance.com>
2026-03-09 22:11:03 +08:00
r266-techandr266-tech 5b9b533924 feat(server): add configurable worker count to prevent single-worker blocking (#470)
Add --workers CLI flag and server.workers config option to allow running
uvicorn with multiple worker processes. This prevents a single slow or
blocking request from stalling the entire HTTP server, including
lightweight endpoints like /health.

When workers > 1, the server uses uvicorn's factory mode with an import
string so each worker process can independently initialize the
application.

Configuration:
  - CLI: openviking-server --workers 4
  - ov.conf: { "server": { "workers": 4 } }
  - Default: 1 (preserves existing behavior)

Closes #464

Co-authored-by: r266-tech <r266-tech@users.noreply.github.com>
2026-03-08 01:04:48 +08:00
chenjw 57b320611c FIX: fixes multiple issues in the OpenViking chat functionality and unifies session ID generation logic between Python and Rust CLI implementations. (#446)
* refactor(sandbox): remove docker/aiosandbox backends, simplify SRT config

- Remove docker and aiosandbox from available backends
- Remove settings_path from SrtBackendConfig (now auto-generated in workspace)
- Update SRT settings path to workspace/sandboxes/{session}-srt-settings.json
- Update README examples to use srt backend and remove settingsPath

* refactor(sandbox): remove docker/aiosandbox backends, simplify SRT config

- Remove docker and aiosandbox from available backends
- Remove settings_path from SrtBackendConfig (now auto-generated in workspace)
- Update SRT settings path to workspace/sandboxes/{session}-srt-settings.json
- Update README examples to use srt backend and remove settingsPath

* fix: remove unused handle_chat_direct function and fix unused logs variable

* Fix UTF-8 issues in chat command

* Add tab indentation to Think, Calling, and Result lines in CLI output

* Add first release workflow

* Update release workflow with correct working directory

* 修改 SessionKey 构建逻辑:统一使用 type="cli",channel_id 默认 "default",chat_id 作为 session_id 使用

* Implement machine unique ID as default session ID for ov chat

* Remove unsupported --logs parameter from chat command

* 统一 Python 和 Rust CLI 的默认 session ID 生成逻辑

* 修改日志

* 去掉log依赖

* docs: add VikingBot quick start section to READMEs

* fix: use vikingbot chat instead of ov chat in READMEs

* Revert "fix: use vikingbot chat instead of ov chat in READMEs"

This reverts commit 59f4e87ba0.

* fix: use UUID v4 for machine ID generation in both Rust and Python

* refactor: move truncate_utf8 to utils, fix chat history path, and use BotProcess dataclass

* refactor: update machine ID generation and remove unused chat_v2

- Update Python to use py-machineid library
- Update Rust to use machine-uid crate
- Remove unused chat_v2.rs
- Move machine ID from file storage to system-provided IDs
- Add fallback to "default" if system ID is unavailable

* 优化格式

* ruff format .
2026-03-06 11:12:42 +08:00
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>
2026-03-04 20:48:11 +08:00
Qin HaojieandClaude Opus 4.6 3814939361 fix: 为 openviking-server 添加 --version 参数并修复 AGFS 模式判断 (#358)
openviking-server 缺少 --version 导致 agent 误调用时报 option not found 中断安装流程,
现通过 argparse 的 version action 支持 --version 输出版本号。
同时移除 AGFS 初始化中多余的 backend == "local" 条件判断。

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 18:27:36 +08:00
MaojiaShengandopenviking a412c7d164 feat: break change, remove is_leaf scalar and use level instead (#271)
* feat: wrap log configs in LogConfig, add log rotation, fix empty file creation
- Create new LogConfig class to wrap all log-related configuration
- Update OpenVikingConfig to use nested log config instead of separate fields
- Add log rotation support with TimedRotatingFileHandler in logger.py
- Add configure_uvicorn_logging to make uvicorn use OpenViking's logging config
- Fix empty file being created in current directory by properly handling log.output=file in logging_init.py
- Update examples/ov.conf.example to use new nested log config structure
- Update __init__.py to export LogConfig and initialize_openviking_config

* docs: help to configure log and workspace

* feat: break change, remove is_leaf scalar and use level instead

* feat: break change, remove is_leaf scalar and use level instead

* feat: rust cli add-resource support zip

---------

Co-authored-by: openviking <openviking@example.com>
2026-02-25 13:01:41 +08:00
MaojiaShengandopenviking 3d2d05a370 feat: wrap log configs in LogConfig, add log rotation, fix empty file creation (#261)
- Create new LogConfig class to wrap all log-related configuration
- Update OpenVikingConfig to use nested log config instead of separate fields
- Add log rotation support with TimedRotatingFileHandler in logger.py
- Add configure_uvicorn_logging to make uvicorn use OpenViking's logging config
- Fix empty file being created in current directory by properly handling log.output=file in logging_init.py
- Update examples/ov.conf.example to use new nested log config structure
- Update __init__.py to export LogConfig and initialize_openviking_config

Co-authored-by: openviking <openviking@example.com>
2026-02-23 18:25:14 +08:00
qin-ctx 6d55bf4aa1 feat: 新增 Bash CLI 基础框架与完整命令实现 (T3 + T5) (#132)
* feat: 新增 Typer CLI 并统一配置加载机制

引入基于 Typer 的完整 CLI 模块 (openviking/cli),支持 resources、
sessions、search、filesystem、content、relations、pack、debug、
observer、system 等子命令。

新增统一配置加载器 (config_loader),采用三级解析链(显式路径 →
环境变量 → ~/.openviking/),同时服务于 server (ov.conf) 和
CLI (ovcli.conf)。

精简 AsyncOpenViking / SyncOpenViking 客户端,移除 service 模式
(vectordb_url / agfs_url) 和环境变量回退逻辑,仅保留 embedded
和 HTTP 两种模式。

同步更新中英文文档、示例和测试。

* fix: remove user  when create session

* fix: tests

* fix: tests
2026-02-11 15:53:10 +08:00
qin-ctx 3165ffa0da feat: add HTTP Server and Python HTTP Client (T2 & T4) (#109)
* feat: add Server/Client architecture with HTTP API and restructure documentation

  - Implement FastAPI-based HTTP server (openviking/server/) with REST API
  - Add client abstraction layer (LocalClient, HTTPClient, BaseClient)
  - Add CLI entry point (python -m openviking serve)
  - Fix bugs: session.session_id, link/unlink param names, hmac.compare_digest
  - Restructure docs: remove numbered prefixes, add guides/, rewrite API reference
    with both Python SDK and HTTP API (curl) examples (en/zh)
  - Add quickstart-server, deployment, authentication, monitoring guides
  - Update examples and design docs to reflect implementation

* 提供单测 和 文档

* Merge branch 'main' into feature/server_client

* feat: add server/client examples and server tests

* fix: cross-references

* fix : tests
2026-02-09 21:12:15 +08:00