@banbolee/dsh-fish-shell 0.6.0 → 0.8.0

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.
Files changed (58) hide show
  1. package/CHANGELOG.md +74 -0
  2. package/README.md +310 -13
  3. package/README.zh.md +99 -4
  4. package/THIRD-PARTY-NOTICES.md +91 -0
  5. package/cordis.patch.yml +56 -0
  6. package/node_modules/@deepseek-ai/cosmokit/LICENSE +21 -0
  7. package/node_modules/@deepseek-ai/cosmokit/README.md +30 -0
  8. package/node_modules/@deepseek-ai/cosmokit/lib/index.js +418 -0
  9. package/node_modules/@deepseek-ai/cosmokit/lib/types/array.d.ts +15 -0
  10. package/node_modules/@deepseek-ai/cosmokit/lib/types/array.d.ts.map +1 -0
  11. package/node_modules/@deepseek-ai/cosmokit/lib/types/index.d.ts +13 -0
  12. package/node_modules/@deepseek-ai/cosmokit/lib/types/index.d.ts.map +1 -0
  13. package/node_modules/@deepseek-ai/cosmokit/lib/types/misc.d.ts +41 -0
  14. package/node_modules/@deepseek-ai/cosmokit/lib/types/misc.d.ts.map +1 -0
  15. package/node_modules/@deepseek-ai/cosmokit/lib/types/string.d.ts +89 -0
  16. package/node_modules/@deepseek-ai/cosmokit/lib/types/string.d.ts.map +1 -0
  17. package/node_modules/@deepseek-ai/cosmokit/lib/types/time.d.ts +19 -0
  18. package/node_modules/@deepseek-ai/cosmokit/lib/types/time.d.ts.map +1 -0
  19. package/node_modules/@deepseek-ai/cosmokit/lib/types/types.d.ts +42 -0
  20. package/node_modules/@deepseek-ai/cosmokit/lib/types/types.d.ts.map +1 -0
  21. package/node_modules/@deepseek-ai/cosmokit/lib/types/volatile.d.ts +40 -0
  22. package/node_modules/@deepseek-ai/cosmokit/lib/types/volatile.d.ts.map +1 -0
  23. package/node_modules/@deepseek-ai/cosmokit/package.json +32 -0
  24. package/node_modules/@deepseek-ai/cosmokit/src/array.ts +42 -0
  25. package/node_modules/@deepseek-ai/cosmokit/src/index.ts +12 -0
  26. package/node_modules/@deepseek-ai/cosmokit/src/misc.ts +78 -0
  27. package/node_modules/@deepseek-ai/cosmokit/src/string.ts +113 -0
  28. package/node_modules/@deepseek-ai/cosmokit/src/time.ts +92 -0
  29. package/node_modules/@deepseek-ai/cosmokit/src/types.ts +168 -0
  30. package/node_modules/@deepseek-ai/cosmokit/src/volatile.ts +86 -0
  31. package/node_modules/@deepseek-ai/dsh-tool-terminal/LICENSE +21 -0
  32. package/node_modules/@deepseek-ai/dsh-tool-terminal/README.i18n.yaml +100 -0
  33. package/node_modules/@deepseek-ai/dsh-tool-terminal/README.md +186 -0
  34. package/node_modules/@deepseek-ai/dsh-tool-terminal/README.zh.md +186 -0
  35. package/node_modules/@deepseek-ai/dsh-tool-terminal/lib/index.js +646 -0
  36. package/node_modules/@deepseek-ai/dsh-tool-terminal/lib/types/background.d.ts +20 -0
  37. package/node_modules/@deepseek-ai/dsh-tool-terminal/lib/types/index.d.ts +32 -0
  38. package/node_modules/@deepseek-ai/dsh-tool-terminal/lib/types/render.d.ts +81 -0
  39. package/node_modules/@deepseek-ai/dsh-tool-terminal/package.json +63 -0
  40. package/node_modules/@deepseek-ai/schemastery/LICENSE +21 -0
  41. package/node_modules/@deepseek-ai/schemastery/README.md +393 -0
  42. package/node_modules/@deepseek-ai/schemastery/lib/index.cjs +635 -0
  43. package/node_modules/@deepseek-ai/schemastery/lib/index.mjs +635 -0
  44. package/node_modules/@deepseek-ai/schemastery/lib/types/index.d.ts +211 -0
  45. package/node_modules/@deepseek-ai/schemastery/lib/types/index.d.ts.map +1 -0
  46. package/node_modules/@deepseek-ai/schemastery/package.json +39 -0
  47. package/node_modules/@deepseek-ai/schemastery/src/index.ts +962 -0
  48. package/node_modules/@standard-schema/spec/LICENSE +21 -0
  49. package/node_modules/@standard-schema/spec/README.md +198 -0
  50. package/node_modules/@standard-schema/spec/dist/index.cjs +18 -0
  51. package/node_modules/@standard-schema/spec/dist/index.d.cts +119 -0
  52. package/node_modules/@standard-schema/spec/dist/index.d.ts +119 -0
  53. package/node_modules/@standard-schema/spec/dist/index.js +0 -0
  54. package/node_modules/@standard-schema/spec/package.json +52 -0
  55. package/package.json +56 -42
  56. package/terminal-fish.js +18 -0
  57. package/terminal-tools.js +259 -0
  58. package/terminal.js +297 -0
@@ -0,0 +1,186 @@
1
+ ---
2
+ description: "面向需要跨调用终端状态的 agent(智能体)的 6 个持久终端工具,带所有者隔离、有界结果与可选后台发送。"
3
+ kind: "package-reference"
4
+ ---
5
+
6
+ # @deepseek-ai/dsh-tool-terminal
7
+
8
+ [English](README.md) | 中文
9
+
10
+ ## 概述
11
+
12
+ 当 agent 需要跨调用保留终端状态或提供交互式输入时,使用 `dsh-tool-terminal`。它可以打开、发送、读取、传递信号、关闭和列出终端会话,同时防止一个 agent 操作其他 agent 的会话。发送可以等待有界的前台输出,也可以返回供后续收集或中断的后台任务 job id。`maxResultBytes` 限制每个结果的大小,而结果会保留在会话历史中直到压缩(compaction)。指引会让模型对有界工作优先使用单次工具。
13
+
14
+ ## 目录
15
+
16
+ - [使用本包](#use-this-package)
17
+ - [理解实现](#understand-the-implementation)
18
+ - [进一步探索](#further-exploration)
19
+ - [模型体验](#model-experience)
20
+ - [已知限制与延期工作](#known-limitations-and-deferred-work)
21
+ - [开发备注](#dev-note)
22
+
23
+ -----
24
+
25
+ <a id="use-this-package"></a>
26
+ ## 使用本包
27
+
28
+ 当组合挂载了终端后端、且模型应当能跨调用使用终端状态时启用这些工具——使用调试器单步调试、在 REPL 中探索,或中断前台命令后回到 shell。指引章节会引导模型对有界操作使用单次 bash、read、write 与 edit 工具。
29
+
30
+ ### 六个工具
31
+
32
+ | 工具 | 作用 | 结果 |
33
+ |---|---|---|
34
+ | `terminal_open` | 按后端类型创建限定所有者范围的会话 | 会话 id、名称、类型、pid、状态与有界启动输出 |
35
+ | `terminal_send` | 写入文本,可选地提交 Enter,并等待就绪——或启动后台任务 | 有界输出加等待与会话状态,或一个 job id |
36
+ | `terminal_read` | 不发送输入,读取一页有界保留输出 | 带行分页元数据的文本 |
37
+ | `terminal_signal` | 向前台进程组投递一个允许的信号 | `delivered` 加目标进程组 id |
38
+ | `terminal_close` | 关闭会话并等待其进程树结束 | 已关闭或正在关闭的结果 |
39
+ | `terminal_list` | 列出调用方的活跃会话 | 限定所有者范围的会话摘要 |
40
+
41
+ ### 组合方式
42
+
43
+ ```yaml
44
+ - name: '@deepseek-ai/dsh-terminal'
45
+ - name: '@deepseek-ai/dsh-terminal-bash'
46
+ - name: '@deepseek-ai/dsh-tool-terminal'
47
+ ```
48
+
49
+ 工具需要 `ctx.terminals`——必须挂载一个后端——以及用于指引章节的系统提示词服务。后台发送还额外要求任务服务及其面向模型的控制器(`@deepseek-ai/dsh-tool-jobs`)。
50
+
51
+ ### 配置
52
+
53
+ | 字段 | 默认值 | 含义 |
54
+ |---|---|---|
55
+ | `enableRunInBackground` | `true` | 公开并接受 `run_in_background`;设为 `false` 时移除 schema 字段并拒绝该参数 |
56
+ | `maxResultBytes` | `262144` | 每个完整终端结果的 UTF-8 上限(最小值 `64`);在等待、会话、分页、截断与任务状态元数据全部加入后计算 |
57
+
58
+ 生成的[配置目录](../../../docs/config-catalog.zh.md#deepseek-aidsh-tool-terminal)与[工具目录](../../../docs/tool-catalog.zh.md#deepseek-aidsh-tool-terminal)是配置字段与 schema 的穷尽式真源。
59
+
60
+ ### 后台发送
61
+
62
+ `terminal_send(run_in_background: true)` 立即返回 job id,而不是等待。任务用 `job_output` 收集——它会等待并读取增量输出——用 `job_kill` 停止,后者向前台进程组投递真正的 `SIGINT`。缺少任务接口面时,后台模式会在写入输入之前失败。
63
+
64
+ ### 可观察结果与失败
65
+
66
+ 前台发送返回终端的新输出以及 `wait: <原因>` 与会话状态;`session_exit` 表示顶层 shell 已退出,而 `inferred_idle` 或 `timeout` 绝不证明前台命令已退出。用未注册的后端类型打开会话会失败。大于 `maxResultBytes` 的结果会在 UTF-8 边界处截断并附标记。
67
+
68
+ -----
69
+
70
+ <a id="understand-the-implementation"></a>
71
+ ## 理解实现
72
+
73
+ <details>
74
+ <summary>实现细节——点击展开</summary>
75
+
76
+ 本节解释工具背后的设计并指出实现它们的代码位置;可观察行为已在[使用本包](#use-this-package)中说明。
77
+
78
+ ### 设计理念
79
+
80
+ 本包是薄适配器:6 个工具以执行 agent 作为所有者转发到 `ctx.terminals`,呈现层渲染有界结果。后台发送把在途操作注册到 `ctx.jobs`,由通用任务接口面负责等待、增量读取与 `SIGINT` 投递。
81
+
82
+ ### 源码地图
83
+
84
+ | 文件 | 职责 |
85
+ |---|---|
86
+ | [`src/index.ts`](src/index.ts) | 6 个工具定义、schema、指引章节、后台任务集成 |
87
+ | [`src/render.ts`](src/render.ts) | 结果渲染与完整结果的 UTF-8 上限 |
88
+
89
+ ### 结果上限
90
+
91
+ 每个终端自身的单文本结果都会在规范化后的工具或流水线错误、策略拒绝与短路、替换与阻止、以及通用任务状态文本之后,受 `maxResultBytes` 限制;截断保留 UTF-8 边界并为截断标记预留空间。结构化的多块策略结果保留其结构。64 字节的最小上限保证注册表签发的每个会话或 job id 都出现在创建确认中。
92
+
93
+ ### UI 呈现意图
94
+
95
+ 前台发送使用终端调用与结果卡片;后台发送与其他 5 个工具使用通用 `execute`、`read` 或 `delete` 卡片。所有工具都不输出源位置。
96
+
97
+ </details>
98
+
99
+ -----
100
+
101
+ <a id="further-exploration"></a>
102
+ ## 进一步探索
103
+
104
+ 当包级约定不够用时阅读以下页面。它们从生成的 schema 进入服务约定、后端与后台任务接口面。
105
+
106
+ - [工具目录](../../../docs/tool-catalog.zh.md#deepseek-aidsh-tool-terminal)——6 个生成的 schema 与结果形态。
107
+ - [终端子系统参考](../../../docs/subsystems/terminal.zh.md)——工具背后的服务约定与共享类型。
108
+ - [terminal 服务](../terminal/README.zh.md)——会话操作、所有者限制与清理语义。
109
+ - [terminal-bash 后端](../terminal-bash/README.zh.md)——提供会话的随附 shell 后端。
110
+ - [jobs 包映射](../../jobs/README.zh.md)——收集与停止后台发送的后台任务接口面。
111
+ - [持久 PTY Agent Note](../../../.agents/notes/implemented/feature/2026-07-16-persistent-pty-sessions.zh.md)——能力设计与暂缓边界。
112
+
113
+ -----
114
+
115
+ <a id="model-experience"></a>
116
+ ## 模型体验
117
+
118
+ ### 系统提示词
119
+
120
+ #### 模型看到什么
121
+
122
+ 该插件贡献以下固定指引章节:
123
+
124
+ ##### 终端指引
125
+
126
+ ```markdown
127
+ Use a terminal session only when work needs persistent terminal state or interactive stdin; prefer shell/read/write/edit for bounded one-shot operations. Track every terminal session id and close sessions that no longer matter. An inferred_idle or timeout result does not prove the foreground command exited.
128
+ ```
129
+
130
+ #### Token 影响
131
+
132
+ 插件活跃期间,每次请求都会产生少量固定输入成本。
133
+
134
+ #### KV Cache 影响
135
+
136
+ 注册范围与指引文本不变时,前缀保持稳定。
137
+
138
+ ### 工具 schema
139
+
140
+ #### 模型看到什么
141
+
142
+ 6 个生成的 schema 列在 [`dsh-tool-terminal` 目录章节](../../../docs/tool-catalog.zh.md#deepseek-aidsh-tool-terminal)中。此插件活跃时,请求中会包含它们的固定 schema token;按 agent 范围过滤工具时可能隐藏这些 schema。
143
+
144
+ #### Token 影响
145
+
146
+ 工具可见的请求会产生固定的 schema 成本。
147
+
148
+ #### KV Cache 影响
149
+
150
+ 工具可见性与定义不变时,前缀保持稳定。
151
+
152
+ ### 工具结果与任务上下文
153
+
154
+ #### 模型看到什么
155
+
156
+ spawn 返回 id 与有界启动输出。发送与读取返回有界终端文本以及就绪与历史标记。后台模式返回通用 job id。每个终端自身的单文本结果都受 `maxResultBytes` 限制;结果保留在会话历史中直到压缩,增量任务读取不会重复已经消费的输出。
157
+
158
+ #### Token 影响
159
+
160
+ 终端自身的结果随数据变化,并受 `maxResultBytes` 限制;每个返回结果都保留在历史中直到压缩。
161
+
162
+ #### KV Cache 影响
163
+
164
+ 仅追加;新结果位于可复用请求前缀之后。
165
+
166
+ ## 已知限制与延期工作
167
+
168
+ <a id="known-limitations-and-deferred-work"></a>
169
+
170
+
171
+ 这些限制说明缺失的面向模型接口面。它们是当前包约束,不是任务积压。
172
+
173
+ - **没有 TUI 或按键序列接口面**——具名按键序列、全屏 TUI 交互、BEL、调整大小与自动启动均未出现在任何 schema 中。
174
+ - **后台模式要求任务接口面**——`run_in_background` 同时需要 `@deepseek-ai/dsh-jobs` 及其面向模型的控制器(`@deepseek-ai/dsh-tool-jobs`);缺少时会拒绝该参数。
175
+
176
+ <a id="dev-note"></a>
177
+ ### 开发备注
178
+
179
+ <details>
180
+ <summary>维护者的工作上下文——点击展开</summary>
181
+
182
+ 无。
183
+
184
+ </details>
185
+
186
+ **运行时不变式:** 不发布伴生入口。这个无状态适配器只贡献工具与提示词指引;PTY 生命周期与后台任务关系仍由其组合的服务持有。