@deepseek-ai/dsh-tool-bash 0.2.0-rc.1 → 0.2.1-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.i18n.yaml +6 -6
- package/README.md +2 -3
- package/README.zh.md +2 -3
- package/lib/index.js +5 -5
- package/package.json +33 -33
package/README.i18n.yaml
CHANGED
|
@@ -21,8 +21,8 @@
|
|
|
21
21
|
en: 9a16909fc013c6e5
|
|
22
22
|
zh: ba740dbce3cd2e93
|
|
23
23
|
/deepseek-ai-dsh-tool-bash/use-this-package/running-a-command:
|
|
24
|
-
en:
|
|
25
|
-
zh:
|
|
24
|
+
en: 7610fa7c373e339a
|
|
25
|
+
zh: e3001ca072f53734
|
|
26
26
|
/deepseek-ai-dsh-tool-bash/use-this-package/running-long-commands-in-the-background:
|
|
27
27
|
en: a5eecea7bb7a75e8
|
|
28
28
|
zh: fae7f08e0e11594e
|
|
@@ -42,8 +42,8 @@
|
|
|
42
42
|
en: 9332353fda6ac7be
|
|
43
43
|
zh: 45c17e5e83478032
|
|
44
44
|
/deepseek-ai-dsh-tool-bash/understand-the-implementation/source-map:
|
|
45
|
-
en:
|
|
46
|
-
zh:
|
|
45
|
+
en: 0547d68864628d08
|
|
46
|
+
zh: 5adb79f945b17a0d
|
|
47
47
|
/deepseek-ai-dsh-tool-bash/understand-the-implementation/request-resolution:
|
|
48
48
|
en: b03c1d84aa4b5cd4
|
|
49
49
|
zh: 111eba387b7082ae
|
|
@@ -51,8 +51,8 @@
|
|
|
51
51
|
en: 167c045d6a6278cc
|
|
52
52
|
zh: 3f17ee8d31e0bbad
|
|
53
53
|
/deepseek-ai-dsh-tool-bash/further-exploration:
|
|
54
|
-
en:
|
|
55
|
-
zh:
|
|
54
|
+
en: 15b7464d9a8ddd6a
|
|
55
|
+
zh: 471dba4b69e29aab
|
|
56
56
|
/deepseek-ai-dsh-tool-bash/model-experience:
|
|
57
57
|
en: 215e7ba838619b7b
|
|
58
58
|
zh: a311da3843709f90
|
package/README.md
CHANGED
|
@@ -52,7 +52,7 @@ The generated [configuration catalog](../../../docs/config-catalog.md#deepseek-a
|
|
|
52
52
|
|
|
53
53
|
### Running a command
|
|
54
54
|
|
|
55
|
-
The tool executes `bash -c <command>` and returns the combined output. Commands run in a fresh shell every call, so state never persists — pass `workdir` instead of `cd`. A non-zero exit is reported as `[exit code: N]` for the agent to interpret, not surfaced as a tool error. A `description` in active voice (5–10 words) labels the call in the UI; `timeoutMs` overrides the executor's default and cap. Output beyond the executor's stream caps is truncated to its tail, with the full output saved to a spill file whose path is reported.
|
|
55
|
+
The tool executes `bash -c <command>` and returns the combined output. Commands run in a fresh shell every call, so state never persists — pass `workdir` instead of `cd`. A non-zero exit is reported as `[exit code: N]` for the agent to interpret, not surfaced as a tool error. A `description` in active voice (5–10 words) labels the call in the UI; the schema lists it before `command` and asks the model to emit it first, without enforcing JSON member order. `timeoutMs` overrides the executor's default and cap. Output beyond the executor's stream caps is truncated to its tail, with the full output saved to a spill file whose path is reported. The description tells the agent to verify the resolved absolute target path before any delete or move and to guard variables in such paths with `${VAR:?}`.
|
|
56
56
|
|
|
57
57
|
<a id="running-long-commands-in-the-background"></a>
|
|
58
58
|
### Running long commands in the background
|
|
@@ -95,7 +95,6 @@ This section explains the design decisions behind the tool and points at the cod
|
|
|
95
95
|
| [`src/index.ts`](src/index.ts) | Plugin entry: tool registration, prompt section, arg validation, escalation, request assembly |
|
|
96
96
|
| [`src/background.ts`](src/background.ts) | Own asynchronous shell preparation, map process settlement onto job outcomes, and render a ring read as a process read |
|
|
97
97
|
| [`src/render.ts`](src/render.ts) | Model-facing result text: streams, markers, truncation notices |
|
|
98
|
-
| — | No runtime invariant companion is published; the environment registry validates ownership and collected values at each mutation/read; it publishes no independent snapshot that a companion could cross-check. |
|
|
99
98
|
|
|
100
99
|
### Request resolution
|
|
101
100
|
|
|
@@ -118,7 +117,7 @@ Read these pages when the package-level contract is not enough. They move from t
|
|
|
118
117
|
- [Bash executor subsystem](../../../docs/subsystems/shell.md) — request/spec vocabulary, results, and background processes.
|
|
119
118
|
- [shell-env](../shell-env/README.md) — the managed `DSH_*` environment every call receives.
|
|
120
119
|
- [tool-jobs](../../jobs/tool-jobs/README.md) — `job_output`, `job_list`, and `job_kill` controls for background runs.
|
|
121
|
-
- [sandbox Agent Note](../../../.agents/notes/
|
|
120
|
+
- [historical sandbox Agent Note](../../../.agents/notes/archived/feature/2026-07-06-sandbox.md) — escalation and mode-switching rationale.
|
|
122
121
|
- [Generated tool catalog](../../../docs/tool-catalog.md#deepseek-aidsh-tool-bash) — the exact `bash` argument schema.
|
|
123
122
|
- [Generated configuration catalog](../../../docs/config-catalog.md#deepseek-aidsh-tool-bash) — every accepted config field and its source declaration.
|
|
124
123
|
|
package/README.zh.md
CHANGED
|
@@ -52,7 +52,7 @@ kind: "package-reference"
|
|
|
52
52
|
|
|
53
53
|
### 运行命令
|
|
54
54
|
|
|
55
|
-
工具执行 `bash -c <command>` 并返回合并后的输出。命令每次调用都运行在全新 shell 中,因此状态从不保留——请传 `workdir` 而不是 `cd`。非零退出以 `[exit code: N]` 报告给 agent 解读,而不是作为工具错误抛出。主动语态的 `description`(5–10 个词)在 UI
|
|
55
|
+
工具执行 `bash -c <command>` 并返回合并后的输出。命令每次调用都运行在全新 shell 中,因此状态从不保留——请传 `workdir` 而不是 `cd`。非零退出以 `[exit code: N]` 报告给 agent 解读,而不是作为工具错误抛出。主动语态的 `description`(5–10 个词)在 UI 中标注该调用;schema 将它列在 `command` 前并要求模型先输出它,但不强制 JSON 成员顺序。`timeoutMs` 覆盖执行器的默认值与上限。超出执行器流上限的输出会被截断为尾部,完整输出保存到 spill 文件并报告其路径。工具描述要求 agent 在任何删除或移动前校验解析后的绝对目标路径,并用 `${VAR:?}` 保护此类路径中的变量。
|
|
56
56
|
|
|
57
57
|
<a id="running-long-commands-in-the-background"></a>
|
|
58
58
|
### 后台运行长时间命令
|
|
@@ -95,7 +95,6 @@ kind: "package-reference"
|
|
|
95
95
|
| [`src/index.ts`](src/index.ts) | 插件入口:工具注册、提示词区段、参数校验、升权、请求组装 |
|
|
96
96
|
| [`src/background.ts`](src/background.ts) | 管理异步 shell 准备、将进程结算映射为任务结果,并把输出环读取渲染为进程读取 |
|
|
97
97
|
| [`src/render.ts`](src/render.ts) | 模型侧结果文本:流、标记、截断通知 |
|
|
98
|
-
| — | 不发布运行时不变式伴生入口;环境注册表在每次变更和读取时校验所有权及收集值,且不发布可供伴生入口交叉核对的独立快照;执行关系由能力 seam 负责。 |
|
|
99
98
|
|
|
100
99
|
### 请求解析
|
|
101
100
|
|
|
@@ -118,7 +117,7 @@ kind: "package-reference"
|
|
|
118
117
|
- [Bash 执行器子系统](../../../docs/subsystems/shell.zh.md)——请求/spec 词汇、结果与后台进程。
|
|
119
118
|
- [shell-env](../shell-env/README.zh.md)——每次调用都会收到的受管 `DSH_*` 环境。
|
|
120
119
|
- [tool-jobs](../../jobs/tool-jobs/README.zh.md)——后台运行的 `job_output`、`job_list` 与 `job_kill` 控制。
|
|
121
|
-
- [
|
|
120
|
+
- [历史沙箱 Agent Note](../../../.agents/notes/archived/feature/2026-07-06-sandbox.md)——升权与模式切换的理由。
|
|
122
121
|
- [生成的工具目录](../../../docs/tool-catalog.zh.md#deepseek-aidsh-tool-bash)——`bash` 参数 schema 的确切内容。
|
|
123
122
|
- [生成的配置目录](../../../docs/config-catalog.zh.md#deepseek-aidsh-tool-bash)——每个受支持配置字段及其源声明。
|
|
124
123
|
|
package/lib/index.js
CHANGED
|
@@ -240,7 +240,7 @@ function validateBashArgs(args, effectiveMode) {
|
|
|
240
240
|
validateEscalationArgs(args.sandbox_permissions, justification);
|
|
241
241
|
}
|
|
242
242
|
function bashDescription() {
|
|
243
|
-
return `Execute a bash command (\`bash -c\`) and return its stdout/stderr. Each call runs in a fresh shell; pass \`workdir\` instead of using \`cd\`. Managed \`$${DSH_ENV_PREFIX}*\` variables expose current harness environment facts. Long output is truncated to its tail; the full output is saved to a file whose path is reported when available. Commands may run under a file sandbox; a blocked file operation is reported as \`[sandbox: file access denied under <mode> mode]\`, a policy denial: do not retry another way.`;
|
|
243
|
+
return `Execute a bash command (\`bash -c\`) and return its stdout/stderr. Each call runs in a fresh shell; pass \`workdir\` instead of using \`cd\`. Managed \`$${DSH_ENV_PREFIX}*\` variables expose current harness environment facts. Long output is truncated to its tail; the full output is saved to a file whose path is reported when available. Provide \`description\` before \`command\` in the arguments. Before any delete or move, verify that the resolved absolute target path is the intended one; never run it against a computed path you have not checked. An unset variable expands to an empty string, so guard variables in such paths with \`\${VAR:?}\`. Commands may run under a file sandbox; a blocked file operation is reported as \`[sandbox: file access denied under <mode> mode]\`, a policy denial: do not retry another way.`;
|
|
244
244
|
}
|
|
245
245
|
function presentBashCall(args) {
|
|
246
246
|
if (args.run_in_background === true) return {
|
|
@@ -488,15 +488,15 @@ function apply(ctx, config = {}) {
|
|
|
488
488
|
name: "bash",
|
|
489
489
|
description: bashDescription(),
|
|
490
490
|
parameters: {
|
|
491
|
-
|
|
491
|
+
description: {
|
|
492
492
|
type: "string",
|
|
493
493
|
required: true,
|
|
494
|
-
description: "
|
|
494
|
+
description: "Clear, concise description of what this command does in active voice, 5-10 words (shown in the UI). Examples: \"ls\" → \"List files in current directory\"; \"git status\" → \"Show working tree status\"; \"npm install\" → \"Install package dependencies\"."
|
|
495
495
|
},
|
|
496
|
-
|
|
496
|
+
command: {
|
|
497
497
|
type: "string",
|
|
498
498
|
required: true,
|
|
499
|
-
description: "
|
|
499
|
+
description: "The bash command to execute."
|
|
500
500
|
},
|
|
501
501
|
timeoutMs: {
|
|
502
502
|
type: "number",
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deepseek-ai/dsh-tool-bash",
|
|
3
3
|
"description": "Model-facing bash tool with optional generic background-job and sandbox-escalation support",
|
|
4
|
-
"version": "0.2.
|
|
4
|
+
"version": "0.2.1-alpha.1",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
7
7
|
},
|
|
@@ -27,41 +27,41 @@
|
|
|
27
27
|
],
|
|
28
28
|
"license": "MIT",
|
|
29
29
|
"peerDependencies": {
|
|
30
|
-
"@deepseek-ai/dsh-shell": "0.2.
|
|
31
|
-
"@deepseek-ai/dsh-
|
|
32
|
-
"@deepseek-ai/dsh-
|
|
33
|
-
"@deepseek-ai/dsh-
|
|
34
|
-
"@deepseek-ai/dsh-
|
|
35
|
-
"@deepseek-ai/dsh-
|
|
36
|
-
"@deepseek-ai/dsh-
|
|
37
|
-
"@deepseek-ai/dsh-
|
|
38
|
-
"@deepseek-ai/dsh-
|
|
39
|
-
"@deepseek-ai/
|
|
40
|
-
"@deepseek-ai/
|
|
30
|
+
"@deepseek-ai/dsh-shell": "0.2.1-alpha.1",
|
|
31
|
+
"@deepseek-ai/dsh-agent": "0.2.1-alpha.1",
|
|
32
|
+
"@deepseek-ai/dsh-sandbox": "0.2.1-alpha.1",
|
|
33
|
+
"@deepseek-ai/dsh-llm": "0.2.1-alpha.1",
|
|
34
|
+
"@deepseek-ai/dsh-shell-env": "0.2.1-alpha.1",
|
|
35
|
+
"@deepseek-ai/dsh-sandbox-policy": "0.2.1-alpha.1",
|
|
36
|
+
"@deepseek-ai/dsh-jobs": "0.2.1-alpha.1",
|
|
37
|
+
"@deepseek-ai/dsh-tools": "0.2.1-alpha.1",
|
|
38
|
+
"@deepseek-ai/dsh-system-prompt": "0.2.1-alpha.1",
|
|
39
|
+
"@deepseek-ai/cordis": "~4.0.5-alpha.1",
|
|
40
|
+
"@deepseek-ai/dsh-user-approval": "0.2.1-alpha.1"
|
|
41
41
|
},
|
|
42
42
|
"dependencies": {
|
|
43
|
-
"@deepseek-ai/schemastery": "~3.18.
|
|
43
|
+
"@deepseek-ai/schemastery": "~3.18.5-alpha.1"
|
|
44
44
|
},
|
|
45
45
|
"devDependencies": {
|
|
46
|
-
"@deepseek-ai/dsh-agent": "0.2.
|
|
47
|
-
"@deepseek-ai/dsh-agent-loop": "0.2.
|
|
48
|
-
"@deepseek-ai/dsh-agent-loop-testkit": "0.2.
|
|
49
|
-
"@deepseek-ai/dsh-shell": "0.2.
|
|
50
|
-
"@deepseek-ai/dsh-shell-env": "0.2.
|
|
51
|
-
"@deepseek-ai/dsh-
|
|
52
|
-
"@deepseek-ai/dsh-
|
|
53
|
-
"@deepseek-ai/dsh-
|
|
54
|
-
"@deepseek-ai/dsh-sandbox": "0.2.
|
|
55
|
-
"@deepseek-ai/dsh-
|
|
56
|
-
"@deepseek-ai/dsh-session": "0.2.
|
|
57
|
-
"@deepseek-ai/dsh-
|
|
58
|
-
"@deepseek-ai/dsh-
|
|
59
|
-
"@deepseek-ai/dsh-
|
|
60
|
-
"@deepseek-ai/dsh-tool-jobs": "0.2.
|
|
61
|
-
"@deepseek-ai/dsh-tools": "0.2.
|
|
62
|
-
"@deepseek-ai/dsh-user-approval": "0.2.
|
|
63
|
-
"@deepseek-ai/cordis": "~4.0.
|
|
64
|
-
"@deepseek-ai/dsh-session-projection": "0.2.
|
|
65
|
-
"@deepseek-ai/dsh-jobs-local": "0.2.
|
|
46
|
+
"@deepseek-ai/dsh-agent": "0.2.1-alpha.1",
|
|
47
|
+
"@deepseek-ai/dsh-agent-loop": "0.2.1-alpha.1",
|
|
48
|
+
"@deepseek-ai/dsh-agent-loop-testkit": "0.2.1-alpha.1",
|
|
49
|
+
"@deepseek-ai/dsh-shell": "0.2.1-alpha.1",
|
|
50
|
+
"@deepseek-ai/dsh-shell-env": "0.2.1-alpha.1",
|
|
51
|
+
"@deepseek-ai/dsh-llm": "0.2.1-alpha.1",
|
|
52
|
+
"@deepseek-ai/dsh-subprocess-local": "0.2.1-alpha.1",
|
|
53
|
+
"@deepseek-ai/dsh-sandbox": "0.2.1-alpha.1",
|
|
54
|
+
"@deepseek-ai/dsh-sandbox-policy": "0.2.1-alpha.1",
|
|
55
|
+
"@deepseek-ai/dsh-session": "0.2.1-alpha.1",
|
|
56
|
+
"@deepseek-ai/dsh-session-persistence-jsonl": "0.2.1-alpha.1",
|
|
57
|
+
"@deepseek-ai/dsh-system-prompt": "0.2.1-alpha.1",
|
|
58
|
+
"@deepseek-ai/dsh-jobs": "0.2.1-alpha.1",
|
|
59
|
+
"@deepseek-ai/dsh-bash-local": "0.2.1-alpha.1",
|
|
60
|
+
"@deepseek-ai/dsh-tool-jobs": "0.2.1-alpha.1",
|
|
61
|
+
"@deepseek-ai/dsh-tools": "0.2.1-alpha.1",
|
|
62
|
+
"@deepseek-ai/dsh-user-approval": "0.2.1-alpha.1",
|
|
63
|
+
"@deepseek-ai/cordis": "~4.0.5-alpha.1",
|
|
64
|
+
"@deepseek-ai/dsh-session-projection": "0.2.1-alpha.1",
|
|
65
|
+
"@deepseek-ai/dsh-jobs-local": "0.2.1-alpha.1"
|
|
66
66
|
}
|
|
67
67
|
}
|