@xmoon76/dsh-pi-tui 0.4.7-alpha.2 → 0.4.9
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.en.md +67 -35
- package/README.md +43 -30
- package/cordis.patch.yml +61 -10
- package/dist/builtins.mjs +2 -2
- package/dist/extension/advanced.d.mts +6 -1
- package/dist/extensions.mjs +1 -1
- package/dist/index.d.mts +135 -29
- package/dist/index.mjs +2 -2
- package/dist/{src-5aY9svZj.mjs → src-BAwPimrH.mjs} +10848 -2116
- package/dist/{startup-CGeJ1k1B.mjs → startup-xTIOW90U.mjs} +15 -5
- package/dist/startup.d.mts +5 -5
- package/dist/startup.mjs +1 -1
- package/generated/dsh-presets/README.md +15 -0
- package/generated/dsh-presets/cordis.patch.yml +154 -0
- package/generated/dsh-presets/minimal.patch.yml +61 -0
- package/generated/dsh-presets/ptc.patch.yml +152 -0
- package/generated/dsh-presets/standard.patch.yml +146 -0
- package/package.json +142 -121
package/README.en.md
CHANGED
|
@@ -54,23 +54,28 @@ next compatibility range, and fallback paths.
|
|
|
54
54
|
|
|
55
55
|
| TUI package line | Official DSH tags for the pairing | Notes |
|
|
56
56
|
|---|---|---|
|
|
57
|
-
| `0.4.
|
|
58
|
-
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
57
|
+
| `0.4.9` (stable / `@latest`) | `dsh-v0.1.7-rc.2` | Current stable line; 0.1.7-rc.2 minimum |
|
|
58
|
+
| `0.4.8` (stable, previous) | `dsh-v0.1.7-rc.1` | Previous stable; the compatible TUI for a 0.1.7-rc.1 runtime |
|
|
59
|
+
| `0.4.6` (stable, previous) | `dsh-v0.1.5-rc.1`, `dsh-v0.1.5-rc.2` | Previous stable; the compatible TUI for a 0.1.5 runtime |
|
|
60
|
+
| `0.4.7-alpha.2` (next, previous) | `dsh-v0.1.6-alpha.2` | Previous next line; the compatible TUI for a 0.1.6-alpha.2 runtime |
|
|
61
|
+
|
|
62
|
+
Do not mix the stable and `@next` prerelease lines. The `0.4.9` line unifies its
|
|
63
|
+
whole DSH peer floor at `>=0.1.7-rc.2` (the rc.2 preset registry peers
|
|
64
|
+
`dsh-agent` exactly, so a wider legacy floor no longer satisfies a standalone
|
|
65
|
+
tarball install); older runtimes fail at the normal incompatible-runtime
|
|
66
|
+
boundary, so install the paired TUI line from the table above. The startup notice
|
|
67
|
+
is best-effort rather than a Loader startup-order guarantee. See the [full
|
|
68
|
+
historical compatibility matrix](docs/dsh-compatibility.md) for official-tag
|
|
69
|
+
pairings and fallback commands, and see the [latest `next`
|
|
65
70
|
README](https://github.com/XMoon/dsh-pi-tui/blob/next/README.md) for the current
|
|
66
71
|
integration status.
|
|
67
72
|
|
|
68
73
|
New agent sessions use the official roster's selected preset id. A custom DSH
|
|
69
74
|
preset literally named `code` is valid and remains `code` when it exists in the
|
|
70
75
|
current roster. DSH V3 migration owns historical session `code -> ptc`
|
|
71
|
-
conversion, while the current projection preserves a legal custom `code`.
|
|
72
|
-
|
|
73
|
-
|
|
76
|
+
conversion, while the current projection preserves a legal custom `code`. An
|
|
77
|
+
omitted legacy settings default is never aliased: with no matching declaration
|
|
78
|
+
in the current roster it is simply an invalid preference.
|
|
74
79
|
|
|
75
80
|
### Profile management
|
|
76
81
|
|
|
@@ -119,11 +124,15 @@ dsh --profile pi-tui --session <session-id>
|
|
|
119
124
|
|
|
120
125
|
`Ctrl+O` controls Tool and System details and expands/collapses long user prompts in regular mode and in fullscreen outside Focus — in fullscreen Focus it bulk-expands the recent Thought roots or collapses them all, while long user prompts are expanded by clicking the marker (or by a search hit) and collapsed with `Ctrl+O`. `Alt+T` controls Thinking separately.
|
|
121
126
|
|
|
122
|
-
###
|
|
127
|
+
### Conversation display
|
|
123
128
|
|
|
124
|
-
`/focus` groups the current turn's Thinking, Tool Calls, and intermediate replies into a live Thought block.
|
|
129
|
+
`/display focus` groups the current turn's Thinking, Tool Calls, and intermediate replies into a live Thought block; `/display full` restores the normal Transcript projection. `/focus` remains available as a compatibility command. The Compact preset is reserved and `/display compact` is rejected until its projection ships.
|
|
125
130
|
|
|
126
|
-
The full process can still be expanded when needed. In fullscreen Focus, Thought roots can be expanded/collapsed in bulk or opened with an individual card click, and the viewport survives switches and resizes.
|
|
131
|
+
The full process can still be expanded when needed. In fullscreen Focus, Thought roots can be expanded/collapsed in bulk or opened with an individual card click, and the viewport survives switches and resizes. Display presets only change presentation; they do not modify Session events.
|
|
132
|
+
|
|
133
|
+
### Communication policy
|
|
134
|
+
|
|
135
|
+
`/settings` exposes two independent communication controls. **Progress updates** owns the mid-turn update cadence: `milestones` (default) posts a brief update only when a substantial phase completes, the direction materially changes, or required user input blocks progress — never for a freshly discovered partial finding; `frequent` keeps the user actively informed through longer multi-step work; `off` suppresses progress narration entirely. **Response style** owns the visible answer's density: `default` adds no extra guidance, `concise` is compact and result-first, `explanatory` adds rationale, architecture, and tradeoffs. Changes apply on the next prompt assembly without restarting the agent and are saved across sessions. Focus is a surface capability, not a third preference: while Focus is active the progress section is simply ineffective (progress-only intermediate messages are not generated) and the saved cadence is untouched; the response style stays active in Focus.
|
|
127
136
|
|
|
128
137
|
### Sessions
|
|
129
138
|
|
|
@@ -166,10 +175,31 @@ History results include the Prompt, working directory, timestamp, and Session in
|
|
|
166
175
|
|
|
167
176
|
Regular `↑` / `↓` history recall is still available for recent input.
|
|
168
177
|
|
|
169
|
-
### Subagents and
|
|
170
|
-
|
|
171
|
-
`/tasks` opens the full Task Center
|
|
172
|
-
|
|
178
|
+
### Subagents and the Task Center
|
|
179
|
+
|
|
180
|
+
`/tasks` opens the full Task Center, showing the work the current Session's
|
|
181
|
+
Job Registry / Subagent catalog still tracks; the Footer's `↓` opens the
|
|
182
|
+
lightweight Quick Tasks view for the current active work. Selecting a Job
|
|
183
|
+
opens a detail with the official non-consuming live
|
|
184
|
+
output preview (status, progress and the retained output tail); it never consumes
|
|
185
|
+
the model's `job_output` cursor and never becomes session history.
|
|
186
|
+
|
|
187
|
+
Task Center is a live tracked/control projection, not an execution-history
|
|
188
|
+
list. `ACTIVE` / `TRACKED` are presentation scopes: `ACTIVE` shows only the
|
|
189
|
+
currently active items, `TRACKED` shows everything the current authority
|
|
190
|
+
still lists. DSH `0.1.7` temporarily registers a Job while an ordinary
|
|
191
|
+
foreground `bash` / `pwsh` command runs, so it can be observed and stopped
|
|
192
|
+
from the Task Center; if the command finishes inside the foreground wait,
|
|
193
|
+
DSH removes that temporary record and the final result stays in the
|
|
194
|
+
Transcript's tool card. Explicit `run_in_background: true` jobs (and jobs
|
|
195
|
+
promoted to the background after a foreground timeout) remain visible in
|
|
196
|
+
`TRACKED` after completion as long as the Job Registry keeps their record.
|
|
197
|
+
|
|
198
|
+
`/plugins` opens the active profile's Plugin Manager: installed bundles and
|
|
199
|
+
plugins are grouped into Current TUI / TUI Extensions / DSH Plugins, with
|
|
200
|
+
enable/disable, remove and install; the `dsh-pi-tui` bundle currently providing
|
|
201
|
+
the surface is read-only and cannot be disabled or removed from its own screen.
|
|
202
|
+
The `Plugins Manage…` row in `/settings` opens the same surface on demand.
|
|
173
203
|
|
|
174
204
|
Subagents are shown using their complete lineage, including nested descendants:
|
|
175
205
|
|
|
@@ -186,14 +216,14 @@ The browser distinguishes:
|
|
|
186
216
|
* `one-shot`
|
|
187
217
|
* running / inactive
|
|
188
218
|
* nested descendants
|
|
189
|
-
*
|
|
219
|
+
* Job Registry rows (including running foreground shell work)
|
|
190
220
|
|
|
191
221
|
The Footer's `↓` opens Quick Tasks as a lightweight browsing view: it only
|
|
192
222
|
supports arrow navigation, left/right expand/collapse, `Tab` type cycling,
|
|
193
223
|
`Enter` open, and `Esc` close. The bottom “Open Task Center” row opens the full
|
|
194
224
|
Task Center.
|
|
195
225
|
|
|
196
|
-
The full Task Center additionally offers `A` to toggle Active /
|
|
226
|
+
The full Task Center additionally offers `A` to toggle Active / Tracked, `/` search,
|
|
197
227
|
`Tab` / `Shift+Tab` to cycle types in both directions, `S` to stop the selected
|
|
198
228
|
task after confirmation, and `R` to refresh/retry. Quick Tasks consumes only the
|
|
199
229
|
whitelist above; every other keystroke is a no-op that never enters search, stop
|
|
@@ -328,20 +358,22 @@ Use `/help` inside the TUI for the current command and keybinding list. The tabl
|
|
|
328
358
|
Host shortcuts are semantic actions (`app.*`) resolved through a
|
|
329
359
|
context-aware keymap — the UI (footer hints, `/help`, `/keybindings`)
|
|
330
360
|
always shows the EFFECTIVE keys, so a remap updates every hint. Configure
|
|
331
|
-
them
|
|
332
|
-
|
|
333
|
-
|
|
361
|
+
them through the in-TUI `/keybindings` panel (it writes the `keybindings`
|
|
362
|
+
field of the `tui-app` plugin's profile-owned configuration — since DSH
|
|
363
|
+
0.1.7 TUI preferences live on the profile Config, not the retired
|
|
364
|
+
`dsh-pi-tui` settings namespace); apply with `/keybindings reload`
|
|
365
|
+
(explicit — a configuration edit takes effect after the reload, no
|
|
366
|
+
restart). Field shape:
|
|
334
367
|
|
|
335
368
|
```yaml
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
app.tasks.open: <leader>t
|
|
369
|
+
keybindings:
|
|
370
|
+
app.input.steer: ctrl+s # one key
|
|
371
|
+
app.permission.cycle: [shift+tab, ctrl+shift+p] # several keys
|
|
372
|
+
app.history.search: ctrl+r
|
|
373
|
+
app.transcript.toggleThinking: false # disable the action's keys
|
|
374
|
+
leader: ctrl+x # M6: leader sequences
|
|
375
|
+
bindings:
|
|
376
|
+
app.tasks.open: <leader>t
|
|
345
377
|
```
|
|
346
378
|
|
|
347
379
|
- A plain printable key can never be bound to a Host action (it would
|
|
@@ -562,9 +594,9 @@ This section contains DSH compatibility and CI validation details only; ordinary
|
|
|
562
594
|
|
|
563
595
|
### npm mode (current `next`)
|
|
564
596
|
|
|
565
|
-
The current
|
|
566
|
-
`dsh-v0.1.
|
|
567
|
-
resolved by its
|
|
597
|
+
The current compatibility-train line is npm mode: it targets the published
|
|
598
|
+
`dsh-v0.1.7-rc.2` family declared by this checkout's `package.json` and
|
|
599
|
+
resolved by its lockfile. The isolated npm driver installs that exact
|
|
568
600
|
family from the public registry and exercises the TUI build/test/package path:
|
|
569
601
|
|
|
570
602
|
```sh
|
package/README.md
CHANGED
|
@@ -52,19 +52,23 @@ pnpm compat:dsh:npm
|
|
|
52
52
|
|
|
53
53
|
| TUI 包版本 | 对应的官方 DSH tags | 说明 |
|
|
54
54
|
|---|---|---|
|
|
55
|
-
| `0.4.
|
|
56
|
-
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
55
|
+
| `0.4.9`(stable / `@latest`) | `dsh-v0.1.7-rc.2` | 当前稳定版;最低 0.1.7-rc.2 |
|
|
56
|
+
| `0.4.8`(stable,历史) | `dsh-v0.1.7-rc.1` | 上一稳定版;0.1.7-rc.1 runtime 的兼容 TUI |
|
|
57
|
+
| `0.4.6`(stable,历史) | `dsh-v0.1.5-rc.1`、`dsh-v0.1.5-rc.2` | 上一稳定版;0.1.5 runtime 的兼容 TUI |
|
|
58
|
+
| `0.4.7-alpha.2`(next,历史) | `dsh-v0.1.6-alpha.2` | 上一条 next 线;0.1.6-alpha.2 runtime 的兼容 TUI |
|
|
59
|
+
|
|
60
|
+
不要把稳定线与 `@next` 预发布线混装。`0.4.9` 的整个 DSH peer floor 统一为
|
|
61
|
+
`>=0.1.7-rc.2`(rc.2 的 preset registry 精确 peer `dsh-agent`,更宽的旧
|
|
62
|
+
floor 已无法满足独立 tarball 安装);旧 runtime 会在正常的不兼容边界以非零状态失败,
|
|
63
|
+
请按上表安装配对的 TUI 线。完整的历史兼容矩阵和 fallback 命令见
|
|
64
|
+
[兼容性文档](docs/dsh-compatibility.md);要查看 `@next` 的最新集成状态,请看
|
|
65
|
+
[next 分支 README](https://github.com/XMoon/dsh-pi-tui/blob/next/README.md)。
|
|
62
66
|
|
|
63
67
|
新的 Agent preset 使用当前 roster 中选定的 id。DSH 允许合法的自定义
|
|
64
68
|
`code` preset;只要当前 roster 存在它,显式输入和持久化状态都会保留 `code`。
|
|
65
69
|
DSH V3 migration 负责历史 session header/selection 的 `code -> ptc` 转换;
|
|
66
|
-
当前 projection 会原样保留合法的自定义 `code
|
|
67
|
-
|
|
70
|
+
当前 projection 会原样保留合法的自定义 `code`。省略请求的 legacy settings
|
|
71
|
+
default 不再做任何别名映射:当前 roster 没有声明就是无效偏好。
|
|
68
72
|
|
|
69
73
|
### Profile management
|
|
70
74
|
|
|
@@ -113,11 +117,15 @@ dsh --profile pi-tui --session <session-id>
|
|
|
113
117
|
|
|
114
118
|
`Ctrl+O` 控制工具和系统详情,并在普通模式与全屏非 Focus 下展开/收起超长用户 Prompt;全屏 Focus 下它整体展开最近几个 Thought root 或全部收起,超长用户 Prompt 改用点击提示行(或搜索命中)展开、`Ctrl+O` 收回。`Alt+T` 单独控制 Thinking。
|
|
115
119
|
|
|
116
|
-
###
|
|
120
|
+
### Conversation display
|
|
121
|
+
|
|
122
|
+
`/display focus` 将运行中的 Thinking、Tool Call 和中间回复聚合为一个实时更新的 Thought 区块;`/display full` 恢复普通 Transcript 展示。`/focus` 仍作为兼容命令保留。Compact 预设尚未开放,`/display compact` 会明确拒绝。
|
|
123
|
+
|
|
124
|
+
需要查看过程时可以展开,关闭 Focus 后恢复普通 Transcript 展示。全屏 Focus 中可以按 Thought root 批量展开/收起,也可以单独点击卡片;切换或缩放时会保留 viewport。展示预设只影响界面投影,不修改 Session 中保存的事件。
|
|
117
125
|
|
|
118
|
-
|
|
126
|
+
### 沟通策略
|
|
119
127
|
|
|
120
|
-
|
|
128
|
+
`/settings` 提供两个独立的沟通设置。**Progress updates** 控制 Agent 工作时的中途更新节奏:`milestones`(默认)只在完整的阶段结束、方向实质变化或需要用户输入时简短汇报,不为「刚发现一个局部结论」而打断;`frequent` 在较长的多步工作中持续带用户跟进;`off` 完全不做过程叙述。**Response style** 控制可见回复的密度:`default` 不附加表达指导,`concise` 紧凑且结果优先,`explanatory` 补充原理、架构与取舍。两项切换都在下一次提示词组装时生效,无需重启 Agent,并跨会话保存。Focus 是展示能力而非第三个偏好:进入 Focus 时进度更新节只是暂时失效(不生成只含进度的中间消息),保存的节奏偏好不变,Response style 在 Focus 下仍然生效。
|
|
121
129
|
|
|
122
130
|
### Session
|
|
123
131
|
|
|
@@ -160,9 +168,13 @@ Rewind 会从选中的历史 User Turn 创建新的 Child Session,并把对应
|
|
|
160
168
|
|
|
161
169
|
普通的 `↑` / `↓` 仍用于快速浏览最近输入。
|
|
162
170
|
|
|
163
|
-
### Subagent
|
|
171
|
+
### Subagent 与 Task Center
|
|
172
|
+
|
|
173
|
+
`/tasks` 打开完整 Task Center,显示当前 Session 中仍由 Job Registry / Subagent catalog 跟踪的工作;Footer 的 `↓` 打开轻量 Quick Tasks,只看当前活动(active)工作。选中 Job 后,详情会显示官方非消耗式的实时输出预览(状态、进度与保留的输出尾部),不会消耗模型的 `job_output` 游标,也不写入会话历史。
|
|
174
|
+
|
|
175
|
+
Task Center 的 `ACTIVE` / `TRACKED` 是展示范围:`ACTIVE` 只显示当前活动项,`TRACKED` 显示当前跟踪源(Job Registry / Subagent catalog)仍列出的全部项;`TRACKED` 不是 Session 执行历史。DSH `0.1.7` 会在普通前台 `bash` / `pwsh` 执行期间临时注册 Job,使其可以在 Task Center 中观察和停止;如果命令在前台等待内完成,DSH 会移除该临时记录,最终结果仍保留在 Transcript 的 tool card 中。显式 `run_in_background: true` 或被提升为后台的 Job 在完成后,只要 Job Registry 继续保留其记录,就仍可在 `TRACKED` 中查看。
|
|
164
176
|
|
|
165
|
-
`/
|
|
177
|
+
`/plugins` 打开当前 profile 的 Plugin Manager:按 Current TUI / TUI Extensions / DSH Plugins 分区查看已安装的 bundle 与插件,并执行启用/禁用、删除与安装;正在提供当前界面的 `dsh-pi-tui` 只读且不可从自身界面禁用或移除。`/settings` 中的 `Plugins Manage…` 按需打开同一界面。
|
|
166
178
|
|
|
167
179
|
Subagent 按完整 lineage 显示,包括嵌套创建的 descendant:
|
|
168
180
|
|
|
@@ -179,11 +191,11 @@ main
|
|
|
179
191
|
* `one-shot`
|
|
180
192
|
* running / inactive
|
|
181
193
|
* nested descendant
|
|
182
|
-
*
|
|
194
|
+
* Job Registry 跟踪的 Job(含运行中的前台 shell)
|
|
183
195
|
|
|
184
196
|
Footer `↓` 打开的 Quick Tasks 是轻量浏览视图,只提供方向键导航、左右展开/折叠、`Tab` 类型过滤、`Enter` 打开和 `Esc` 关闭。底部 “Open Task Center” 行可进入完整 Task Center。
|
|
185
197
|
|
|
186
|
-
完整 Task Center 额外提供 `A` 切换 Active /
|
|
198
|
+
完整 Task Center 额外提供 `A` 切换 Active / Tracked、`/` 搜索、`Tab` / `Shift+Tab` 双向切换类型、`S`(确认后)停止所选任务以及 `R` 刷新 / 重试。Quick Tasks 只消费上述白名单按键,其余输入一律 no-op,不会进入搜索、停止确认或任务管理状态,因此 `Esc` 始终一层关闭。
|
|
187
199
|
|
|
188
200
|
已经结束的 one-shot Subagent 仍可以打开并查看持久化 Transcript。
|
|
189
201
|
|
|
@@ -310,20 +322,21 @@ TUI 使用 DSH 提供的模型和设置服务。
|
|
|
310
322
|
|
|
311
323
|
Host 快捷键是语义 action(`app.*`),通过 context-aware keymap 解析——
|
|
312
324
|
UI(页脚提示、`/help`、`/keybindings`)始终显示**生效**的按键,因此
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
325
|
+
改键后所有提示自动更新。配置入口是 TUI 里的 `/keybindings` 面板
|
|
326
|
+
(写入 `tui-app` 插件的 profile 配置的 `keybindings` 字段——DSH 0.1.7
|
|
327
|
+
起 TUI 偏好保存在 profile-owned Config,不再使用旧 `dsh-pi-tui`
|
|
328
|
+
settings 命名空间);保存后用 `/keybindings reload` 应用(显式
|
|
329
|
+
reload——配置变更后执行 reload 即生效,无需重启)。字段形状:
|
|
316
330
|
|
|
317
331
|
```yaml
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
app.tasks.open: <leader>t
|
|
332
|
+
keybindings:
|
|
333
|
+
app.input.steer: ctrl+s # 单个按键
|
|
334
|
+
app.permission.cycle: [shift+tab, ctrl+shift+p] # 多个按键
|
|
335
|
+
app.history.search: ctrl+r
|
|
336
|
+
app.transcript.toggleThinking: false # 禁用该 action 的按键
|
|
337
|
+
leader: ctrl+x # M6:leader 序列
|
|
338
|
+
bindings:
|
|
339
|
+
app.tasks.open: <leader>t
|
|
327
340
|
```
|
|
328
341
|
|
|
329
342
|
- 普通可打印键永远不能绑定到 Host action(会吞掉输入);坏配置只是
|
|
@@ -535,8 +548,8 @@ dsh --profile pi-tui-dev
|
|
|
535
548
|
|
|
536
549
|
### npm 模式(当前 `next`)
|
|
537
550
|
|
|
538
|
-
|
|
539
|
-
lockfile 解析的已发布 `dsh-v0.1.
|
|
551
|
+
当前兼容列车线是 npm 模式:以本 checkout 的 `package.json` 声明、
|
|
552
|
+
lockfile 解析的已发布 `dsh-v0.1.7-rc.2` family 为兼容目标。隔离的 npm
|
|
540
553
|
驱动从公共 registry 安装该精确 family,并跑完整 build/test/package 路径:
|
|
541
554
|
|
|
542
555
|
```sh
|
package/cordis.patch.yml
CHANGED
|
@@ -32,10 +32,25 @@
|
|
|
32
32
|
# can fork. The row below is this bundle's own, so the dependency is
|
|
33
33
|
# self-contained and a profile that disables it fails loud instead of
|
|
34
34
|
# silently forking without workspace inheritance.
|
|
35
|
-
|
|
35
|
+
# `pluginManager` is injected for the P1-A Plugin Manager surface: the
|
|
36
|
+
# dsh-base layer already mounts it (disabled only without a profile),
|
|
37
|
+
# so this is an explicit lifecycle ordering dependency, never a second
|
|
38
|
+
# package-manager row.
|
|
39
|
+
inject: [tuiStartup, piTuiExtensions, authorization, workspaceRegistry, pluginManager, jobController]
|
|
36
40
|
config:
|
|
37
41
|
sessionId: ''
|
|
38
42
|
|
|
43
|
+
# One background Job's observation stream (P1-B): the official Host
|
|
44
|
+
# controller wraps `jobs.events` + `jobs.readAt()` into a
|
|
45
|
+
# NON-CONSUMING follow stream (never `jobs.read()`), so the selected Job
|
|
46
|
+
# detail can render a live retained-output tail without touching the
|
|
47
|
+
# model's `job_output` cursor or completion notices. The rc.1 web bundle
|
|
48
|
+
# mounts this same row; the dsh-base layer does not, so the TUI inserts
|
|
49
|
+
# it. This is NOT M3: same process, same Host Context, no Client Context,
|
|
50
|
+
# no Connection, no transport.
|
|
51
|
+
- id: job-controller
|
|
52
|
+
name: '@deepseek-ai/dsh-api-job-controller'
|
|
53
|
+
|
|
39
54
|
# Host-owned workspace membership (`ctx.workspaceRegistry`): D2.4 Direct
|
|
40
55
|
# fork mirrors the official Host rule (use the source's directly owning
|
|
41
56
|
# workspace, else the nearest ancestor workspace of a subagent source) and
|
|
@@ -61,17 +76,52 @@
|
|
|
61
76
|
- id: authorization
|
|
62
77
|
name: '@deepseek-ai/dsh-authorization'
|
|
63
78
|
|
|
64
|
-
#
|
|
65
|
-
#
|
|
66
|
-
#
|
|
67
|
-
#
|
|
68
|
-
#
|
|
69
|
-
#
|
|
70
|
-
-
|
|
71
|
-
|
|
79
|
+
# The 0.1.7 declarative preset registry: preset identity, revisions and
|
|
80
|
+
# default/selection policy are registry-owned (deployment `default` here;
|
|
81
|
+
# the user's `selectedDefault` rides the profile form). The four shipped
|
|
82
|
+
# preset declarations follow as separate patch files under
|
|
83
|
+
# generated/dsh-presets/, listed after this file in package.json
|
|
84
|
+
# `dsh.bundle.patch` — a generated, parity-gated byte-exact mirror of
|
|
85
|
+
# @deepseek-ai/dsh-web-app's exported preset assets (0.1.7
|
|
86
|
+
# dsh.bundle.patch cannot reference another package's files).
|
|
87
|
+
- id: agent-preset-registry
|
|
88
|
+
name: '@deepseek-ai/dsh-agent-preset-registry'
|
|
72
89
|
config:
|
|
73
90
|
default: standard
|
|
74
91
|
|
|
92
|
+
# Production hardening for per-session preset composition. A live Agent
|
|
93
|
+
# whose standing preset generation disappears (the DSH registry owns that
|
|
94
|
+
# lifetime; the TUI must not remount/reparent/recreate an Agent) would
|
|
95
|
+
# otherwise keep addressing the model with only its Agent-own rows — the
|
|
96
|
+
# observed failure mode was a request whose tool list had collapsed to
|
|
97
|
+
# `subagent` alone, with no error anywhere. This official companion turns
|
|
98
|
+
# that into a loud, early failure at the next prompt assembly instead.
|
|
99
|
+
#
|
|
100
|
+
# The allowlist is deliberate and minimal: this bundle introduces exactly
|
|
101
|
+
# ONE production invariant, so a future layer shipping another invariant
|
|
102
|
+
# companion cannot silently enable itself here. The companion's own
|
|
103
|
+
# `/invariant` entry declares `inject = ['invariants']`; no second
|
|
104
|
+
# dependency management is written here.
|
|
105
|
+
#
|
|
106
|
+
# DEPENDENCY CONTRACT: `@deepseek-ai/dsh-invariants` is a COMPOSITION row
|
|
107
|
+
# resolved by the dsh Host (the package ships inside the dsh installation),
|
|
108
|
+
# not a module-graph peer — exactly like `@deepseek-ai/dsh-agent-preset`,
|
|
109
|
+
# which the same rule keeps in devDependencies. It therefore carries an
|
|
110
|
+
# exact devDependency pin for the real-mount tests and deliberately NO
|
|
111
|
+
# peerDependency: `scripts/naming-gate.mjs` rejects a `@deepseek-ai/*` peer
|
|
112
|
+
# that `src/` never imports as a dead peer, and a phantom peer would invite
|
|
113
|
+
# duplicate in-box copies in the profile. The companion subpath below is
|
|
114
|
+
# covered by the registry's own runtime peer.
|
|
115
|
+
- id: invariants
|
|
116
|
+
name: '@deepseek-ai/dsh-invariants'
|
|
117
|
+
config:
|
|
118
|
+
enabled: true
|
|
119
|
+
package_allowlist:
|
|
120
|
+
- '^@deepseek-ai/dsh-agent-preset-registry$'
|
|
121
|
+
|
|
122
|
+
- id: agent-preset-registry-invariant
|
|
123
|
+
name: '@deepseek-ai/dsh-agent-preset-registry/invariant'
|
|
124
|
+
|
|
75
125
|
# The official standard preset composes its `subagent` tool with
|
|
76
126
|
# `modelSelectionSettings: true`, which injects this Host-owned setting
|
|
77
127
|
# service — the row is required for the standard composition to mount.
|
|
@@ -94,7 +144,8 @@
|
|
|
94
144
|
# its tools, its prompt sections, its delegation backends. The base keeps them
|
|
95
145
|
# for single-session surfaces that compose their agent process-wide; the TUI
|
|
96
146
|
# now composes one preset per session, so these rows are disabled here and the
|
|
97
|
-
# `agent-
|
|
147
|
+
# official `agent-preset-registry` row above, plus the declarations it resolves,
|
|
148
|
+
# lets each session mount a preset instead.
|
|
98
149
|
#
|
|
99
150
|
# Disabling rather than deleting is deliberate: the base is shared, and a row
|
|
100
151
|
# absent from a surface overlay would silently reappear the day someone
|
package/dist/builtins.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { n as TUI_STARTUP_SERVICE } from "./startup-
|
|
1
|
+
import { L as dshVersion, V as PI_TUI_EXTENSIONS_SERVICE } from "./src-BAwPimrH.mjs";
|
|
2
|
+
import { n as TUI_STARTUP_SERVICE } from "./startup-xTIOW90U.mjs";
|
|
3
3
|
import { readFileSync } from "node:fs";
|
|
4
4
|
import { join } from "node:path";
|
|
5
5
|
//#region src/builtins.ts
|
|
@@ -302,7 +302,12 @@ interface AdvancedHostState {
|
|
|
302
302
|
setTitle(title: string | undefined): void;
|
|
303
303
|
/** Override the working-indicator message (undefined clears). */
|
|
304
304
|
setWorkingMessage(message: string | undefined): void;
|
|
305
|
-
/** Set the
|
|
305
|
+
/** Set the transcript-detail bulk-expansion master switch (recent
|
|
306
|
+
* collapsible transcript content). */
|
|
307
|
+
setTranscriptDetailExpanded(expanded: boolean): void;
|
|
308
|
+
/** Set the transcript-detail bulk-expansion master switch.
|
|
309
|
+
* @deprecated Use {@link setTranscriptDetailExpanded} — the same runtime
|
|
310
|
+
* state under its canonical name (post-F6 plan §5.6). */
|
|
306
311
|
setToolsExpanded(expanded: boolean): void;
|
|
307
312
|
}
|
|
308
313
|
/** The full advanced facade (plan §4: `advanced(service)`). */
|
package/dist/extensions.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { B as
|
|
1
|
+
import { B as name, H as API_VERSION, R as apply, U as describeKey, V as PI_TUI_EXTENSIONS_SERVICE, z as inject } from "./src-BAwPimrH.mjs";
|
|
2
2
|
export { API_VERSION, PI_TUI_EXTENSIONS_SERVICE, apply, describeKey, inject, name };
|