Qin Haojie
9295a3b955
fix(session): remove actor scope from session lifecycle ( #3661 )
...
Keep sessions user-scoped and remove legacy agent fallback that could leak an actor view into commit memory writes.
2026-07-31 19:52:19 +08:00
Qin Haojie
fd42b1ad92
feat(tasks): support task cancellation ( #3577 )
...
* feat(tasks): support task cancellation
* refactor(tasks): scope cancellation to current user
* feat(cli): support task cancellation
* refactor(tasks): make cancellation queue-aware
* refactor(tasks): simplify cancellation bookkeeping
* test: remove task cancellation coverage
* refactor(tasks): trim cancellation coordination
* fix(tasks): contain cancellation to owned work
* feat(tasks): persist resource source metadata
* fix(tasks): handle cancelled work consistently
* refactor(tasks): make completion queue-aware
* fix(tasks): persist terminal state before queue ack
* test(tasks): remove added lifecycle tests
* docs(tasks): document task cancellation
2026-07-30 20:34:27 +08:00
Eurakaxun
44c6df2622
perf: retrieval, import, LangChain, and session-context optimizations ( #3569 )
2026-07-30 10:10:11 +08:00
baojun-zhang
2f9451231e
refactor(pathlock):using rust implement instead python ( #3602 )
...
* refactor(pathlock):using rust implement instead python
* refactor(pathlock):using rust implement instead python
* refactor(pathlock):using rust implement instead python
* refactor(pathlock):optimize unit test code
* refactor(pathlock):optimize encryption create func
* refactor(pathlock):avoid releasing handoffed pathlock on enqueue errors
* fix(pathlock): use owned lease capability and handle S3 create-new 409 as conflict
* fix(ragfs): keep original FsContext for multi-write metadata
* fix(pathlock): resolve lease coverage and CAS handling issues
- detect S3 conditional conflicts from structured service errors
- pass transaction leases when deleting skill roots
- let temp cleanup acquire locks for temp paths
- disambiguate cache and pathlock providers in cache tests
- update temp cleanup lease assertions
* fix(ragfs): bypass pathlock for multi-write metadata
* fix(ragfs): revert pathlock fail-fast design
* fix(ragfs):fix(ragfs): use non-blocking fcntl locks for localfs CAS
* fix(ragfs): serialize heartbeat lease refresh with release and report real conflict kind
* fix(ragfs): preserve conflict kind snapshot and drop unused test scaffolding
* fix(ragfs): preserve conflict kind snapshot and drop unused test scaffolding
2026-07-29 19:45:34 +08:00
zihengli
e9c4cc97c3
refactor: extract Connector delegation and expose declarative add_type ( #3591 )
...
* refactor: delegate add_resource imports to external Connector
* refactor: delegate add_resource imports to external Connector
* refactor: extract Connector delegation and expose declarative add_type
* fix: merge main to refactor/connector_delegator
* fix: merge main to refactor/connector_delegator
2026-07-29 18:09:25 +08:00
baojun-zhang
1841dfed81
Revert "refactor(pathlock):using rust implement instead python ( #3557 )" ( #3597 )
...
This reverts commit 6b538db569 .
2026-07-29 11:31:41 +08:00
baojun-zhang
6b538db569
refactor(pathlock):using rust implement instead python ( #3557 )
...
* refactor(pathlock):using rust implement instead python
* refactor(pathlock):using rust implement instead python
* refactor(pathlock):using rust implement instead python
* refactor(pathlock):optimize unit test code
* refactor(pathlock):optimize encryption create func
* refactor(pathlock):avoid releasing handoffed pathlock on enqueue errors
* fix(pathlock): use owned lease capability and handle S3 create-new 409 as conflict
* fix(ragfs): keep original FsContext for multi-write metadata
* fix(pathlock): resolve lease coverage and CAS handling issues
- detect S3 conditional conflicts from structured service errors
- pass transaction leases when deleting skill roots
- let temp cleanup acquire locks for temp paths
- disambiguate cache and pathlock providers in cache tests
- update temp cleanup lease assertions
* fix(ragfs): bypass pathlock for multi-write metadata
* fix(ragfs): revert pathlock fail-fast design
2026-07-29 11:08:42 +08:00
Jiahui Zhou
5d1ba45be4
Feat/add resource processing mode ( #3566 )
...
* feat: add resource processing mode
* fix: keep semantic artifacts in vectors-only add resource
* test: support processing mode in api test client
* docs: document add resource processing mode
* fix: align processing mode after resource ingestion refactor
* feat: expose processing mode in TypeScript SDK
* fix: preserve add resource compatibility
2026-07-28 20:09:06 +08:00
DuTao
0ab85f450a
feat(session): add turn-aware retention and reliable archive recovery ( #3380 )
...
* 优化OpenViking的 session compact逻辑,active message 改为turn,压缩 assistant,保留完整user。
详见RFC:https://github.com/volcengine/OpenViking/discussions/3330
* Vikingbot 使用 ov turn session
* fix pr comment
* 更新文档
* fix pr issue
2026-07-24 14:26:46 +08:00
agent
27debfe7a8
feat(snapshot): add path diff API, SDK, and CLI ( #3451 )
...
* feat(snapshot): add path diff API
* feat(snapshot): expose path diff in clients and CLI
* fix(snapshot): pin path diff to resolved commits
* fix(snapshot): bound path diff resource usage
* fix(snapshot): bound diff blob reads
* fix(snapshot): harden path diff API
* fix(snapshot): bound path diff resource usage
* fix(build): sync native binding dependencies
2026-07-23 17:45:36 +08:00
ef4d97ebe3
feat(snapshot): support path-filtered commit history ( #3271 )
...
* feat(snapshot): support path-filtered commit history
* refactor(snapshot): reuse SDK git log implementation
* fix(snapshot): harden path-filtered log resource limits
* chore: remove stale SDK lock entry
---------
Co-authored-by: zhanghaoyu.la <zhanghaoyu.la@bytedance.com >
Co-authored-by: qin-ctx <qinhaojie.exe@bytedance.com >
2026-07-16 19:53:40 +08:00
Qin Haojie
ca70bc0649
refactor(embedding): remove unused batch APIs ( #3260 )
2026-07-15 16:44:57 +08:00
Jiahui Zhou
1c46d44fbc
Fix/reindex preserve owners ( #3096 )
...
* fix: preserve reindex content owners
feat: allow trusted admin role assertion
feat: prune orphan vectors during reindex
fix: harden reindex memory body reads
feat: expose reindex prune options in clients
fix(cli): prefer workspace sdk for compat clients
fix: harden reindex prune orphans
* test: align reindex expectations after rebase
2026-07-14 20:38:30 +08:00
Zayn Jarvis
cc0281ac70
fix(studio): sort limited listings by mtime ( #3212 )
...
* fix(studio): sort limited listings by mtime
* fix(client): forward ls ordering options
2026-07-13 16:17:02 +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
baojun-zhang
6a33ebb7ca
Optimize glob walkdir ( #3013 )
...
* feat(storage): optimize glob func
* feat(rgafs): implement paged glob traversal without full tree materialization
* feat(rgafs): implement paged glob traversal without full tree materialization
* feat(rgafs): implement paged glob traversal without full tree materialization
* feat(rgafs): implement paged glob traversal without full tree materialization
* feat(rgafs): implement paged glob traversal without full tree materialization
* feat(rgafs): implement paged glob traversal without full tree materialization
* feat(rgafs): implement paged glob traversal without full tree materialization
* feat(rgafs): implement paged glob traversal without full tree materialization
* feat(rgafs): implement paged glob traversal without full tree materialization
* fix(localfs): offload blocking fs operations to spawn_blocking
* feat(glob): cap glob api default node_limit at 256
* feat(sdk): add node_limit options for glob in python and go SDKs
2026-07-06 21:39:16 +08:00
17631bd353
feat: support ignoring certain files in the multi-version management function, similar to the git ignore feature ( #2930 )
...
* docs: add ovgitignore design spec
Co-Authored-By: Claude <noreply@anthropic.com >
* docs: add ovgitignore implementation plan
Co-Authored-By: Claude <noreply@anthropic.com >
* feat(git): add ovgitignore matcher
Co-Authored-By: Claude <noreply@anthropic.com >
* feat(git): apply ovgitignore during commits
Co-Authored-By: Claude <noreply@anthropic.com >
* feat(pyagfs): expose ovgitignore commit results
Co-Authored-By: Claude <noreply@anthropic.com >
* feat(vikingfs): manage account ovgitignore
Co-Authored-By: Claude <noreply@anthropic.com >
* docs(git): document ovgitignore semantics
Co-Authored-By: Claude <noreply@anthropic.com >
* fix(git): enable ovgitignore restore assertion and document python api
Co-Authored-By: Claude <noreply@anthropic.com >
* fix: fix gitignore
* fix: fix gitignore
* feat: 新增 git ignore 相关的接口
* fix: 修复 cli 命令渲染
* doc: 删除执行计划文档
* doc: 删除执行计划文档
* feat: 在 http client 中新增 git ignore 相关接口
* fix: 修改文档中关于 .ovgitignore 被版本化的内容
---------
Co-authored-by: zhanghaoyu.la <zhanghaoyu.la@bytedance.com >
Co-authored-by: Claude <noreply@anthropic.com >
2026-07-02 11:45:38 +08:00
Qin Haojie
f9c1a60658
fix: narrow legacy agent id compatibility ( #2839 )
...
Treat agent_id as an actor peer alias in new clients while keeping X-OpenViking-Agent handling only on server ingress for old clients.
2026-06-26 14:37:57 +08:00
t0saki
3d456ff442
fix(sdk): omit null/empty request fields so older instances accept them ( #2834 )
...
The Python SDK's find/search/add_resource unconditionally attach optional
fields to their request bodies — `args` as an empty `{}` and
`tags`/`score_threshold`/`filter`/`context_type`/`session_id` as `null` — even
when the caller never set them. OpenViking kernels use
`model_config = ConfigDict(extra="forbid")` on these routes, so any instance
that predates a field rejects the whole request with
`body.<field>: Extra inputs are not permitted`. This breaks the SDK (and every
SDK consumer, e.g. vikingbot via `ov.AsyncHTTPClient`) against older instances:
`add_resource` fails on `body.args` against a pre-#2549 instance, and `find`
fails on `body.tags` against a strict pre-#2706 instance.
This is the SDK-side counterpart of #2799 , which fixed the same anti-pattern in
the Rust CLI but left the Python SDK untouched.
- Add `_compact_request_body()` and apply it in find/search/add_resource: drop
null-valued keys and an empty `args` object before sending. Scoped to these
read/create routes only, where a missing optional field and an explicit null
are equivalent — not applied globally, since null may mean "clear" on a future
update/PATCH route. Mirrors the CLI's `compact_request_body`.
Tests: unit tests for `_compact_request_body` and for find/search/add_resource
omitting unset optional fields while keeping explicitly-provided ones.
2026-06-25 21:26:31 +08:00
Haoyu Zhang and zhanghaoyu.la
aa53e7aede
feat: 实现 commit、restore、show 文件系统多版本管理功能 ( #2756 )
...
* feat: 实现 commit、restore、show 文件系统多版本管理功能
fix: 修复commit时删除文件
fix: commit 的 fast path 1 添加 Racy-clean 机制
fix: 将 sdk 中的 git 命令改为 snapshot 命令,同步修改单测
fix: 多版本管理的文件存储目录改为 .ovgit
feat: snapshot cli 渲染
fix: 修复 restore 时将删除的文件回滚时,目录不存在的问题
feat: restore 命令的 project_dir 参数改为可选,不传时默认全目录回滚
feat: 更新文档
fix: 删除暂未使用的配置参数
feat: 新增示例脚本
fix: 修复示例代码
fix: 修复 restore 返回的 task id 任务完成状态
feat: 在 restore 修改文件系统时加锁
fix: fix openviking_sdk
* feat: 将git多版本管理功能改为默认打开,并复用agfs的配置参数作为默认值
* fix: restore 命令改为先完成 ref 一致性协议再写回 VFS;object store 并发改为使用唯一 temp path
* fix: 在 git 配置检验层去除未实现的cas_mode = "redis_lock"模式
* fix: 在 Rust GitService 边界统一校验 account
* fix: 当前commit不支持通过 path 传入目录,增加报错信息
* fix: 将git文件默认存储路径统一为 .ovgit
* fix: restore 时写入 VFS 失败时返回详细的报错,并继续触发 reindex
* fix: 校验 commit、restore、show 的路径
* feat: 实现 commit 时指定目录
---------
Co-authored-by: zhanghaoyu.la <zhanghaoyu.la@bytedance.com >
2026-06-25 11:28:04 +08:00
DuTao
342152f0ac
修复sessionId含特殊字符会报错 ( #2682 )
2026-06-17 17:46:31 +08:00
agent
a4aefac1f7
feat(session): Support image message extraction ( #2578 )
...
* Support image message extraction
* fix: fix image url
* fix: bug
* fix: image parts readme
2026-06-15 18:03:27 +08:00
Qin Haojie
058cd1f5ea
feat(migration): add legacy user-peer migration ( #2610 )
...
* feat(migration): add legacy user-peer migration
* test(migration): trim redundant migration tests
2026-06-15 13:21:33 +08:00
Qin Haojie
49e4d76913
feat(core): add actor peer filesystem view ( #2594 )
...
* feat(core): enforce actor scoped retrieval
* fix(core): narrow actor peer filtering to retrieval
* fix(core): enforce actor peer filesystem view
2026-06-13 15:49:34 +08:00
Qin Haojie
775e3f1193
feat(search): add context type filter support ( #2583 )
2026-06-13 11:41:20 +08:00
Qin Haojie
fff86058ac
feat(core): 支持用户和 peer 级内容目标 ( #2564 )
...
* feat(core): support user-scoped content targets
* fix(core): handle scoped skill updates
* fix(core): keep skills user scoped
* chore: drop incidental formatting changes
* fix(storage): revert shared parent existence helper
* docs: update user content target docs
* fix(resource): canonicalize watch cancellation targets
2026-06-12 17:52:44 +08:00
Qin Haojie
ff258768c2
feat(memory): 引入 User/Peer 记忆隔离模型 ( #2236 )
...
* feat(memory): introduce user and peer memory isolation
Unify agent-scoped memory behavior into user-owned memory spaces, add peer_id compatibility for session and retrieval paths, and wire memory_policy through session commit flows.
* feat(memory): align session identity around peer IDs
* feat(search): pass peer id through retrieval
* refactor(memory): remove agent identity from integrations
* fix(memory): isolate peer identity from self extraction
* fix(tau2): provision benchmark user configs
* fix(auth): allow admin keys to access data APIs
* fix(openclaw): enable peer memory policy for peer roles
* fix(openclaw): resolve sender for peer recall
* refactor(session): simplify memory extraction routing
* refactor(ov-cli): reduce formatting-only diff
* refactor(message): remove unused message helpers
* refactor(retrieval): simplify peer target resolution
* refactor(namespace): remove deprecated agent namespace policy
* fix(agent): propagate peer id through integrations
* fix(auth): align integration clients with api-key mode
2026-06-05 10:55:48 +08:00
Hao Zhe
e0cf9e0f86
fix(client): skip symlinks in directory uploads ( #2374 )
2026-06-02 15:36:31 +08:00
Qin Haojie
b55df525bc
feat(resources): bind watch tasks to imported root URI ( #2378 )
2026-06-02 14:01:52 +08:00
Hao Zhe
7bc69bbbd1
feat(langchain): implement local batch message writes ( #2250 )
...
* fix(langchain): implement local batch message writes
* fix(langchain): preserve in-memory message metadata
* test(client): cover batch message client consistency
2026-05-28 13:20:19 +08:00
Hao Zhe
7c0bf137aa
fix(langchain): recover stale OpenViking clients ( #2246 )
...
* fix(langchain): recover stale OpenViking clients
Wrap lazily-created HTTP clients used by the LangChain integration so recoverable read calls can rebuild a stale client once, while mutating calls only evict the broken client and are not retried.
Keep local embedded clients direct, complete the batch_add_messages client contract for local and in-memory clients, and keep sync async bridge calls from foreign event loops on the shared background loop.
* fix(langchain): filter kwargs on recovered handle calls
* chore(langchain): split batch message contract fix
* style(langchain): format reconnect tests
2026-05-27 16:01:31 +08:00
Jiahui Zhou
e9e6ce5e9a
feat(server): add request-scoped http profiling ( #2125 )
2026-05-25 10:42:28 +08:00
Qin Haojie
fd9ada9295
fix(storage): preserve semantic lock ownership ( #2140 )
...
Introduce typed lock leases for semantic queue handoff so resource, memory, and reindex flows can share or transfer lock ownership without releasing caller-owned locks prematurely.
2026-05-20 14:37:02 +08:00
Hao Zhe
81d1b5afd7
feat(langchain): add LangChain and LangGraph context adapters ( #1964 )
...
* feat(langchain-langgraph): add adapter primitives
* feat(langchain-langgraph): add context backend lifecycle
* fix(langchain-langgraph): harden context backend integration
* fix(langchain-langgraph): accept canonical store result URIs
* docs(langchain): point users to runnable examples
* docs(langchain): add missing integration examples
* refactor(langchain): address integration review feedback
* fix(langchain): address review-blocking integration bugs
* fix(langchain): honor user ids and safe store filters
* fix(langchain): reject unsupported store TTL writes
2026-05-12 16:28:11 +08:00
Qin Haojie
5fdbfd4e49
feat(ovpack): support vector snapshots and consistency checks ( #1965 )
...
* feat(ovpack): add vector snapshot backup support
* feat(ovpack): add vector snapshots and consistency checks
* fix(ovpack): validate reserved paths and index expectations
* fix(ovpack): limit consistency report output
* fix(ovpack): isolate archive content namespace
* chore(ovpack): move consistency cli under system
2026-05-11 21:11:42 +08:00
Qin Haojie
e648b2679c
feat(ovpack): add v2 manifest and backup restore ( #1927 )
...
* feat(ovpack): add v2 manifest and conflict policy
Add a portable OVPack manifest for scalar metadata and make imports validate scope, derived files, and conflicts before writing.
* fix(ovpack): remove import vectorize option
Make OVPack imports always rebuild vectors in the target environment, keep legacy packages compatible, and reject unsupported manifest versions before writing.
* fix(ovpack): remove force import alias
Use on_conflict as the single OVPack import conflict policy and reject removed force inputs.
* fix(ovpack): regenerate runtime vector metadata
Keep type portable but stop exporting or applying created_at, updated_at, and active_count from OVPack manifests.
* fix(ovpack): validate manifest contents
* fix(ovpack): require manifests for imports
* fix(ovpack): close manifest validation gaps
* fix(ovpack): defer parent creation until validation passes
* fix(ovpack): remove export size guard
* fix(ovpack): support session and scope-root restores
* docs(ovpack): document full backup migration
* feat(ovpack): add backup restore workflow
* fix(ovpack): validate import scope compatibility
2026-05-11 11:09:35 +08:00
Jiahui Zhou and qin-ctx
ac3346422a
feat(rebuild): add rebuild api scaffold ( #1592 )
...
* feat(admin): add rebuild api scaffold
feat: add admin rebuild API
fix: harden admin rebuild execution
feat(cli): add rebuild command support
fix(rebuild): support namespace rebuild routing
refactor(rebuild): unify memory semantic rebuild mode
refactor(rebuild): move http endpoint to content route
fix(rebuild): skip root namespace vectorization
fix(rebuild): harden namespace classification
refactor: rename rebuild api to reindex
refactor: rename reindex executor module
refactor(reindex): remove unused reason field
* fix(reindex): tighten namespace URI handling
Share segment-based Viking URI classification across context inference and reindex execution, add skill namespace support, and require root reindex requests to select an account.
* refactor: reuse indexing pipeline in reindex
* Revert "refactor: reuse indexing pipeline in reindex"
This reverts commit 2725fe6733 .
* fix(reindex): respect semantic vectorization skips
Avoid scheduling semantic DAG vectorization work during semantic_and_vectors reindex, and keep resource vector text selection aligned with normal vectorize_file handling for non-text files.
---------
Co-authored-by: qin-ctx <qinhaojie.exe@bytedance.com >
2026-05-08 17:48:33 +08:00
Jiahui Zhou
4f28f086bd
feat(server): add shared temp upload mode ( #1899 )
...
fix(server): move shared temp uploads to upload namespace
refactor(server): flatten shared upload namespace
refactor(server): simplify shared upload semantics
fix(server): restrict upload scope and add python shared upload mode
2026-05-08 11:12:57 +08:00
Qin Haojie
7819d154e5
fix(skill): use canonical URI for skill indexing ( #1781 )
...
* fix(skill): use canonical URI for skill indexing
* fix(skill): include metadata in skill abstracts
* fix: config
2026-04-28 22:32:45 +08:00
Qin Haojie
ac9f679a0b
fix(api): 统一错误 envelope 与会话元数据 ( #1764 )
...
* fix(api): standardize error envelopes and session metadata
* fix(session): update archive metadata on commit
2026-04-28 13:59:32 +08:00
Qin Haojie
14b83736f8
fix(model): map upstream provider errors ( #1732 )
...
Return structured errors for model provider failures so auth, quota, and service errors are not collapsed into generic 500 responses.
2026-04-27 12:05:51 +08:00
MaojiaSheng and openviking
85986a91bd
fix: apikey security: API Key 管理重构与安全增强 ( #1686 )
...
* fix: apikey security
* fix: apikey security
* fix: apikey security
* fix: apikey security
---------
Co-authored-by: openviking <openviking@example.com >
2026-04-24 20:13:36 +08:00
MaojiaSheng and openviking
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
Qin Haojie
b7d50d8dbf
feat(filesystem): support directory descriptions on mkdir ( #1443 )
...
Allow mkdir callers to initialize .abstract.md at creation time and enqueue L0 directory vectorization immediately.
2026-04-14 18:13:31 +08:00
sentisso
7388e4d598
feat: dir ignore support in ovcli.conf ( #1393 )
2026-04-13 11:14:10 +08:00
Jiahui Zhou
37d4e32a1b
Implement request-scoped wait for write APIs ( #1212 )
...
fix: request wait telemetry id
fix: register request wait before enqueue
add log
2026-04-05 20:40:29 +08:00
Jiahui Zhou
fea7c01ed5
Revert "feat(retrieve): use tags metadata for cross-subtree retrieval ( #1162 )" ( #1200 )
...
This reverts commit e72b614b3d .
2026-04-03 14:37:47 +08:00
13ernkastel
e72b614b3d
feat(retrieve): use tags metadata for cross-subtree retrieval ( #1162 )
...
* feat: use tags to expand cross-subtree retrieval
* fix: harden sync retrieval argument forwarding
* fix: resolve PR lint failures
* feat(tags): namespace stored and queried resource tags
* fix(tags): enforce canonical tag namespaces
* style: sort resource service imports
2026-04-03 13:24:38 +08:00
Jiahui Zhou
673b267976
feat: add content write interface ( #1151 )
2026-04-01 23:19:59 +08:00
MaojiaSheng and openviking
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