tmuxes 0.1.6 → 0.1.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.md +12 -2
- package/dist/config.js +2 -1
- package/dist/config.js.map +1 -1
- package/dist/files.js +7 -14
- package/dist/files.js.map +1 -1
- package/dist/foldersStore.js +16 -14
- package/dist/foldersStore.js.map +1 -1
- package/dist/targetCommand.js +41 -0
- package/dist/targetCommand.js.map +1 -0
- package/dist/tmux/builder.js +79 -34
- package/dist/tmux/builder.js.map +1 -1
- package/dist/tmux/sessions.js +7 -7
- package/dist/tmux/sessions.js.map +1 -1
- package/package.json +1 -1
- package/public/assets/index-BpVrfoZw.js +44 -0
- package/public/assets/{index-CUT1HMJl.css → index-D_X5SnGx.css} +1 -1
- package/public/index.html +2 -2
- package/public/assets/index-DWZb8lqY.js +0 -44
package/README.md
CHANGED
|
@@ -69,9 +69,11 @@
|
|
|
69
69
|
|
|
70
70
|
## 📦 用 npm 安装
|
|
71
71
|
|
|
72
|
+
刚刚开用的小家伙还在快速长身体,可能偶尔有 bug,修复更新也会比较快;建议用 `@latest` 总是拿到最新版本。
|
|
73
|
+
|
|
72
74
|
```bash
|
|
73
75
|
# 一键运行(无需克隆,自动开浏览器):
|
|
74
|
-
npx tmuxes
|
|
76
|
+
npx tmuxes@latest
|
|
75
77
|
|
|
76
78
|
# 或全局安装后用 tmuxes 命令:
|
|
77
79
|
npm install -g tmuxes
|
|
@@ -136,7 +138,7 @@ tmuxes 目前会给 **Claude Code (`claude`)** 和 **Codex (`codex`)** 自动接
|
|
|
136
138
|
set TMUXES_HOSTS=alice@web1,bob@db2:2222 && npm run dev # Windows cmd
|
|
137
139
|
```
|
|
138
140
|
|
|
139
|
-
密钥 / agent 认证必须在普通 shell 里已经能用。全新主机请先在普通终端里接受一次它的 host key
|
|
141
|
+
密钥 / agent 认证必须在普通 shell 里已经能用。全新主机请先在普通终端里接受一次它的 host key。为避免短命管理命令反复新建 SSH 连接,类 Unix 平台会通过 OpenSSH `ControlMaster` / `ControlPersist` 长期复用同一条 SSH 连接;tmuxes 不再强制设置 `ServerAliveInterval`,如需保活请按所在平台规则写进你自己的 `~/.ssh/config`。如果复用连接中断,tmuxes 会绕过旧连接重试一次;仍失败时会在前端页面提示并暂停该 SSH 目标的自动轮询,点击 `Reconnect` 可手动再试一次。
|
|
140
142
|
|
|
141
143
|
## 💻 环境要求
|
|
142
144
|
|
|
@@ -247,6 +249,14 @@ npm test # vitest:输入校验、列表解析、ssh/tmux/wsl 的 argv 形状
|
|
|
247
249
|
|
|
248
250
|
## 📋 更新日志
|
|
249
251
|
|
|
252
|
+
### 0.1.8
|
|
253
|
+
- **文档:补齐 0.1.7 更新日志并重新发布 npm 包**。确保 npm 页面和仓库 README 都包含 SSH 长连接 / 重连策略说明。
|
|
254
|
+
|
|
255
|
+
### 0.1.7
|
|
256
|
+
- **改进:SSH 目标改为长期复用连接**。类 Unix 平台通过 OpenSSH `ControlMaster` / `ControlPersist` 复用同一条 SSH 连接,避免短命管理命令反复新建连接。
|
|
257
|
+
- **变更:不再强制 `ServerAliveInterval=30`**。tmuxes 不再主动设置 30 秒 SSH 保活;如需保活,请按所在平台规则写进自己的 `~/.ssh/config`。
|
|
258
|
+
- **修复:SSH 中断只重试一次并提示用户**。复用连接中断时会清理旧 control socket 并直连重试一次;仍失败则暂停自动轮询,在前端显示错误并提供 `Reconnect` 手动重连按钮。
|
|
259
|
+
|
|
250
260
|
### 0.1.6
|
|
251
261
|
- **修复:Codex 断流后红灯不恢复**。当 Codex 输出 `stream disconnected before completion` 但没有触发 stop hook 时,已展开目标的 5 秒同步会扫描 running agent 的 pane 尾部,写回 `错误` 提醒并把红点恢复为绿点。
|
|
252
262
|
- **改进:Claude Code `StopFailure` 归类为异常停止**。正常 `Stop` / `SessionEnd` 仍显示 `结束`,失败停止显示 `错误`。
|
package/dist/config.js
CHANGED
|
@@ -9,7 +9,8 @@ export const config = {
|
|
|
9
9
|
connectTimeoutMgmt: 8,
|
|
10
10
|
/** Interactive attach is allowed a little longer. */
|
|
11
11
|
connectTimeoutTty: 10,
|
|
12
|
-
|
|
12
|
+
/** Keep the OpenSSH control master alive for long-lived SSH reuse. */
|
|
13
|
+
controlPersist: 'yes',
|
|
13
14
|
},
|
|
14
15
|
/**
|
|
15
16
|
* Allowed WebSocket Origins. The WS upgrade bypasses Express middleware, so
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,sFAAsF;IACtF,IAAI,EAAE,WAAW;IACjB,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,IAAI,CAAC;IAE7C,8BAA8B;IAC9B,GAAG,EAAE;QACH,wDAAwD;QACxD,kBAAkB,EAAE,CAAC;QACrB,qDAAqD;QACrD,iBAAiB,EAAE,EAAE;QACrB,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,sFAAsF;IACtF,IAAI,EAAE,WAAW;IACjB,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,IAAI,CAAC;IAE7C,8BAA8B;IAC9B,GAAG,EAAE;QACH,wDAAwD;QACxD,kBAAkB,EAAE,CAAC;QACrB,qDAAqD;QACrD,iBAAiB,EAAE,EAAE;QACrB,sEAAsE;QACtE,cAAc,EAAE,KAAK;KACtB;IAED;;;;OAIG;IACH,eAAe,CAAC,MAA0B;QACxC,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QACzB,IAAI,CAAC;YACH,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;YACrC,OAAO,QAAQ,KAAK,WAAW,IAAI,QAAQ,KAAK,WAAW,IAAI,QAAQ,KAAK,OAAO,CAAC;QACtF,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;CACO,CAAC"}
|
package/dist/files.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { promises as fsp } from 'node:fs';
|
|
2
2
|
import { basename as posixBasename, dirname as posixDirname } from 'node:path/posix';
|
|
3
|
-
import { runCommand } from './exec.js';
|
|
4
3
|
import { commandArgv } from './tmux/builder.js';
|
|
5
4
|
import { TmuxError } from './tmux/sessions.js';
|
|
5
|
+
import { runTargetCommand } from './targetCommand.js';
|
|
6
6
|
const REMOTE_TIMEOUT_MS = 15_000;
|
|
7
7
|
/** Max bytes returned for a file preview. */
|
|
8
8
|
export const FILE_PREVIEW_CAP = 2_000_000;
|
|
@@ -84,20 +84,11 @@ export async function resolveScopedPath(t, rootPath, requestedPath, opts = {}) {
|
|
|
84
84
|
return candidate;
|
|
85
85
|
}
|
|
86
86
|
async function run(t, argv) {
|
|
87
|
-
|
|
88
|
-
return runCommand(file, args, { timeoutMs: timeout(t) });
|
|
87
|
+
return runTargetCommand(t, (opts) => commandArgv(t, argv, opts), { timeoutMs: timeout(t) });
|
|
89
88
|
}
|
|
90
89
|
/** The working directory of a session's active pane (tmux #{pane_current_path}). */
|
|
91
90
|
export async function getSessionCwd(t, session) {
|
|
92
|
-
const
|
|
93
|
-
'tmux',
|
|
94
|
-
'display-message',
|
|
95
|
-
'-p',
|
|
96
|
-
'-t',
|
|
97
|
-
session,
|
|
98
|
-
'#{pane_current_path}',
|
|
99
|
-
]);
|
|
100
|
-
const r = await runCommand(file, args, { timeoutMs: timeout(t) });
|
|
91
|
+
const r = await run(t, ['tmux', 'display-message', '-p', '-t', session, '#{pane_current_path}']);
|
|
101
92
|
if (r.code !== 0) {
|
|
102
93
|
if (/can't find|no server running|session not found/i.test(r.stderr)) {
|
|
103
94
|
throw new TmuxError(404, `session "${session}" not found`);
|
|
@@ -223,8 +214,10 @@ export async function writeFile(t, path, content) {
|
|
|
223
214
|
}
|
|
224
215
|
// `tee` opens the file with O_TRUNC|O_CREAT, so shorter content can't leave a
|
|
225
216
|
// stale tail. Its stdout echo of the content is ignored.
|
|
226
|
-
const
|
|
227
|
-
|
|
217
|
+
const r = await runTargetCommand(t, (opts) => commandArgv(t, ['tee', '--', path], opts), {
|
|
218
|
+
timeoutMs: REMOTE_TIMEOUT_MS,
|
|
219
|
+
input: content,
|
|
220
|
+
});
|
|
228
221
|
if (r.code !== 0) {
|
|
229
222
|
if (/No such file|not found/i.test(r.stderr))
|
|
230
223
|
throw new TmuxError(404, 'directory not found');
|
package/dist/files.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"files.js","sourceRoot":"","sources":["../src/files.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"files.js","sourceRoot":"","sources":["../src/files.ts"],"names":[],"mappings":"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"}
|
package/dist/foldersStore.js
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { promises as fsp } from 'node:fs';
|
|
2
2
|
import { homedir } from 'node:os';
|
|
3
3
|
import { join, dirname } from 'node:path';
|
|
4
|
-
import { runCommand } from './exec.js';
|
|
5
4
|
import { config } from './config.js';
|
|
6
|
-
import { sshQuote } from './tmux/builder.js';
|
|
7
|
-
import { sshDestination } from './targets.js';
|
|
5
|
+
import { sshClientArgs, sshQuote } from './tmux/builder.js';
|
|
8
6
|
import { TmuxError } from './tmux/sessions.js';
|
|
7
|
+
import { runTargetCommand } from './targetCommand.js';
|
|
9
8
|
/**
|
|
10
9
|
* Sidebar folder organization, stored ON THE TARGET so it follows the cluster:
|
|
11
10
|
* every client connecting to the same target reads/writes the same file, so the
|
|
@@ -23,7 +22,7 @@ const EMPTY = { folders: [], assign: {} };
|
|
|
23
22
|
function localPath() {
|
|
24
23
|
return join(homedir(), '.config', 'tmuxes', 'folders.json');
|
|
25
24
|
}
|
|
26
|
-
function remoteArgv(t, script) {
|
|
25
|
+
function remoteArgv(t, script, opts = {}) {
|
|
27
26
|
if (t.kind === 'wsl') {
|
|
28
27
|
// --cd ~ → run from the distro home; sh -c handles the redirections.
|
|
29
28
|
return { file: 'wsl.exe', args: ['-d', t.distro ?? '', '--cd', '~', '--exec', 'sh', '-c', script] };
|
|
@@ -33,18 +32,23 @@ function remoteArgv(t, script) {
|
|
|
33
32
|
return {
|
|
34
33
|
file: 'ssh',
|
|
35
34
|
args: [
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
sshDestination(t),
|
|
35
|
+
...sshClientArgs(t, {
|
|
36
|
+
batchMode: true,
|
|
37
|
+
connectTimeout: config.ssh.connectTimeoutMgmt,
|
|
38
|
+
multiplex: opts.multiplex,
|
|
39
|
+
}).slice(1),
|
|
42
40
|
'sh',
|
|
43
41
|
'-c',
|
|
44
42
|
sshQuote(script),
|
|
45
43
|
],
|
|
46
44
|
};
|
|
47
45
|
}
|
|
46
|
+
function runRemote(t, script, input) {
|
|
47
|
+
return runTargetCommand(t, (opts) => remoteArgv(t, script, opts), {
|
|
48
|
+
timeoutMs: REMOTE_TIMEOUT_MS,
|
|
49
|
+
input,
|
|
50
|
+
});
|
|
51
|
+
}
|
|
48
52
|
async function readRaw(t) {
|
|
49
53
|
if (t.kind === 'local' || t.kind === 'winlocal') {
|
|
50
54
|
try {
|
|
@@ -58,8 +62,7 @@ async function readRaw(t) {
|
|
|
58
62
|
}
|
|
59
63
|
// `2>/dev/null` so a missing file produces empty stdout + no stderr; a real
|
|
60
64
|
// transport failure (ssh down) prints to stderr → surfaced as 502.
|
|
61
|
-
const
|
|
62
|
-
const r = await runCommand(file, args, { timeoutMs: REMOTE_TIMEOUT_MS });
|
|
65
|
+
const r = await runRemote(t, `cat ${REL} 2>/dev/null`);
|
|
63
66
|
if (r.code === 0)
|
|
64
67
|
return r.stdout;
|
|
65
68
|
if (r.stderr.trim())
|
|
@@ -72,8 +75,7 @@ async function writeRaw(t, raw) {
|
|
|
72
75
|
await fsp.writeFile(localPath(), raw, 'utf8');
|
|
73
76
|
return;
|
|
74
77
|
}
|
|
75
|
-
const
|
|
76
|
-
const r = await runCommand(file, args, { timeoutMs: REMOTE_TIMEOUT_MS, input: raw });
|
|
78
|
+
const r = await runRemote(t, `mkdir -p .config/tmuxes && cat > ${REL}`, raw);
|
|
77
79
|
if (r.code !== 0)
|
|
78
80
|
throw new TmuxError(502, r.stderr.trim().split('\n')[0] || 'cannot write folders');
|
|
79
81
|
}
|
package/dist/foldersStore.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"foldersStore.js","sourceRoot":"","sources":["../src/foldersStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,GAAG,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"foldersStore.js","sourceRoot":"","sources":["../src/foldersStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,GAAG,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE5D,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD;;;;;;;;;GASG;AAEH,MAAM,GAAG,GAAG,6BAA6B,CAAC;AAC1C,MAAM,iBAAiB,GAAG,MAAM,CAAC;AACjC,MAAM,SAAS,GAAG,OAAO,CAAC;AAO1B,MAAM,KAAK,GAAkB,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;AAEzD,SAAS,SAAS;IAChB,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;AAC9D,CAAC;AAED,SAAS,UAAU,CACjB,CAAS,EACT,MAAc,EACd,OAAgC,EAAE;IAElC,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QACrB,qEAAqE;QACrE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC;IACtG,CAAC;IACD,6EAA6E;IAC7E,gDAAgD;IAChD,OAAO;QACL,IAAI,EAAE,KAAK;QACX,IAAI,EAAE;YACJ,GAAG,aAAa,CAAC,CAAC,EAAE;gBAClB,SAAS,EAAE,IAAI;gBACf,cAAc,EAAE,MAAM,CAAC,GAAG,CAAC,kBAAkB;gBAC7C,SAAS,EAAE,IAAI,CAAC,SAAS;aAC1B,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;YACX,IAAI;YACJ,IAAI;YACJ,QAAQ,CAAC,MAAM,CAAC;SACjB;KACF,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,CAAS,EAAE,MAAc,EAAE,KAAc;IAC1D,OAAO,gBAAgB,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAChE,SAAS,EAAE,iBAAiB;QAC5B,KAAK;KACN,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,OAAO,CAAC,CAAS;IAC9B,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAChD,IAAI,CAAC;YACH,OAAO,MAAM,GAAG,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,MAAM,CAAC,CAAC;QACjD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAK,CAA2B,CAAC,IAAI,KAAK,QAAQ;gBAAE,OAAO,EAAE,CAAC;YAC9D,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,qBAAqB,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IACD,4EAA4E;IAC5E,mEAAmE;IACnE,MAAM,CAAC,GAAG,MAAM,SAAS,CAAC,CAAC,EAAE,OAAO,GAAG,cAAc,CAAC,CAAC;IACvD,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC,MAAM,CAAC;IAClC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE;QAAE,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9E,OAAO,EAAE,CAAC,CAAC,eAAe;AAC5B,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,CAAS,EAAE,GAAW;IAC5C,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAChD,MAAM,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3D,MAAM,GAAG,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;QAC9C,OAAO;IACT,CAAC;IACD,MAAM,CAAC,GAAG,MAAM,SAAS,CAAC,CAAC,EAAE,oCAAoC,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC;IAC7E,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC;QAAE,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,sBAAsB,CAAC,CAAC;AACvG,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,CAAS;IACzC,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC;IAC7B,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE;QAAE,OAAO,KAAK,CAAC;IAC9B,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA2B,CAAC;QACpD,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC9E,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,MAAiC,EAAE,CAAC;QAC7E,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,mCAAmC;IACrC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,CAAS,EAAE,OAAsB;IAClE,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACjF,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,SAAS;QAAE,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,2BAA2B,CAAC,CAAC;IACtG,MAAM,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AACzB,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { unlinkSync } from 'node:fs';
|
|
2
|
+
import { runCommand } from './exec.js';
|
|
3
|
+
import { sshControlPath } from './tmux/builder.js';
|
|
4
|
+
const SSH_INTERRUPTION_RE = /mux_client_request_session|Control socket connect|Broken pipe|Connection reset|Connection closed|Connection to .* closed|Connection timed out|Operation timed out|No route to host|Network is unreachable|Connection refused|kex_exchange_identification|banner exchange|stdio forwarding failed/i;
|
|
5
|
+
const SSH_CLIENT_FAILURE_RE = /Permission denied \(|Host key verification failed|REMOTE HOST IDENTIFICATION HAS CHANGED|Could not resolve hostname|Too many authentication failures|Connection timed out|Operation timed out|No route to host|Network is unreachable|Connection refused|Connection reset|Connection closed|Connection to .* closed|Broken pipe|kex_exchange_identification|banner exchange/i;
|
|
6
|
+
function firstLine(stderr) {
|
|
7
|
+
return stderr.trim().split('\n')[0] || 'ssh command failed';
|
|
8
|
+
}
|
|
9
|
+
function isInterruptedSsh(result) {
|
|
10
|
+
return result.code !== 0 && SSH_INTERRUPTION_RE.test(result.stderr);
|
|
11
|
+
}
|
|
12
|
+
function isSshClientFailure(result) {
|
|
13
|
+
return result.code !== 0 && SSH_CLIENT_FAILURE_RE.test(result.stderr);
|
|
14
|
+
}
|
|
15
|
+
/** Run a target command. If an SSH control master is stale/interrupted, retry
|
|
16
|
+
* exactly once using a fresh direct SSH connection. Authentication failures are
|
|
17
|
+
* not retried, to avoid repeated failed-login noise. */
|
|
18
|
+
export async function runTargetCommand(target, buildArgv, opts = {}) {
|
|
19
|
+
const firstArgv = buildArgv({ multiplex: true });
|
|
20
|
+
const first = await runCommand(firstArgv.file, firstArgv.args, opts);
|
|
21
|
+
if (target.kind !== 'ssh' || !isInterruptedSsh(first))
|
|
22
|
+
return first;
|
|
23
|
+
const controlPath = sshControlPath(target);
|
|
24
|
+
if (controlPath) {
|
|
25
|
+
try {
|
|
26
|
+
unlinkSync(controlPath);
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
/* stale socket may already be gone */
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
const retryArgv = buildArgv({ multiplex: false });
|
|
33
|
+
const retry = await runCommand(retryArgv.file, retryArgv.args, opts);
|
|
34
|
+
if (retry.code === 0 || !isSshClientFailure(retry))
|
|
35
|
+
return retry;
|
|
36
|
+
return {
|
|
37
|
+
...retry,
|
|
38
|
+
stderr: `SSH connection interrupted; one reconnect attempt failed: ${firstLine(retry.stderr)}\n${retry.stderr}`,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=targetCommand.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"targetCommand.js","sourceRoot":"","sources":["../src/targetCommand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,UAAU,EAAuC,MAAM,WAAW,CAAC;AAE5E,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAInD,MAAM,mBAAmB,GACvB,mSAAmS,CAAC;AAEtS,MAAM,qBAAqB,GACzB,8WAA8W,CAAC;AAEjX,SAAS,SAAS,CAAC,MAAc;IAC/B,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,oBAAoB,CAAC;AAC9D,CAAC;AAED,SAAS,gBAAgB,CAAC,MAAqB;IAC7C,OAAO,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACtE,CAAC;AAED,SAAS,kBAAkB,CAAC,MAAqB;IAC/C,OAAO,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACxE,CAAC;AAED;;wDAEwD;AACxD,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,MAAc,EACd,SAAoB,EACpB,OAAmB,EAAE;IAErB,MAAM,SAAS,GAAG,SAAS,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACjD,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACrE,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAEpE,MAAM,WAAW,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IAC3C,IAAI,WAAW,EAAE,CAAC;QAChB,IAAI,CAAC;YACH,UAAU,CAAC,WAAW,CAAC,CAAC;QAC1B,CAAC;QAAC,MAAM,CAAC;YACP,sCAAsC;QACxC,CAAC;IACH,CAAC;IAED,MAAM,SAAS,GAAG,SAAS,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;IAClD,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACrE,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAEjE,OAAO;QACL,GAAG,KAAK;QACR,MAAM,EAAE,6DAA6D,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,KAAK,CAAC,MAAM,EAAE;KAChH,CAAC;AACJ,CAAC"}
|
package/dist/tmux/builder.js
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { createHash } from 'node:crypto';
|
|
2
|
+
import { mkdirSync } from 'node:fs';
|
|
3
|
+
import { homedir, tmpdir } from 'node:os';
|
|
4
|
+
import { join } from 'node:path';
|
|
2
5
|
import { config } from '../config.js';
|
|
3
6
|
import { sshDestination } from '../targets.js';
|
|
7
|
+
import { isWindows } from '../platform.js';
|
|
4
8
|
/**
|
|
5
9
|
* Single-quote a string for a POSIX shell. Needed ONLY for the remote ssh path:
|
|
6
10
|
* ssh concatenates the remote command words with spaces and re-parses them
|
|
@@ -14,41 +18,85 @@ export function sshQuote(arg) {
|
|
|
14
18
|
export function localTmux(sub) {
|
|
15
19
|
return ['tmux', ...sub];
|
|
16
20
|
}
|
|
21
|
+
function sshControlDir() {
|
|
22
|
+
// OpenSSH connection sharing avoids repeated TCP/auth handshakes for sidebar
|
|
23
|
+
// polling and file operations. Windows OpenSSH does not reliably support Unix
|
|
24
|
+
// control sockets, so leave that platform on plain ssh.
|
|
25
|
+
if (isWindows)
|
|
26
|
+
return null;
|
|
27
|
+
const uid = process.getuid?.() ?? 'user';
|
|
28
|
+
const dir = join(tmpdir(), `tmuxes-ssh-${uid}`);
|
|
29
|
+
try {
|
|
30
|
+
mkdirSync(dir, { recursive: true, mode: 0o700 });
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
return dir;
|
|
36
|
+
}
|
|
37
|
+
export function sshControlPath(t) {
|
|
38
|
+
const dir = sshControlDir();
|
|
39
|
+
if (!dir)
|
|
40
|
+
return null;
|
|
41
|
+
const key = `${sshDestination(t)}:${t.port ?? 22}:${t.id}`;
|
|
42
|
+
return join(dir, createHash('sha1').update(key).digest('hex'));
|
|
43
|
+
}
|
|
44
|
+
function sshMultiplexArgs(t) {
|
|
45
|
+
const path = sshControlPath(t);
|
|
46
|
+
if (!path)
|
|
47
|
+
return [];
|
|
48
|
+
return [
|
|
49
|
+
'-o',
|
|
50
|
+
'ControlMaster=auto',
|
|
51
|
+
'-o',
|
|
52
|
+
`ControlPath=${path}`,
|
|
53
|
+
'-o',
|
|
54
|
+
`ControlPersist=${config.ssh.controlPersist}`,
|
|
55
|
+
];
|
|
56
|
+
}
|
|
57
|
+
export function sshClientArgs(t, opts) {
|
|
58
|
+
const portArgs = t.port ? ['-p', String(t.port)] : [];
|
|
59
|
+
return [
|
|
60
|
+
'ssh',
|
|
61
|
+
...(opts.tty ? ['-tt'] : []),
|
|
62
|
+
...(opts.batchMode ? ['-o', 'BatchMode=yes'] : []),
|
|
63
|
+
'-o',
|
|
64
|
+
`ConnectTimeout=${opts.connectTimeout}`,
|
|
65
|
+
...(opts.multiplex === false ? ['-o', 'ControlMaster=no'] : sshMultiplexArgs(t)),
|
|
66
|
+
...portArgs,
|
|
67
|
+
sshDestination(t),
|
|
68
|
+
];
|
|
69
|
+
}
|
|
17
70
|
/**
|
|
18
71
|
* Remote tmux argv via the system ssh binary.
|
|
19
72
|
* - tty:false (management) → BatchMode + short ConnectTimeout so it fails fast
|
|
20
73
|
* and never hangs on a prompt. Remote args are sshQuote'd.
|
|
21
74
|
* - tty:true (interactive attach) → -tt forces a remote PTY (and SIGWINCH
|
|
22
75
|
* propagation). BatchMode is left default so host-key/agent prompts surface
|
|
23
|
-
* in the terminal.
|
|
24
|
-
*
|
|
25
|
-
*
|
|
76
|
+
* in the terminal. tmuxes does not force ServerAliveInterval; users can set
|
|
77
|
+
* keepalives in ~/.ssh/config if their site allows them. Remote args are NOT
|
|
78
|
+
* quoted here: this argv is handed to a PTY where the remote command words go
|
|
79
|
+
* to ssh as separate argv elements and our inputs are already allowlist-
|
|
80
|
+
* validated.
|
|
26
81
|
*/
|
|
27
82
|
export function remoteTmux(t, sub, opts) {
|
|
28
|
-
const dest = sshDestination(t);
|
|
29
|
-
const portArgs = t.port ? ['-p', String(t.port)] : [];
|
|
30
83
|
if (opts.tty) {
|
|
31
84
|
return [
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
`ServerAliveInterval=${config.ssh.serverAliveInterval}`,
|
|
38
|
-
...portArgs,
|
|
39
|
-
dest,
|
|
85
|
+
...sshClientArgs(t, {
|
|
86
|
+
tty: true,
|
|
87
|
+
connectTimeout: config.ssh.connectTimeoutTty,
|
|
88
|
+
multiplex: opts.multiplex,
|
|
89
|
+
}),
|
|
40
90
|
'tmux',
|
|
41
91
|
...sub,
|
|
42
92
|
];
|
|
43
93
|
}
|
|
44
94
|
return [
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
...portArgs,
|
|
51
|
-
dest,
|
|
95
|
+
...sshClientArgs(t, {
|
|
96
|
+
batchMode: true,
|
|
97
|
+
connectTimeout: config.ssh.connectTimeoutMgmt,
|
|
98
|
+
multiplex: opts.multiplex,
|
|
99
|
+
}),
|
|
52
100
|
'tmux',
|
|
53
101
|
...sub.map(sshQuote),
|
|
54
102
|
];
|
|
@@ -70,7 +118,7 @@ export function wslTmux(distro, sub, opts) {
|
|
|
70
118
|
* display-message, …). Same transport rules as management tmux: local runs the
|
|
71
119
|
* argv directly, wsl uses `--exec` (no shell), ssh uses BatchMode + sshQuote.
|
|
72
120
|
*/
|
|
73
|
-
export function commandArgv(t, argv) {
|
|
121
|
+
export function commandArgv(t, argv, opts = {}) {
|
|
74
122
|
let full;
|
|
75
123
|
if (t.kind === 'local') {
|
|
76
124
|
full = argv;
|
|
@@ -79,23 +127,20 @@ export function commandArgv(t, argv) {
|
|
|
79
127
|
full = ['wsl.exe', '-d', t.distro ?? '', '--exec', ...argv];
|
|
80
128
|
}
|
|
81
129
|
else {
|
|
82
|
-
const portArgs = t.port ? ['-p', String(t.port)] : [];
|
|
83
130
|
full = [
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
...portArgs,
|
|
90
|
-
sshDestination(t),
|
|
131
|
+
...sshClientArgs(t, {
|
|
132
|
+
batchMode: true,
|
|
133
|
+
connectTimeout: config.ssh.connectTimeoutMgmt,
|
|
134
|
+
multiplex: opts.multiplex,
|
|
135
|
+
}),
|
|
91
136
|
...argv.map(sshQuote),
|
|
92
137
|
];
|
|
93
138
|
}
|
|
94
139
|
return { file: full[0], args: full.slice(1) };
|
|
95
140
|
}
|
|
96
141
|
/** Build a management argv (no PTY) for a local / ssh / wsl target. */
|
|
97
|
-
export function managementArgv(t, sub) {
|
|
98
|
-
return commandArgv(t, ['tmux', ...sub]);
|
|
142
|
+
export function managementArgv(t, sub, opts = {}) {
|
|
143
|
+
return commandArgv(t, ['tmux', ...sub], opts);
|
|
99
144
|
}
|
|
100
145
|
/**
|
|
101
146
|
* Build the create-a-new-session argv, always starting in the user's HOME:
|
|
@@ -104,14 +149,14 @@ export function managementArgv(t, sub) {
|
|
|
104
149
|
* - ssh → the remote command already runs from the remote `$HOME`; tmux inherits.
|
|
105
150
|
* `sub` is the new-session subcommand (named or auto-named `-P` form).
|
|
106
151
|
*/
|
|
107
|
-
export function newSessionArgv(t, sub) {
|
|
152
|
+
export function newSessionArgv(t, sub, opts = {}) {
|
|
108
153
|
if (t.kind === 'local') {
|
|
109
154
|
return { file: 'tmux', args: [...sub, '-c', homedir()] };
|
|
110
155
|
}
|
|
111
156
|
if (t.kind === 'wsl') {
|
|
112
157
|
return { file: 'wsl.exe', args: ['-d', t.distro ?? '', '--cd', '~', '--exec', 'tmux', ...sub] };
|
|
113
158
|
}
|
|
114
|
-
return commandArgv(t, ['tmux', ...sub]);
|
|
159
|
+
return commandArgv(t, ['tmux', ...sub], opts);
|
|
115
160
|
}
|
|
116
161
|
/** Build an interactive attach argv (run inside a PTY) for a local / ssh / wsl target. */
|
|
117
162
|
export function attachArgv(t, session) {
|
package/dist/tmux/builder.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/tmux/builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/tmux/builder.ts"],"names":[],"mappings":"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"}
|
package/dist/tmux/sessions.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { runCommand } from '../exec.js';
|
|
2
1
|
import { managementArgv, newSessionArgv } from './builder.js';
|
|
2
|
+
import { runTargetCommand } from '../targetCommand.js';
|
|
3
3
|
import { AGENT_OPTION, agentValue, agentInitialValue, parseAgentValue, } from '../agentState.js';
|
|
4
4
|
import { augmentAgentCommand } from '../agentHooks.js';
|
|
5
5
|
import { classifyAgentTerminalError } from '../agentOutput.js';
|
|
@@ -21,8 +21,9 @@ function timeoutFor(target) {
|
|
|
21
21
|
return target.kind === 'local' ? undefined : REMOTE_TIMEOUT_MS;
|
|
22
22
|
}
|
|
23
23
|
async function run(target, sub) {
|
|
24
|
-
|
|
25
|
-
|
|
24
|
+
return runTargetCommand(target, (opts) => managementArgv(target, sub, opts), {
|
|
25
|
+
timeoutMs: timeoutFor(target),
|
|
26
|
+
});
|
|
26
27
|
}
|
|
27
28
|
function firstStderrLine(stderr) {
|
|
28
29
|
return stderr.trim().split('\n')[0] || 'command failed';
|
|
@@ -61,8 +62,8 @@ export async function createSession(target, opts) {
|
|
|
61
62
|
if (name) {
|
|
62
63
|
if (!isValidSessionName(name))
|
|
63
64
|
throw new TmuxError(400, 'invalid session name');
|
|
64
|
-
const
|
|
65
|
-
const r = await
|
|
65
|
+
const sessionName = name;
|
|
66
|
+
const r = await runTargetCommand(target, (opts) => newSessionArgv(target, ['new-session', '-d', '-s', sessionName], opts), { timeoutMs: timeoutFor(target) });
|
|
66
67
|
if (r.code !== 0) {
|
|
67
68
|
if (/duplicate session/i.test(r.stderr)) {
|
|
68
69
|
throw new TmuxError(409, `session "${name}" already exists`);
|
|
@@ -72,8 +73,7 @@ export async function createSession(target, opts) {
|
|
|
72
73
|
}
|
|
73
74
|
else {
|
|
74
75
|
// Let tmux assign a numeric name and report it back.
|
|
75
|
-
const
|
|
76
|
-
const r = await runCommand(file, args, { timeoutMs: timeoutFor(target) });
|
|
76
|
+
const r = await runTargetCommand(target, (opts) => newSessionArgv(target, ['new-session', '-d', '-P', '-F', '#{session_name}'], opts), { timeoutMs: timeoutFor(target) });
|
|
77
77
|
if (r.code !== 0)
|
|
78
78
|
throw new TmuxError(502, firstStderrLine(r.stderr));
|
|
79
79
|
name = r.stdout.trim();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../src/tmux/sessions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../src/tmux/sessions.ts"],"names":[],"mappings":"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"}
|