dsh-ssh-tui 0.1.8 → 0.2.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.
- package/README.en.md +31 -8
- package/README.md +30 -7
- package/lib/index.js +3 -1
- package/lib/index.js.map +1 -1
- package/lib/picker.js +51 -7
- package/lib/picker.js.map +1 -1
- package/lib/tui.js +672 -88
- package/lib/tui.js.map +1 -1
- package/lib/types/picker.d.ts +6 -3
- package/lib/types/tui.d.ts +83 -7
- package/package.json +30 -28
package/README.en.md
CHANGED
|
@@ -129,7 +129,9 @@ The plugin runs on Linux, macOS, and Windows (Node ≥ 22.19):
|
|
|
129
129
|
| --- | --- |
|
|
130
130
|
| `Enter` | send the message; while the agent is running, steers it |
|
|
131
131
|
| `Tab` | complete the highlighted slash command |
|
|
132
|
-
| `↑` / `↓` |
|
|
132
|
+
| `↑` / `↓` | with empty input, move among thinking/tool/subagent/plan/question cards; otherwise history |
|
|
133
|
+
| `Ctrl+N` / `Ctrl+P` | move among collapsible cards |
|
|
134
|
+
| `Ctrl+R` | expand or collapse all cards |
|
|
133
135
|
| `Esc` / `Ctrl+C` | cancel the running turn |
|
|
134
136
|
| `Ctrl+D` | exit |
|
|
135
137
|
| `Ctrl+L` | redraw |
|
|
@@ -160,6 +162,26 @@ lightweight `deepseek-v4-flash` model. `/submodel [model-id]` picks (or
|
|
|
160
162
|
directly sets) the subagent model, and `/subeffort` picks the subagent
|
|
161
163
|
reasoning effort or restores the provider default. Both commands are
|
|
162
164
|
remembered under `ssh-tui-subagent` in `$DSH_HOME/settings.yaml`.
|
|
165
|
+
`/subagents` lists active subagents, and `/subagents kill <session-id> [more ids...]`
|
|
166
|
+
releases selected continuable children using the harness 0.1.1
|
|
167
|
+
`drainContinuableChildren` capability.
|
|
168
|
+
|
|
169
|
+
Each subagent is its own collapsible card. One or many children start collapsed,
|
|
170
|
+
so the parent transcript stays readable; `Enter`, click, `Ctrl+N`/`Ctrl+P`, and
|
|
171
|
+
`Ctrl+R` expand or collapse them independently. Running cards show a spinner,
|
|
172
|
+
and the status/title line shows `⠋ 子代理 N` instead of mixing child output
|
|
173
|
+
into the parent stream.
|
|
174
|
+
|
|
175
|
+
Plan mode, user questions, and the current goal also get dedicated surfaces:
|
|
176
|
+
`/plan` shows a `计划模式` card plus a footer hint, `todo_write` folds the task
|
|
177
|
+
list into that card, and `exit_plan_mode` / `ask_user_question` open a dialog
|
|
178
|
+
while leaving a collapsed `计划待审` or `提问用户` card in the transcript.
|
|
179
|
+
`/goal` renders a collapsed `目标` card and a matching footer hint.
|
|
180
|
+
|
|
181
|
+
Interrupted streaming output keeps the already-generated prefix and is marked
|
|
182
|
+
`⚠ interrupted`; team collaboration session events (`team/*`) are surfaced as
|
|
183
|
+
system messages. Harness slash commands that accept image attachments are
|
|
184
|
+
labelled `(images ok)` in the command list and completion hints.
|
|
163
185
|
|
|
164
186
|
`/usage` (alias `/quota`) works when the current provider is an OpenCode
|
|
165
187
|
source and keeps the two billing models distinct:
|
|
@@ -185,13 +207,13 @@ the raw reasoning as it arrives. Assistant replies render in bold white with
|
|
|
185
207
|
terminal markdown support: heading levels (H1 enlarged/underlined, H2
|
|
186
208
|
underlined, H3 colored), bold, italic, inline code, fenced code blocks,
|
|
187
209
|
lists, quotes, and links all get ANSI styling while remaining
|
|
188
|
-
width-wrapped for the terminal. Reasoning and
|
|
210
|
+
width-wrapped for the terminal. Reasoning, tool, subagent, plan, and question cards are
|
|
189
211
|
each expandable/collapsible independently — `Ctrl+N` / `Ctrl+P` move the
|
|
190
212
|
selection highlight between them, `Ctrl+R` expands/collapses all blocks at once
|
|
191
213
|
(individual blocks use `↑`/`↓` + `Enter`), and `Esc` drops the selection. With
|
|
192
214
|
the input box empty, `↑`/`↓` move the selection and `Enter` toggles the
|
|
193
|
-
selected block directly. Clicking a
|
|
194
|
-
also toggles it.
|
|
215
|
+
selected block directly. Clicking a card header in the transcript
|
|
216
|
+
also toggles it. Subagent cards start collapsed even when several run at once.
|
|
195
217
|
|
|
196
218
|
The transcript is scrollable: `PgUp`/`PgDn` or the mouse wheel move back
|
|
197
219
|
through earlier reasoning blocks and tool calls, a `↑ 已回看 N 行` indicator
|
|
@@ -229,10 +251,11 @@ While a turn is waiting on the provider, the status line shows
|
|
|
229
251
|
acknowledged immediately (`⚡ … 排队 N`) and take effect at the next step
|
|
230
252
|
boundary, so the UI never looks frozen. Long-running work is not
|
|
231
253
|
misclassified: while tools are executing the status shows `工具执行中 N`,
|
|
232
|
-
and while subagents are running it shows
|
|
233
|
-
`等待响应`/stall warning).
|
|
234
|
-
|
|
235
|
-
|
|
254
|
+
and while subagents are running it shows `⠋ 子代理 N` (no
|
|
255
|
+
`等待响应`/stall warning). Plan mode adds `计划模式`, and a pending question
|
|
256
|
+
adds `等待用户回答` / `计划待审`. Child output stays inside that child's
|
|
257
|
+
collapsed card instead of being prefixed onto parent transcript lines;
|
|
258
|
+
`/subagents` lists active runs.
|
|
236
259
|
|
|
237
260
|
`/mode` opens the agent-mode picker backed by dsh's official preset roster:
|
|
238
261
|
标准模式 (standard), PTC 模式 (code), 极简模式 (minimal), 创造模式 (cordis),
|
package/README.md
CHANGED
|
@@ -6,6 +6,8 @@ DeepSeek Harness(`dsh`)的 SSH 友好交互终端插件:纯 ANSI 聊天式
|
|
|
6
6
|
|
|
7
7
|
English: [README.en.md](README.en.md)
|
|
8
8
|
|
|
9
|
+
定位与路线:[COMPETITIVENESS.md](COMPETITIVENESS.md)。本插件面向慢速 SSH / 远程终端,不和 Ink 系 TUI 比皮肤。
|
|
10
|
+
|
|
9
11
|
## 功能一览
|
|
10
12
|
|
|
11
13
|
- 纯终端渲染,无需浏览器/鼠标/重量级终端框架,适合慢速或远程 SSH;
|
|
@@ -22,8 +24,10 @@ English: [README.en.md](README.en.md)
|
|
|
22
24
|
- 历史会话启动选择器:`dsh --profile tui --resume`(或 `resume`)先选会话再进入;
|
|
23
25
|
- 终端窗口标题栏:运行中旋转图标 + `运行中 · 工具 N`,完成后 `✓ 已完成`,并响
|
|
24
26
|
一声终端铃(`DSH_TUI_NO_BELL=1` 关闭);
|
|
25
|
-
- 审批、`ask_user_question
|
|
26
|
-
`/resume`
|
|
27
|
+
- 审批、`ask_user_question`、计划模式、子代理进度、`/mode` 模式切换、`/model` 模型切换、
|
|
28
|
+
`/resume` 会话切换等完整支持;
|
|
29
|
+
- 每个子代理都是独立可折叠卡片,默认收起,运行中带旋转动画;多个子代理互不混排;
|
|
30
|
+
- 进入计划模式、待审计划、提问用户都会显示对应卡片和底部提示,而不是只塞进系统消息。
|
|
27
31
|
|
|
28
32
|
## 环境要求
|
|
29
33
|
|
|
@@ -109,8 +113,8 @@ dsh --profile tui --no-color
|
|
|
109
113
|
| 键 | 作用 |
|
|
110
114
|
| --- | --- |
|
|
111
115
|
| `Enter` | 发送;运行中则 steer 当前轮次;输入为空且有选中块时展开/收起 |
|
|
112
|
-
| `↑` / `↓` |
|
|
113
|
-
| `Ctrl+N` / `Ctrl+P` |
|
|
116
|
+
| `↑` / `↓` | 输入为空时在思考/工具/子代理/计划/提问卡片间移动选择;有输入时切换历史 |
|
|
117
|
+
| `Ctrl+N` / `Ctrl+P` | 在思考/工具/子代理/计划/提问卡片间移动选择 |
|
|
114
118
|
| `Ctrl+R` | 全部展开/全部收起(逐项展开请用 `↑`/`↓` 选中后按 `Enter`) |
|
|
115
119
|
| `Ctrl+T` | 折叠/展开输入框(折叠只影响显示,提交时仍为完整文本) |
|
|
116
120
|
| 鼠标左键 | 点击思考/工具标题行直接展开/收起 |
|
|
@@ -122,12 +126,29 @@ dsh --profile tui --no-color
|
|
|
122
126
|
|
|
123
127
|
斜杠命令:`/help`、`/model`、`/submodel`、`/subeffort`、`/mode`、`/resume`、
|
|
124
128
|
`/status`、`/subagents`、`/usage`(`/quota` 同义)、`/setup`、`/clear`,
|
|
125
|
-
以及 harness 自带命令(`/goal`、`/plan`、`/compact` 等)。
|
|
129
|
+
以及 harness 自带命令(`/goal`、`/plan`、`/compact` 等)。harness 命令若声明
|
|
130
|
+
支持图片附件,会在命令列表和补全提示中标注“可附图”。
|
|
126
131
|
|
|
127
132
|
子代理默认跟随父会话的提供方,模型默认为轻量的 `deepseek-v4-flash`:
|
|
128
133
|
|
|
129
134
|
- `/submodel [model-id]`:打开子代理模型选择器;带参数时直接指定模型;
|
|
130
|
-
- `/subeffort
|
|
135
|
+
- `/subeffort`:选择子代理思考强度,或恢复为“跟随提供商默认”;
|
|
136
|
+
- `/subagents`:列出活动子代理;`/subagents kill <session-id> [更多 id...]`
|
|
137
|
+
可释放指定的 continuable 子代理(harness 0.1.1 新增的定向回收能力)。
|
|
138
|
+
|
|
139
|
+
中断的流式输出会保留已生成的部分,并显示 `⚠ 已中断` 标记;团队协作类会话事件
|
|
140
|
+
(`team/*`)也会以系统消息形式显示在转录区。
|
|
141
|
+
|
|
142
|
+
子代理不再把子会话内容平铺进主转录:每个子代理一张卡片,默认折叠,只显示
|
|
143
|
+
`子代理 spawn [id] 运行中 · Ns · 最近活动`。`Enter` / 鼠标点击展开该子代理自己的
|
|
144
|
+
用户消息、工具调用和结果;`Ctrl+R` 可一次展开或收起全部卡片。运行中的卡片带旋转
|
|
145
|
+
动画,状态栏和窗口标题显示 `⠋ 子代理 N`。
|
|
146
|
+
|
|
147
|
+
计划模式、提问用户和当前目标也有独立显示:`/plan` 进入后出现 `计划模式` 卡片和底部
|
|
148
|
+
`计划模式` 提示;`todo_write` 的任务列表叠在同一张卡片里。`exit_plan_mode` 或
|
|
149
|
+
`ask_user_question` 会弹出对话框,并在转录区留下默认折叠的 `计划待审` /
|
|
150
|
+
`提问用户` 卡片,选项键和推荐项会标出来。`/goal` 设置的目标会显示为默认折叠的
|
|
151
|
+
`目标 · 进行中` 卡片,底部状态栏同步提示。
|
|
131
152
|
|
|
132
153
|
`/usage` 在当前提供商为 OpenCode 源时可用,并区分两种计费方式:
|
|
133
154
|
|
|
@@ -197,7 +218,9 @@ bash scripts/uninstall.sh work # 指定 profile
|
|
|
197
218
|
- `.gitignore` 已排除 `node_modules/`、`lib/`、`.env*`、`*.key`、`session*.jsonl*`、
|
|
198
219
|
`sessions/`、日志与临时文件;
|
|
199
220
|
- 上传前请自查:`find . -type f | grep -Ei 'credential|\.env|\.key|session'`;
|
|
200
|
-
- 插件本身不收集、不上传任何数据;会话日志仅按需读写于本机 `$DSH_HOME
|
|
221
|
+
- 插件本身不收集、不上传任何数据;会话日志仅按需读写于本机 `$DSH_HOME`;
|
|
222
|
+
- 首次配置可能会在 shell rc(`.bashrc` / `.zshrc` 等)写入 `env.sh` 引用以便启动环境覆盖生效;
|
|
223
|
+
若不希望改动 rc,可设置 `DSH_TUI_NO_RC_HOOK=1` 跳过。
|
|
201
224
|
|
|
202
225
|
## 开发与目录结构
|
|
203
226
|
|
package/lib/index.js
CHANGED
|
@@ -171,11 +171,12 @@ export function apply(ctx, config) {
|
|
|
171
171
|
switching = false;
|
|
172
172
|
}
|
|
173
173
|
};
|
|
174
|
+
const pickerAbort = new AbortController();
|
|
174
175
|
let bootingSessionId = config.sessionId;
|
|
175
176
|
const boot = async () => {
|
|
176
177
|
if (config.resumePicker === true) {
|
|
177
178
|
await ctx.get('loader')?.await();
|
|
178
|
-
const picked = await showSessionPicker(ctx, config.color !== false);
|
|
179
|
+
const picked = await showSessionPicker(ctx, config.color !== false, pickerAbort.signal);
|
|
179
180
|
if (disposed)
|
|
180
181
|
return;
|
|
181
182
|
if (picked === null) {
|
|
@@ -214,6 +215,7 @@ export function apply(ctx, config) {
|
|
|
214
215
|
});
|
|
215
216
|
return async () => {
|
|
216
217
|
disposed = true;
|
|
218
|
+
pickerAbort.abort();
|
|
217
219
|
await controller?.dispose();
|
|
218
220
|
await handle?.dispose();
|
|
219
221
|
};
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/lib/picker.js
CHANGED
|
@@ -5,21 +5,26 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { StringDecoder } from 'node:string_decoder';
|
|
7
7
|
import { formatSessionTime, listResumableSessions } from './session-list.js';
|
|
8
|
-
import { truncateToWidth } from './tui.js';
|
|
8
|
+
import { isEscapePrefix, truncateToWidth } from './tui.js';
|
|
9
9
|
/**
|
|
10
|
-
* Show the picker and wait for one digit, Enter (new session), or
|
|
11
|
-
* (cancel).
|
|
10
|
+
* Show the picker and wait for one digit, Enter (new session), or a lone
|
|
11
|
+
* Esc/Ctrl+C (cancel). Incomplete CSI/SS3 sequences are buffered briefly so
|
|
12
|
+
* arrow keys are ignored instead of cancelling. Restores the terminal before
|
|
13
|
+
* resolving; an AbortSignal cancels and restores as well.
|
|
12
14
|
* @param ctx - boot context supplying sessionPersistence.
|
|
13
15
|
* @param color - whether to apply ANSI colors.
|
|
16
|
+
* @param signal - optional abort signal (fiber dispose) to cancel the picker.
|
|
14
17
|
* @returns the selection, or null when cancelled.
|
|
15
18
|
*/
|
|
16
|
-
export async function showSessionPicker(ctx, color) {
|
|
19
|
+
export async function showSessionPicker(ctx, color, signal) {
|
|
17
20
|
const persistence = ctx.get('sessionPersistence');
|
|
18
21
|
if (persistence === undefined) {
|
|
19
22
|
process.stderr.write('dsh-ssh-tui: sessionPersistence service is unavailable\n');
|
|
20
23
|
return { kind: 'new' };
|
|
21
24
|
}
|
|
22
25
|
const sessions = await listResumableSessions(persistence, '');
|
|
26
|
+
if (signal?.aborted)
|
|
27
|
+
return null;
|
|
23
28
|
if (sessions.length === 0) {
|
|
24
29
|
process.stdout.write('dsh-ssh-tui: no resumable history sessions; starting a fresh session.\n');
|
|
25
30
|
return { kind: 'new' };
|
|
@@ -52,10 +57,15 @@ export async function showSessionPicker(ctx, color) {
|
|
|
52
57
|
};
|
|
53
58
|
return new Promise((resolve) => {
|
|
54
59
|
let done = false;
|
|
60
|
+
let escapeBuffer = '';
|
|
61
|
+
let escapeTimer;
|
|
55
62
|
const cleanup = (result) => {
|
|
56
63
|
if (done)
|
|
57
64
|
return;
|
|
58
65
|
done = true;
|
|
66
|
+
if (escapeTimer !== undefined)
|
|
67
|
+
clearTimeout(escapeTimer);
|
|
68
|
+
signal?.removeEventListener('abort', onAbort);
|
|
59
69
|
process.stdin.removeListener('data', onData);
|
|
60
70
|
try {
|
|
61
71
|
process.stdin.setRawMode(false);
|
|
@@ -67,10 +77,39 @@ export async function showSessionPicker(ctx, color) {
|
|
|
67
77
|
process.stdout.write(`\x1b[0m\x1b[?25h${useAltScreen ? '\x1b[?1049l' : ''}\n`);
|
|
68
78
|
resolve(result);
|
|
69
79
|
};
|
|
80
|
+
const onAbort = () => {
|
|
81
|
+
cleanup(null);
|
|
82
|
+
};
|
|
70
83
|
const onData = (chunk) => {
|
|
71
|
-
const
|
|
72
|
-
|
|
73
|
-
|
|
84
|
+
const combined = escapeBuffer + decoder.write(chunk);
|
|
85
|
+
escapeBuffer = '';
|
|
86
|
+
if (escapeTimer !== undefined) {
|
|
87
|
+
clearTimeout(escapeTimer);
|
|
88
|
+
escapeTimer = undefined;
|
|
89
|
+
}
|
|
90
|
+
// Ignore complete navigation / function-key sequences.
|
|
91
|
+
if (/^\x1b\[[A-DHF]$/u.test(combined)
|
|
92
|
+
|| /^\x1b\[[1-6]~$/u.test(combined)
|
|
93
|
+
|| /^\x1bO[A-D]$/u.test(combined)) {
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
if (isEscapePrefix(combined)) {
|
|
97
|
+
escapeBuffer = combined;
|
|
98
|
+
escapeTimer = setTimeout(() => {
|
|
99
|
+
escapeTimer = undefined;
|
|
100
|
+
const pending = escapeBuffer;
|
|
101
|
+
escapeBuffer = '';
|
|
102
|
+
if (pending === '\x1b')
|
|
103
|
+
cleanup(null);
|
|
104
|
+
}, 60);
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
if (combined.startsWith('\x1b')) {
|
|
108
|
+
// Unknown / complete escape sequence — ignore rather than cancel.
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
for (const char of combined) {
|
|
112
|
+
if (char === '\x03') {
|
|
74
113
|
cleanup(null);
|
|
75
114
|
return;
|
|
76
115
|
}
|
|
@@ -87,6 +126,11 @@ export async function showSessionPicker(ctx, color) {
|
|
|
87
126
|
}
|
|
88
127
|
}
|
|
89
128
|
};
|
|
129
|
+
if (signal?.aborted) {
|
|
130
|
+
cleanup(null);
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
signal?.addEventListener('abort', onAbort, { once: true });
|
|
90
134
|
process.stdin.on('data', onData);
|
|
91
135
|
render();
|
|
92
136
|
});
|
package/lib/picker.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"picker.js","sourceRoot":"","sources":["../src/picker.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAGnD,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"picker.js","sourceRoot":"","sources":["../src/picker.ts"],"names":[],"mappings":"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"}
|