dsh-ssh-tui 0.5.6 → 0.5.8
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 +24 -0
- package/README.md +37 -0
- package/lib/display-sock.js +237 -60
- package/lib/display-sock.js.map +1 -1
- package/lib/dsh-compat.js +138 -5
- package/lib/dsh-compat.js.map +1 -1
- package/lib/footer.js +27 -2
- package/lib/footer.js.map +1 -1
- package/lib/index.js +8 -4
- package/lib/index.js.map +1 -1
- package/lib/paint.js +21 -2
- package/lib/paint.js.map +1 -1
- package/lib/picker.js +45 -18
- package/lib/picker.js.map +1 -1
- package/lib/session-index.js +2 -2
- package/lib/session-index.js.map +1 -1
- package/lib/session-lock.js +177 -24
- package/lib/session-lock.js.map +1 -1
- package/lib/tui.js +83 -24
- package/lib/tui.js.map +1 -1
- package/lib/types/display-sock.d.ts +59 -5
- package/lib/types/dsh-compat.d.ts +60 -2
- package/lib/types/footer.d.ts +11 -1
- package/lib/types/paint.d.ts +13 -0
- package/lib/types/picker.d.ts +6 -1
- package/lib/types/session-lock.d.ts +42 -3
- package/lib/types/tui.d.ts +15 -5
- package/package.json +50 -48
package/README.en.md
CHANGED
|
@@ -233,6 +233,30 @@ The plugin runs on Linux, macOS, and Windows (Node ≥ 22.19):
|
|
|
233
233
|
through the dsh credential store, or runs `setx` (plus `env.cmd`) when an
|
|
234
234
|
environment variable shadows the store. Agent shell tools automatically use
|
|
235
235
|
PowerShell on Windows (the harness disables bash there).
|
|
236
|
+
- Windows display channel: the Host/Display link is a named pipe
|
|
237
|
+
(`\\.\pipe\dsh-tui-<8-hex DSH_HOME>-<session name>-<8-hex session id>`), not a
|
|
238
|
+
`.sock` file — a named pipe is the only local socket Windows can listen on,
|
|
239
|
+
and it is reclaimed when the Host exits. Both digests are part of the name so
|
|
240
|
+
two homes or two sessions can never share one machine-wide pipe. Because `fs.access()` cannot see the pipe namespace, readiness is
|
|
241
|
+
probed with a real connect, and a Host that exits early is reported at once
|
|
242
|
+
with its stderr (kept in `%USERPROFILE%\.dsh\tui-socks\<session>.err`).
|
|
243
|
+
- Windows session locks: with no `/proc`, a live pid is checked with
|
|
244
|
+
`Get-Process` (image name plus creation time), so a pid recycled by an
|
|
245
|
+
unrelated process is recognised as stale and the session resumes instead of
|
|
246
|
+
reporting a phantom zombie Host.
|
|
247
|
+
- Footer speed (`135 tok/s`): measured from the first token the model emits
|
|
248
|
+
(reasoning or tool-call fragments included) to the settled step, and rebuilt
|
|
249
|
+
when a session is replayed on `--resume` — from the durable `assistant/chunk`
|
|
250
|
+
events on 0.1.2 hosts, or from the packed stream inside `assistant/message`
|
|
251
|
+
on 0.1.5. Steps with no usable timing fall back to `首字 1.2s`.
|
|
252
|
+
- Subagent route: the identity row always carries `sub:<model>` — the route
|
|
253
|
+
every child inherits — suffixed with the effort when `/subeffort` set one,
|
|
254
|
+
and prefixed with the provider when `settings.yaml` pinned one
|
|
255
|
+
(`ssh-tui-subagent.provider`), e.g. `sub:xai/grok-4.5(xhigh)`.
|
|
256
|
+
- Resize: the launcher picker unregisters its own `resize` listener when it
|
|
257
|
+
settles and refuses to paint afterwards, so resizing the window can no longer
|
|
258
|
+
redraw the finished picker over the running TUI (the launcher process keeps
|
|
259
|
+
owning the TTY as the display relay for the whole session).
|
|
236
260
|
- Legacy Windows consoles without VT support: set `DSH_TUI_NO_ALT_SCREEN=1`
|
|
237
261
|
(and `--no-color` if needed) to skip the alternate-screen escape sequences.
|
|
238
262
|
- Keyboard input accepts both `\x7f` and `\x08` backspace, and both `\r` /
|
package/README.md
CHANGED
|
@@ -67,6 +67,8 @@ dsh --profile tui
|
|
|
67
67
|
- 转录区滚动回看(`PgUp`/`PgDn`、鼠标滚轮),点击思考/工具标题行直接展开收起;
|
|
68
68
|
- 输入框下方两行底栏:第一行链路芯片 + 按宽度丢组的会话数字(轮次、入/出 token、速度);
|
|
69
69
|
第二行只留一个活动词(运行中 / 工具 N / 子代理 N / 压缩中…),身份收到右侧(含 `目录:srv`;点击打印完整工作目录);
|
|
70
|
+
身份里始终带 `sub:<子代理模型>`:`/submodel` 选模型、`/subeffort` 选档位(带括号后缀);提供商前缀只在
|
|
71
|
+
设置里固定过子代理提供商时出现(如 `sub:xai/grok-4.5(xhigh)`,`settings.yaml` 的 `ssh-tui-subagent.provider`);
|
|
70
72
|
- 恢复旧会话会切到该会话记录的工作目录;新建会话用启动时的当前目录;
|
|
71
73
|
- 历史会话启动选择器:`dsh --profile tui --resume`(或 `resume`)先选会话再进入;
|
|
72
74
|
- 终端窗口标题栏:运行中旋转图标 + `运行中 · 工具 N`,完成后 `✓ 已完成`,并响
|
|
@@ -91,6 +93,11 @@ dsh --profile tui
|
|
|
91
93
|
- DeepSeek Harness CLI:`npm i -g @deepseek-ai/dsh`(已验证 `0.1.2-rc.1` 与 `0.1.5-rc.1`。`0.1.5-alpha.1` / `0.1.5-alpha.2` / `0.1.3-alpha.2` 走同一套 handle API + `agent/assistant-stream` 兼容层。`0.1.3-alpha.1` 只在 GitHub 有 tag,npm 未发布,无法本地装包验证)
|
|
92
94
|
- pnpm(`dsh plugin` 通过 pnpm 管理 profile 依赖)
|
|
93
95
|
- 支持 ANSI 的终端(推荐 SSH 直连;Windows 用 PowerShell / Windows Terminal)
|
|
96
|
+
- Windows:Host 与显示端之间的本地通道使用命名管道
|
|
97
|
+
`\\.\pipe\dsh-tui-<DSH_HOME 摘要 8 位>-<会话名>-<会话摘要 8 位>`(Windows 只能监听命名管道,
|
|
98
|
+
不能监听 `.sock` 文件;名字里同时带 DSH_HOME 与会话 id 的摘要,所以不同 home、不同会话都不会撞名,
|
|
99
|
+
结束进程即自动回收)。Host 的 stderr 记录在 `%USERPROFILE%\.dsh\tui-socks\<会话名>-<摘要>.err`,
|
|
100
|
+
会话锁仍在 `%USERPROFILE%\.dsh\tui-locks\`。
|
|
94
101
|
|
|
95
102
|
## 部署指南
|
|
96
103
|
|
|
@@ -169,6 +176,15 @@ npm run build
|
|
|
169
176
|
dsh plugin --profile tui add "link:$(pwd)"
|
|
170
177
|
```
|
|
171
178
|
|
|
179
|
+
Windows(PowerShell)等价写法;仓库里的 `scripts/*.sh` 是 POSIX 脚本,Windows 直接用下面三条命令:
|
|
180
|
+
|
|
181
|
+
```powershell
|
|
182
|
+
cd dsh-ssh-tui
|
|
183
|
+
npm install --no-audit --no-fund
|
|
184
|
+
npm run build
|
|
185
|
+
dsh plugin --profile tui add "link:$((Get-Location).Path)"
|
|
186
|
+
```
|
|
187
|
+
|
|
172
188
|
### 方式三:指定其它 profile
|
|
173
189
|
|
|
174
190
|
```bash
|
|
@@ -389,6 +405,12 @@ npm run build
|
|
|
389
405
|
## 常见问题
|
|
390
406
|
|
|
391
407
|
- **`dsh-ssh-tui: both stdin and stdout must be TTYs`**:必须从真实终端/SSH 会话启动。
|
|
408
|
+
- **Windows 报 `dsh-ssh-tui: host display socket did not appear`**:0.5.7 及更早版本把显示通道
|
|
409
|
+
当成 Unix socket(`$DSH_HOME/tui-socks/*.sock`),而 Windows 只能监听 `\\.\pipe\` 命名管道,
|
|
410
|
+
Host 进程绑定失败;旧版本还用 `fs.access()` 判断通道是否就绪,而 Windows 的文件 API 看不到
|
|
411
|
+
命名管道,所以即使 Host 已经起来也只会等到 15 秒超时。0.5.8 起 Windows 自动改用命名管道
|
|
412
|
+
(按 `DSH_HOME` + 会话 id 生成唯一管道名),就绪判断改为真实连接探测,并在 Host 提前退出时
|
|
413
|
+
立即报错并附带其 stderr。升级到 0.5.8 即可:`dsh plugin --profile tui add dsh-ssh-tui@latest`。
|
|
392
414
|
- **pnpm 拒绝 git 依赖的构建脚本**:git 安装的插件需要把 pnpm 打印的 key 加入
|
|
393
415
|
profile 的 `pnpm-workspace.yaml` 的 `allowBuilds`。
|
|
394
416
|
- **标题栏或铃声不生效**:确认终端支持 OSC 0 与 BEL;铃声可用
|
|
@@ -397,6 +419,21 @@ npm run build
|
|
|
397
419
|
- **跳板机 / 多层代理 SSH 发画**:每一帧只发脏行,并且拼成一次 `stdout.write`。本机 80 ms;SSH 启动时用 CSI 6n 测往返,按 RTT 选 80/160/250/400 ms。`DSH_TUI_PAINT_MS` 始终优先(40–1000)。统计行最左是 `SSH ●●●○ 90ms`(一格红、两格黄、三格及以上绿)。探测不写进转录。
|
|
398
420
|
- **SSH 断了**:空闲则 flush 后退出(不保活)。忙碌(思考/回复/工具/子代理)则默认取消当前轮次、flush 日志,Host 留下。`/disconnect continue` 则不取消,后台跑完。回来 `--resume` 会接入那个进程(见上文)。不要再开第二份 Host。
|
|
399
421
|
- **提示会话已在 pid 运行 / 可接入**:那份 Host 还活着。用 `--resume` 接入;只有 pid 已死、显示通道也连不上时才删 `$DSH_HOME/tui-locks/` 再从日志恢复。
|
|
422
|
+
Windows 没有 `/proc`,0.5.8 起会用 `Get-Process` 核对 pid 的镜像名与创建时间:pid 被系统回收给
|
|
423
|
+
别的进程时会被判定为陈旧并自动接管,不再出现「明明没有 Host 却报 zombie」。
|
|
424
|
+
- **状态栏没有速度指标(`tok/s`)**:第一行统计里的速度只在该轮有模型 token 时出现;只有首字耗时可算
|
|
425
|
+
时显示 `首字 1.2s`。0.5.8 修复了两处:实时流的 chunk 帧不带 turn/step,旧版会把它们归到第 0 步
|
|
426
|
+
导致速度永远是 0(顺带把 token 数重复计了一次);`--resume` 重放日志时也不再用实时增量,而是从
|
|
427
|
+
日志里的 `assistant/chunk`(0.1.2)或消息内嵌的打包流(0.1.5)重建首字时间,恢复会话同样显示速度。
|
|
428
|
+
- **状态栏看不到子代理模型**:0.3.6 起 `sub:<模型>` 只在子代理模型与父模型不同时才拼进身份行,
|
|
429
|
+
而默认子代理模型就是 `deepseek-v4-flash`,父模型也是它时整段消失;0.5.8 起恢复为始终显示,
|
|
430
|
+
并找回提供商前缀与 `/subeffort` 的括号后缀(提供商要先在 `settings.yaml` 的 `ssh-tui-subagent.provider`
|
|
431
|
+
里固定过)。查看或修改:`/status`、`/submodel`、`/subeffort`。
|
|
432
|
+
- **缩放终端窗口时整屏闪烁、还闪出历史会话选择器**:启动选择器注册 `resize` 监听时用的是匿名函数,
|
|
433
|
+
退出时却按 `render` 这个引用去注销,于是监听器一直留在中继进程里(中继要活整个会话)。之后每次
|
|
434
|
+
缩放终端,那张已经结束的选择器都会被整屏重画一遍(`\x1b[H\x1b[J` + 整屏内容),紧接着再被 TUI
|
|
435
|
+
的整屏重画覆盖——看起来就是闪两下并闪出选择器内容。0.5.8 起改用命名监听器注销,并给已结束的
|
|
436
|
+
选择器加 `done` 守卫:结算后再触发 `resize` 一个字节都不会写(有回归测试)。
|
|
400
437
|
|
|
401
438
|
## License
|
|
402
439
|
|
package/lib/display-sock.js
CHANGED
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Length-prefixed
|
|
2
|
+
* Length-prefixed local-socket frames between a leftover Host and a new
|
|
3
3
|
* Display relay. Binary on purpose: paint bytes are raw ANSI, not JSON.
|
|
4
4
|
*
|
|
5
|
+
* Transport: an AF_UNIX socket at `$DSH_HOME/tui-socks/<id>.sock` on POSIX,
|
|
6
|
+
* and a named pipe at `\\.\pipe\dsh-tui-<home>-<id>` on Windows. Node requires
|
|
7
|
+
* the `\\.\pipe\` form there — a plain file path cannot be listened on — and
|
|
8
|
+
* `fs.access()` cannot see pipes, so channel liveness always goes through
|
|
9
|
+
* `displaySockExists()` instead of a raw filesystem check.
|
|
10
|
+
*
|
|
5
11
|
* Frame: u32be length | u8 type | payload
|
|
6
12
|
* 1 stdin — relay → host (key bytes)
|
|
7
13
|
* 2 stdout — host → relay (paint bytes)
|
|
@@ -11,11 +17,13 @@
|
|
|
11
17
|
* 6 rtt — relay → host (u32be milliseconds; 0xffffffff = unknown)
|
|
12
18
|
*/
|
|
13
19
|
import { spawn } from 'node:child_process';
|
|
20
|
+
import { createHash } from 'node:crypto';
|
|
14
21
|
import { createConnection, createServer } from 'node:net';
|
|
15
22
|
import { access, mkdir, readFile, unlink } from 'node:fs/promises';
|
|
16
23
|
import { closeSync, constants as fsConstants, mkdirSync, openSync } from 'node:fs';
|
|
17
24
|
import { homedir } from 'node:os';
|
|
18
|
-
import {
|
|
25
|
+
import { findCursorPositionReply } from './paint.js';
|
|
26
|
+
import { dirname, join, resolve } from 'node:path';
|
|
19
27
|
export const FRAME_STDIN = 1;
|
|
20
28
|
export const FRAME_STDOUT = 2;
|
|
21
29
|
export const FRAME_RESIZE = 3;
|
|
@@ -24,9 +32,6 @@ export const FRAME_GOODBYE = 5;
|
|
|
24
32
|
export const FRAME_RTT = 6;
|
|
25
33
|
const MAX_FRAME = 1024 * 1024;
|
|
26
34
|
const DSR_PROBE_TIMEOUT_MS = 800;
|
|
27
|
-
function parseCursorPositionReply(text) {
|
|
28
|
-
return /^\x1b\[\d+;\d+R$/u.test(text);
|
|
29
|
-
}
|
|
30
35
|
/** CSI 6n round-trip on this TTY. Must run before stdin is forwarded to the Host. */
|
|
31
36
|
async function probeLocalRttMs(stdin = process.stdin, stdout = process.stdout, timeoutMs = DSR_PROBE_TIMEOUT_MS) {
|
|
32
37
|
if (!stdin.isTTY || !stdout.isTTY)
|
|
@@ -45,11 +50,15 @@ async function probeLocalRttMs(stdin = process.stdin, stdout = process.stdout, t
|
|
|
45
50
|
};
|
|
46
51
|
const onData = (chunk) => {
|
|
47
52
|
buffer += chunk.toString('utf8');
|
|
48
|
-
if (
|
|
53
|
+
if (findCursorPositionReply(buffer) !== undefined) {
|
|
49
54
|
finish(Math.max(0, Date.now() - started));
|
|
50
55
|
return;
|
|
51
56
|
}
|
|
52
|
-
|
|
57
|
+
// The reply can share a chunk with focus/mouse/keystroke noise, so scan
|
|
58
|
+
// the buffer instead of requiring it to be the entire read.
|
|
59
|
+
if (buffer.length > 64)
|
|
60
|
+
buffer = buffer.slice(-64);
|
|
61
|
+
if (buffer.length > 32 && !buffer.includes('\x1b'))
|
|
53
62
|
finish(undefined);
|
|
54
63
|
};
|
|
55
64
|
const timer = setTimeout(() => finish(undefined), timeoutMs);
|
|
@@ -85,9 +94,90 @@ export const TUI_HOST_ENV = 'DSH_TUI_HOST';
|
|
|
85
94
|
export function isTuiHostProcess(env = process.env) {
|
|
86
95
|
return env[TUI_HOST_ENV] === '1' || env[TUI_HOST_ENV] === 'true';
|
|
87
96
|
}
|
|
88
|
-
|
|
97
|
+
/**
|
|
98
|
+
* Windows named-pipe namespace. Node's `net` passes the string straight to
|
|
99
|
+
* CreateNamedPipeW/CreateFileW, and those require this prefix — a drive-letter
|
|
100
|
+
* path fails with ENOENT/EACCES and the Host never listens.
|
|
101
|
+
*/
|
|
102
|
+
export const WINDOWS_PIPE_PREFIX = '\\\\.\\pipe\\';
|
|
103
|
+
/** Windows rejects pipe names longer than 256 chars; leave generous headroom. */
|
|
104
|
+
const WINDOWS_PIPE_MAX = 200;
|
|
105
|
+
/** True for a Windows named-pipe address (`\\.\pipe\x`, `\\?\pipe\x`, `//./pipe/x`). */
|
|
106
|
+
export function isPipePath(path) {
|
|
107
|
+
const normalized = path.replaceAll('/', '\\').toLowerCase();
|
|
108
|
+
return normalized.startsWith('\\\\.\\pipe\\') || normalized.startsWith('\\\\?\\pipe\\');
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* `DSH_HOME` the way dsh itself resolves it: a blank value counts as unset, and
|
|
112
|
+
* the result is absolute. Both matter here because the launcher and the
|
|
113
|
+
* detached Host compute channel names independently and the Host chdirs into
|
|
114
|
+
* the session's working directory first — a relative or empty home would give
|
|
115
|
+
* them two different sockets (or pipe names) and time the launch out.
|
|
116
|
+
*/
|
|
117
|
+
export function resolveDshHome(env = process.env, home = homedir()) {
|
|
118
|
+
const configured = env.DSH_HOME?.trim();
|
|
119
|
+
return resolve(configured !== undefined && configured !== '' ? configured : join(home, '.dsh'));
|
|
120
|
+
}
|
|
121
|
+
function defaultDshHome() {
|
|
122
|
+
return resolveDshHome();
|
|
123
|
+
}
|
|
124
|
+
/** Directory holding per-session display runtime state (error logs). */
|
|
125
|
+
export function sessionSockDir(dshHome = defaultDshHome()) {
|
|
126
|
+
return join(dshHome, 'tui-socks');
|
|
127
|
+
}
|
|
128
|
+
/** Filesystem/pipe-safe form of a session id, as used for locks and channels. */
|
|
129
|
+
export function safeSessionId(sessionId) {
|
|
89
130
|
const safe = sessionId.replaceAll(/[^A-Za-z0-9._-]/g, '_');
|
|
90
|
-
return
|
|
131
|
+
return safe === '' ? 'session' : safe;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Readable, collision-free short label for one session: a sanitized head plus a
|
|
135
|
+
* digest of the raw id. The digest is always appended because sanitizing alone
|
|
136
|
+
* collapses distinct ids (`abc`, `abc.`, `_abc`, `abc..`) into one name, and on
|
|
137
|
+
* Windows the pipe namespace is machine-wide — the collapsed forms would share
|
|
138
|
+
* a channel and a relay could attach to the wrong session.
|
|
139
|
+
*/
|
|
140
|
+
function sessionLabel(sessionId, maxLength) {
|
|
141
|
+
const digest = createHash('sha1').update(sessionId).digest('hex').slice(0, 8);
|
|
142
|
+
const head = safeSessionId(sessionId)
|
|
143
|
+
.replaceAll(/\.{2,}/gu, '_')
|
|
144
|
+
.replace(/^[._-]+|[._-]+$/gu, '')
|
|
145
|
+
.slice(0, Math.max(0, maxLength - digest.length - 1));
|
|
146
|
+
return `${head === '' ? 'session' : head}-${digest}`;
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Named pipes live in one flat, machine-wide namespace, so the DSH_HOME is
|
|
150
|
+
* folded into the name (two homes must not fight over one session id) and the
|
|
151
|
+
* label is clamped with a digest so long ids stay unique instead of truncated
|
|
152
|
+
* into collisions.
|
|
153
|
+
*/
|
|
154
|
+
function windowsPipePath(sessionId, dshHome) {
|
|
155
|
+
const homeTag = createHash('sha1').update(resolve(dshHome).toLowerCase()).digest('hex').slice(0, 8);
|
|
156
|
+
const room = WINDOWS_PIPE_MAX - WINDOWS_PIPE_PREFIX.length - 'dsh-tui-'.length - homeTag.length - 1;
|
|
157
|
+
return `${WINDOWS_PIPE_PREFIX}dsh-tui-${homeTag}-${sessionLabel(sessionId, room)}`;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Address of the per-session display channel: a filesystem path on POSIX, a
|
|
161
|
+
* named pipe on Windows. `platform` is injectable so the Windows shape stays
|
|
162
|
+
* testable from a POSIX test run.
|
|
163
|
+
*/
|
|
164
|
+
export function sessionSockPath(sessionId, dshHome = defaultDshHome(), platform = process.platform) {
|
|
165
|
+
if (platform === 'win32')
|
|
166
|
+
return windowsPipePath(sessionId, dshHome);
|
|
167
|
+
return join(sessionSockDir(dshHome), `${safeSessionId(sessionId)}.sock`);
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Host stderr log for one session. POSIX keeps the historical `<sock>.err`
|
|
171
|
+
* next to the socket; a Windows pipe name is not a file path, so the log lives
|
|
172
|
+
* in the `tui-socks` state directory instead — under the same digested label,
|
|
173
|
+
* which also keeps long ids inside the Windows path limit and keeps reserved
|
|
174
|
+
* device names (`CON`, `NUL`, …) from becoming the file stem.
|
|
175
|
+
*/
|
|
176
|
+
export function sessionErrPath(sessionId, dshHome = defaultDshHome(), platform = process.platform) {
|
|
177
|
+
const sock = sessionSockPath(sessionId, dshHome, platform);
|
|
178
|
+
if (isPipePath(sock))
|
|
179
|
+
return join(sessionSockDir(dshHome), `${sessionLabel(sessionId, 64)}.err`);
|
|
180
|
+
return `${sock}.err`;
|
|
91
181
|
}
|
|
92
182
|
export function encodeFrame(type, payload = Buffer.alloc(0)) {
|
|
93
183
|
if (type < 1 || type > 255)
|
|
@@ -142,6 +232,20 @@ export class FrameReader {
|
|
|
142
232
|
return frames;
|
|
143
233
|
}
|
|
144
234
|
}
|
|
235
|
+
/**
|
|
236
|
+
* Turn a raw listen() errno into an actionable message. Windows pipe failures
|
|
237
|
+
* are opaque (`ENOENT` for a bad name, `EACCES`/`EADDRINUSE` for a pipe that a
|
|
238
|
+
* live Host already owns), so name the likely cause.
|
|
239
|
+
*/
|
|
240
|
+
function wrapListenError(error, path, pipe) {
|
|
241
|
+
const code = error.code ?? error.message;
|
|
242
|
+
const hint = pipe && (code === 'EADDRINUSE' || code === 'EACCES' || code === 'EPERM')
|
|
243
|
+
? ' (another dsh-ssh-tui host may already own this session)'
|
|
244
|
+
: '';
|
|
245
|
+
const wrapped = new Error(`dsh-ssh-tui: cannot listen on display socket ${path} (${code})${hint}`);
|
|
246
|
+
wrapped.code = error.code;
|
|
247
|
+
return wrapped;
|
|
248
|
+
}
|
|
145
249
|
/**
|
|
146
250
|
* Host-side listener. At most one Display is attached; a new hello kicks the
|
|
147
251
|
* previous relay so two SSH windows cannot both drive the session.
|
|
@@ -158,21 +262,32 @@ export class DisplayHost {
|
|
|
158
262
|
this.handlers = handlers;
|
|
159
263
|
}
|
|
160
264
|
async listen() {
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
265
|
+
const pipe = isPipePath(this.path);
|
|
266
|
+
if (!pipe) {
|
|
267
|
+
// Pipes are not files: they need no directory, cannot be unlinked, and
|
|
268
|
+
// vanish with the owning process.
|
|
269
|
+
await mkdir(dirname(this.path), { recursive: true, mode: 0o700 });
|
|
270
|
+
try {
|
|
271
|
+
await unlink(this.path);
|
|
272
|
+
}
|
|
273
|
+
catch {
|
|
274
|
+
// missing is fine
|
|
275
|
+
}
|
|
167
276
|
}
|
|
168
277
|
await new Promise((resolve, reject) => {
|
|
169
278
|
const server = createServer(socket => this.accept(socket));
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
279
|
+
const onError = (error) => {
|
|
280
|
+
server.removeListener('listening', onListening);
|
|
281
|
+
reject(wrapListenError(error, this.path, pipe));
|
|
282
|
+
};
|
|
283
|
+
const onListening = () => {
|
|
284
|
+
server.removeListener('error', onError);
|
|
173
285
|
this.server = server;
|
|
174
286
|
resolve();
|
|
175
|
-
}
|
|
287
|
+
};
|
|
288
|
+
server.once('error', onError);
|
|
289
|
+
server.once('listening', onListening);
|
|
290
|
+
server.listen(this.path);
|
|
176
291
|
});
|
|
177
292
|
}
|
|
178
293
|
accept(socket) {
|
|
@@ -301,11 +416,13 @@ export class DisplayHost {
|
|
|
301
416
|
}
|
|
302
417
|
server.close(() => resolve());
|
|
303
418
|
});
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
419
|
+
if (!isPipePath(this.path)) {
|
|
420
|
+
try {
|
|
421
|
+
await unlink(this.path);
|
|
422
|
+
}
|
|
423
|
+
catch {
|
|
424
|
+
// ignore
|
|
425
|
+
}
|
|
309
426
|
}
|
|
310
427
|
}
|
|
311
428
|
}
|
|
@@ -320,11 +437,68 @@ function isPidAlive(pid) {
|
|
|
320
437
|
return error.code === 'EPERM';
|
|
321
438
|
}
|
|
322
439
|
}
|
|
323
|
-
|
|
440
|
+
/**
|
|
441
|
+
* True once something is listening on the display channel.
|
|
442
|
+
*
|
|
443
|
+
* `fs.access(path, F_OK)` cannot see a Windows named pipe (it goes through
|
|
444
|
+
* GetFileAttributesW, which does not resolve the pipe namespace), so pipes are
|
|
445
|
+
* checked with a real connect. The Host deliberately treats a connect without
|
|
446
|
+
* HELLO as a liveness probe and drops it without stealing the display.
|
|
447
|
+
*/
|
|
448
|
+
export async function displaySockExists(path, timeoutMs = 250) {
|
|
449
|
+
if (isPipePath(path))
|
|
450
|
+
return await probeDisplaySock(path, timeoutMs);
|
|
451
|
+
try {
|
|
452
|
+
await access(path, fsConstants.F_OK);
|
|
453
|
+
return true;
|
|
454
|
+
}
|
|
455
|
+
catch {
|
|
456
|
+
return false;
|
|
457
|
+
}
|
|
458
|
+
}
|
|
459
|
+
function watchHostExit(child) {
|
|
460
|
+
let settle = () => { };
|
|
461
|
+
const exited = new Promise(resolve => { settle = resolve; });
|
|
462
|
+
const onExit = (code) => { settle(code); };
|
|
463
|
+
const onError = () => { settle(null); };
|
|
464
|
+
child.once('exit', onExit);
|
|
465
|
+
child.once('error', onError);
|
|
466
|
+
return {
|
|
467
|
+
exited,
|
|
468
|
+
dispose() {
|
|
469
|
+
child.removeListener('exit', onExit);
|
|
470
|
+
child.removeListener('error', onError);
|
|
471
|
+
},
|
|
472
|
+
};
|
|
473
|
+
}
|
|
474
|
+
export async function waitForDisplaySock(path, timeoutMs = 15_000, pid, errFile, exitWatch) {
|
|
475
|
+
const readDetail = async () => {
|
|
476
|
+
if (errFile === undefined)
|
|
477
|
+
return '';
|
|
478
|
+
try {
|
|
479
|
+
const detail = (await readFile(errFile, 'utf8')).trim();
|
|
480
|
+
await unlink(errFile);
|
|
481
|
+
return detail;
|
|
482
|
+
}
|
|
483
|
+
catch {
|
|
484
|
+
return '';
|
|
485
|
+
}
|
|
486
|
+
};
|
|
487
|
+
const exitedWith = (detail) => {
|
|
488
|
+
const suffix = detail !== '' ? `:\n${detail}` : '';
|
|
489
|
+
return new Error(`dsh-ssh-tui: host process pid ${pid ?? '?'} exited before display socket appeared${suffix}`);
|
|
490
|
+
};
|
|
324
491
|
const deadline = Date.now() + timeoutMs;
|
|
492
|
+
let hostExited = false;
|
|
493
|
+
let hostExitCode = null;
|
|
494
|
+
if (exitWatch !== undefined) {
|
|
495
|
+
void exitWatch.exited.then(code => {
|
|
496
|
+
hostExited = true;
|
|
497
|
+
hostExitCode = code;
|
|
498
|
+
});
|
|
499
|
+
}
|
|
325
500
|
while (Date.now() < deadline) {
|
|
326
|
-
|
|
327
|
-
await access(path, fsConstants.F_OK);
|
|
501
|
+
if (await displaySockExists(path)) {
|
|
328
502
|
if (errFile !== undefined) {
|
|
329
503
|
try {
|
|
330
504
|
await unlink(errFile);
|
|
@@ -333,34 +507,20 @@ export async function waitForDisplaySock(path, timeoutMs = 15_000, pid, errFile)
|
|
|
333
507
|
}
|
|
334
508
|
return;
|
|
335
509
|
}
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
}
|
|
344
|
-
catch {
|
|
345
|
-
detail = '';
|
|
346
|
-
}
|
|
347
|
-
}
|
|
348
|
-
const suffix = detail !== '' ? `:\n${detail}` : '';
|
|
349
|
-
throw new Error(`dsh-ssh-tui: host process pid ${pid} exited before display socket appeared${suffix}`);
|
|
350
|
-
}
|
|
351
|
-
await new Promise(resolve => setTimeout(resolve, 50));
|
|
510
|
+
if (hostExited) {
|
|
511
|
+
// The pid may still answer kill(pid, 0) on Windows while the handle is
|
|
512
|
+
// open, so trust the exit event: fail fast instead of waiting 15s.
|
|
513
|
+
const detail = await readDetail();
|
|
514
|
+
const reason = hostExitCode === null ? '' : ` (exit code ${hostExitCode})`;
|
|
515
|
+
const suffix = detail !== '' ? `:\n${detail}` : '';
|
|
516
|
+
throw new Error(`dsh-ssh-tui: host process pid ${pid ?? '?'} exited before display socket appeared${reason}${suffix}`);
|
|
352
517
|
}
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
if (errFile !== undefined) {
|
|
356
|
-
try {
|
|
357
|
-
detail = (await readFile(errFile, 'utf8')).trim();
|
|
358
|
-
await unlink(errFile);
|
|
359
|
-
}
|
|
360
|
-
catch {
|
|
361
|
-
detail = '';
|
|
518
|
+
if (pid !== undefined && !isPidAlive(pid)) {
|
|
519
|
+
throw exitedWith(await readDetail());
|
|
362
520
|
}
|
|
521
|
+
await new Promise(resolve => setTimeout(resolve, 50));
|
|
363
522
|
}
|
|
523
|
+
const detail = await readDetail();
|
|
364
524
|
const suffix = detail !== '' ? `:\n${detail}` : '';
|
|
365
525
|
throw new Error(`dsh-ssh-tui: host display socket did not appear: ${path}${suffix}`);
|
|
366
526
|
}
|
|
@@ -387,18 +547,27 @@ export function hostArgvForSession(sessionId, argv = process.argv.slice(1), exec
|
|
|
387
547
|
/** Spawn a detached Host copy of this `dsh` invocation and return its sock path. */
|
|
388
548
|
export function spawnDetachedHost(sessionId) {
|
|
389
549
|
const sock = sessionSockPath(sessionId);
|
|
390
|
-
|
|
550
|
+
// On Windows the channel is a pipe name, which is not a file path: the log
|
|
551
|
+
// must live in the state directory next to the locks instead.
|
|
552
|
+
const errFile = sessionErrPath(sessionId);
|
|
391
553
|
let errFd;
|
|
392
554
|
try {
|
|
393
|
-
mkdirSync(dirname(
|
|
555
|
+
mkdirSync(dirname(errFile), { recursive: true, mode: 0o700 });
|
|
394
556
|
errFd = openSync(errFile, 'w');
|
|
395
557
|
}
|
|
396
558
|
catch {
|
|
397
559
|
errFd = undefined;
|
|
398
560
|
}
|
|
399
561
|
const child = spawn(process.execPath, hostArgvForSession(sessionId), {
|
|
400
|
-
|
|
562
|
+
// DSH_HOME is pinned to the resolved absolute path: the Host chdirs into
|
|
563
|
+
// the session's working directory before it listens, so an unset, blank or
|
|
564
|
+
// relative home would otherwise resolve differently there and the two
|
|
565
|
+
// processes would compute different channel names.
|
|
566
|
+
env: { ...process.env, [TUI_HOST_ENV]: '1', DSH_HOME: resolveDshHome() },
|
|
401
567
|
detached: true,
|
|
568
|
+
// A detached Host has no console on Windows; hide the console window that
|
|
569
|
+
// would otherwise flash on screen when it is created.
|
|
570
|
+
windowsHide: true,
|
|
402
571
|
stdio: ['ignore', 'ignore', errFd ?? 'ignore'],
|
|
403
572
|
});
|
|
404
573
|
if (errFd !== undefined) {
|
|
@@ -409,8 +578,9 @@ export function spawnDetachedHost(sessionId) {
|
|
|
409
578
|
}
|
|
410
579
|
if (child.pid === undefined)
|
|
411
580
|
throw new Error('dsh-ssh-tui: failed to spawn host process');
|
|
581
|
+
const exitWatch = watchHostExit(child);
|
|
412
582
|
child.unref();
|
|
413
|
-
return { pid: child.pid, sock, ...errFd !== undefined ? { errFile } : {} };
|
|
583
|
+
return { pid: child.pid, sock, exitWatch, ...errFd !== undefined ? { errFile } : {} };
|
|
414
584
|
}
|
|
415
585
|
export async function probeDisplaySock(path, timeoutMs = 400) {
|
|
416
586
|
return await new Promise(resolve => {
|
|
@@ -452,6 +622,14 @@ export async function runDisplayRelay(path) {
|
|
|
452
622
|
cleanup();
|
|
453
623
|
resolve({ reason });
|
|
454
624
|
};
|
|
625
|
+
/** Reject like `finish`, but restore the terminal first. */
|
|
626
|
+
const fail = (error) => {
|
|
627
|
+
if (settled)
|
|
628
|
+
return;
|
|
629
|
+
settled = true;
|
|
630
|
+
cleanup();
|
|
631
|
+
reject(error);
|
|
632
|
+
};
|
|
455
633
|
const cleanup = () => {
|
|
456
634
|
process.stdin.removeListener('data', onStdin);
|
|
457
635
|
process.stdout.removeListener('resize', onResize);
|
|
@@ -518,8 +696,7 @@ export async function runDisplayRelay(path) {
|
|
|
518
696
|
finish('signal');
|
|
519
697
|
};
|
|
520
698
|
socket.once('error', error => {
|
|
521
|
-
|
|
522
|
-
reject(error);
|
|
699
|
+
fail(error);
|
|
523
700
|
});
|
|
524
701
|
socket.on('connect', () => {
|
|
525
702
|
void (async () => {
|
|
@@ -553,7 +730,7 @@ export async function runDisplayRelay(path) {
|
|
|
553
730
|
process.on('SIGTERM', onLocalHangup);
|
|
554
731
|
}
|
|
555
732
|
catch (error) {
|
|
556
|
-
|
|
733
|
+
fail(error);
|
|
557
734
|
}
|
|
558
735
|
})();
|
|
559
736
|
});
|
|
@@ -563,7 +740,7 @@ export async function runDisplayRelay(path) {
|
|
|
563
740
|
frames = reader.push(chunk);
|
|
564
741
|
}
|
|
565
742
|
catch (error) {
|
|
566
|
-
|
|
743
|
+
fail(error);
|
|
567
744
|
return;
|
|
568
745
|
}
|
|
569
746
|
for (const frame of frames) {
|
package/lib/display-sock.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"display-sock.js","sourceRoot":"","sources":["../src/display-sock.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"display-sock.js","sourceRoot":"","sources":["../src/display-sock.ts"],"names":[],"mappings":"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"}
|