From b22b3ba51449ebe1712ddcbea50db06e7fbd49be Mon Sep 17 00:00:00 2001 From: Yichen Jiang Date: Wed, 4 Nov 2026 16:50:39 +0800 Subject: [PATCH] refactor(terminal-panel): name the package @deepseek-ai/dsh-terminal-panel master now rejects the @deepseek-ai/dsh-experimental- prefix for new experimental packages, so the unreleased sidebar terminal backend becomes @deepseek-ai/dsh-terminal-panel with plugin name terminal-panel, and its directory joins EXPERIMENTAL_PACKAGE_NAME_EXCEPTIONS. The terminal bundle, root devDependencies, generators, catalogs, snapshot composition and upgrade guide use the new name; the hand-written tsconfig alias gives way to the generated one. --- docs/capability-seams.i18n.yaml | 4 +- docs/capability-seams.md | 10 +-- docs/capability-seams.zh.md | 10 +-- docs/config-catalog.md | 82 +++++++++---------- docs/config-catalog.zh.md | 82 +++++++++---------- docs/module-graph.md | 10 +-- docs/module-graph.zh.md | 10 +-- docs/tool-catalog.i18n.yaml | 18 ++-- docs/tool-catalog.md | 6 +- docs/tool-catalog.zh.md | 6 +- .../guide.i18n.yaml | 4 +- .../terminal-bundle-sidebar-backend/guide.md | 2 +- .../guide.zh.md | 2 +- package.json | 2 +- .../terminal-bundle/cordis.patch.yml | 2 +- .../experimental/terminal-bundle/package.json | 2 +- .../terminal-panel/README.i18n.yaml | 64 +++++++-------- .../experimental/terminal-panel/README.md | 6 +- .../experimental/terminal-panel/README.zh.md | 6 +- .../experimental/terminal-panel/package.json | 2 +- .../experimental/terminal-panel/src/config.ts | 6 +- .../experimental/terminal-panel/src/index.ts | 4 +- .../references/packages.md | 2 +- pnpm-lock.yaml | 12 +-- scripts/experimental-package-policy.ts | 1 + scripts/gen-doc-graphs.ts | 4 +- scripts/gen-tool-catalog.ts | 4 +- scripts/release/families.spec.ts | 2 +- .../terminal-panel-tools/cordis.snapshot.yml | 2 +- .../session/terminal-panel-tools/cordis.yml | 2 +- tsconfig.base.json | 2 +- 31 files changed, 186 insertions(+), 185 deletions(-) diff --git a/docs/capability-seams.i18n.yaml b/docs/capability-seams.i18n.yaml index 1150e89b0b..fcf37fb728 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: 490a1bf25c0e97e8 - zh: 76f7089d062684ce + en: c46b494967344687 + zh: 4c8f9b9ca4cb538f diff --git a/docs/capability-seams.md b/docs/capability-seams.md index 016c360acd..399a370e12 100644 --- a/docs/capability-seams.md +++ b/docs/capability-seams.md @@ -238,7 +238,7 @@ flowchart LR svc_shellEnv["ctx.shellEnv
Managed bash environment registry"] pkg_terminal["terminal"] svc_terminals["ctx.terminals
Persistent PTY session registry"] - pkg_experimental_terminal_panel["experimental-terminal-panel"] + pkg_terminal_panel["terminal-panel"] pkg_sandbox["sandbox"] svc_sandbox["ctx.sandbox
Process-sandbox seam"] pkg_sandbox_local["sandbox-local"] @@ -377,7 +377,6 @@ flowchart LR pkg_experimental_ptc_runtime_python --> svc_ptcRuntime pkg_experimental_speech_to_text --> svc_speechToText pkg_experimental_speech_to_text_sensevoice --> svc_speechToText - pkg_experimental_terminal_panel --> svc_terminals pkg_experimental_translator --> svc_translator pkg_experimental_worktree --> svc_worktrees pkg_file_reference --> svc_fileReferences @@ -466,6 +465,7 @@ flowchart LR pkg_system_prompt --> svc_systemPrompt pkg_terminal --> svc_terminals pkg_terminal_bash --> svc_terminals + pkg_terminal_panel --> svc_terminals pkg_token_meter --> svc_tokenMeter pkg_tool_subagent --> svc_subagentModelSelection pkg_tools --> svc_tools @@ -558,9 +558,9 @@ flowchart LR svc_sandbox --> pkg_bash_sandbox svc_sandbox --> pkg_terminal_bash svc_sandboxPolicy --> pkg_bash_sandbox - svc_sandboxPolicy --> pkg_experimental_terminal_panel svc_sandboxPolicy --> pkg_fs_sandbox svc_sandboxPolicy --> pkg_terminal_bash + svc_sandboxPolicy --> pkg_terminal_panel svc_sessionPersistence --> pkg_agent_loop svc_sessionPersistence --> pkg_hooks_claude_code svc_sessionPersistence --> pkg_hooks_codex @@ -736,9 +736,9 @@ flowchart LR | `ctx.subprocess` | `seam` | [`subprocess`](../packages/subprocess/subprocess) | [`subprocess-local`](../packages/subprocess/subprocess-local), [`subprocess-ssh`](../packages/ssh/subprocess-ssh) | [`bash-local`](../packages/shell/bash-local), [`bash-sandbox`](../packages/shell/bash-sandbox), [`terminal-bash`](../packages/terminal/terminal-bash), [`lsp-stdio`](../packages/lsp/lsp-stdio), [`subagent-acp`](../packages/subagent/subagent-acp), [`subagent-codex`](../packages/subagent/subagent-codex), [`subagent-claude-code`](../packages/subagent/subagent-claude-code) | - | The bash executors, the PTY shell backend, the LSP host, and the out-of-process ACP, Codex, and Claude Code subagent backends spawn through ctx.subprocess; the service owns process coordinates, tree/session lifetime, stdio dispositions, terminal mechanics, and kill escalation. | | `ctx.shell` | `seam` | [`shell`](../packages/shell/shell) | [`bash-local`](../packages/shell/bash-local), [`bash-sandbox`](../packages/shell/bash-sandbox), [`pwsh-local`](../packages/shell/pwsh-local) | [`tool-bash`](../packages/shell/tool-bash), [`tool-pwsh`](../packages/shell/tool-pwsh), [`hooks-claude-code`](../packages/experimental/hooks-claude-code), [`hooks-codex`](../packages/experimental/hooks-codex) | - | The model-facing shell tools and hook bridges consume this seam; sandboxed, remote, or PowerShell executors replace bash-local without touching them. | | `ctx.shellEnv` | `core` | [`shell-env`](../packages/shell/shell-env) | - | [`tool-bash`](../packages/shell/tool-bash), [`tool-pwsh`](../packages/shell/tool-pwsh) | - | Plugins declare effect-scoped DSH_* facts; each shell tool collects one trusted snapshot per execution and its executor rebuilds the namespace. | -| `ctx.terminals` | `seam` | [`terminal`](../packages/terminal/terminal) | [`terminal-bash`](../packages/terminal/terminal-bash), [`experimental-terminal-panel`](../packages/experimental/terminal-panel) | [`tool-terminal`](../packages/experimental/tool-terminal) | - | The registry owns exact-Agent session identity and cleanup; backends own terminal mechanics, while tool-terminal exposes the owner-scoped model tools. | +| `ctx.terminals` | `seam` | [`terminal`](../packages/terminal/terminal) | [`terminal-bash`](../packages/terminal/terminal-bash), [`terminal-panel`](../packages/experimental/terminal-panel) | [`tool-terminal`](../packages/experimental/tool-terminal) | - | The registry owns exact-Agent session identity and cleanup; backends own terminal mechanics, while tool-terminal exposes the owner-scoped model tools. | | `ctx.sandbox` | `seam` | [`sandbox`](../packages/sandbox/sandbox) | [`sandbox-local`](../packages/sandbox/sandbox-local), [`sandbox-ssh`](../packages/ssh/sandbox-ssh) | [`bash-sandbox`](../packages/shell/bash-sandbox), [`terminal-bash`](../packages/terminal/terminal-bash), [`api-terminal-controller`](../packages/api/terminal-controller) | - | Consumers hand over the exact argv they are about to spawn; same-world backends wrap it under a per-call policy and report enforcement. | -| `ctx.sandboxPolicy` | `core` | [`sandbox-policy`](../packages/sandbox/sandbox-policy) | - | [`bash-sandbox`](../packages/shell/bash-sandbox), [`fs-sandbox`](../packages/fs/fs-sandbox), [`terminal-bash`](../packages/terminal/terminal-bash), [`experimental-terminal-panel`](../packages/experimental/terminal-panel) | - | The one home for the deployment default mode + workspace root; only the sandboxed executor and provider read the service (the tool layers use the pure `sandbox/mode` fold it also exports). Both enforcing families read it so bash and fs cannot confine to different roots. | +| `ctx.sandboxPolicy` | `core` | [`sandbox-policy`](../packages/sandbox/sandbox-policy) | - | [`bash-sandbox`](../packages/shell/bash-sandbox), [`fs-sandbox`](../packages/fs/fs-sandbox), [`terminal-bash`](../packages/terminal/terminal-bash), [`terminal-panel`](../packages/experimental/terminal-panel) | - | The one home for the deployment default mode + workspace root; only the sandboxed executor and provider read the service (the tool layers use the pure `sandbox/mode` fold it also exports). Both enforcing families read it so bash and fs cannot confine to different roots. | | `ctx.approval` | `seam` | [`user-approval`](../packages/interaction/user-approval) | - | [`tools`](../packages/core/tools), [`tool-bash`](../packages/shell/tool-bash), [`acp`](../packages/acp/acp) | - | One-shot permission decisions dispatched over the `approval/request` waterfall; answerers are listeners (the ACP bridge for its own agents), absence fails closed to `unavailable`. | | `ctx.permissionPresets` | `core` | [`permission-presets`](../packages/interaction/permission-presets) | - | - | - | User-facing preset table (`workspace-write`/`danger-full-access`) bundling the sandbox-mode and approval-policy knobs; a switch writes one `permission/preset` event through to both knob events. | | `ctx.ptcRuntime` | `seam` | [`ptc-runtime`](../packages/ptc-runtime/ptc-runtime) | [`ptc-runtime-node`](../packages/ptc-runtime/ptc-runtime-node), [`experimental-ptc-runtime-python`](../packages/experimental/ptc-runtime-python) | [`tool-executor-ptc`](../packages/core/tool-executor-ptc), [`workflow-ptc`](../packages/workflow/workflow-ptc) | - | Runs programs against host-provided async bindings; tool-executor-ptc owns PTC presentation and workflow-ptc owns workflow orchestration. | diff --git a/docs/capability-seams.zh.md b/docs/capability-seams.zh.md index c62b382e30..5fdb88b605 100644 --- a/docs/capability-seams.zh.md +++ b/docs/capability-seams.zh.md @@ -240,7 +240,7 @@ flowchart LR svc_shellEnv["ctx.shellEnv
Managed bash environment registry"] pkg_terminal["terminal"] svc_terminals["ctx.terminals
Persistent PTY session registry"] - pkg_experimental_terminal_panel["experimental-terminal-panel"] + pkg_terminal_panel["terminal-panel"] pkg_sandbox["sandbox"] svc_sandbox["ctx.sandbox
Process-sandbox seam"] pkg_sandbox_local["sandbox-local"] @@ -379,7 +379,6 @@ flowchart LR pkg_experimental_ptc_runtime_python --> svc_ptcRuntime pkg_experimental_speech_to_text --> svc_speechToText pkg_experimental_speech_to_text_sensevoice --> svc_speechToText - pkg_experimental_terminal_panel --> svc_terminals pkg_experimental_translator --> svc_translator pkg_experimental_worktree --> svc_worktrees pkg_file_reference --> svc_fileReferences @@ -468,6 +467,7 @@ flowchart LR pkg_system_prompt --> svc_systemPrompt pkg_terminal --> svc_terminals pkg_terminal_bash --> svc_terminals + pkg_terminal_panel --> svc_terminals pkg_token_meter --> svc_tokenMeter pkg_tool_subagent --> svc_subagentModelSelection pkg_tools --> svc_tools @@ -560,9 +560,9 @@ flowchart LR svc_sandbox --> pkg_bash_sandbox svc_sandbox --> pkg_terminal_bash svc_sandboxPolicy --> pkg_bash_sandbox - svc_sandboxPolicy --> pkg_experimental_terminal_panel svc_sandboxPolicy --> pkg_fs_sandbox svc_sandboxPolicy --> pkg_terminal_bash + svc_sandboxPolicy --> pkg_terminal_panel svc_sessionPersistence --> pkg_agent_loop svc_sessionPersistence --> pkg_hooks_claude_code svc_sessionPersistence --> pkg_hooks_codex @@ -738,9 +738,9 @@ flowchart LR | `ctx.subprocess` | `seam` | [`subprocess`](../packages/subprocess/subprocess) | [`subprocess-local`](../packages/subprocess/subprocess-local), [`subprocess-ssh`](../packages/ssh/subprocess-ssh) | [`bash-local`](../packages/shell/bash-local), [`bash-sandbox`](../packages/shell/bash-sandbox), [`terminal-bash`](../packages/terminal/terminal-bash), [`lsp-stdio`](../packages/lsp/lsp-stdio), [`subagent-acp`](../packages/subagent/subagent-acp), [`subagent-codex`](../packages/subagent/subagent-codex), [`subagent-claude-code`](../packages/subagent/subagent-claude-code) | - | Bash 执行器、PTY shell 后端、LSP Host,以及进程外 ACP、Codex 和 Claude Code subagent 后端都通过 ctx.subprocess 执行 spawn;该服务负责进程坐标、进程树/会话生命周期、stdio 处置、终端机制和 kill 升级。 | | `ctx.shell` | `seam` | [`shell`](../packages/shell/shell) | [`bash-local`](../packages/shell/bash-local), [`bash-sandbox`](../packages/shell/bash-sandbox), [`pwsh-local`](../packages/shell/pwsh-local) | [`tool-bash`](../packages/shell/tool-bash), [`tool-pwsh`](../packages/shell/tool-pwsh), [`hooks-claude-code`](../packages/experimental/hooks-claude-code), [`hooks-codex`](../packages/experimental/hooks-codex) | - | 面向模型的 shell 工具和钩子桥接消费此 seam;沙箱、远程或 PowerShell 执行器可以替换 bash-local,而无需改动这些消费方。 | | `ctx.shellEnv` | `core` | [`shell-env`](../packages/shell/shell-env) | - | [`tool-bash`](../packages/shell/tool-bash), [`tool-pwsh`](../packages/shell/tool-pwsh) | - | 插件声明限定于 effect 作用域的 DSH_* 事实;每个 shell 工具在每次执行时收集一份可信快照,其执行器据此重建命名空间。 | -| `ctx.terminals` | `seam` | [`terminal`](../packages/terminal/terminal) | [`terminal-bash`](../packages/terminal/terminal-bash), [`experimental-terminal-panel`](../packages/experimental/terminal-panel) | [`tool-terminal`](../packages/experimental/tool-terminal) | - | 注册表负责精确到 Agent 的会话身份和清理;后端负责终端机制,tool-terminal 则提供限定于所有者作用域的模型接口。 | +| `ctx.terminals` | `seam` | [`terminal`](../packages/terminal/terminal) | [`terminal-bash`](../packages/terminal/terminal-bash), [`terminal-panel`](../packages/experimental/terminal-panel) | [`tool-terminal`](../packages/experimental/tool-terminal) | - | 注册表负责精确到 Agent 的会话身份和清理;后端负责终端机制,tool-terminal 则提供限定于所有者作用域的模型接口。 | | `ctx.sandbox` | `seam` | [`sandbox`](../packages/sandbox/sandbox) | [`sandbox-local`](../packages/sandbox/sandbox-local), [`sandbox-ssh`](../packages/ssh/sandbox-ssh) | [`bash-sandbox`](../packages/shell/bash-sandbox), [`terminal-bash`](../packages/terminal/terminal-bash), [`api-terminal-controller`](../packages/api/terminal-controller) | - | 消费方交出即将执行 spawn 的确切 argv;与配套子进程提供方共享执行环境的后端按每次调用的策略包装该 argv,并报告强制执行情况。 | -| `ctx.sandboxPolicy` | `core` | [`sandbox-policy`](../packages/sandbox/sandbox-policy) | - | [`bash-sandbox`](../packages/shell/bash-sandbox), [`fs-sandbox`](../packages/fs/fs-sandbox), [`terminal-bash`](../packages/terminal/terminal-bash), [`experimental-terminal-panel`](../packages/experimental/terminal-panel) | - | 统一保存部署默认模式和工作区根目录;只有沙箱执行器和提供方读取该服务(工具层使用它同时导出的纯 `sandbox/mode` 折叠区)。两类强制执行组件都读取该服务,因此 bash 与 fs 不会限制到不同的根目录。 | +| `ctx.sandboxPolicy` | `core` | [`sandbox-policy`](../packages/sandbox/sandbox-policy) | - | [`bash-sandbox`](../packages/shell/bash-sandbox), [`fs-sandbox`](../packages/fs/fs-sandbox), [`terminal-bash`](../packages/terminal/terminal-bash), [`terminal-panel`](../packages/experimental/terminal-panel) | - | 统一保存部署默认模式和工作区根目录;只有沙箱执行器和提供方读取该服务(工具层使用它同时导出的纯 `sandbox/mode` 折叠区)。两类强制执行组件都读取该服务,因此 bash 与 fs 不会限制到不同的根目录。 | | `ctx.approval` | `seam` | [`user-approval`](../packages/interaction/user-approval) | - | [`tools`](../packages/core/tools), [`tool-bash`](../packages/shell/tool-bash), [`acp`](../packages/acp/acp) | - | 一次性权限决策通过 `approval/request` waterfall(瀑布式事件)分派;回答方是监听器(即 ACP 为自身 agent 提供的桥接),没有回答方时以 `unavailable` 关闭失败。 | | `ctx.permissionPresets` | `core` | [`permission-presets`](../packages/interaction/permission-presets) | - | - | - | 面向用户的预设表(`workspace-write`/`danger-full-access`),将沙箱模式与审批策略选项组合在一起;一次切换会写入一个 `permission/preset` 事件,并贯通到两个选项事件。 | | `ctx.ptcRuntime` | `seam` | [`ptc-runtime`](../packages/ptc-runtime/ptc-runtime) | [`ptc-runtime-node`](../packages/ptc-runtime/ptc-runtime-node), [`experimental-ptc-runtime-python`](../packages/experimental/ptc-runtime-python) | [`tool-executor-ptc`](../packages/core/tool-executor-ptc), [`workflow-ptc`](../packages/workflow/workflow-ptc) | - | 使用 Host 提供的异步绑定运行程序;tool-executor-ptc 负责 PTC 呈现,workflow-ptc 负责工作流编排。 | diff --git a/docs/config-catalog.md b/docs/config-catalog.md index ded403f6f4..03f8112b6b 100644 --- a/docs/config-catalog.md +++ b/docs/config-catalog.md @@ -1448,47 +1448,6 @@ export interface Config { ``` - - - -## `@deepseek-ai/dsh-experimental-terminal-panel` - -- `inject`: `terminals` · `terminalController` · `sandboxPolicy` · `tools` · `systemPrompt` -- `source`: [`packages/experimental/terminal-panel/src/config.ts:6`](../packages/experimental/terminal-panel/src/config.ts) - -```ts config-catalog -/** Public plugin configuration. */ -export interface Config { - /** Terminal registry type served by sidebar terminals. */ - backendType: string - /** Initial terminal width; an attached sidebar view resizes it to its panel. */ - cols: number - /** Initial terminal height; an attached sidebar view resizes it to its panel. */ - rows: number - /** Executable names tried among the discovered shells before the execution environment's default shell. */ - preferredShells: string[] - /** Variables added to Agent terminal environments, such as pagers that would otherwise wait for input. */ - environment: Record - /** Output silence that ends shell startup once the shell owns the foreground. */ - startupSilenceMs: number - /** Bound on shell startup, including the person's startup files. */ - startupTimeoutMs: number - /** Output silence after which a send checks whether the shell or a reading program waits for input. */ - promptSilenceMs: number - /** Minimum interval between foreground process inspections, each of which may start `ps` twice. */ - probeIntervalMs: number - /** Output silence that ends a send as `inferred_idle`. */ - idleSilenceMs: number - /** Bound on one send. */ - timeoutMs: number - /** Maximum UTF-8 bytes in one screen read, send output or startup screen. */ - maxReadBytes: number - /** Register `user_terminal_list` and `user_terminal_read`, whose screen text enters the Session log and model requests. */ - readUserTerminals: boolean -} -``` - - @@ -3977,6 +3936,47 @@ export type ShellDialect = 'bash' | 'pwsh' ``` + + + +## `@deepseek-ai/dsh-terminal-panel` + +- `inject`: `terminals` · `terminalController` · `sandboxPolicy` · `tools` · `systemPrompt` +- `source`: [`packages/experimental/terminal-panel/src/config.ts:6`](../packages/experimental/terminal-panel/src/config.ts) + +```ts config-catalog +/** Public plugin configuration. */ +export interface Config { + /** Terminal registry type served by sidebar terminals. */ + backendType: string + /** Initial terminal width; an attached sidebar view resizes it to its panel. */ + cols: number + /** Initial terminal height; an attached sidebar view resizes it to its panel. */ + rows: number + /** Executable names tried among the discovered shells before the execution environment's default shell. */ + preferredShells: string[] + /** Variables added to Agent terminal environments, such as pagers that would otherwise wait for input. */ + environment: Record + /** Output silence that ends shell startup once the shell owns the foreground. */ + startupSilenceMs: number + /** Bound on shell startup, including the person's startup files. */ + startupTimeoutMs: number + /** Output silence after which a send checks whether the shell or a reading program waits for input. */ + promptSilenceMs: number + /** Minimum interval between foreground process inspections, each of which may start `ps` twice. */ + probeIntervalMs: number + /** Output silence that ends a send as `inferred_idle`. */ + idleSilenceMs: number + /** Bound on one send. */ + timeoutMs: number + /** Maximum UTF-8 bytes in one screen read, send output or startup screen. */ + maxReadBytes: number + /** Register `user_terminal_list` and `user_terminal_read`, whose screen text enters the Session log and model requests. */ + readUserTerminals: boolean +} +``` + + diff --git a/docs/config-catalog.zh.md b/docs/config-catalog.zh.md index c41715606d..e1ab6e8e1b 100644 --- a/docs/config-catalog.zh.md +++ b/docs/config-catalog.zh.md @@ -1450,47 +1450,6 @@ export interface Config { ``` - - - -## `@deepseek-ai/dsh-experimental-terminal-panel` - -- `inject`: `terminals` · `terminalController` · `sandboxPolicy` · `tools` · `systemPrompt` -- `source`: [`packages/experimental/terminal-panel/src/config.ts:6`](../packages/experimental/terminal-panel/src/config.ts) - -```ts config-catalog -/** Public plugin configuration. */ -export interface Config { - /** Terminal registry type served by sidebar terminals. */ - backendType: string - /** Initial terminal width; an attached sidebar view resizes it to its panel. */ - cols: number - /** Initial terminal height; an attached sidebar view resizes it to its panel. */ - rows: number - /** Executable names tried among the discovered shells before the execution environment's default shell. */ - preferredShells: string[] - /** Variables added to Agent terminal environments, such as pagers that would otherwise wait for input. */ - environment: Record - /** Output silence that ends shell startup once the shell owns the foreground. */ - startupSilenceMs: number - /** Bound on shell startup, including the person's startup files. */ - startupTimeoutMs: number - /** Output silence after which a send checks whether the shell or a reading program waits for input. */ - promptSilenceMs: number - /** Minimum interval between foreground process inspections, each of which may start `ps` twice. */ - probeIntervalMs: number - /** Output silence that ends a send as `inferred_idle`. */ - idleSilenceMs: number - /** Bound on one send. */ - timeoutMs: number - /** Maximum UTF-8 bytes in one screen read, send output or startup screen. */ - maxReadBytes: number - /** Register `user_terminal_list` and `user_terminal_read`, whose screen text enters the Session log and model requests. */ - readUserTerminals: boolean -} -``` - - @@ -3979,6 +3938,47 @@ export type ShellDialect = 'bash' | 'pwsh' ``` + + + +## `@deepseek-ai/dsh-terminal-panel` + +- `inject`: `terminals` · `terminalController` · `sandboxPolicy` · `tools` · `systemPrompt` +- `source`: [`packages/experimental/terminal-panel/src/config.ts:6`](../packages/experimental/terminal-panel/src/config.ts) + +```ts config-catalog +/** Public plugin configuration. */ +export interface Config { + /** Terminal registry type served by sidebar terminals. */ + backendType: string + /** Initial terminal width; an attached sidebar view resizes it to its panel. */ + cols: number + /** Initial terminal height; an attached sidebar view resizes it to its panel. */ + rows: number + /** Executable names tried among the discovered shells before the execution environment's default shell. */ + preferredShells: string[] + /** Variables added to Agent terminal environments, such as pagers that would otherwise wait for input. */ + environment: Record + /** Output silence that ends shell startup once the shell owns the foreground. */ + startupSilenceMs: number + /** Bound on shell startup, including the person's startup files. */ + startupTimeoutMs: number + /** Output silence after which a send checks whether the shell or a reading program waits for input. */ + promptSilenceMs: number + /** Minimum interval between foreground process inspections, each of which may start `ps` twice. */ + probeIntervalMs: number + /** Output silence that ends a send as `inferred_idle`. */ + idleSilenceMs: number + /** Bound on one send. */ + timeoutMs: number + /** Maximum UTF-8 bytes in one screen read, send output or startup screen. */ + maxReadBytes: number + /** Register `user_terminal_list` and `user_terminal_read`, whose screen text enters the Session log and model requests. */ + readUserTerminals: boolean +} +``` + + diff --git a/docs/module-graph.md b/docs/module-graph.md index b7a118f68c..81613de284 100644 --- a/docs/module-graph.md +++ b/docs/module-graph.md @@ -297,7 +297,6 @@ flowchart TD pkg_experimental_speech_to_text_sensevoice["experimental-speech-to-text-sensevoice"] pkg_experimental_subagent_oar["experimental-subagent-oar"] pkg_experimental_terminal_bundle["experimental-terminal-bundle"] - pkg_experimental_terminal_panel["experimental-terminal-panel"] pkg_experimental_tool_subagent_oar["experimental-tool-subagent-oar"] pkg_experimental_tool_worktree["experimental-tool-worktree"] pkg_experimental_translator["experimental-translator"] @@ -312,6 +311,7 @@ flowchart TD pkg_plugin_recommendations["plugin-recommendations"] pkg_session_title_all_prompts_llm["session-title-all-prompts-llm"] pkg_skill_badge["skill-badge"] + pkg_terminal_panel["terminal-panel"] pkg_tool_ralph["tool-ralph"] pkg_tool_session_query["tool-session-query"] pkg_tool_terminal["tool-terminal"] @@ -986,9 +986,6 @@ flowchart TD pkg_experimental_cua_macos --> pkg_system_prompt pkg_experimental_cua_macos --> pkg_tools pkg_experimental_cua_macos --> pkg_user_questions - pkg_experimental_terminal_panel --> pkg_api_terminal_controller - pkg_experimental_terminal_panel --> pkg_terminal - pkg_experimental_terminal_panel --> pkg_tools pkg_experimental_tool_worktree --> pkg_experimental_worktree pkg_experimental_tool_worktree --> pkg_tools pkg_hooks_codex --> pkg_agent @@ -1001,6 +998,9 @@ flowchart TD pkg_session_title_all_prompts_llm --> pkg_session pkg_session_title_all_prompts_llm --> pkg_session_title pkg_session_title_all_prompts_llm --> pkg_session_title_llm + pkg_terminal_panel --> pkg_api_terminal_controller + pkg_terminal_panel --> pkg_terminal + pkg_terminal_panel --> pkg_tools pkg_tool_terminal --> pkg_agent pkg_tool_terminal --> pkg_jobs pkg_tool_terminal --> pkg_llm @@ -1809,10 +1809,10 @@ flowchart TD | [`experimental-client-ui-forge`](../packages/experimental/client-ui-forge) | `experimental` | [`experimental-forge`](../packages/experimental/forge), [`experimental-worktree`](../packages/experimental/worktree), [`fs`](../packages/fs/fs), [`session`](../packages/core/session), [`timeout`](../packages/util/timeout) | | [`experimental-computer-use-cua-driver-native`](../packages/experimental/computer-use-cua-driver-native) | `experimental` | [`computer-use`](../packages/computer-use/computer-use), [`system-prompt`](../packages/core/system-prompt), [`tools`](../packages/core/tools) | | [`experimental-cua-macos`](../packages/experimental/cua-macos) | `experimental` | [`agent`](../packages/core/agent), [`computer-use`](../packages/computer-use/computer-use), [`subprocess`](../packages/subprocess/subprocess), [`system-prompt`](../packages/core/system-prompt), [`tools`](../packages/core/tools), [`user-questions`](../packages/interaction/user-questions) | -| [`experimental-terminal-panel`](../packages/experimental/terminal-panel) | `experimental` | [`api-terminal-controller`](../packages/api/terminal-controller), [`terminal`](../packages/terminal/terminal), [`tools`](../packages/core/tools) | | [`experimental-tool-worktree`](../packages/experimental/tool-worktree) | `experimental` | [`experimental-worktree`](../packages/experimental/worktree), [`tools`](../packages/core/tools) | | [`hooks-codex`](../packages/experimental/hooks-codex) | `experimental` | [`agent`](../packages/core/agent), [`hook-protocol`](../packages/experimental/hook-protocol), [`llm`](../packages/llm/llm), [`session`](../packages/core/session), [`tools`](../packages/core/tools), [`working-directory`](../packages/session/working-directory) | | [`session-title-all-prompts-llm`](../packages/experimental/session-title-all-prompts-llm) | `experimental` | [`llm`](../packages/llm/llm), [`session`](../packages/core/session), [`session-title`](../packages/session/session-title), [`session-title-llm`](../packages/session/session-title-llm) | +| [`terminal-panel`](../packages/experimental/terminal-panel) | `experimental` | [`api-terminal-controller`](../packages/api/terminal-controller), [`terminal`](../packages/terminal/terminal), [`tools`](../packages/core/tools) | | [`tool-terminal`](../packages/experimental/tool-terminal) | `experimental` | [`agent`](../packages/core/agent), [`jobs`](../packages/jobs/jobs), [`llm`](../packages/llm/llm), [`output-retention`](../packages/util/output-retention), [`system-prompt`](../packages/core/system-prompt), [`terminal`](../packages/terminal/terminal), [`tools`](../packages/core/tools), [`working-directory`](../packages/session/working-directory) | | [`cordis-host-runner`](../packages/extensions/cordis-host-runner) | `extensions` | [`agent`](../packages/core/agent), [`brand`](../packages/util/brand), [`llm`](../packages/llm/llm), [`scope`](../packages/core/scope), [`session`](../packages/core/session), [`tools`](../packages/core/tools), [`typert-protocol`](../packages/typert/protocol) | | [`message-feedback`](../packages/feedback/message-feedback) | `feedback` | [`brand`](../packages/util/brand), [`command-feedback`](../packages/feedback/command-feedback), [`llm`](../packages/llm/llm), [`session`](../packages/core/session), [`session-persistence`](../packages/session/session-persistence), [`typert-protocol`](../packages/typert/protocol) | diff --git a/docs/module-graph.zh.md b/docs/module-graph.zh.md index 8bc455f0b5..325ec1b687 100644 --- a/docs/module-graph.zh.md +++ b/docs/module-graph.zh.md @@ -299,7 +299,6 @@ flowchart TD pkg_experimental_speech_to_text_sensevoice["experimental-speech-to-text-sensevoice"] pkg_experimental_subagent_oar["experimental-subagent-oar"] pkg_experimental_terminal_bundle["experimental-terminal-bundle"] - pkg_experimental_terminal_panel["experimental-terminal-panel"] pkg_experimental_tool_subagent_oar["experimental-tool-subagent-oar"] pkg_experimental_tool_worktree["experimental-tool-worktree"] pkg_experimental_translator["experimental-translator"] @@ -314,6 +313,7 @@ flowchart TD pkg_plugin_recommendations["plugin-recommendations"] pkg_session_title_all_prompts_llm["session-title-all-prompts-llm"] pkg_skill_badge["skill-badge"] + pkg_terminal_panel["terminal-panel"] pkg_tool_ralph["tool-ralph"] pkg_tool_session_query["tool-session-query"] pkg_tool_terminal["tool-terminal"] @@ -988,9 +988,6 @@ flowchart TD pkg_experimental_cua_macos --> pkg_system_prompt pkg_experimental_cua_macos --> pkg_tools pkg_experimental_cua_macos --> pkg_user_questions - pkg_experimental_terminal_panel --> pkg_api_terminal_controller - pkg_experimental_terminal_panel --> pkg_terminal - pkg_experimental_terminal_panel --> pkg_tools pkg_experimental_tool_worktree --> pkg_experimental_worktree pkg_experimental_tool_worktree --> pkg_tools pkg_hooks_codex --> pkg_agent @@ -1003,6 +1000,9 @@ flowchart TD pkg_session_title_all_prompts_llm --> pkg_session pkg_session_title_all_prompts_llm --> pkg_session_title pkg_session_title_all_prompts_llm --> pkg_session_title_llm + pkg_terminal_panel --> pkg_api_terminal_controller + pkg_terminal_panel --> pkg_terminal + pkg_terminal_panel --> pkg_tools pkg_tool_terminal --> pkg_agent pkg_tool_terminal --> pkg_jobs pkg_tool_terminal --> pkg_llm @@ -1811,10 +1811,10 @@ flowchart TD | [`experimental-client-ui-forge`](../packages/experimental/client-ui-forge) | `experimental` | [`experimental-forge`](../packages/experimental/forge), [`experimental-worktree`](../packages/experimental/worktree), [`fs`](../packages/fs/fs), [`session`](../packages/core/session), [`timeout`](../packages/util/timeout) | | [`experimental-computer-use-cua-driver-native`](../packages/experimental/computer-use-cua-driver-native) | `experimental` | [`computer-use`](../packages/computer-use/computer-use), [`system-prompt`](../packages/core/system-prompt), [`tools`](../packages/core/tools) | | [`experimental-cua-macos`](../packages/experimental/cua-macos) | `experimental` | [`agent`](../packages/core/agent), [`computer-use`](../packages/computer-use/computer-use), [`subprocess`](../packages/subprocess/subprocess), [`system-prompt`](../packages/core/system-prompt), [`tools`](../packages/core/tools), [`user-questions`](../packages/interaction/user-questions) | -| [`experimental-terminal-panel`](../packages/experimental/terminal-panel) | `experimental` | [`api-terminal-controller`](../packages/api/terminal-controller), [`terminal`](../packages/terminal/terminal), [`tools`](../packages/core/tools) | | [`experimental-tool-worktree`](../packages/experimental/tool-worktree) | `experimental` | [`experimental-worktree`](../packages/experimental/worktree), [`tools`](../packages/core/tools) | | [`hooks-codex`](../packages/experimental/hooks-codex) | `experimental` | [`agent`](../packages/core/agent), [`hook-protocol`](../packages/experimental/hook-protocol), [`llm`](../packages/llm/llm), [`session`](../packages/core/session), [`tools`](../packages/core/tools), [`working-directory`](../packages/session/working-directory) | | [`session-title-all-prompts-llm`](../packages/experimental/session-title-all-prompts-llm) | `experimental` | [`llm`](../packages/llm/llm), [`session`](../packages/core/session), [`session-title`](../packages/session/session-title), [`session-title-llm`](../packages/session/session-title-llm) | +| [`terminal-panel`](../packages/experimental/terminal-panel) | `experimental` | [`api-terminal-controller`](../packages/api/terminal-controller), [`terminal`](../packages/terminal/terminal), [`tools`](../packages/core/tools) | | [`tool-terminal`](../packages/experimental/tool-terminal) | `experimental` | [`agent`](../packages/core/agent), [`jobs`](../packages/jobs/jobs), [`llm`](../packages/llm/llm), [`output-retention`](../packages/util/output-retention), [`system-prompt`](../packages/core/system-prompt), [`terminal`](../packages/terminal/terminal), [`tools`](../packages/core/tools), [`working-directory`](../packages/session/working-directory) | | [`cordis-host-runner`](../packages/extensions/cordis-host-runner) | `extensions` | [`agent`](../packages/core/agent), [`brand`](../packages/util/brand), [`llm`](../packages/llm/llm), [`scope`](../packages/core/scope), [`session`](../packages/core/session), [`tools`](../packages/core/tools), [`typert-protocol`](../packages/typert/protocol) | | [`message-feedback`](../packages/feedback/message-feedback) | `feedback` | [`brand`](../packages/util/brand), [`command-feedback`](../packages/feedback/command-feedback), [`llm`](../packages/llm/llm), [`session`](../packages/core/session), [`session-persistence`](../packages/session/session-persistence), [`typert-protocol`](../packages/typert/protocol) | diff --git a/docs/tool-catalog.i18n.yaml b/docs/tool-catalog.i18n.yaml index affa098ef6..b61431de5a 100644 --- a/docs/tool-catalog.i18n.yaml +++ b/docs/tool-catalog.i18n.yaml @@ -9,8 +9,8 @@ en: 6cc2cd9ced70bb09 zh: 1c0e6cb4ba2ed637 /tool-schema-catalog/tool-package-map: - en: 21fbffe239f4f589 - zh: a4507fd27e4909a5 + en: 69f4cfc2e5f80244 + zh: a57b1d113f993048 /tool-schema-catalog/deepseek-ai-dsh-plugin-manager: en: e0143916bb634762 zh: e0143916bb634762 @@ -171,15 +171,15 @@ en: 60a8805611533884 zh: 50e4ac6e7f7b9b0a /tool-schema-catalog/deepseek-ai-dsh-tool-terminal/terminal-signal: - en: 6513dce283725b37 - zh: 28e52fc13a8e1379 -/tool-schema-catalog/deepseek-ai-dsh-experimental-terminal-panel: - en: 968a7c0ea2d32bea - zh: 968a7c0ea2d32bea -/tool-schema-catalog/deepseek-ai-dsh-experimental-terminal-panel/user-terminal-list: + en: cc58c5bcfdc3c04e + zh: e673447f4afb0ae5 +/tool-schema-catalog/deepseek-ai-dsh-terminal-panel: + en: 45676c90640a8237 + zh: 45676c90640a8237 +/tool-schema-catalog/deepseek-ai-dsh-terminal-panel/user-terminal-list: en: 8a999f4b549a59ec zh: df9795bf005ae431 -/tool-schema-catalog/deepseek-ai-dsh-experimental-terminal-panel/user-terminal-read: +/tool-schema-catalog/deepseek-ai-dsh-terminal-panel/user-terminal-read: en: 6b8d370041d6f3be zh: 4328fb5d662b4942 /tool-schema-catalog/deepseek-ai-dsh-tool-goal: diff --git a/docs/tool-catalog.md b/docs/tool-catalog.md index 45051e280b..e14167dcd6 100644 --- a/docs/tool-catalog.md +++ b/docs/tool-catalog.md @@ -33,7 +33,7 @@ This table connects model-visible tool names to the plugin package and service s | `@deepseek-ai/dsh-tool-fs` | `apply_patch`, `edit`, `read`, `read_image`, `write` | `ctx.workingDirectory`, `ctx.tools`, `ctx.fs`, `ctx.systemPrompt`, `ctx.attachments (image-tool registration)`, `ctx.llm + an image-capable route (image-tool execution)` | `tool/call`, `fs/write-intent, fs/edit-intent, or fs/delete-intent for mutations`, `fs/observed after read presence/absence or successful file operation`, `durable attachment (read_image)`, `tool/result` | - | The read-before-write/edit policy is added by `@deepseek-ai/dsh-fs-observation-policy` (an `fs/*` event-gate plugin, no schema change); the shipped compositions leave its row disabled, so mutations are unconditional unless a deployment enables it. The image tool is not registered without `ctx.attachments`; its schema is route-independent, and execution refuses unless the exact routed model declares image input. `apply_patch` registers only with `applyPatch: true`; the catalog sets it so the schema is documented. `dsh-base` and the Web `standard` preset enable it; the Web `ptc` and `cordis` presets and the PTC overlay state `applyPatch: false`. | | `@deepseek-ai/dsh-tool-fs-search` | `glob`, `grep` | `ctx.workingDirectory`, `ctx.tools`, `ctx.subprocess`, `ctx.systemPrompt` | `tool/call`, `tool/result` | - | glob and grep are unconditional discovery tools that spawn the packaged ripgrep binary (`@vscode/ripgrep`) through ctx.subprocess as ordinary foreground calls (never background jobs) — no host `rg` install and no shell layer. The catalog uses `sampleOverCapGlobResults: true`; deployments must choose that behavior explicitly. Capped results save the complete formatted list through the optional ctx.spillStore backend; returned locators are follow-up-readable/searchable when the backend exposes local paths in co-located deployments. | | `@deepseek-ai/dsh-tool-terminal` | `terminal_close`, `terminal_list`, `terminal_open`, `terminal_read`, `terminal_send`, `terminal_signal` | `ctx.workingDirectory`, `ctx.tools`, `ctx.terminals`, `ctx.systemPrompt`, `ctx.jobs at call time for run_in_background` | `tool/call`, `tool/result` | - | The six terminal tools are opt-in and complement one-shot shell/filesystem tools. `terminal_send(run_in_background: true)` registers with `ctx.jobs`; TUI, named key sequences, BEL, resize, auto-start, and cross-agent sharing are absent from the schema. | -| `@deepseek-ai/dsh-experimental-terminal-panel` | `user_terminal_list`, `user_terminal_read` | `ctx.tools`, `ctx.systemPrompt`, `ctx.terminals`, `ctx.terminalController`, `ctx.sandboxPolicy`, `a calling Agent` | `tool/call`, `tool/result` | - | The package also serves the six `terminal_*` tools from Web sidebar terminals. `user_terminal_list` and `user_terminal_read` only read terminals the user controls; `readUserTerminals: false` removes both. | +| `@deepseek-ai/dsh-terminal-panel` | `user_terminal_list`, `user_terminal_read` | `ctx.tools`, `ctx.systemPrompt`, `ctx.terminals`, `ctx.terminalController`, `ctx.sandboxPolicy`, `a calling Agent` | `tool/call`, `tool/result` | - | The package also serves the six `terminal_*` tools from Web sidebar terminals. `user_terminal_list` and `user_terminal_read` only read terminals the user controls; `readUserTerminals: false` removes both. | | `@deepseek-ai/dsh-tool-goal` | `create_goal`, `get_goal`, `update_goal` | `ctx.tools`, `ctx.agents`, `ctx.goals`, `ctx.systemPrompt`, `a calling Agent in an authorized open turn` | `tool/call`, `goal/change for mutations`, `tool/result` | - | create, edit, pause, and resume require direct-human root authority; complete and blocked also accept the exact current goal round. The default blocked lower bound is three admitted rounds. | | `@deepseek-ai/dsh-tool-schedule` | `schedule_create`, `schedule_edit`, `schedule_list`, `schedule_view` | `ctx.tools`, `ctx.schedule`, `ctx.systemPrompt` | `tool/call`, `Schedule storage domain create, update, or delete`, `tool/result` | - | A preset or Agent scope mounts this package and decides which agents receive its tools. Management reads and writes Host tasks by id across Sessions. Tasks store an RFC 5545 recurrence and an existing, first-created-and-reused, or per-run-new Session target. Delegated subagents cannot call these tools. | | `@deepseek-ai/dsh-tool-lsp` | `lsp` | `ctx.workingDirectory`, `ctx.tools`, `ctx.lsp`, `ctx.systemPrompt` | `tool/call`, `tool/result` | - | The lsp tool keeps provider selection and language-server subprocesses behind ctx.lsp, so its model-visible schema stays stable across providers. Requires a registered provider (e.g. `@deepseek-ai/dsh-lsp-stdio`) at runtime; without one, a query returns the structured `LSP_UNAVAILABLE` error rather than changing the schema. | @@ -1403,9 +1403,9 @@ Source: [`packages/experimental/tool-terminal/src/index.ts`](../packages/experim The six terminal tools are opt-in and complement one-shot shell/filesystem tools. `terminal_send(run_in_background: true)` registers with `ctx.jobs`; TUI, named key sequences, BEL, resize, auto-start, and cross-agent sharing are absent from the schema. - + -## `@deepseek-ai/dsh-experimental-terminal-panel` +## `@deepseek-ai/dsh-terminal-panel` ### `user_terminal_list` diff --git a/docs/tool-catalog.zh.md b/docs/tool-catalog.zh.md index 425afa3610..be0abf4677 100644 --- a/docs/tool-catalog.zh.md +++ b/docs/tool-catalog.zh.md @@ -37,7 +37,7 @@ | `@deepseek-ai/dsh-tool-fs` | `apply_patch`、`edit`、`read`、`read_image`、`write` | `ctx.workingDirectory`、`ctx.tools`、`ctx.fs`、`ctx.systemPrompt`、`ctx.attachments (image-tool registration)`、`ctx.llm + an image-capable route (image-tool execution)` | `tool/call`、`fs/write-intent, fs/edit-intent, or fs/delete-intent for mutations`、`fs/observed after read presence/absence or successful file operation`、`durable attachment (read_image)`、`tool/result` | - | 先读后写/编辑策略由 `@deepseek-ai/dsh-fs-observation-policy` 添加;它是一个 `fs/*` 事件门禁插件,不会改变 schema。随发行版交付的组合保持该行禁用,因此除非部署启用它,修改都是无条件的。没有 `ctx.attachments` 时图片工具不会注册;其 schema 与路由无关,执行时除非确切路由的模型声明图片输入,否则拒绝。`apply_patch` 仅在 `applyPatch: true` 时注册;目录为了记录其 schema 而开启该开关。`dsh-base` 与 Web 的 `standard` preset 开启它;Web 的 `ptc`、`cordis` preset 以及 PTC overlay 显式写出 `applyPatch: false`。 | | `@deepseek-ai/dsh-tool-fs-search` | `glob`、`grep` | `ctx.workingDirectory`、`ctx.tools`、`ctx.subprocess`、`ctx.systemPrompt` | `tool/call`、`tool/result` | - | glob 和 grep 是无条件可用的发现工具,通过 ctx.subprocess spawn 随包提供的 ripgrep 二进制文件(`@vscode/ripgrep`),并作为普通前台调用运行,绝不作为后台任务;无需在宿主机安装 `rg`,也不经过 shell 层。本目录使用 `sampleOverCapGlobResults: true`;部署必须显式选择该行为。结果超过上限时,会通过可选的 ctx.spillStore 后端保存完整的格式化列表;在共置部署中,如果后端公开本地路径,返回的定位信息可供后续读取/搜索。 | | `@deepseek-ai/dsh-tool-terminal` | `terminal_close`、`terminal_list`、`terminal_open`、`terminal_read`、`terminal_send`、`terminal_signal` | `ctx.workingDirectory`、`ctx.tools`、`ctx.terminals`、`ctx.systemPrompt`、`ctx.jobs at call time for run_in_background` | `tool/call`、`tool/result` | - | 这 6 个终端工具需要选择启用,用于补充一次性 bash/文件系统工具。`terminal_send(run_in_background: true)` 会注册到 `ctx.jobs`;schema 不包含 TUI、具名按键序列、BEL、调整尺寸、自动启动和跨 agent 共享。 | -| `@deepseek-ai/dsh-experimental-terminal-panel` | `user_terminal_list`、`user_terminal_read` | `ctx.tools`、`ctx.systemPrompt`、`ctx.terminals`、`ctx.terminalController`、`ctx.sandboxPolicy`、`a calling Agent` | `tool/call`、`tool/result` | - | 本包还用 Web 侧栏终端承载 6 个 `terminal_*` 工具。`user_terminal_list` 和 `user_terminal_read` 只读取用户控制的终端;`readUserTerminals: false` 会移除这两个工具。 | +| `@deepseek-ai/dsh-terminal-panel` | `user_terminal_list`、`user_terminal_read` | `ctx.tools`、`ctx.systemPrompt`、`ctx.terminals`、`ctx.terminalController`、`ctx.sandboxPolicy`、`a calling Agent` | `tool/call`、`tool/result` | - | 本包还用 Web 侧栏终端承载 6 个 `terminal_*` 工具。`user_terminal_list` 和 `user_terminal_read` 只读取用户控制的终端;`readUserTerminals: false` 会移除这两个工具。 | | `@deepseek-ai/dsh-tool-goal` | `create_goal`、`get_goal`、`update_goal` | `ctx.tools`、`ctx.agents`、`ctx.goals`、`ctx.systemPrompt`、`a calling Agent in an authorized open turn` | `tool/call`、`goal/change for mutations`、`tool/result` | - | create、edit、pause 和 resume 要求直接来自人类的根权限;complete 和 blocked 也接受确切的当前 Goal Round。blocked 的默认下限是 3 个获准的 Round。 | | `@deepseek-ai/dsh-tool-schedule` | `schedule_create`、`schedule_edit`、`schedule_list`、`schedule_view` | `ctx.tools`、`ctx.schedule`、`ctx.systemPrompt` | `tool/call`、Schedule storage domain 创建、更新或删除、`tool/result` | - | preset 或 Agent scope 挂载本包,并决定哪些 Agent 获得工具。管理工具按 id 跨会话读写 Host 的任务。任务保存 RFC 5545 重复规则,执行位置可选已有会话、首次创建后复用的会话或每次运行新建的会话。委派子 Agent 不能调用这些工具。 | | `@deepseek-ai/dsh-tool-lsp` | `lsp` | `ctx.workingDirectory`、`ctx.tools`、`ctx.lsp`、`ctx.systemPrompt` | `tool/call`、`tool/result` | - | lsp 工具将提供方选择和语言服务器子进程置于 ctx.lsp 之后,因此其模型可见 schema 在更换提供方时保持稳定。运行时要求已注册提供方,例如 `@deepseek-ai/dsh-lsp-stdio`;如果没有提供方,查询会返回结构化 `LSP_UNAVAILABLE` 错误,而不会改变 schema。 | @@ -1409,9 +1409,9 @@ glob 和 grep 是无条件可用的发现工具,通过 ctx.subprocess spawn 这 6 个终端工具需要选择启用,用于补充一次性 bash/文件系统工具。`terminal_send(run_in_background: true)` 会注册到 `ctx.jobs`;schema 不包含 TUI、具名按键序列、BEL、调整尺寸、自动启动和跨 agent 共享。 - + -## `@deepseek-ai/dsh-experimental-terminal-panel` +## `@deepseek-ai/dsh-terminal-panel` ### `user_terminal_list` diff --git a/docs/upgrade-guide/v0.2.2-alpha.3/terminal-bundle-sidebar-backend/guide.i18n.yaml b/docs/upgrade-guide/v0.2.2-alpha.3/terminal-bundle-sidebar-backend/guide.i18n.yaml index fed2b5a089..678ec144a5 100644 --- a/docs/upgrade-guide/v0.2.2-alpha.3/terminal-bundle-sidebar-backend/guide.i18n.yaml +++ b/docs/upgrade-guide/v0.2.2-alpha.3/terminal-bundle-sidebar-backend/guide.i18n.yaml @@ -9,8 +9,8 @@ en: 7cde67276f76d652 zh: 8f40021311b896f5 /persistent-terminals-open-in-the-web-sidebar/change: - en: 84baa99f7ad11089 - zh: 4d04e8818f2a2469 + en: 05818c97f3e32442 + zh: 249a6ce6f6b80f0d /persistent-terminals-open-in-the-web-sidebar/migration: en: 1fe14dab0b4e5056 zh: 4afffad398f7a18b diff --git a/docs/upgrade-guide/v0.2.2-alpha.3/terminal-bundle-sidebar-backend/guide.md b/docs/upgrade-guide/v0.2.2-alpha.3/terminal-bundle-sidebar-backend/guide.md index 9e85948889..3b4c710589 100644 --- a/docs/upgrade-guide/v0.2.2-alpha.3/terminal-bundle-sidebar-backend/guide.md +++ b/docs/upgrade-guide/v0.2.2-alpha.3/terminal-bundle-sidebar-backend/guide.md @@ -8,7 +8,7 @@ English | [中文](guide.zh.md) ## Change -The **Persistent terminals** bundle (`@deepseek-ai/dsh-experimental-terminal-bundle`) used to run Agent terminals through `@deepseek-ai/dsh-terminal-bash`: a profile-free Bash on POSIX and PowerShell on Windows, invisible to the person, with sandbox-mode changes refused while one was open. Its `optional-persistent-terminals` group now mounts [`@deepseek-ai/dsh-experimental-terminal-panel`](../../../../packages/experimental/terminal-panel/README.md) instead. Each `terminal_open` becomes a sidebar tab running the execution environment's default shell with the person's startup files, or `pwsh` then `powershell` on Windows; the person can type into it and take it over. The bundle also registers `user_terminal_list` and `user_terminal_read`, and it requires the Web or Desktop composition, which mounts the terminal controller. +The **Persistent terminals** bundle (`@deepseek-ai/dsh-experimental-terminal-bundle`) used to run Agent terminals through `@deepseek-ai/dsh-terminal-bash`: a profile-free Bash on POSIX and PowerShell on Windows, invisible to the person, with sandbox-mode changes refused while one was open. Its `optional-persistent-terminals` group now mounts [`@deepseek-ai/dsh-terminal-panel`](../../../../packages/experimental/terminal-panel/README.md) instead. Each `terminal_open` becomes a sidebar tab running the execution environment's default shell with the person's startup files, or `pwsh` then `powershell` on Windows; the person can type into it and take it over. The bundle also registers `user_terminal_list` and `user_terminal_read`, and it requires the Web or Desktop composition, which mounts the terminal controller. Profile patches that target the removed `optional-terminal-bash` or `optional-terminal-pwsh` rows, or that configure `@deepseek-ai/dsh-terminal-bash` options such as `pollIntervalMs` through them, no longer apply. Headless or other compositions without the terminal controller no longer get a working `shell` backend from this bundle. diff --git a/docs/upgrade-guide/v0.2.2-alpha.3/terminal-bundle-sidebar-backend/guide.zh.md b/docs/upgrade-guide/v0.2.2-alpha.3/terminal-bundle-sidebar-backend/guide.zh.md index 809dca0d93..53c0d07909 100644 --- a/docs/upgrade-guide/v0.2.2-alpha.3/terminal-bundle-sidebar-backend/guide.zh.md +++ b/docs/upgrade-guide/v0.2.2-alpha.3/terminal-bundle-sidebar-backend/guide.zh.md @@ -8,7 +8,7 @@ description: "实验终端 bundle 改为在 Web 侧栏打开 Agent 终端,并 ## 变更 -**持久终端** bundle(`@deepseek-ai/dsh-experimental-terminal-bundle`)原先通过 `@deepseek-ai/dsh-terminal-bash` 运行 Agent 终端:POSIX 上是不加载配置文件的 Bash,Windows 上是 PowerShell,人看不到这些终端,而且有终端打开时会拒绝切换沙箱模式。现在它的 `optional-persistent-terminals` 分组改为挂载 [`@deepseek-ai/dsh-experimental-terminal-panel`](../../../../packages/experimental/terminal-panel/README.zh.md)。每次 `terminal_open` 都会成为一个侧栏标签页,运行执行环境的默认 shell 并加载人的启动文件,Windows 上依次优先 `pwsh` 和 `powershell`;人可以在其中输入并接管。该 bundle 还会注册 `user_terminal_list` 和 `user_terminal_read`,并且需要挂载终端控制器的 Web 或 Desktop 组合。 +**持久终端** bundle(`@deepseek-ai/dsh-experimental-terminal-bundle`)原先通过 `@deepseek-ai/dsh-terminal-bash` 运行 Agent 终端:POSIX 上是不加载配置文件的 Bash,Windows 上是 PowerShell,人看不到这些终端,而且有终端打开时会拒绝切换沙箱模式。现在它的 `optional-persistent-terminals` 分组改为挂载 [`@deepseek-ai/dsh-terminal-panel`](../../../../packages/experimental/terminal-panel/README.zh.md)。每次 `terminal_open` 都会成为一个侧栏标签页,运行执行环境的默认 shell 并加载人的启动文件,Windows 上依次优先 `pwsh` 和 `powershell`;人可以在其中输入并接管。该 bundle 还会注册 `user_terminal_list` 和 `user_terminal_read`,并且需要挂载终端控制器的 Web 或 Desktop 组合。 针对已移除的 `optional-terminal-bash` 或 `optional-terminal-pwsh` 行的 profile patch,以及借这些行配置 `@deepseek-ai/dsh-terminal-bash` 选项(例如 `pollIntervalMs`)的 patch,都不再生效。没有终端控制器的 headless 或其他组合,不再能从这个 bundle 得到可用的 `shell` 后端。 diff --git a/package.json b/package.json index 0367cdecf8..a06da24c4a 100644 --- a/package.json +++ b/package.json @@ -229,7 +229,7 @@ "@deepseek-ai/dsh-tool-executor-ptc": "workspace:*", "@deepseek-ai/dsh-tool-ralph": "workspace:*", "@deepseek-ai/dsh-tool-terminal": "workspace:*", - "@deepseek-ai/dsh-experimental-terminal-panel": "workspace:*", + "@deepseek-ai/dsh-terminal-panel": "workspace:*", "@deepseek-ai/dsh-agent": "workspace:*", "@deepseek-ai/dsh-browser-use": "workspace:*", "@deepseek-ai/dsh-experimental-browser-use-runtime": "workspace:*", diff --git a/packages/experimental/terminal-bundle/cordis.patch.yml b/packages/experimental/terminal-bundle/cordis.patch.yml index 348e01e87c..026c233b8d 100644 --- a/packages/experimental/terminal-bundle/cordis.patch.yml +++ b/packages/experimental/terminal-bundle/cordis.patch.yml @@ -8,7 +8,7 @@ - id: optional-terminal-registry name: '@deepseek-ai/dsh-terminal' - id: optional-terminal-panel - name: '@deepseek-ai/dsh-experimental-terminal-panel' + name: '@deepseek-ai/dsh-terminal-panel' config: preferredShells: !!js "process.platform === 'win32' ? ['pwsh', 'powershell'] : []" - id: optional-tool-terminal diff --git a/packages/experimental/terminal-bundle/package.json b/packages/experimental/terminal-bundle/package.json index 42984a9887..68ac8c09a0 100644 --- a/packages/experimental/terminal-bundle/package.json +++ b/packages/experimental/terminal-bundle/package.json @@ -41,7 +41,7 @@ "dependencies": { "@deepseek-ai/dsh-tool-terminal": "workspace:*", "@deepseek-ai/dsh-terminal": "workspace:*", - "@deepseek-ai/dsh-experimental-terminal-panel": "workspace:*" + "@deepseek-ai/dsh-terminal-panel": "workspace:*" }, "peerDependencies": { "@deepseek-ai/cordis": "workspace:~" diff --git a/packages/experimental/terminal-panel/README.i18n.yaml b/packages/experimental/terminal-panel/README.i18n.yaml index ee20dd594c..612621b5c4 100644 --- a/packages/experimental/terminal-panel/README.i18n.yaml +++ b/packages/experimental/terminal-panel/README.i18n.yaml @@ -5,87 +5,87 @@ /: en: 0b63adc1fd484320 zh: e36325174c1d593e -/deepseek-ai-dsh-experimental-terminal-panel: - en: 74983995f9e80c8e - zh: 78694169950fd947 -/deepseek-ai-dsh-experimental-terminal-panel/summary: +/deepseek-ai-dsh-terminal-panel: + en: e7a67b8b6d8d61bc + zh: 40ac0d2793bf248e +/deepseek-ai-dsh-terminal-panel/summary: en: 20323148eac9c8f3 zh: 707f2b9432460a4b -/deepseek-ai-dsh-experimental-terminal-panel/table-of-contents: +/deepseek-ai-dsh-terminal-panel/table-of-contents: en: d152484eb41ac6b4 zh: 09388d293f9be9cb -/deepseek-ai-dsh-experimental-terminal-panel/use-this-package: +/deepseek-ai-dsh-terminal-panel/use-this-package: en: f0df88f3919c7cbc zh: 76211a1d9e5d5fbc -/deepseek-ai-dsh-experimental-terminal-panel/use-this-package/agent-terminals: +/deepseek-ai-dsh-terminal-panel/use-this-package/agent-terminals: en: 4d8803df6d8735a3 zh: bf389154459db8b7 -/deepseek-ai-dsh-experimental-terminal-panel/use-this-package/user-terminals: +/deepseek-ai-dsh-terminal-panel/use-this-package/user-terminals: en: c99bcbaaa06867aa zh: 98c83a457a3adebb -/deepseek-ai-dsh-experimental-terminal-panel/use-this-package/configuration: +/deepseek-ai-dsh-terminal-panel/use-this-package/configuration: en: 7b1fd9bc46e6e080 zh: c95222f0737a879f -/deepseek-ai-dsh-experimental-terminal-panel/understand-the-implementation: +/deepseek-ai-dsh-terminal-panel/understand-the-implementation: en: 42b15ac6321706aa zh: 4ed0861911abaf5d -/deepseek-ai-dsh-experimental-terminal-panel/understand-the-implementation/source-map: +/deepseek-ai-dsh-terminal-panel/understand-the-implementation/source-map: en: 76351c841eca75f0 zh: be2abe6e09d17d52 -/deepseek-ai-dsh-experimental-terminal-panel/understand-the-implementation/readiness: +/deepseek-ai-dsh-terminal-panel/understand-the-implementation/readiness: en: ba721990bda586de zh: 6b1296e65176aa81 -/deepseek-ai-dsh-experimental-terminal-panel/understand-the-implementation/output: +/deepseek-ai-dsh-terminal-panel/understand-the-implementation/output: en: 9ac59df4b3a3d276 zh: b3a3627649890002 -/deepseek-ai-dsh-experimental-terminal-panel/further-exploration: +/deepseek-ai-dsh-terminal-panel/further-exploration: en: c4ef563acf65e7fc zh: d366ed02fbb2acf7 -/deepseek-ai-dsh-experimental-terminal-panel/model-experience: +/deepseek-ai-dsh-terminal-panel/model-experience: en: 215e7ba838619b7b zh: a311da3843709f90 -/deepseek-ai-dsh-experimental-terminal-panel/model-experience/system-prompt: +/deepseek-ai-dsh-terminal-panel/model-experience/system-prompt: en: cf78b9dd5596495f zh: bd44560f8c2435e8 -/deepseek-ai-dsh-experimental-terminal-panel/model-experience/system-prompt/what-the-model-sees: +/deepseek-ai-dsh-terminal-panel/model-experience/system-prompt/what-the-model-sees: en: 0f7e951ff83821fe zh: 0d69ed71f2769f50 -/deepseek-ai-dsh-experimental-terminal-panel/model-experience/system-prompt/what-the-model-sees/visible-terminal-guidance: +/deepseek-ai-dsh-terminal-panel/model-experience/system-prompt/what-the-model-sees/visible-terminal-guidance: en: 4e394a8b190da36e zh: deb1020a7d413da8 -/deepseek-ai-dsh-experimental-terminal-panel/model-experience/system-prompt/token-effect: +/deepseek-ai-dsh-terminal-panel/model-experience/system-prompt/token-effect: en: c9d6d1a8238b74ab zh: 55cc65464a23a2ad -/deepseek-ai-dsh-experimental-terminal-panel/model-experience/system-prompt/kv-cache-effect: +/deepseek-ai-dsh-terminal-panel/model-experience/system-prompt/kv-cache-effect: en: 386040729139432e zh: 8da76c4a764e1404 -/deepseek-ai-dsh-experimental-terminal-panel/model-experience/tool-schemas: +/deepseek-ai-dsh-terminal-panel/model-experience/tool-schemas: en: 3039bc5e7a796b21 zh: 6b7a9eaf69c9ea53 -/deepseek-ai-dsh-experimental-terminal-panel/model-experience/tool-schemas/what-the-model-sees: - en: 070c0a8095d308bb - zh: 5652e59545e0809f -/deepseek-ai-dsh-experimental-terminal-panel/model-experience/tool-schemas/token-effect: +/deepseek-ai-dsh-terminal-panel/model-experience/tool-schemas/what-the-model-sees: + en: b229715e45f835b7 + zh: 8c64d9b8b0965f96 +/deepseek-ai-dsh-terminal-panel/model-experience/tool-schemas/token-effect: en: 551ac4e891a99b65 zh: 1836af46e76e62c2 -/deepseek-ai-dsh-experimental-terminal-panel/model-experience/tool-schemas/kv-cache-effect: +/deepseek-ai-dsh-terminal-panel/model-experience/tool-schemas/kv-cache-effect: en: c8cbbef533bdb90f zh: eeae03406cc19507 -/deepseek-ai-dsh-experimental-terminal-panel/model-experience/tool-results: +/deepseek-ai-dsh-terminal-panel/model-experience/tool-results: en: beaabb79f229692a zh: 8573891441963be4 -/deepseek-ai-dsh-experimental-terminal-panel/model-experience/tool-results/what-the-model-sees: +/deepseek-ai-dsh-terminal-panel/model-experience/tool-results/what-the-model-sees: en: 2538a26798ee0e5c zh: d9376a7835276ec3 -/deepseek-ai-dsh-experimental-terminal-panel/model-experience/tool-results/token-effect: +/deepseek-ai-dsh-terminal-panel/model-experience/tool-results/token-effect: en: c1be20647b2286db zh: 3a7ad758a74a3da2 -/deepseek-ai-dsh-experimental-terminal-panel/model-experience/tool-results/kv-cache-effect: +/deepseek-ai-dsh-terminal-panel/model-experience/tool-results/kv-cache-effect: en: ac583ab16185a93c zh: b7648468f156c025 -/deepseek-ai-dsh-experimental-terminal-panel/known-limitations-and-deferred-work: +/deepseek-ai-dsh-terminal-panel/known-limitations-and-deferred-work: en: 6532d96a4477d918 zh: 199ed2549f85d0b5 -/deepseek-ai-dsh-experimental-terminal-panel/known-limitations-and-deferred-work/dev-note: +/deepseek-ai-dsh-terminal-panel/known-limitations-and-deferred-work/dev-note: en: e67f633dc6fe7773 zh: 3bb0c20c93f16f98 diff --git a/packages/experimental/terminal-panel/README.md b/packages/experimental/terminal-panel/README.md index 71080e6c1a..bdaad1eb46 100644 --- a/packages/experimental/terminal-panel/README.md +++ b/packages/experimental/terminal-panel/README.md @@ -3,7 +3,7 @@ description: "Persistent Agent terminals shown in the Web sidebar, which the per kind: "package-reference" --- -# @deepseek-ai/dsh-experimental-terminal-panel +# @deepseek-ai/dsh-terminal-panel English | [中文](README.zh.md) @@ -34,7 +34,7 @@ Mount the plugin in a group that isolates `terminals`, beside the registry and t terminals: true config: - name: '@deepseek-ai/dsh-terminal' - - name: '@deepseek-ai/dsh-experimental-terminal-panel' + - name: '@deepseek-ai/dsh-terminal-panel' - name: '@deepseek-ai/dsh-tool-terminal' ``` @@ -134,7 +134,7 @@ Prefix-stable while the plugin stays loaded; loading or unloading it changes the #### What the model sees -The two schemas are listed in the [`dsh-experimental-terminal-panel` catalog section](../../../docs/tool-catalog.md#deepseek-aidsh-experimental-terminal-panel). The six terminal tools keep the schemas of [`dsh-tool-terminal`](../../../docs/tool-catalog.md#deepseek-aidsh-tool-terminal). +The two schemas are listed in the [`dsh-terminal-panel` catalog section](../../../docs/tool-catalog.md#deepseek-aidsh-terminal-panel). The six terminal tools keep the schemas of [`dsh-tool-terminal`](../../../docs/tool-catalog.md#deepseek-aidsh-tool-terminal). #### Token effect diff --git a/packages/experimental/terminal-panel/README.zh.md b/packages/experimental/terminal-panel/README.zh.md index fabef09d77..d69095d11a 100644 --- a/packages/experimental/terminal-panel/README.zh.md +++ b/packages/experimental/terminal-panel/README.zh.md @@ -3,7 +3,7 @@ description: "在 Web 侧栏中显示 Agent 的持久终端,人可以旁观并 kind: "package-reference" --- -# @deepseek-ai/dsh-experimental-terminal-panel +# @deepseek-ai/dsh-terminal-panel [English](README.md) | 中文 @@ -34,7 +34,7 @@ kind: "package-reference" terminals: true config: - name: '@deepseek-ai/dsh-terminal' - - name: '@deepseek-ai/dsh-experimental-terminal-panel' + - name: '@deepseek-ai/dsh-terminal-panel' - name: '@deepseek-ai/dsh-tool-terminal' ``` @@ -134,7 +134,7 @@ Terminals you open with terminal_open appear in the user's side panel. The user #### 模型看到什么 -两个 schema 列在 [`dsh-experimental-terminal-panel` 目录小节](../../../docs/tool-catalog.zh.md#deepseek-aidsh-experimental-terminal-panel)中。6 个终端工具沿用 [`dsh-tool-terminal`](../../../docs/tool-catalog.zh.md#deepseek-aidsh-tool-terminal) 的 schema。 +两个 schema 列在 [`dsh-terminal-panel` 目录小节](../../../docs/tool-catalog.zh.md#deepseek-aidsh-terminal-panel)中。6 个终端工具沿用 [`dsh-tool-terminal`](../../../docs/tool-catalog.zh.md#deepseek-aidsh-tool-terminal) 的 schema。 #### Token 影响 diff --git a/packages/experimental/terminal-panel/package.json b/packages/experimental/terminal-panel/package.json index dd876742c8..735b15a653 100644 --- a/packages/experimental/terminal-panel/package.json +++ b/packages/experimental/terminal-panel/package.json @@ -1,5 +1,5 @@ { - "name": "@deepseek-ai/dsh-experimental-terminal-panel", + "name": "@deepseek-ai/dsh-terminal-panel", "description": "Persistent Agent terminals shown in the Web sidebar, plus read-only access to the user's terminals", "version": "0.2.2-alpha.3", "publishConfig": { diff --git a/packages/experimental/terminal-panel/src/config.ts b/packages/experimental/terminal-panel/src/config.ts index 972df61aef..7461ebbf8f 100644 --- a/packages/experimental/terminal-panel/src/config.ts +++ b/packages/experimental/terminal-panel/src/config.ts @@ -58,12 +58,12 @@ export const Config: z, Config> = z.object({ */ export function validateConfig(config: Config): void { if (config.promptSilenceMs > config.idleSilenceMs) { - throw new Error('experimental-terminal-panel: promptSilenceMs must not exceed idleSilenceMs') + throw new Error('terminal-panel: promptSilenceMs must not exceed idleSilenceMs') } if (config.idleSilenceMs > config.timeoutMs) { - throw new Error('experimental-terminal-panel: idleSilenceMs must not exceed timeoutMs') + throw new Error('terminal-panel: idleSilenceMs must not exceed timeoutMs') } if (config.startupSilenceMs > config.startupTimeoutMs) { - throw new Error('experimental-terminal-panel: startupSilenceMs must not exceed startupTimeoutMs') + throw new Error('terminal-panel: startupSilenceMs must not exceed startupTimeoutMs') } } diff --git a/packages/experimental/terminal-panel/src/index.ts b/packages/experimental/terminal-panel/src/index.ts index 60369876d8..8f2ea06183 100644 --- a/packages/experimental/terminal-panel/src/index.ts +++ b/packages/experimental/terminal-panel/src/index.ts @@ -1,7 +1,7 @@ /** * Visible persistent terminals: a terminal registry backend whose sessions are Agent terminals in the * Session's sidebar, read-only tools for terminals the user opened, and guidance for both. - * @module @deepseek-ai/dsh-experimental-terminal-panel + * @module @deepseek-ai/dsh-terminal-panel */ import type { Context } from '@deepseek-ai/cordis' @@ -19,7 +19,7 @@ export { SUBAGENT_REFUSAL } from './backend.ts' export { TAKEN_OVER } from './session.ts' /** Cordis plugin name. */ -export const name = 'experimental-terminal-panel' +export const name = 'terminal-panel' /** Terminal registry, sidebar terminals, sandbox policy, tool registry and prompt sections. */ export const inject = ['terminals', 'terminalController', 'sandboxPolicy', 'tools', 'systemPrompt'] 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 6c19200648..6a18983335 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 @@ -220,7 +220,6 @@ Every package below exports a Cordis plugin that a bundle patch can name in a Lo | `@deepseek-ai/dsh-experimental-speech-to-text` | yes | Experimental speech recognition with independently selectable providers | | `@deepseek-ai/dsh-experimental-speech-to-text-sensevoice` | yes | Local SenseVoice ONNX transcription with a managed sherpa-onnx process | | `@deepseek-ai/dsh-experimental-subagent-oar` | yes | Experimental one-shot subagents through OAR runtimes | -| `@deepseek-ai/dsh-experimental-terminal-panel` | yes | Persistent Agent terminals shown in the Web sidebar, plus read-only access to the user's terminals | | `@deepseek-ai/dsh-experimental-tool-subagent-oar` | yes | Delegate standalone tasks to configured external subagent providers | | `@deepseek-ai/dsh-experimental-tool-worktree` | no | Model tool that creates and enters a new Git worktree | | `@deepseek-ai/dsh-experimental-translator` | yes | Machine translation with reusable Session results | @@ -230,6 +229,7 @@ Every package below exports a Cordis plugin that a bundle patch can name in a Lo | `@deepseek-ai/dsh-plugin-recommendations` | no | Official plugin suggestions with explicit user activation and persistent conversation decisions | | `@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-terminal-panel` | yes | Persistent Agent terminals shown in the Web sidebar, plus read-only access to the user's terminals | | `@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 | diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b2c3e6b372..bd3fb1b790 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -81,9 +81,6 @@ importers: '@deepseek-ai/dsh-experimental-subagent-oar': specifier: workspace:* version: link:packages/experimental/subagent-oar - '@deepseek-ai/dsh-experimental-terminal-panel': - specifier: workspace:* - version: link:packages/experimental/terminal-panel '@deepseek-ai/dsh-experimental-tool-subagent-oar': specifier: workspace:* version: link:packages/experimental/tool-subagent-oar @@ -114,6 +111,9 @@ importers: '@deepseek-ai/dsh-subagent-dsh-sdk': specifier: workspace:* version: link:packages/subagent/subagent-dsh-sdk + '@deepseek-ai/dsh-terminal-panel': + specifier: workspace:* + version: link:packages/experimental/terminal-panel '@deepseek-ai/dsh-tool-executor-native': specifier: workspace:* version: link:packages/core/tool-executor-native @@ -11072,12 +11072,12 @@ importers: packages/experimental/terminal-bundle: dependencies: - '@deepseek-ai/dsh-experimental-terminal-panel': - specifier: workspace:* - version: link:../terminal-panel '@deepseek-ai/dsh-terminal': specifier: workspace:* version: link:../../terminal/terminal + '@deepseek-ai/dsh-terminal-panel': + specifier: workspace:* + version: link:../terminal-panel '@deepseek-ai/dsh-tool-terminal': specifier: workspace:* version: link:../tool-terminal diff --git a/scripts/experimental-package-policy.ts b/scripts/experimental-package-policy.ts index 38e972b1a5..df85af1620 100644 --- a/scripts/experimental-package-policy.ts +++ b/scripts/experimental-package-policy.ts @@ -11,6 +11,7 @@ export const EXPERIMENTAL_PACKAGE_NAME_EXCEPTIONS: Readonly { '@deepseek-ai/dsh-experimental-speech-to-text', '@deepseek-ai/dsh-experimental-subagent-oar', '@deepseek-ai/dsh-experimental-terminal-bundle', - '@deepseek-ai/dsh-experimental-terminal-panel', + '@deepseek-ai/dsh-terminal-panel', '@deepseek-ai/dsh-tool-ralph', '@deepseek-ai/dsh-tool-session-query', '@deepseek-ai/dsh-experimental-tool-subagent-oar', diff --git a/snapshots/session/terminal-panel-tools/cordis.snapshot.yml b/snapshots/session/terminal-panel-tools/cordis.snapshot.yml index 1cc6f7c211..a4ea45a750 100644 --- a/snapshots/session/terminal-panel-tools/cordis.snapshot.yml +++ b/snapshots/session/terminal-panel-tools/cordis.snapshot.yml @@ -15,7 +15,7 @@ - id: pty name: '@deepseek-ai/dsh-terminal' - id: terminal-panel - name: '@deepseek-ai/dsh-experimental-terminal-panel' + name: '@deepseek-ai/dsh-terminal-panel' - id: tool-terminal name: '@deepseek-ai/dsh-tool-terminal' - id: llm-replay diff --git a/snapshots/session/terminal-panel-tools/cordis.yml b/snapshots/session/terminal-panel-tools/cordis.yml index f05bb16881..76d9a6ce4d 100644 --- a/snapshots/session/terminal-panel-tools/cordis.yml +++ b/snapshots/session/terminal-panel-tools/cordis.yml @@ -12,6 +12,6 @@ - id: pty name: '@deepseek-ai/dsh-terminal' - id: terminal-panel - name: '@deepseek-ai/dsh-experimental-terminal-panel' + name: '@deepseek-ai/dsh-terminal-panel' - id: tool-terminal name: '@deepseek-ai/dsh-tool-terminal' diff --git a/tsconfig.base.json b/tsconfig.base.json index 7cfea282e5..44b5960d0f 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -41,7 +41,6 @@ "@deepseek-ai/dsh-experimental-tool-subagent-oar": ["./packages/experimental/tool-subagent-oar/src/index.ts"], "@deepseek-ai/dsh-experimental-ralph-bundle": ["./packages/experimental/ralph-bundle/src/index.ts"], "@deepseek-ai/dsh-experimental-terminal-bundle": ["./packages/experimental/terminal-bundle/src/index.ts"], - "@deepseek-ai/dsh-experimental-terminal-panel": ["./packages/experimental/terminal-panel/src/index.ts"], "@deepseek-ai/dsh-experimental-badge-skill-bundle": ["./packages/experimental/badge-skill-bundle/src/index.ts"], "@deepseek-ai/dsh-experimental-session-titles-bundle": ["./packages/experimental/session-titles-bundle/src/index.ts"], "@deepseek-ai/dsh-client-product-analytics": ["./packages/client/product-analytics/src/index.ts"], @@ -571,6 +570,7 @@ "@deepseek-ai/dsh-system-prompt": ["./packages/core/system-prompt/src"], "@deepseek-ai/dsh-terminal": ["./packages/terminal/terminal/src"], "@deepseek-ai/dsh-terminal-bash": ["./packages/terminal/terminal-bash/src"], + "@deepseek-ai/dsh-terminal-panel": ["./packages/experimental/terminal-panel/src"], "@deepseek-ai/dsh-time-context": ["./packages/context/time-context/src"], "@deepseek-ai/dsh-timeout": ["./packages/util/timeout/src"], "@deepseek-ai/dsh-tmux-context": ["./packages/context/tmux-context/src"],