* 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>
* feat(session): add parts support to HTTP API add_message endpoint
- Add optional 'parts' parameter to AddMessageRequest
- Support two modes: simple (content string) and parts (array)
- Update LocalClient and HTTP Client for consistency
- Update Chinese and English documentation
This enables HTTP API clients to store full Part information
(TextPart, ContextPart, ToolPart) instead of just text content,
achieving feature parity with the Python SDK.
* fix(storage): wrap AGFSClientError as FileNotFoundError in read_file
When reading a non-existent file, agfs.read() raises AGFSClientError
which was not being caught by Session.load()'s exception handler.
This caused the server to return 422 errors instead of gracefully
handling missing session files.
Now read_file() catches all exceptions from agfs.read() and re-raises
them as FileNotFoundError, ensuring consistent error handling across
the codebase.
* fix(storage): distinguish error types in VikingFS read operations
Map AGFSClientError to appropriate Python exceptions (FileNotFoundError,
PermissionError, IOError) instead of always raising FileNotFoundError.
This allows callers to handle file-not-found vs network errors differently.
* fix(client): restore read params and refactor part conversion
- Restore offset/limit parameters in HTTPClient and LocalClient read()
methods that were accidentally removed
- Extract part_from_dict() to openviking/message/part.py to reduce
code duplication between LocalClient and sessions router
* feat: support dynamic project_name config in VectorDB / volcengine
* feat: support dynamic project_name config in VectorDB / volcengine
* feat: support dynamic project_name config in VectorDB / volcengine
* feat: support dynamic project_name config in VectorDB / volcengine
* feat: support dynamic project_name config in VectorDB / volcengine
- refactor session memory pipeline across extractor, deduplicator, and compressor
- introduce richer dedup decisions and per-memory actions (skip/create/none, merge/delete)
- improve dedup prompt contracts and memory merge/extraction templates
- update storage schema/validation/vector backend to support new memory behavior
- add examples/memory_demo.py and refresh session concept docs for the new flow
* fix: temp dir check failed
* feat: make temp uri readable, and enlarge timeout of add-resource
* fix: server uvloop conflicts with nest_asyncio
* fix: tree uri output error
* fix: forbid unknown config field, early failed
* docs: update readme
* feat: support dynamic project_name config in VectorDB / volcengine
* feat: support dynamic project_name config in VectorDB / volcengine
* feat: support dynamic project_name config in VectorDB / volcengine
* feat: support dynamic project_name config in VectorDB / volcengine
* fix: remove await asyncio and call agfs directly
* feat: mv cli out of openviking
* refactor: mv cli out of openviking
* refactor: mv cli out of openviking
* refactor: mv cli out of openviking
* refactor: mv cli out of openviking
* refactor: mv cli out of openviking
* refactor: mv cli out of openviking
* fix: remove await asyncio and call agfs directly
* feat: mv cli out of openviking
* refactor: mv cli out of openviking
* refactor: mv cli out of openviking
* fix: remove await asyncio and call agfs directly
* feat: add transaction storage
* feat: init transaction_manager when start
* feat: add transaction again, no check
* feat: add transaction manager and its observer, but without any working code
* feat: add code parser, not tested
* feat: rename CodeParser to CodeRepositoryParser
* fix: code parser data uploading
* fix: code parser data uploading
* fix: code parsing
* feat: protect binary files to summary and vectorize
* Update viking_fs.py
* feat: use a default dir ~/.openviking to store configuration
- Create ObserverService class with queue/vikingdb/vlm/system properties
- DebugService holds ObserverService as a member
- Add client.observer property, enabling print(client.observer.vikingdb) syntax
- Add __str__ method to ComponentStatus and SystemStatus for direct printing
- Create dedicated debug API documentation (07-debug.md)
- Update architecture docs with new DebugService description
- Update unit tests
* refactor: extract Service layer from async_client
Extract business logic from async_client.py into independent Service layer
to decouple business logic from transport layer, enabling reuse across
HTTP Server and CLI.
New files:
- openviking/exceptions.py: Unified exception classes based on gRPC status codes
- openviking/service/core.py: OpenVikingService main class
- openviking/service/fs_service.py: File system operations (ls, mkdir, rm, mv, etc.)
- openviking/service/resource_service.py: Resource import and skill addition
- openviking/service/search_service.py: Semantic search (find, search)
- openviking/service/session_service.py: Session management
- openviking/service/relation_service.py: Relation management (link, unlink)
- openviking/service/pack_service.py: Import/export ovpack operations
Modified:
- openviking/async_client.py: Refactored as compatibility layer delegating to OpenVikingService
* feat: add DebugService for system status and health check
- Add DebugService with get_queue_status, get_vikingdb_status,get_vlm_status, get_system_status, and is_healthy methods
- Replace observers property with get_status() and is_healthy() in async_client and sync_client
- Update API docs (zh/en) and architecture docs
- Add unit tests for DebugService
* fix: debug service test