@hyzyn/dsh-tty 0.18.0 → 0.18.2
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 +42 -2
- package/README.md +37 -2
- package/client.js +26 -26
- package/lib/index.js +50 -24
- package/lib/index.js.map +1 -1
- package/lib/shell-integration.d.ts +20 -2
- package/lib/shell-integration.js +61 -7
- package/lib/shell-integration.js.map +1 -1
- package/lib/tmux.js +2 -5
- package/lib/tmux.js.map +1 -1
- package/package.json +3 -3
|
@@ -16,8 +16,26 @@ export declare function pluginRuntimeDir(): string;
|
|
|
16
16
|
* 信任级与插件本身相同;TERM / COLORTERM 仍走白名单值。
|
|
17
17
|
* 命令必须单行(换行会破坏 -c 包装层),由调用方(src/index.ts 的帧解析)保证。
|
|
18
18
|
*/
|
|
19
|
-
export declare function buildCommandSpawn(shell: string, term: string, colorTerm: string, command: string): ShellSpawnPlan;
|
|
20
|
-
|
|
19
|
+
export declare function buildCommandSpawn(shell: string, term: string, colorTerm: string, command: string, platform?: NodeJS.Platform): ShellSpawnPlan;
|
|
20
|
+
/**
|
|
21
|
+
* 本地终端默认 shell。
|
|
22
|
+
*
|
|
23
|
+
* POSIX 取 `$SHELL`(macOS 上通常 /bin/zsh);**Windows 上根本没有 `$SHELL`** —— 旧实现
|
|
24
|
+
* 无条件回落 `/bin/zsh`,于是 Windows 宿主上每个本地标签都在 spawn 阶段 ENOENT(2026-09
|
|
25
|
+
* 在 Windows 11 ARM 上实测:`spawn /bin/zsh -> ENOENT`,而 `%COMSPEC%` 可用),整个面板
|
|
26
|
+
* 一条终端都开不起来。Windows 取 `%COMSPEC%`(系统保证存在),要 PowerShell 就在设置卡片
|
|
27
|
+
* 里把「Shell 路径」填成 powershell.exe / pwsh.exe。
|
|
28
|
+
*/
|
|
29
|
+
export declare function defaultShellPath(platform?: NodeJS.Platform, env?: NodeJS.ProcessEnv): string;
|
|
30
|
+
/**
|
|
31
|
+
* PowerShell 家族(Windows PowerShell 5.1 与 PowerShell 7)——启动参数与 cmd 不同。
|
|
32
|
+
*
|
|
33
|
+
* 这里**不用 `path.basename`**:它按当前平台的规则切,在 POSIX 上拿到
|
|
34
|
+
* `C:\Program Files\PowerShell\7\pwsh.exe` 会整串返回(没有 `/`),判定就漏了。
|
|
35
|
+
* 两个分隔符一起切,任何平台上都对。
|
|
36
|
+
*/
|
|
37
|
+
export declare function isPowerShellShell(shell: string): boolean;
|
|
38
|
+
export declare function buildShellSpawn(shell: string, term: string, colorTerm: string, integration: boolean, platform?: NodeJS.Platform): ShellSpawnPlan;
|
|
21
39
|
/** POSIX 单引号安全包裹(路径/值进 inner.sh 与 -c 包装层用)。 */
|
|
22
40
|
export declare function shSingleQuote(value: string): string;
|
|
23
41
|
/**
|
package/lib/shell-integration.js
CHANGED
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
*/
|
|
36
36
|
import { mkdirSync, readFileSync, renameSync, writeFileSync } from 'node:fs';
|
|
37
37
|
import { homedir } from 'node:os';
|
|
38
|
-
import {
|
|
38
|
+
import { basename, dirname, join } from 'node:path';
|
|
39
39
|
/** 插件运行时资产根目录(稳定路径;DSH_HOME 优先,与 env 插件同语义)。 */
|
|
40
40
|
export function pluginRuntimeDir() {
|
|
41
41
|
const dshHome = process.env.DSH_HOME?.trim() || join(homedir(), '.dsh');
|
|
@@ -55,10 +55,14 @@ function writeIfChanged(file, content) {
|
|
|
55
55
|
writeFileSync(tmp, content);
|
|
56
56
|
renameSync(tmp, file);
|
|
57
57
|
}
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
58
|
+
/**
|
|
59
|
+
* ⚠️ 这里曾经是手写的 `dirname`(只按 `'/'` 找最后一段)。Windows 上传进来的本地
|
|
60
|
+
* 路径是 `C:\…\tty\shell\zsh`,`lastIndexOf('/')` 落到 -1 → 返回 `'/'`,于是桩文件
|
|
61
|
+
* 被往盘根写(`mkdirSync('/')` 成功、`writeFileSync('/.zshenv…')` 失败),异常被
|
|
62
|
+
* `ensureZshStubDir` 的 catch 吞掉 → shell 集成**静默降级**成最简包装层。
|
|
63
|
+
* 真机跑单测时正是这条露出水面:`POSIX 分支回归 > zsh + integration 仍走 ZDOTDIR 桩`
|
|
64
|
+
* 在 Windows 上拿到的是非集成形态。改用 `node:path` 的 dirname(两个分隔符都认)。
|
|
65
|
+
*/
|
|
62
66
|
/** 桩文件目录(稳定路径,zsh/bash 各一份;进程内缓存避免重复 stat)。 */
|
|
63
67
|
const stubDirs = new Map();
|
|
64
68
|
const ZSH_HOOKS = [
|
|
@@ -256,11 +260,61 @@ function ensureBashStubRc() {
|
|
|
256
260
|
* 信任级与插件本身相同;TERM / COLORTERM 仍走白名单值。
|
|
257
261
|
* 命令必须单行(换行会破坏 -c 包装层),由调用方(src/index.ts 的帧解析)保证。
|
|
258
262
|
*/
|
|
259
|
-
export function buildCommandSpawn(shell, term, colorTerm, command) {
|
|
263
|
+
export function buildCommandSpawn(shell, term, colorTerm, command, platform = process.platform) {
|
|
264
|
+
if (platform === 'win32')
|
|
265
|
+
return buildWindowsCommandSpawn(shell, command);
|
|
260
266
|
const pre = `export TERM='${term}'; export COLORTERM='${colorTerm}';`;
|
|
261
267
|
return { argv: [shell, '-c', `${pre} exec ${command}`], env: {} };
|
|
262
268
|
}
|
|
263
|
-
|
|
269
|
+
/**
|
|
270
|
+
* 本地终端默认 shell。
|
|
271
|
+
*
|
|
272
|
+
* POSIX 取 `$SHELL`(macOS 上通常 /bin/zsh);**Windows 上根本没有 `$SHELL`** —— 旧实现
|
|
273
|
+
* 无条件回落 `/bin/zsh`,于是 Windows 宿主上每个本地标签都在 spawn 阶段 ENOENT(2026-09
|
|
274
|
+
* 在 Windows 11 ARM 上实测:`spawn /bin/zsh -> ENOENT`,而 `%COMSPEC%` 可用),整个面板
|
|
275
|
+
* 一条终端都开不起来。Windows 取 `%COMSPEC%`(系统保证存在),要 PowerShell 就在设置卡片
|
|
276
|
+
* 里把「Shell 路径」填成 powershell.exe / pwsh.exe。
|
|
277
|
+
*/
|
|
278
|
+
export function defaultShellPath(platform = process.platform, env = process.env) {
|
|
279
|
+
if (platform === 'win32')
|
|
280
|
+
return env.COMSPEC?.trim() || 'cmd.exe';
|
|
281
|
+
return env.SHELL?.trim() || '/bin/zsh';
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* PowerShell 家族(Windows PowerShell 5.1 与 PowerShell 7)——启动参数与 cmd 不同。
|
|
285
|
+
*
|
|
286
|
+
* 这里**不用 `path.basename`**:它按当前平台的规则切,在 POSIX 上拿到
|
|
287
|
+
* `C:\Program Files\PowerShell\7\pwsh.exe` 会整串返回(没有 `/`),判定就漏了。
|
|
288
|
+
* 两个分隔符一起切,任何平台上都对。
|
|
289
|
+
*/
|
|
290
|
+
export function isPowerShellShell(shell) {
|
|
291
|
+
const kind = shell.split(/[\\/]/).pop()?.toLowerCase() ?? '';
|
|
292
|
+
return kind === 'powershell' || kind === 'powershell.exe' || kind === 'pwsh' || kind === 'pwsh.exe';
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* Windows 宿主的启动计划:**直接跑 shell 本体,不做 `-c` 包装层**。
|
|
296
|
+
*
|
|
297
|
+
* 为什么不能沿用 POSIX 那层(`-c 'export TERM=…; exec "$shell"'`):cmd.exe 不认 `-c`,
|
|
298
|
+
* 会把整行忽略掉、开一场空跑然后立刻退出(标签开了就消失);PowerShell 认 `-c` 但把
|
|
299
|
+
* `export` 当不存在的 cmdlet 直接报错(两条都在 Windows 11 上实测过)。而且 TERM /
|
|
300
|
+
* COLORTERM 对 ConPTY 没有意义,OSC 133/7 那套集成是 POSIX rc 注入、Windows 上不做
|
|
301
|
+
* (宿主侧同时把 shellIntegration 拨成 false,见 index.ts)。
|
|
302
|
+
*
|
|
303
|
+
* PowerShell 补 `-NoLogo` 只是去掉启动横幅;**不补 `-NoProfile`** —— 用户的 profile 正是
|
|
304
|
+
* 别名与函数的来源,终端面板不该替用户把它关掉。
|
|
305
|
+
*/
|
|
306
|
+
function buildWindowsShellSpawn(shell) {
|
|
307
|
+
return { argv: isPowerShellShell(shell) ? [shell, '-NoLogo'] : [shell], env: {} };
|
|
308
|
+
}
|
|
309
|
+
/** Windows 宿主的「跑一条命令」计划:cmd 走 `/c`,PowerShell 走 `-Command`(都不再包 export/exec)。 */
|
|
310
|
+
function buildWindowsCommandSpawn(shell, command) {
|
|
311
|
+
return isPowerShellShell(shell)
|
|
312
|
+
? { argv: [shell, '-NoLogo', '-Command', command], env: {} }
|
|
313
|
+
: { argv: [shell, '/c', command], env: {} };
|
|
314
|
+
}
|
|
315
|
+
export function buildShellSpawn(shell, term, colorTerm, integration, platform = process.platform) {
|
|
316
|
+
if (platform === 'win32')
|
|
317
|
+
return buildWindowsShellSpawn(shell);
|
|
264
318
|
const pre = `export TERM='${term}'; export COLORTERM='${colorTerm}';`;
|
|
265
319
|
const exec = `exec "${shell}"`;
|
|
266
320
|
if (integration) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shell-integration.js","sourceRoot":"","sources":["../src/shell-integration.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAC5E,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"shell-integration.js","sourceRoot":"","sources":["../src/shell-integration.ts"],"names":[],"mappings":"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"}
|
package/lib/tmux.js
CHANGED
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
import { execFile } from 'node:child_process';
|
|
28
28
|
import { buildTmuxInnerLauncher, pluginRuntimeDir, shSingleQuote } from './shell-integration.js';
|
|
29
29
|
import { chmodSync, mkdirSync, readFileSync, renameSync, writeFileSync } from 'node:fs';
|
|
30
|
-
import { join } from 'node:path';
|
|
30
|
+
import { dirname, join } from 'node:path';
|
|
31
31
|
/** 专用 tmux socket 名:与用户自己的 tmux server 完全隔离。 */
|
|
32
32
|
export const TMUX_SOCKET = 'dsh-tty';
|
|
33
33
|
let probeCache = null;
|
|
@@ -76,10 +76,7 @@ function writeIfChanged(file, content) {
|
|
|
76
76
|
writeFileSync(tmp, content);
|
|
77
77
|
renameSync(tmp, file);
|
|
78
78
|
}
|
|
79
|
-
|
|
80
|
-
const index = path.lastIndexOf('/');
|
|
81
|
-
return index > 0 ? path.slice(0, index) : '/';
|
|
82
|
-
}
|
|
79
|
+
/** 同 shell-integration:本地路径要用认识 `\` 的 dirname(见那边的说明)。 */
|
|
83
80
|
/** 组装 tmux.conf:状态栏关(防重绘污染 capture)、真色透传、内层启动器。 */
|
|
84
81
|
function buildTmuxConf(passthrough, runtimeDir) {
|
|
85
82
|
const lines = [
|
package/lib/tmux.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tmux.js","sourceRoot":"","sources":["../src/tmux.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAE7C,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAChG,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AACvF,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"tmux.js","sourceRoot":"","sources":["../src/tmux.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hyzyn/dsh-tty",
|
|
3
|
-
"version": "0.18.
|
|
4
|
-
"description": "DSH Web GUI 的终端面板插件:侧边栏「终端」大弹窗,xterm.js + PTY 全交互终端(路线1),ssh2 原生 SSH 远程连接(方案 C),tmux 会话持久化(0.10.0),连接栏扩展点 ttyConnbar(0.13.0)、终端服务 ttyTerminal(0.14.0 open / 0.15.0 mount 就地嵌入)、面板内挂载位 ttyPanel(0.16.0 右侧 dock)、服务器状态条(0.17.0:按标签可见性采端主机 CPU / 内存 / 磁盘 / 在线时长 / TCP / 网速 / 温度,SSH 走同连接的非 PTY exec channel、本地走 os/proc,best-effort、不碰 PTY 流)、连接密码存入官方凭据存储(0.18.0:字段里只留 env: 引用、引用名按资源身份派生、候选来自凭据存储 ∪
|
|
3
|
+
"version": "0.18.2",
|
|
4
|
+
"description": "DSH Web GUI 的终端面板插件:侧边栏「终端」大弹窗,xterm.js + PTY 全交互终端(路线1),ssh2 原生 SSH 远程连接(方案 C),tmux 会话持久化(0.10.0),连接栏扩展点 ttyConnbar(0.13.0)、终端服务 ttyTerminal(0.14.0 open / 0.15.0 mount 就地嵌入)、面板内挂载位 ttyPanel(0.16.0 右侧 dock)、服务器状态条(0.17.0:按标签可见性采端主机 CPU / 内存 / 磁盘 / 在线时长 / TCP / 网速 / 温度,SSH 走同连接的非 PTY exec channel、本地走 os/proc,best-effort、不碰 PTY 流)、连接密码存入官方凭据存储(0.18.0:字段里只留 env: 引用、引用名按资源身份派生、候选来自凭据存储 ∪ 连接簿;设置卡片的连接编辑与连接对话框共用同一套表单)、Windows 宿主支持(0.18.1:默认 shell = %COMSPEC%、不做 POSIX 包装层、PowerShell 走 -NoLogo/-Command;shell 集成 / tmux / 状态条三项在 Windows 本地不适用,README 有完整边界)。",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"dsh",
|
|
7
7
|
"deepseek",
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
},
|
|
46
46
|
"dependencies": {
|
|
47
47
|
"@deepseek-ai/schemastery": "^3.18.2",
|
|
48
|
-
"@hyzyn/dsh-kit": "0.
|
|
48
|
+
"@hyzyn/dsh-kit": "0.4.0",
|
|
49
49
|
"@xterm/headless": "^5.5.0",
|
|
50
50
|
"ssh2": "^1.17.0",
|
|
51
51
|
"ws": "^8.18.0"
|