From c2d528bb6d71c4402ce00ebdd42741eafa566c41 Mon Sep 17 00:00:00 2001 From: Tianyi Cui <53024+tianyicui@users.noreply.github.com> Date: Tue, 6 Oct 2026 23:20:51 +0800 Subject: [PATCH] refactor(experimental): classify optional session search tools --- docs/capability-seams.i18n.yaml | 4 +- docs/capability-seams.md | 2 +- docs/capability-seams.zh.md | 2 +- docs/config-catalog.md | 2 +- docs/config-catalog.zh.md | 2 +- docs/module-graph.md | 20 +-- docs/module-graph.zh.md | 20 +-- docs/tool-catalog.i18n.yaml | 20 +-- docs/tool-catalog.md | 10 +- docs/tool-catalog.zh.md | 10 +- packages/experimental/README.i18n.yaml | 4 +- packages/experimental/README.md | 1 + packages/experimental/README.zh.md | 1 + .../tool-session-query/README.i18n.yaml | 10 +- .../tool-session-query/README.md | 6 +- .../tool-session-query/README.zh.md | 6 +- .../tool-session-query/package.json | 2 +- .../tool-session-query/src/index.ts | 0 .../tool-session-query/src/input.ts | 0 .../tool-session-query/src/operations.ts | 0 .../tool-session-query/src/presentation.ts | 0 .../src/service-boundary.ts | 0 .../src/workspace-access.ts | 0 .../tests/sqlite-integration.spec.ts | 0 .../tests/tool-session-query.spec.ts | 0 .../tool-session-query/tsconfig.json | 2 +- .../references/packages.md | 2 +- packages/session-query/README.i18n.yaml | 12 +- packages/session-query/README.md | 5 +- packages/session-query/README.zh.md | 5 +- .../session-query-sqlite/README.i18n.yaml | 4 +- .../session-query-sqlite/README.md | 2 +- .../session-query-sqlite/README.zh.md | 2 +- .../session-query/README.i18n.yaml | 8 +- .../session-query/session-query/README.md | 4 +- .../session-query/session-query/README.zh.md | 4 +- pnpm-lock.yaml | 114 +++++++++--------- scripts/experimental-package-policy.ts | 1 + scripts/gen-tool-catalog.ts | 2 +- scripts/no-unknown-casts.baseline.json | 4 +- scripts/product-package-policy.ts | 1 - tsconfig.base.json | 2 +- tsconfig.host.json | 2 +- 43 files changed, 151 insertions(+), 147 deletions(-) rename packages/{session-query => experimental}/tool-session-query/README.i18n.yaml (95%) rename packages/{session-query => experimental}/tool-session-query/README.md (92%) rename packages/{session-query => experimental}/tool-session-query/README.zh.md (92%) rename packages/{session-query => experimental}/tool-session-query/package.json (97%) rename packages/{session-query => experimental}/tool-session-query/src/index.ts (100%) rename packages/{session-query => experimental}/tool-session-query/src/input.ts (100%) rename packages/{session-query => experimental}/tool-session-query/src/operations.ts (100%) rename packages/{session-query => experimental}/tool-session-query/src/presentation.ts (100%) rename packages/{session-query => experimental}/tool-session-query/src/service-boundary.ts (100%) rename packages/{session-query => experimental}/tool-session-query/src/workspace-access.ts (100%) rename packages/{session-query => experimental}/tool-session-query/tests/sqlite-integration.spec.ts (100%) rename packages/{session-query => experimental}/tool-session-query/tests/tool-session-query.spec.ts (100%) rename packages/{session-query => experimental}/tool-session-query/tsconfig.json (93%) diff --git a/docs/capability-seams.i18n.yaml b/docs/capability-seams.i18n.yaml index d2a62401d8..1c39cb4a31 100644 --- a/docs/capability-seams.i18n.yaml +++ b/docs/capability-seams.i18n.yaml @@ -6,5 +6,5 @@ en: 41d772192075e133 zh: 5ef3da69b4de1d8a /capability-seams-and-core-services: - en: 150d8b08a02cc6ae - zh: 17dd3af4dc79660f + en: 5bdd69045ebd8e3c + zh: f791f38cf578f9c9 diff --git a/docs/capability-seams.md b/docs/capability-seams.md index d0564e8e60..f240b94937 100644 --- a/docs/capability-seams.md +++ b/docs/capability-seams.md @@ -642,7 +642,7 @@ flowchart LR | `ctx.messageFeedback` | `core` | [`message-feedback`](../packages/feedback/message-feedback) | - | - | - | Owns per-assistant-message feedback in the canonical Session log, target validation, per-item compare-and-set, and the Host unary Remote contract. Feedback stays outside model history; log export follows the consumer policy. | | `ctx.sessionFeedback` | `core` | [`command-feedback`](../packages/feedback/command-feedback) | - | - | - | Records one Session-level remark with its category as a log-only feedback/record event on a live Session through the Host unary Remote contract; the /feedback command shares the same producer. | | `ctx.workspaceRegistry` | `core` | [`workspace`](../packages/workspace/workspace) | - | [`api-workspace-controller`](../packages/api/workspace-controller), [`api-session-controller`](../packages/api/session-controller) | - | Owns WorkspaceId-branded records over the domain facility; stable sessionIds accounts drive Host RPC and GUI projections. | -| `ctx.sessionQuery` | `seam` | [`session-query`](../packages/session-query/session-query) | [`session-query-sqlite`](../packages/session-query/session-query-sqlite) | [`session-reference`](../packages/context/session-reference), [`tool-session-query`](../packages/session-query/tool-session-query) | - | The interface supplies exact reads, filters, and traces; its concrete backend adds full-text reconciliation, ranking, snippets, and cursor generations, while the model consumer owns workspace authority and cursor-free rendering. | +| `ctx.sessionQuery` | `seam` | [`session-query`](../packages/session-query/session-query) | [`session-query-sqlite`](../packages/session-query/session-query-sqlite) | [`session-reference`](../packages/context/session-reference), [`tool-session-query`](../packages/experimental/tool-session-query) | - | The interface supplies exact reads, filters, and traces; its concrete backend adds full-text reconciliation, ranking, snippets, and cursor generations, while the model consumer owns workspace authority and cursor-free rendering. | | `ctx.fileReferences` | `seam` | [`file-reference`](../packages/context/file-reference) | [`file-reference-local`](../packages/context/file-reference-local) | [`api-session-controller`](../packages/api/session-controller) | - | The interface returns path-only completion candidates within an Agent cwd; providers own namespace access and ranking without reading file contents. | | `ctx.sessionReferenceResolver` | `core` | [`session-reference`](../packages/context/session-reference) | - | - | - | Projects bounded current-surface conversation snapshots into durable untrusted message context; host adapters own mention syntax. | | `ctx.sessionTitle` | `seam` | [`session-title`](../packages/session/session-title) | [`session-title-first-prompt-llm`](../packages/session/session-title-first-prompt-llm), [`session-title-all-prompts-llm`](../packages/experimental/session-title-all-prompts-llm) | - | - | Owns the deterministic fallback, latest-title fold, and sole optional asynchronous provider registration. | diff --git a/docs/capability-seams.zh.md b/docs/capability-seams.zh.md index 5764d14501..17b488deeb 100644 --- a/docs/capability-seams.zh.md +++ b/docs/capability-seams.zh.md @@ -644,7 +644,7 @@ flowchart LR | `ctx.messageFeedback` | `core` | [`message-feedback`](../packages/feedback/message-feedback) | - | - | - | 拥有权威 Session 日志中的逐 assistant 消息反馈、目标校验、逐条目 compare-and-set 及 Host 一元 Remote 契约。反馈不进入模型历史;日志导出遵循消费方策略。 | | `ctx.sessionFeedback` | `core` | [`command-feedback`](../packages/feedback/command-feedback) | - | - | - | 通过 Host 一元 Remote 契约在 live Session 上把一条带分类的 Session 级评价记录为仅写日志的 feedback/record 事件;/feedback 命令共用同一个生产方。 | | `ctx.workspaceRegistry` | `core` | [`workspace`](../packages/workspace/workspace) | - | [`api-workspace-controller`](../packages/api/workspace-controller), [`api-session-controller`](../packages/api/session-controller) | - | 通过领域设施拥有带 WorkspaceId 品牌类型的记录;稳定的 sessionIds 账户驱动 Host RPC 与 GUI 投影。 | -| `ctx.sessionQuery` | `seam` | [`session-query`](../packages/session-query/session-query) | [`session-query-sqlite`](../packages/session-query/session-query-sqlite) | [`session-reference`](../packages/context/session-reference), [`tool-session-query`](../packages/session-query/tool-session-query) | - | 该接口提供精确读取、过滤和追踪;具体后端还提供全文协调、排序、摘要片段和游标世代,而模型消费方负责工作区权限与不含游标的渲染。 | +| `ctx.sessionQuery` | `seam` | [`session-query`](../packages/session-query/session-query) | [`session-query-sqlite`](../packages/session-query/session-query-sqlite) | [`session-reference`](../packages/context/session-reference), [`tool-session-query`](../packages/experimental/tool-session-query) | - | 该接口提供精确读取、过滤和追踪;具体后端还提供全文协调、排序、摘要片段和游标世代,而模型消费方负责工作区权限与不含游标的渲染。 | | `ctx.fileReferences` | `seam` | [`file-reference`](../packages/context/file-reference) | [`file-reference-local`](../packages/context/file-reference-local) | [`api-session-controller`](../packages/api/session-controller) | - | 该接口返回 Agent cwd 内仅含路径的补全候选;提供方负责命名空间访问与排序,但不读取文件内容。 | | `ctx.sessionReferenceResolver` | `core` | [`session-reference`](../packages/context/session-reference) | - | - | - | 将当前表层中有界的对话快照投影为持久但不可信的消息上下文;Host 适配器负责提及语法。 | | `ctx.sessionTitle` | `seam` | [`session-title`](../packages/session/session-title) | [`session-title-first-prompt-llm`](../packages/session/session-title-first-prompt-llm), [`session-title-all-prompts-llm`](../packages/experimental/session-title-all-prompts-llm) | - | - | 负责确定性回退、最新标题折叠区,以及唯一的可选异步提供方注册。 | diff --git a/docs/config-catalog.md b/docs/config-catalog.md index 90d8b4f2ab..9f303183b4 100644 --- a/docs/config-catalog.md +++ b/docs/config-catalog.md @@ -3850,7 +3850,7 @@ export interface Config { ## `@deepseek-ai/dsh-tool-session-query` - `inject`: `tools` · `systemPrompt` · `sessionQuery` · `sessionProjections` -- `source`: [`packages/session-query/tool-session-query/src/index.ts:28`](../packages/session-query/tool-session-query/src/index.ts) +- `source`: [`packages/experimental/tool-session-query/src/index.ts:28`](../packages/experimental/tool-session-query/src/index.ts) ```ts config-catalog /** Deployment-owned search count and timeout bounds. */ diff --git a/docs/config-catalog.zh.md b/docs/config-catalog.zh.md index d52f162e7e..8727be2b3e 100644 --- a/docs/config-catalog.zh.md +++ b/docs/config-catalog.zh.md @@ -3852,7 +3852,7 @@ export interface Config { ## `@deepseek-ai/dsh-tool-session-query` - `inject`: `tools` · `systemPrompt` · `sessionQuery` · `sessionProjections` -- `source`: [`packages/session-query/tool-session-query/src/index.ts:28`](../packages/session-query/tool-session-query/src/index.ts) +- `source`: [`packages/experimental/tool-session-query/src/index.ts:28`](../packages/experimental/tool-session-query/src/index.ts) ```ts config-catalog /** Deployment-owned search count and timeout bounds. */ diff --git a/docs/module-graph.md b/docs/module-graph.md index 67fad51880..56b32f71c4 100644 --- a/docs/module-graph.md +++ b/docs/module-graph.md @@ -103,7 +103,6 @@ flowchart TD pkg_session_log_export["session-log-export"] pkg_session_query["session-query"] pkg_session_query_sqlite["session-query-sqlite"] - pkg_tool_session_query["tool-session-query"] end subgraph group_acp["packages/acp"] pkg_acp["acp"] @@ -274,6 +273,7 @@ flowchart TD pkg_session_title_all_prompts_llm["session-title-all-prompts-llm"] pkg_skill_badge["skill-badge"] pkg_tool_ralph["tool-ralph"] + pkg_tool_session_query["tool-session-query"] pkg_tool_terminal["tool-terminal"] pkg_webhook["webhook"] pkg_webhook_github["webhook-github"] @@ -1146,14 +1146,6 @@ flowchart TD pkg_session_query_sqlite --> pkg_session pkg_session_query_sqlite --> pkg_session_persistence pkg_session_query_sqlite --> pkg_session_query - pkg_tool_session_query --> pkg_agent - pkg_tool_session_query --> pkg_llm - pkg_tool_session_query --> pkg_session - pkg_tool_session_query --> pkg_session_projection - pkg_tool_session_query --> pkg_session_query - pkg_tool_session_query --> pkg_system_prompt - pkg_tool_session_query --> pkg_timeout - pkg_tool_session_query --> pkg_tools pkg_acp --> pkg_agent pkg_acp --> pkg_attachment pkg_acp --> pkg_llm @@ -1196,6 +1188,14 @@ flowchart TD pkg_experimental_claude_code_mods --> pkg_typert_protocol pkg_experimental_claude_code_mods --> pkg_user_questions pkg_experimental_claude_code_mods --> pkg_working_directory + pkg_tool_session_query --> pkg_agent + pkg_tool_session_query --> pkg_llm + pkg_tool_session_query --> pkg_session + pkg_tool_session_query --> pkg_session_projection + pkg_tool_session_query --> pkg_session_query + pkg_tool_session_query --> pkg_system_prompt + pkg_tool_session_query --> pkg_timeout + pkg_tool_session_query --> pkg_tools pkg_webhook_github --> pkg_credentials pkg_webhook_github --> pkg_host_webserver pkg_webhook_github --> pkg_session @@ -1717,12 +1717,12 @@ flowchart TD | [`subagent`](../packages/subagent/subagent) | `subagent` | [`agent`](../packages/core/agent), [`agent-preset-registry`](../packages/preset/agent-preset-registry), [`attachment`](../packages/attachment/attachment), [`llm`](../packages/llm/llm), [`permission-presets`](../packages/interaction/permission-presets), [`sandbox`](../packages/sandbox/sandbox), [`sandbox-policy`](../packages/sandbox/sandbox-policy), [`scope`](../packages/core/scope), [`session`](../packages/core/session), [`session-persistence`](../packages/session/session-persistence), [`session-projection`](../packages/session/session-projection), [`session-query`](../packages/session-query/session-query), [`system-prompt`](../packages/core/system-prompt), [`tools`](../packages/core/tools), [`typert-protocol`](../packages/typert/protocol), [`user-approval`](../packages/interaction/user-approval), [`util-time`](../packages/util/time), [`working-directory`](../packages/session/working-directory), [`workspace`](../packages/workspace/workspace) | | [`spill-policy`](../packages/spill/spill-policy) | `spill` | [`attachment`](../packages/attachment/attachment), [`fs`](../packages/fs/fs), [`llm`](../packages/llm/llm), [`output-retention`](../packages/util/output-retention), [`session`](../packages/core/session), [`spill`](../packages/spill/spill), [`token-meter`](../packages/llm/token-meter), [`tools`](../packages/core/tools) | | [`session-query-sqlite`](../packages/session-query/session-query-sqlite) | `session-query` | [`session`](../packages/core/session), [`session-persistence`](../packages/session/session-persistence), [`session-query`](../packages/session-query/session-query) | -| [`tool-session-query`](../packages/session-query/tool-session-query) | `session-query` | [`agent`](../packages/core/agent), [`llm`](../packages/llm/llm), [`session`](../packages/core/session), [`session-projection`](../packages/session/session-projection), [`session-query`](../packages/session-query/session-query), [`system-prompt`](../packages/core/system-prompt), [`timeout`](../packages/util/timeout), [`tools`](../packages/core/tools) | | [`acp`](../packages/acp/acp) | `acp` | [`agent`](../packages/core/agent), [`attachment`](../packages/attachment/attachment), [`llm`](../packages/llm/llm), [`mcp-client`](../packages/mcp/mcp-client), [`session`](../packages/core/session), [`session-persistence`](../packages/session/session-persistence), [`token-meter`](../packages/llm/token-meter), [`user-approval`](../packages/interaction/user-approval) | | [`plugin-manager`](../packages/boot/plugin-manager) | `boot` | [`brand`](../packages/util/brand), [`hmr`](../packages/boot/hmr), [`host-plugin-inventory`](../packages/host/plugin-inventory), [`sandbox`](../packages/sandbox/sandbox), [`sandbox-policy`](../packages/sandbox/sandbox-policy), [`subprocess`](../packages/subprocess/subprocess), [`tools`](../packages/core/tools), [`typert-protocol`](../packages/typert/protocol), [`user-approval`](../packages/interaction/user-approval) | | [`compaction-tool-result-pruner`](../packages/compaction/compaction-tool-result-pruner) | `compaction` | [`compaction`](../packages/compaction/compaction), [`llm`](../packages/llm/llm), [`session`](../packages/core/session), [`token-meter`](../packages/llm/token-meter) | | [`experimental-browser-use-runtime`](../packages/experimental/browser-use-runtime) | `experimental` | [`agent`](../packages/core/agent), [`browser-use`](../packages/browser-use/browser-use), [`mcp-client`](../packages/mcp/mcp-client), [`scope`](../packages/core/scope), [`system-prompt`](../packages/core/system-prompt), [`tools`](../packages/core/tools), [`working-directory`](../packages/session/working-directory) | | [`experimental-claude-code-mods`](../packages/experimental/claude-code-mods) | `experimental` | [`agent`](../packages/core/agent), [`commands`](../packages/interaction/commands), [`fs`](../packages/fs/fs), [`llm`](../packages/llm/llm), [`scope`](../packages/core/scope), [`session`](../packages/core/session), [`session-projection`](../packages/session/session-projection), [`storage-domain`](../packages/storage/storage-domain), [`subprocess`](../packages/subprocess/subprocess), [`token-meter`](../packages/llm/token-meter), [`tools`](../packages/core/tools), [`typert-protocol`](../packages/typert/protocol), [`user-questions`](../packages/interaction/user-questions), [`working-directory`](../packages/session/working-directory) | +| [`tool-session-query`](../packages/experimental/tool-session-query) | `experimental` | [`agent`](../packages/core/agent), [`llm`](../packages/llm/llm), [`session`](../packages/core/session), [`session-projection`](../packages/session/session-projection), [`session-query`](../packages/session-query/session-query), [`system-prompt`](../packages/core/system-prompt), [`timeout`](../packages/util/timeout), [`tools`](../packages/core/tools) | | [`webhook-github`](../packages/experimental/webhook-github) | `experimental` | [`credentials`](../packages/credentials/credentials), [`host-webserver`](../packages/host/webserver), [`session`](../packages/core/session), [`webhook`](../packages/experimental/webhook) | | [`subagent-acp`](../packages/subagent/subagent-acp) | `subagent` | [`agent`](../packages/core/agent), [`llm`](../packages/llm/llm), [`session`](../packages/core/session), [`subagent`](../packages/subagent/subagent), [`subprocess`](../packages/subprocess/subprocess), [`timeout`](../packages/util/timeout) | | [`subagent-claude-code`](../packages/subagent/subagent-claude-code) | `subagent` | [`llm`](../packages/llm/llm), [`session`](../packages/core/session), [`subagent`](../packages/subagent/subagent), [`subprocess`](../packages/subprocess/subprocess), [`timeout`](../packages/util/timeout) | diff --git a/docs/module-graph.zh.md b/docs/module-graph.zh.md index a660c3285b..880b3f1365 100644 --- a/docs/module-graph.zh.md +++ b/docs/module-graph.zh.md @@ -105,7 +105,6 @@ flowchart TD pkg_session_log_export["session-log-export"] pkg_session_query["session-query"] pkg_session_query_sqlite["session-query-sqlite"] - pkg_tool_session_query["tool-session-query"] end subgraph group_acp["packages/acp"] pkg_acp["acp"] @@ -276,6 +275,7 @@ flowchart TD pkg_session_title_all_prompts_llm["session-title-all-prompts-llm"] pkg_skill_badge["skill-badge"] pkg_tool_ralph["tool-ralph"] + pkg_tool_session_query["tool-session-query"] pkg_tool_terminal["tool-terminal"] pkg_webhook["webhook"] pkg_webhook_github["webhook-github"] @@ -1148,14 +1148,6 @@ flowchart TD pkg_session_query_sqlite --> pkg_session pkg_session_query_sqlite --> pkg_session_persistence pkg_session_query_sqlite --> pkg_session_query - pkg_tool_session_query --> pkg_agent - pkg_tool_session_query --> pkg_llm - pkg_tool_session_query --> pkg_session - pkg_tool_session_query --> pkg_session_projection - pkg_tool_session_query --> pkg_session_query - pkg_tool_session_query --> pkg_system_prompt - pkg_tool_session_query --> pkg_timeout - pkg_tool_session_query --> pkg_tools pkg_acp --> pkg_agent pkg_acp --> pkg_attachment pkg_acp --> pkg_llm @@ -1198,6 +1190,14 @@ flowchart TD pkg_experimental_claude_code_mods --> pkg_typert_protocol pkg_experimental_claude_code_mods --> pkg_user_questions pkg_experimental_claude_code_mods --> pkg_working_directory + pkg_tool_session_query --> pkg_agent + pkg_tool_session_query --> pkg_llm + pkg_tool_session_query --> pkg_session + pkg_tool_session_query --> pkg_session_projection + pkg_tool_session_query --> pkg_session_query + pkg_tool_session_query --> pkg_system_prompt + pkg_tool_session_query --> pkg_timeout + pkg_tool_session_query --> pkg_tools pkg_webhook_github --> pkg_credentials pkg_webhook_github --> pkg_host_webserver pkg_webhook_github --> pkg_session @@ -1719,12 +1719,12 @@ flowchart TD | [`subagent`](../packages/subagent/subagent) | `subagent` | [`agent`](../packages/core/agent), [`agent-preset-registry`](../packages/preset/agent-preset-registry), [`attachment`](../packages/attachment/attachment), [`llm`](../packages/llm/llm), [`permission-presets`](../packages/interaction/permission-presets), [`sandbox`](../packages/sandbox/sandbox), [`sandbox-policy`](../packages/sandbox/sandbox-policy), [`scope`](../packages/core/scope), [`session`](../packages/core/session), [`session-persistence`](../packages/session/session-persistence), [`session-projection`](../packages/session/session-projection), [`session-query`](../packages/session-query/session-query), [`system-prompt`](../packages/core/system-prompt), [`tools`](../packages/core/tools), [`typert-protocol`](../packages/typert/protocol), [`user-approval`](../packages/interaction/user-approval), [`util-time`](../packages/util/time), [`working-directory`](../packages/session/working-directory), [`workspace`](../packages/workspace/workspace) | | [`spill-policy`](../packages/spill/spill-policy) | `spill` | [`attachment`](../packages/attachment/attachment), [`fs`](../packages/fs/fs), [`llm`](../packages/llm/llm), [`output-retention`](../packages/util/output-retention), [`session`](../packages/core/session), [`spill`](../packages/spill/spill), [`token-meter`](../packages/llm/token-meter), [`tools`](../packages/core/tools) | | [`session-query-sqlite`](../packages/session-query/session-query-sqlite) | `session-query` | [`session`](../packages/core/session), [`session-persistence`](../packages/session/session-persistence), [`session-query`](../packages/session-query/session-query) | -| [`tool-session-query`](../packages/session-query/tool-session-query) | `session-query` | [`agent`](../packages/core/agent), [`llm`](../packages/llm/llm), [`session`](../packages/core/session), [`session-projection`](../packages/session/session-projection), [`session-query`](../packages/session-query/session-query), [`system-prompt`](../packages/core/system-prompt), [`timeout`](../packages/util/timeout), [`tools`](../packages/core/tools) | | [`acp`](../packages/acp/acp) | `acp` | [`agent`](../packages/core/agent), [`attachment`](../packages/attachment/attachment), [`llm`](../packages/llm/llm), [`mcp-client`](../packages/mcp/mcp-client), [`session`](../packages/core/session), [`session-persistence`](../packages/session/session-persistence), [`token-meter`](../packages/llm/token-meter), [`user-approval`](../packages/interaction/user-approval) | | [`plugin-manager`](../packages/boot/plugin-manager) | `boot` | [`brand`](../packages/util/brand), [`hmr`](../packages/boot/hmr), [`host-plugin-inventory`](../packages/host/plugin-inventory), [`sandbox`](../packages/sandbox/sandbox), [`sandbox-policy`](../packages/sandbox/sandbox-policy), [`subprocess`](../packages/subprocess/subprocess), [`tools`](../packages/core/tools), [`typert-protocol`](../packages/typert/protocol), [`user-approval`](../packages/interaction/user-approval) | | [`compaction-tool-result-pruner`](../packages/compaction/compaction-tool-result-pruner) | `compaction` | [`compaction`](../packages/compaction/compaction), [`llm`](../packages/llm/llm), [`session`](../packages/core/session), [`token-meter`](../packages/llm/token-meter) | | [`experimental-browser-use-runtime`](../packages/experimental/browser-use-runtime) | `experimental` | [`agent`](../packages/core/agent), [`browser-use`](../packages/browser-use/browser-use), [`mcp-client`](../packages/mcp/mcp-client), [`scope`](../packages/core/scope), [`system-prompt`](../packages/core/system-prompt), [`tools`](../packages/core/tools), [`working-directory`](../packages/session/working-directory) | | [`experimental-claude-code-mods`](../packages/experimental/claude-code-mods) | `experimental` | [`agent`](../packages/core/agent), [`commands`](../packages/interaction/commands), [`fs`](../packages/fs/fs), [`llm`](../packages/llm/llm), [`scope`](../packages/core/scope), [`session`](../packages/core/session), [`session-projection`](../packages/session/session-projection), [`storage-domain`](../packages/storage/storage-domain), [`subprocess`](../packages/subprocess/subprocess), [`token-meter`](../packages/llm/token-meter), [`tools`](../packages/core/tools), [`typert-protocol`](../packages/typert/protocol), [`user-questions`](../packages/interaction/user-questions), [`working-directory`](../packages/session/working-directory) | +| [`tool-session-query`](../packages/experimental/tool-session-query) | `experimental` | [`agent`](../packages/core/agent), [`llm`](../packages/llm/llm), [`session`](../packages/core/session), [`session-projection`](../packages/session/session-projection), [`session-query`](../packages/session-query/session-query), [`system-prompt`](../packages/core/system-prompt), [`timeout`](../packages/util/timeout), [`tools`](../packages/core/tools) | | [`webhook-github`](../packages/experimental/webhook-github) | `experimental` | [`credentials`](../packages/credentials/credentials), [`host-webserver`](../packages/host/webserver), [`session`](../packages/core/session), [`webhook`](../packages/experimental/webhook) | | [`subagent-acp`](../packages/subagent/subagent-acp) | `subagent` | [`agent`](../packages/core/agent), [`llm`](../packages/llm/llm), [`session`](../packages/core/session), [`subagent`](../packages/subagent/subagent), [`subprocess`](../packages/subprocess/subprocess), [`timeout`](../packages/util/timeout) | | [`subagent-claude-code`](../packages/subagent/subagent-claude-code) | `subagent` | [`llm`](../packages/llm/llm), [`session`](../packages/core/session), [`subagent`](../packages/subagent/subagent), [`subprocess`](../packages/subprocess/subprocess), [`timeout`](../packages/util/timeout) | diff --git a/docs/tool-catalog.i18n.yaml b/docs/tool-catalog.i18n.yaml index e430311c4d..6993c95db5 100644 --- a/docs/tool-catalog.i18n.yaml +++ b/docs/tool-catalog.i18n.yaml @@ -207,20 +207,20 @@ en: eac1dff4b6d9e195 zh: eac1dff4b6d9e195 /tool-schema-catalog/deepseek-ai-dsh-tool-session-query/session-event-read: - en: 6687105065ac3a5f - zh: 48b2f4d38536e4c7 + en: 285bab0bd6b50949 + zh: 9c839e05237a7226 /tool-schema-catalog/deepseek-ai-dsh-tool-session-query/session-event-search: - en: 41251b4cbe9af70d - zh: 8855a5f32b4720e5 + en: 5cd9f05b83f5797e + zh: dc6880566b0c5138 /tool-schema-catalog/deepseek-ai-dsh-tool-session-query/session-event-trace: - en: 14b5ec05fa8c0932 - zh: 3c85d44c13cc42c5 + en: de64e837459d7313 + zh: 60bfcb3691ab862c /tool-schema-catalog/deepseek-ai-dsh-tool-session-query/session-search: - en: 8263202c97568fc3 - zh: 92067337294c7a00 + en: c7bc2ee2892bf0e9 + zh: 1cd6a5d6f7494ca1 /tool-schema-catalog/deepseek-ai-dsh-tool-session-query/session-trace: - en: 22866623e207d94e - zh: 59f4f8eadcdba85c + en: 394175dfcf2bf489 + zh: f62bda32d3a775c7 /tool-schema-catalog/deepseek-ai-dsh-tool-subagent: en: 841abe0dd5913ea7 zh: 841abe0dd5913ea7 diff --git a/docs/tool-catalog.md b/docs/tool-catalog.md index 5230b22ff6..3d15bf8c7a 100644 --- a/docs/tool-catalog.md +++ b/docs/tool-catalog.md @@ -1811,7 +1811,7 @@ Read one full unabridged event and optional neighboring raw-event summaries from } ``` -Source: [`packages/session-query/tool-session-query/src/index.ts`](../packages/session-query/tool-session-query/src/index.ts) +Source: [`packages/experimental/tool-session-query/src/index.ts`](../packages/experimental/tool-session-query/src/index.ts) ### `session_event_search` @@ -1871,7 +1871,7 @@ Search prior events in one authorized session; the current session excludes the } ``` -Source: [`packages/session-query/tool-session-query/src/index.ts`](../packages/session-query/tool-session-query/src/index.ts) +Source: [`packages/experimental/tool-session-query/src/index.ts`](../packages/experimental/tool-session-query/src/index.ts) ### `session_event_trace` @@ -1896,7 +1896,7 @@ Read every direct replacement and relationship to a cited source event for one e } ``` -Source: [`packages/session-query/tool-session-query/src/index.ts`](../packages/session-query/tool-session-query/src/index.ts) +Source: [`packages/experimental/tool-session-query/src/index.ts`](../packages/experimental/tool-session-query/src/index.ts) ### `session_search` @@ -1989,7 +1989,7 @@ Search prior sessions in the caller workspace and return the strongest matching } ``` -Source: [`packages/session-query/tool-session-query/src/index.ts`](../packages/session-query/tool-session-query/src/index.ts) +Source: [`packages/experimental/tool-session-query/src/index.ts`](../packages/experimental/tool-session-query/src/index.ts) ### `session_trace` @@ -2007,7 +2007,7 @@ Read the authorized session lineage around one session, including complete visib } ``` -Source: [`packages/session-query/tool-session-query/src/index.ts`](../packages/session-query/tool-session-query/src/index.ts) +Source: [`packages/experimental/tool-session-query/src/index.ts`](../packages/experimental/tool-session-query/src/index.ts) The five read-only tools hide provider cursors and authorize every result from the immutable calling agent session. The package is opt-in; compositions that need enforced deadlines or bounded inline output also mount the generic timeout or spill policies. diff --git a/docs/tool-catalog.zh.md b/docs/tool-catalog.zh.md index c29125e2a6..249aceafdb 100644 --- a/docs/tool-catalog.zh.md +++ b/docs/tool-catalog.zh.md @@ -1817,7 +1817,7 @@ lsp 工具将提供方选择和语言服务器子进程置于 ctx.lsp 之后, } ``` -来源:[`packages/session-query/tool-session-query/src/index.ts`](../packages/session-query/tool-session-query/src/index.ts) +来源:[`packages/experimental/tool-session-query/src/index.ts`](../packages/experimental/tool-session-query/src/index.ts) ### `session_event_search` @@ -1877,7 +1877,7 @@ lsp 工具将提供方选择和语言服务器子进程置于 ctx.lsp 之后, } ``` -来源:[`packages/session-query/tool-session-query/src/index.ts`](../packages/session-query/tool-session-query/src/index.ts) +来源:[`packages/experimental/tool-session-query/src/index.ts`](../packages/experimental/tool-session-query/src/index.ts) ### `session_event_trace` @@ -1902,7 +1902,7 @@ lsp 工具将提供方选择和语言服务器子进程置于 ctx.lsp 之后, } ``` -来源:[`packages/session-query/tool-session-query/src/index.ts`](../packages/session-query/tool-session-query/src/index.ts) +来源:[`packages/experimental/tool-session-query/src/index.ts`](../packages/experimental/tool-session-query/src/index.ts) ### `session_search` @@ -1995,7 +1995,7 @@ lsp 工具将提供方选择和语言服务器子进程置于 ctx.lsp 之后, } ``` -来源:[`packages/session-query/tool-session-query/src/index.ts`](../packages/session-query/tool-session-query/src/index.ts) +来源:[`packages/experimental/tool-session-query/src/index.ts`](../packages/experimental/tool-session-query/src/index.ts) ### `session_trace` @@ -2013,7 +2013,7 @@ lsp 工具将提供方选择和语言服务器子进程置于 ctx.lsp 之后, } ``` -来源:[`packages/session-query/tool-session-query/src/index.ts`](../packages/session-query/tool-session-query/src/index.ts) +来源:[`packages/experimental/tool-session-query/src/index.ts`](../packages/experimental/tool-session-query/src/index.ts) 这 5 个只读工具会隐藏提供方游标,并根据不可变的调用 agent 会话为每个结果授权。该包需要选择启用;需要强制截止时间或限制行内输出的组合还会挂载通用超时或 spill 策略。 diff --git a/packages/experimental/README.i18n.yaml b/packages/experimental/README.i18n.yaml index a4b0e9025f..b647223dbf 100644 --- a/packages/experimental/README.i18n.yaml +++ b/packages/experimental/README.i18n.yaml @@ -18,8 +18,8 @@ en: b55aeb927737b90d zh: 0b215fcb5c2c7908 /packages-experimental/packages: - en: 8dbff5ff0843dd44 - zh: 5d8947f8a309f8b0 + en: 5dc3d36150168040 + zh: 99f215662e4dd5d6 /packages-experimental/related-documentation: en: 1cb9d3448d44e48d zh: cd326d70a746b896 diff --git a/packages/experimental/README.md b/packages/experimental/README.md index 8af9546c29..2b0414bbea 100644 --- a/packages/experimental/README.md +++ b/packages/experimental/README.md @@ -36,6 +36,7 @@ Promotion requires a named product role, documented public behavior and limitati | Package | Role | ctx key | |---|---|---| +| [`tool-session-query`](tool-session-query/README.md) | Workspace-authorized model session search, trace, and event reads | — | | [`hook-protocol`](hook-protocol/README.md) | Hook bridge wire types and durable events | — | | [`hooks-claude-code`](hooks-claude-code/README.md) | Claude Code hook bridge | — | | [`hooks-codex`](hooks-codex/README.md) | Codex hook bridge | — | diff --git a/packages/experimental/README.zh.md b/packages/experimental/README.zh.md index 0bdfcbdd7c..987c365a01 100644 --- a/packages/experimental/README.zh.md +++ b/packages/experimental/README.zh.md @@ -36,6 +36,7 @@ kind: "package-group" | 包 | 职责 | ctx 键 | |---|---|---| +| [`tool-session-query`](tool-session-query/README.zh.md) | 按工作区授权的模型会话搜索、追踪与事件读取 | — | | [`hook-protocol`](hook-protocol/README.zh.md) | 钩子桥接的通信类型与持久事件 | — | | [`hooks-claude-code`](hooks-claude-code/README.zh.md) | Claude Code 钩子桥接 | — | | [`hooks-codex`](hooks-codex/README.zh.md) | Codex 钩子桥接 | — | diff --git a/packages/session-query/tool-session-query/README.i18n.yaml b/packages/experimental/tool-session-query/README.i18n.yaml similarity index 95% rename from packages/session-query/tool-session-query/README.i18n.yaml rename to packages/experimental/tool-session-query/README.i18n.yaml index d00e59da33..50ca25349b 100644 --- a/packages/session-query/tool-session-query/README.i18n.yaml +++ b/packages/experimental/tool-session-query/README.i18n.yaml @@ -1,16 +1,16 @@ # Bilingual-pair consistency record for README.md (docs/i18n/README.md): per heading # section, a hash of its English and Chinese blocks outside code blocks and generated regions. # After editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write packages/session-query/tool-session-query/README.md +# pnpm run verify-translation-pairing --write packages/experimental/tool-session-query/README.md /: en: f6e08c67514237ad zh: cfcb09b6263a9b00 /deepseek-ai-dsh-tool-session-query: - en: e54233a0061ef78e - zh: b4569dd1d15f313b + en: b5808fddb3f84df3 + zh: becb2efb056e9db9 /deepseek-ai-dsh-tool-session-query/summary: - en: d66e5b7500572fc2 - zh: 961ae6f7b640c3dc + en: 8f37f26ebcb6c746 + zh: 63f2a7f393822280 /deepseek-ai-dsh-tool-session-query/table-of-contents: en: d152484eb41ac6b4 zh: 09388d293f9be9cb diff --git a/packages/session-query/tool-session-query/README.md b/packages/experimental/tool-session-query/README.md similarity index 92% rename from packages/session-query/tool-session-query/README.md rename to packages/experimental/tool-session-query/README.md index ff8f1c03f6..4463c2fb07 100644 --- a/packages/session-query/tool-session-query/README.md +++ b/packages/experimental/tool-session-query/README.md @@ -9,7 +9,7 @@ English | [中文](README.zh.md) ## Summary -Use `dsh-tool-session-query` to let a model search earlier sessions, inspect event matches, trace session or event relationships, and read exact event data. Its five read-only tools return cursor-free text and authorize cross-session access only when the target session's `cwd` exactly matches the caller's; callers without a `cwd` can inspect only themselves. Search excludes the caller session and asks the model to narrow its query when the deployment result cap is reached. The package is opt-in, and enabling it adds fixed guidance plus five tool schemas to every model request. +Use the experimental `dsh-tool-session-query` tools to let a model search earlier sessions, inspect event matches, trace session or event relationships, and read exact event data. Its five read-only tools return cursor-free text and authorize cross-session access only when the target session's `cwd` exactly matches the caller's; callers without a `cwd` can inspect only themselves. Search excludes the caller session and asks the model to narrow its query when the deployment result cap is reached. The package is opt-in, and enabling it adds fixed guidance plus five tool schemas to every model request. ## Table of Contents @@ -102,8 +102,8 @@ Each executor derives the caller, normalizes the model's arguments into service Read these pages when the package-level contract is not enough. They move from the tool surface to the underlying service, the schema catalog, and the design evidence. - [Generated tool catalog](../../../docs/tool-catalog.md#deepseek-aidsh-tool-session-query) — the five tool schemas as the model sees them. -- [dsh-session-query](../session-query/README.md) — the service these tools call. -- [dsh-session-query-sqlite](../session-query-sqlite/README.md) — the full-text backend behind the two search tools. +- [dsh-session-query](../../session-query/session-query/README.md) — the service these tools call. +- [dsh-session-query-sqlite](../../session-query/session-query-sqlite/README.md) — the full-text backend behind the two search tools. - [Session Query subsystem reference](../../../docs/subsystems/session-query.md) — the type-level contract under the tools. - [Model-facing session query tools](../../../.agents/notes/archived/feature/2026-07-24-model-facing-session-query-tools.md) — workspace authority, cursor-free results, and spill decisions. diff --git a/packages/session-query/tool-session-query/README.zh.md b/packages/experimental/tool-session-query/README.zh.md similarity index 92% rename from packages/session-query/tool-session-query/README.zh.md rename to packages/experimental/tool-session-query/README.zh.md index b8410b6148..3f54d666ee 100644 --- a/packages/session-query/tool-session-query/README.zh.md +++ b/packages/experimental/tool-session-query/README.zh.md @@ -9,7 +9,7 @@ kind: "package-reference" ## 概述 -使用 `dsh-tool-session-query` 可让模型搜索既往会话、检查事件匹配、追踪会话或事件关系,并读取精确事件数据。它的五个只读工具返回无游标文本;只有目标会话的 `cwd` 与调用方完全匹配时才允许跨会话访问,没有 `cwd` 的调用方只能检查自己。搜索会排除调用方会话,并在达到部署结果上限时要求模型缩小查询。本包是 opt-in;启用后,每次模型请求都会增加固定指引与五个工具 schema。 +使用实验性的 `dsh-tool-session-query` 工具可让模型搜索既往会话、检查事件匹配、追踪会话或事件关系,并读取精确事件数据。它的五个只读工具返回无游标文本;只有目标会话的 `cwd` 与调用方完全匹配时才允许跨会话访问,没有 `cwd` 的调用方只能检查自己。搜索会排除调用方会话,并在达到部署结果上限时要求模型缩小查询。本包是 opt-in;启用后,每次模型请求都会增加固定指引与五个工具 schema。 ## 目录 @@ -102,8 +102,8 @@ kind: "package-reference" 当包级约定不够用时阅读以下页面。它们从工具表面逐步进入底层服务、schema 目录与设计证据。 - [生成的工具目录](../../../docs/tool-catalog.zh.md#deepseek-aidsh-tool-session-query)——模型看到的五个工具 schema。 -- [dsh-session-query](../session-query/README.zh.md)——这些工具调用的服务。 -- [dsh-session-query-sqlite](../session-query-sqlite/README.zh.md)——两个搜索工具背后的全文后端。 +- [dsh-session-query](../../session-query/session-query/README.zh.md)——这些工具调用的服务。 +- [dsh-session-query-sqlite](../../session-query/session-query-sqlite/README.zh.md)——两个搜索工具背后的全文后端。 - [会话查询子系统参考](../../../docs/subsystems/session-query.zh.md)——工具之下的类型级约定。 - [面向模型的会话查询工具](../../../.agents/notes/archived/feature/2026-07-24-model-facing-session-query-tools.md)——工作区授权、无游标结果与 spill 决策。 diff --git a/packages/session-query/tool-session-query/package.json b/packages/experimental/tool-session-query/package.json similarity index 97% rename from packages/session-query/tool-session-query/package.json rename to packages/experimental/tool-session-query/package.json index 20c47c8a8f..c2708f81bc 100644 --- a/packages/session-query/tool-session-query/package.json +++ b/packages/experimental/tool-session-query/package.json @@ -8,7 +8,7 @@ "repository": { "type": "git", "url": "git+https://github.com/deepseek-ai/deepseek-harness.git", - "directory": "packages/session-query/tool-session-query" + "directory": "packages/experimental/tool-session-query" }, "type": "module", "main": "lib/index.js", diff --git a/packages/session-query/tool-session-query/src/index.ts b/packages/experimental/tool-session-query/src/index.ts similarity index 100% rename from packages/session-query/tool-session-query/src/index.ts rename to packages/experimental/tool-session-query/src/index.ts diff --git a/packages/session-query/tool-session-query/src/input.ts b/packages/experimental/tool-session-query/src/input.ts similarity index 100% rename from packages/session-query/tool-session-query/src/input.ts rename to packages/experimental/tool-session-query/src/input.ts diff --git a/packages/session-query/tool-session-query/src/operations.ts b/packages/experimental/tool-session-query/src/operations.ts similarity index 100% rename from packages/session-query/tool-session-query/src/operations.ts rename to packages/experimental/tool-session-query/src/operations.ts diff --git a/packages/session-query/tool-session-query/src/presentation.ts b/packages/experimental/tool-session-query/src/presentation.ts similarity index 100% rename from packages/session-query/tool-session-query/src/presentation.ts rename to packages/experimental/tool-session-query/src/presentation.ts diff --git a/packages/session-query/tool-session-query/src/service-boundary.ts b/packages/experimental/tool-session-query/src/service-boundary.ts similarity index 100% rename from packages/session-query/tool-session-query/src/service-boundary.ts rename to packages/experimental/tool-session-query/src/service-boundary.ts diff --git a/packages/session-query/tool-session-query/src/workspace-access.ts b/packages/experimental/tool-session-query/src/workspace-access.ts similarity index 100% rename from packages/session-query/tool-session-query/src/workspace-access.ts rename to packages/experimental/tool-session-query/src/workspace-access.ts diff --git a/packages/session-query/tool-session-query/tests/sqlite-integration.spec.ts b/packages/experimental/tool-session-query/tests/sqlite-integration.spec.ts similarity index 100% rename from packages/session-query/tool-session-query/tests/sqlite-integration.spec.ts rename to packages/experimental/tool-session-query/tests/sqlite-integration.spec.ts diff --git a/packages/session-query/tool-session-query/tests/tool-session-query.spec.ts b/packages/experimental/tool-session-query/tests/tool-session-query.spec.ts similarity index 100% rename from packages/session-query/tool-session-query/tests/tool-session-query.spec.ts rename to packages/experimental/tool-session-query/tests/tool-session-query.spec.ts diff --git a/packages/session-query/tool-session-query/tsconfig.json b/packages/experimental/tool-session-query/tsconfig.json similarity index 93% rename from packages/session-query/tool-session-query/tsconfig.json rename to packages/experimental/tool-session-query/tsconfig.json index a7236af4b9..c3636a6deb 100644 --- a/packages/session-query/tool-session-query/tsconfig.json +++ b/packages/experimental/tool-session-query/tsconfig.json @@ -30,7 +30,7 @@ "path": "../../core/system-prompt" }, { - "path": "../session-query" + "path": "../../session-query/session-query" }, { "path": "../../util/timeout" diff --git a/packages/preset/agent-preset/skills/cordis-composition-reference/references/packages.md b/packages/preset/agent-preset/skills/cordis-composition-reference/references/packages.md index 6b6d05970b..15791ebbf2 100644 --- a/packages/preset/agent-preset/skills/cordis-composition-reference/references/packages.md +++ b/packages/preset/agent-preset/skills/cordis-composition-reference/references/packages.md @@ -205,6 +205,7 @@ Every package below exports a Cordis plugin that a bundle patch can name in a Lo | `@deepseek-ai/dsh-session-title-all-prompts-llm` | yes | All-user-messages LLM provider plugin for DeepSeek Harness session titles | | `@deepseek-ai/dsh-skill-badge` | no | Bundled dsh badge skill provider for DeepSeek Harness | | `@deepseek-ai/dsh-tool-ralph` | yes | Model-facing fresh-agent Ralph loop over the workflow and subagent seams | +| `@deepseek-ai/dsh-tool-session-query` | yes | Workspace-authorized model-facing session history search, trace, and event read tools | | `@deepseek-ai/dsh-tool-terminal` | yes | Six model-facing persistent PTY tools with owner isolation and generic background-job integration | | `@deepseek-ai/dsh-webhook` | no | Fire-and-forget webhook rule runtime that creates Workspace-backed DeepSeek Harness Sessions | | `@deepseek-ai/dsh-webhook-github` | yes | Signed GitHub HTTP webhook adapter for the DeepSeek Harness webhook runtime | @@ -373,7 +374,6 @@ Every package below exports a Cordis plugin that a bundle patch can name in a Lo |---|---|---| | `@deepseek-ai/dsh-session-log-export` | yes | Web Session-log export command and shared download dialog | | `@deepseek-ai/dsh-session-query-sqlite` | yes | Concrete ctx.sessionQuery backend with SQLite FTS5 search | -| `@deepseek-ai/dsh-tool-session-query` | yes | Workspace-authorized model-facing session history search, trace, and event read tools | ## settings diff --git a/packages/session-query/README.i18n.yaml b/packages/session-query/README.i18n.yaml index 81a886291c..e391a1291c 100644 --- a/packages/session-query/README.i18n.yaml +++ b/packages/session-query/README.i18n.yaml @@ -9,17 +9,17 @@ en: 65758f8a3a8d5406 zh: e6f4d737bf11851a /session-query-session-retrieval-capability-family/summary: - en: 34f1f2b609594cfa - zh: 868a29d637dd7f8d + en: b2a84a2330f8770e + zh: fdf89c6e704bced0 /session-query-session-retrieval-capability-family/table-of-contents: en: 1eb35b015a6c423f zh: a8a3dceee2c9e943 /session-query-session-retrieval-capability-family/packages: - en: a4261b2c9c0fc9eb - zh: e1e439d5438e9542 + en: 03f48fd85e12934a + zh: 4fb3f345f5d91572 /session-query-session-retrieval-capability-family/related-documentation: - en: dae8951ca37f8c47 - zh: 1f63549ca52ed298 + en: aa03439fc68a285d + zh: eb074a3318b92024 /session-query-session-retrieval-capability-family/dev-note: en: b75c8458928b72b9 zh: 003ba4e17b4b5269 diff --git a/packages/session-query/README.md b/packages/session-query/README.md index fe206a31ae..240076d95b 100644 --- a/packages/session-query/README.md +++ b/packages/session-query/README.md @@ -9,7 +9,7 @@ English | [中文](README.zh.md) ## Summary -The `session-query/` group provides retrieval over live and durable session history, independent of compaction: programmatic callers query one unified service for exact logs, filtered lists, relationship traces, and full-text search; a SQLite backend powers the search; the model gets five workspace-authorized tools; and the Web UI gets an `/export` command that downloads a session ZIP. Search results agree with the conversation history the model sees. This page maps the group; each package README owns its per-package contract. +The `session-query/` group provides retrieval over live and durable session history, independent of compaction: programmatic callers query one unified service for exact logs, filtered lists, relationship traces, and full-text search; a SQLite backend powers the search; the Web UI gets an `/export` command that downloads a session ZIP. Search results agree with the conversation history the model sees. This page maps the group; each package README owns its per-package contract. ## Table of Contents @@ -29,7 +29,6 @@ Each package README describes what you can do with its part of the family. | [`session-query/`](session-query/README.md) | Unified session-history query service: exact reads, relationship traces, and filters | `ctx.sessionQuery` | | [`session-query-sqlite/`](session-query-sqlite/README.md) | Full-text search across session history backed by a SQLite FTS5 index | registers on `ctx.sessionQuery` | | [`session-log-export/`](session-log-export/README.md) | Web `/export` command and browser download of a session ZIP | `ctx.sessionLogDownload` (browser) | -| [`tool-session-query/`](tool-session-query/README.md) | Model-facing tools to search, trace, and read session history | registers on `ctx.tools` | ----- @@ -38,6 +37,8 @@ Each package README describes what you can do with its part of the family. Start with the subsystem reference for the shared query vocabulary, then the design records behind tracing and search. +The default Web and Desktop use this shared query, index, and export infrastructure. The [experimental model-facing tools](../experimental/tool-session-query/README.md) are a separate optional consumer. + - [Session Query subsystem reference](../../docs/subsystems/session-query.md) — logical records, filters, search pages, lineage, bounded reads, and event relationships. - [Session query relationship tracing](../../.agents/notes/archived/feature/2026-07-13-session-query-tracing.md) — trace semantics and the validation boundary. - [SQLite FTS5 session search](../../.agents/notes/archived/feature/2026-07-10-sqlite-session-query-provider.md) — search semantics, reconciliation, and the tokenizer decision. diff --git a/packages/session-query/README.zh.md b/packages/session-query/README.zh.md index f8200a9008..f443ff7ee4 100644 --- a/packages/session-query/README.zh.md +++ b/packages/session-query/README.zh.md @@ -9,7 +9,7 @@ kind: "package-group" ## 概述 -`session-query/` 组提供对实时与持久会话历史的检索,且独立于压缩(compaction):程序化调用方通过一个统一服务查询精确日志、过滤后的列表、关系追踪与全文搜索;SQLite 后端支撑搜索;模型获得五个经工作区授权的工具;Web 界面获得下载会话 ZIP 的 `/export` 命令。搜索结果与模型看到的对话历史一致。本页概述该组;各包的 README 分别说明各自的包级约定。 +`session-query/` 组提供对实时与持久会话历史的检索,且独立于压缩(compaction):程序化调用方通过一个统一服务查询精确日志、过滤后的列表、关系追踪与全文搜索;SQLite 后端支撑搜索;Web 界面获得下载会话 ZIP 的 `/export` 命令。搜索结果与模型看到的对话历史一致。本页概述该组;各包的 README 分别说明各自的包级约定。 ## 目录 @@ -29,7 +29,6 @@ kind: "package-group" | [`session-query/`](session-query/README.zh.md) | 统一的会话历史查询服务:精确读取、关系追踪与过滤 | `ctx.sessionQuery` | | [`session-query-sqlite/`](session-query-sqlite/README.zh.md) | 基于 SQLite FTS5 索引的会话历史全文搜索 | 注册到 `ctx.sessionQuery` | | [`session-log-export/`](session-log-export/README.zh.md) | Web `/export` 命令与浏览器下载会话 ZIP | `ctx.sessionLogDownload`(浏览器) | -| [`tool-session-query/`](tool-session-query/README.zh.md) | 面向模型的搜索、追踪与读取会话历史工具 | 注册到 `ctx.tools` | ----- @@ -38,6 +37,8 @@ kind: "package-group" 先从子系统参考了解共享的查询词汇,再看追踪与搜索背后的设计记录。 +默认 Web 和 Desktop 使用这套共享查询、索引与导出基础设施。[实验性面向模型工具](../experimental/tool-session-query/README.zh.md)是独立的可选消费方。 + - [会话查询子系统参考](../../docs/subsystems/session-query.zh.md)——逻辑记录、过滤器、搜索页、血缘、有界读取与事件关系。 - [会话查询关系追踪](../../.agents/notes/archived/feature/2026-07-13-session-query-tracing.md)——追踪语义与校验边界。 - [SQLite FTS5 会话搜索](../../.agents/notes/archived/feature/2026-07-10-sqlite-session-query-provider.md)——搜索语义、对账与 tokenizer 决策。 diff --git a/packages/session-query/session-query-sqlite/README.i18n.yaml b/packages/session-query/session-query-sqlite/README.i18n.yaml index 4283f80008..653817639e 100644 --- a/packages/session-query/session-query-sqlite/README.i18n.yaml +++ b/packages/session-query/session-query-sqlite/README.i18n.yaml @@ -48,8 +48,8 @@ en: cb1e6861a47a618c zh: 18863cdd4986f4b7 /deepseek-ai-dsh-session-query-sqlite/further-exploration: - en: 42b7e3cad4b867df - zh: 2549014912f746a9 + en: b563921a29050088 + zh: 9a0b3d365b38bbb8 /deepseek-ai-dsh-session-query-sqlite/model-experience: en: ff9dc9f0f67efd4d zh: ad284a65c2091e0f diff --git a/packages/session-query/session-query-sqlite/README.md b/packages/session-query/session-query-sqlite/README.md index 570af4d43f..3b16bc7826 100644 --- a/packages/session-query/session-query-sqlite/README.md +++ b/packages/session-query/session-query-sqlite/README.md @@ -118,7 +118,7 @@ Read these pages when the package-level contract is not enough. They move from t - [Session Query subsystem reference](../../../docs/subsystems/session-query.md) — the full type-level contract this backend implements. - [dsh-session-query](../session-query/README.md) — the service definition: exact reads, filters, and traces this backend inherits. -- [dsh-tool-session-query](../tool-session-query/README.md) — the model-facing consumer that calls these search methods. +- [dsh-tool-session-query](../../experimental/tool-session-query/README.md) — the model-facing consumer that calls these search methods. - [SQLite FTS5 session search](../../../.agents/notes/archived/feature/2026-07-10-sqlite-session-query-provider.md) — search semantics, reconciliation, and the tokenizer decision. - [JSONL session persistence](../../session/session-persistence-jsonl/README.md) — the authoritative Session store this disposable index observes; keep its root separate from this package's database path. diff --git a/packages/session-query/session-query-sqlite/README.zh.md b/packages/session-query/session-query-sqlite/README.zh.md index 32055370e8..53784fab0a 100644 --- a/packages/session-query/session-query-sqlite/README.zh.md +++ b/packages/session-query/session-query-sqlite/README.zh.md @@ -118,7 +118,7 @@ kind: "package-reference" - [会话查询子系统参考](../../../docs/subsystems/session-query.zh.md)——本后端实现的完整类型级约定。 - [dsh-session-query](../session-query/README.zh.md)——服务定义:本后端继承的精确读取、过滤与追踪。 -- [dsh-tool-session-query](../tool-session-query/README.zh.md)——调用这些搜索方法的面向模型消费方。 +- [dsh-tool-session-query](../../experimental/tool-session-query/README.zh.md)——调用这些搜索方法的面向模型消费方。 - [SQLite FTS5 会话搜索](../../../.agents/notes/archived/feature/2026-07-10-sqlite-session-query-provider.md)——搜索语义、对账与 tokenizer 决策。 - [JSONL 会话持久化](../../session/session-persistence-jsonl/README.zh.md)——本可丢弃索引观察的权威 Session store;其 root 必须与本包的数据库路径分开。 diff --git a/packages/session-query/session-query/README.i18n.yaml b/packages/session-query/session-query/README.i18n.yaml index ccbe002f80..869eadc5ac 100644 --- a/packages/session-query/session-query/README.i18n.yaml +++ b/packages/session-query/session-query/README.i18n.yaml @@ -48,8 +48,8 @@ en: 48922e284adddd1b zh: 9956dcc57e027d77 /deepseek-ai-dsh-session-query/further-exploration: - en: 40a0579a433d568e - zh: c34ff46da6cbd3e5 + en: f88ce622ab36eb5b + zh: 413c57eed9e81422 /deepseek-ai-dsh-session-query/model-experience: en: dff12da8d1e64e66 zh: e054b0d54e29f899 @@ -63,5 +63,5 @@ en: d2f0d68fe29fb750 zh: 323d21ee73a9e3f6 /deepseek-ai-dsh-session-query/known-limitations-and-deferred-work/dev-note/future-extractor-and-search-provider-registries: - en: 605a72e65297c6cf - zh: 87aa75ec62eccbde + en: a02f189af688d9ff + zh: 375df15a0652e872 diff --git a/packages/session-query/session-query/README.md b/packages/session-query/session-query/README.md index 5706ff3827..5123c469f3 100644 --- a/packages/session-query/session-query/README.md +++ b/packages/session-query/session-query/README.md @@ -124,7 +124,7 @@ Read these pages when the package-level contract is not enough. They move from t - [Session Query subsystem reference](../../../docs/subsystems/session-query.md) — the full type-level contract: records, filters, search pages, lineage, bounded reads, and errors. - [dsh-session-query-sqlite](../session-query-sqlite/README.md) — the shipped full-text backend and its index lifecycle. -- [dsh-tool-session-query](../tool-session-query/README.md) — the model-facing consumer built on this service. +- [dsh-tool-session-query](../../experimental/tool-session-query/README.md) — the model-facing consumer built on this service. - [Session query relationship tracing](../../../.agents/notes/archived/feature/2026-07-13-session-query-tracing.md) — trace semantics and the validation boundary. - [SQLite FTS5 session search](../../../.agents/notes/archived/feature/2026-07-10-sqlite-session-query-provider.md) — how the search surface is implemented and reconciled. @@ -161,6 +161,6 @@ This Dev Note is working context for maintainers: open design questions and dire #### Future: extractor and search-provider registries -Recursive traversal through cited source events, extractor and search-provider registries, and additional model-facing surfaces are deferred; the [tool-session-query README](../tool-session-query/README.md) documents the current consumer surface. +Recursive traversal through cited source events, extractor and search-provider registries, and additional model-facing surfaces are deferred; the [tool-session-query README](../../experimental/tool-session-query/README.md) documents the current consumer surface. diff --git a/packages/session-query/session-query/README.zh.md b/packages/session-query/session-query/README.zh.md index 4f83a1187e..86baa10d4a 100644 --- a/packages/session-query/session-query/README.zh.md +++ b/packages/session-query/session-query/README.zh.md @@ -124,7 +124,7 @@ kind: "package-reference" - [会话查询子系统参考](../../../docs/subsystems/session-query.zh.md)——完整类型级约定:记录、过滤器、搜索页、血缘、有界读取与错误。 - [dsh-session-query-sqlite](../session-query-sqlite/README.zh.md)——已发布的全文后端及其索引生命周期。 -- [dsh-tool-session-query](../tool-session-query/README.zh.md)——构建在本服务之上的面向模型消费方。 +- [dsh-tool-session-query](../../experimental/tool-session-query/README.zh.md)——构建在本服务之上的面向模型消费方。 - [会话查询关系追踪](../../../.agents/notes/archived/feature/2026-07-13-session-query-tracing.md)——追踪语义与校验边界。 - [SQLite FTS5 会话搜索](../../../.agents/notes/archived/feature/2026-07-10-sqlite-session-query-provider.md)——搜索表面如何实现与对账。 @@ -161,6 +161,6 @@ kind: "package-reference" #### 未来:提取器与搜索提供方注册表 -对被引用源事件的递归遍历、提取器与搜索提供方注册表以及更多面向模型表面均被推迟;[tool-session-query README](../tool-session-query/README.zh.md)说明了当前的消费方表面。 +对被引用源事件的递归遍历、提取器与搜索提供方注册表以及更多面向模型表面均被推迟;[tool-session-query README](../../experimental/tool-session-query/README.zh.md)说明了当前的消费方表面。 diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index afd2da49e2..f522f6fca6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -78,7 +78,7 @@ importers: version: link:packages/experimental/tool-ralph '@deepseek-ai/dsh-tool-session-query': specifier: workspace:* - version: link:packages/session-query/tool-session-query + version: link:packages/experimental/tool-session-query '@deepseek-ai/dsh-tool-terminal': specifier: workspace:* version: link:packages/experimental/tool-terminal @@ -6060,7 +6060,7 @@ importers: version: link:../../jobs/tool-jobs '@deepseek-ai/dsh-tool-session-query': specifier: workspace:* - version: link:../../session-query/tool-session-query + version: link:../../experimental/tool-session-query '@deepseek-ai/dsh-tool-terminal': specifier: workspace:* version: link:../../experimental/tool-terminal @@ -8790,6 +8790,61 @@ importers: specifier: workspace:* version: link:../../workflow/workflow-ptc + packages/experimental/tool-session-query: + dependencies: + '@deepseek-ai/dsh-brand': + specifier: workspace:* + version: link:../../util/brand + '@deepseek-ai/schemastery': + specifier: link:../../../vendor/schemastery + version: link:../../../vendor/schemastery + devDependencies: + '@deepseek-ai/cordis': + specifier: workspace:~ + version: link:../../../vendor/cordis + '@deepseek-ai/dsh-agent': + specifier: workspace:* + version: link:../../core/agent + '@deepseek-ai/dsh-agent-loop': + specifier: workspace:* + version: link:../../core/agent-loop + '@deepseek-ai/dsh-llm': + specifier: workspace:* + version: link:../../llm/llm + '@deepseek-ai/dsh-session': + specifier: workspace:* + version: link:../../core/session + '@deepseek-ai/dsh-session-persistence': + specifier: workspace:* + version: link:../../session/session-persistence + '@deepseek-ai/dsh-session-persistence-jsonl': + specifier: workspace:* + version: link:../../session/session-persistence-jsonl + '@deepseek-ai/dsh-session-projection': + specifier: workspace:* + version: link:../../session/session-projection + '@deepseek-ai/dsh-session-query': + specifier: workspace:* + version: link:../../session-query/session-query + '@deepseek-ai/dsh-session-query-sqlite': + specifier: workspace:* + version: link:../../session-query/session-query-sqlite + '@deepseek-ai/dsh-session-title': + specifier: workspace:* + version: link:../../session/session-title + '@deepseek-ai/dsh-system-prompt': + specifier: workspace:* + version: link:../../core/system-prompt + '@deepseek-ai/dsh-timeout': + specifier: workspace:* + version: link:../../util/timeout + '@deepseek-ai/dsh-tool-call-timeout-policy': + specifier: workspace:* + version: link:../../guard/timeout-policy + '@deepseek-ai/dsh-tools': + specifier: workspace:* + version: link:../../core/tools + packages/experimental/tool-terminal: dependencies: '@deepseek-ai/schemastery': @@ -11652,61 +11707,6 @@ importers: specifier: workspace:* version: link:../session-query - packages/session-query/tool-session-query: - dependencies: - '@deepseek-ai/dsh-brand': - specifier: workspace:* - version: link:../../util/brand - '@deepseek-ai/schemastery': - specifier: link:../../../vendor/schemastery - version: link:../../../vendor/schemastery - devDependencies: - '@deepseek-ai/cordis': - specifier: workspace:~ - version: link:../../../vendor/cordis - '@deepseek-ai/dsh-agent': - specifier: workspace:* - version: link:../../core/agent - '@deepseek-ai/dsh-agent-loop': - specifier: workspace:* - version: link:../../core/agent-loop - '@deepseek-ai/dsh-llm': - specifier: workspace:* - version: link:../../llm/llm - '@deepseek-ai/dsh-session': - specifier: workspace:* - version: link:../../core/session - '@deepseek-ai/dsh-session-persistence': - specifier: workspace:* - version: link:../../session/session-persistence - '@deepseek-ai/dsh-session-persistence-jsonl': - specifier: workspace:* - version: link:../../session/session-persistence-jsonl - '@deepseek-ai/dsh-session-projection': - specifier: workspace:* - version: link:../../session/session-projection - '@deepseek-ai/dsh-session-query': - specifier: workspace:* - version: link:../session-query - '@deepseek-ai/dsh-session-query-sqlite': - specifier: workspace:* - version: link:../session-query-sqlite - '@deepseek-ai/dsh-session-title': - specifier: workspace:* - version: link:../../session/session-title - '@deepseek-ai/dsh-system-prompt': - specifier: workspace:* - version: link:../../core/system-prompt - '@deepseek-ai/dsh-timeout': - specifier: workspace:* - version: link:../../util/timeout - '@deepseek-ai/dsh-tool-call-timeout-policy': - specifier: workspace:* - version: link:../../guard/timeout-policy - '@deepseek-ai/dsh-tools': - specifier: workspace:* - version: link:../../core/tools - packages/session/session-checkpoint-policy: devDependencies: '@deepseek-ai/cordis': diff --git a/scripts/experimental-package-policy.ts b/scripts/experimental-package-policy.ts index 29aacb08a6..a5ce0d2666 100644 --- a/scripts/experimental-package-policy.ts +++ b/scripts/experimental-package-policy.ts @@ -2,6 +2,7 @@ /** Existing npm names retained by capabilities now housed under experimental/. */ export const EXPERIMENTAL_PACKAGE_NAME_EXCEPTIONS: Readonly> = { + 'packages/experimental/tool-session-query': '@deepseek-ai/dsh-tool-session-query', 'packages/experimental/session-title-all-prompts-llm': '@deepseek-ai/dsh-session-title-all-prompts-llm', 'packages/experimental/tool-terminal': '@deepseek-ai/dsh-tool-terminal', 'packages/experimental/tool-ralph': '@deepseek-ai/dsh-tool-ralph', diff --git a/scripts/gen-tool-catalog.ts b/scripts/gen-tool-catalog.ts index 18272879b2..efd2fa682a 100644 --- a/scripts/gen-tool-catalog.ts +++ b/scripts/gen-tool-catalog.ts @@ -493,7 +493,7 @@ const TOOL_PACKAGES: ToolPackage[] = [ { pkg: '@deepseek-ai/dsh-tool-session-query', dir: 'tool-session-query', - source: 'packages/session-query/tool-session-query/src/index.ts', + source: 'packages/experimental/tool-session-query/src/index.ts', requires: ['ctx.tools', 'ctx.systemPrompt', 'ctx.sessionQuery', 'a calling Agent for workspace authority'], writes: ['tool/call', 'tool/result'], async mount(ctx) { diff --git a/scripts/no-unknown-casts.baseline.json b/scripts/no-unknown-casts.baseline.json index 61e8da8e1c..786c0b8e4d 100644 --- a/scripts/no-unknown-casts.baseline.json +++ b/scripts/no-unknown-casts.baseline.json @@ -1583,10 +1583,10 @@ "09a269bed9b7eb21c5d84c1826987ceed50b4d193728e8cd1d01015088762f08": 1, "4cb55fef1f53567526f153fbdf22f46c3e83bb3f6be77d5b42baddbae0b07344": 1 }, - "packages/session-query/tool-session-query/tests/sqlite-integration.spec.ts": { + "packages/experimental/tool-session-query/tests/sqlite-integration.spec.ts": { "a66cea6887fa5e33f4d504a7899fcb4b99d79958f6aed01288af1ad6ff557298": 1 }, - "packages/session-query/tool-session-query/tests/tool-session-query.spec.ts": { + "packages/experimental/tool-session-query/tests/tool-session-query.spec.ts": { "0ec8a91117e78ae941807094fc63035e115a3e02412917e632be4f34dbfddc62": 1, "6370792878103b8fe2963dfeb036963572c1da2bb6dd7fcc10681be1c866b490": 1, "a66cea6887fa5e33f4d504a7899fcb4b99d79958f6aed01288af1ad6ff557298": 1 diff --git a/scripts/product-package-policy.ts b/scripts/product-package-policy.ts index 76961bd03c..7034700086 100644 --- a/scripts/product-package-policy.ts +++ b/scripts/product-package-policy.ts @@ -33,7 +33,6 @@ export const PRODUCT_PACKAGE_POLICY: Readonly