@songsid/agend 2.1.12-beta.9 → 2.2.0-alpha.1
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 +2 -2
- package/README.zh-TW.md +2 -2
- package/dist/auth/one-time-code.d.ts +19 -0
- package/dist/auth/one-time-code.js +49 -0
- package/dist/auth/one-time-code.js.map +1 -0
- package/dist/auth-api.d.ts +52 -0
- package/dist/auth-api.js +346 -0
- package/dist/auth-api.js.map +1 -0
- package/dist/backend/claude-code.d.ts +4 -0
- package/dist/backend/claude-code.js +97 -0
- package/dist/backend/claude-code.js.map +1 -1
- package/dist/backend/codex.js +59 -30
- package/dist/backend/codex.js.map +1 -1
- package/dist/backend/kiro-agent.d.ts +66 -0
- package/dist/backend/kiro-agent.js +302 -0
- package/dist/backend/kiro-agent.js.map +1 -0
- package/dist/backend/kiro-identity.d.ts +80 -0
- package/dist/backend/kiro-identity.js +537 -0
- package/dist/backend/kiro-identity.js.map +1 -0
- package/dist/backend/kiro-v2-store-worker.d.ts +1 -0
- package/dist/backend/kiro-v2-store-worker.js +87 -0
- package/dist/backend/kiro-v2-store-worker.js.map +1 -0
- package/dist/backend/kiro-v2-store.d.ts +54 -0
- package/dist/backend/kiro-v2-store.js +131 -0
- package/dist/backend/kiro-v2-store.js.map +1 -0
- package/dist/backend/kiro-v3-identity.d.ts +5 -0
- package/dist/backend/kiro-v3-identity.js +22 -0
- package/dist/backend/kiro-v3-identity.js.map +1 -1
- package/dist/backend/kiro.d.ts +83 -7
- package/dist/backend/kiro.js +418 -91
- package/dist/backend/kiro.js.map +1 -1
- package/dist/backend/types.d.ts +45 -3
- package/dist/backend/types.js.map +1 -1
- package/dist/channel/adapters/discord.d.ts +1 -0
- package/dist/channel/adapters/discord.js +29 -10
- package/dist/channel/adapters/discord.js.map +1 -1
- package/dist/channel/adapters/telegram.d.ts +1 -0
- package/dist/channel/adapters/telegram.js +13 -1
- package/dist/channel/adapters/telegram.js.map +1 -1
- package/dist/channel/types.d.ts +9 -1
- package/dist/classic-channel-manager.d.ts +18 -10
- package/dist/classic-channel-manager.js +45 -18
- package/dist/classic-channel-manager.js.map +1 -1
- package/dist/cli.js +225 -127
- package/dist/cli.js.map +1 -1
- package/dist/command-table.d.ts +5 -3
- package/dist/command-table.js +29 -27
- package/dist/command-table.js.map +1 -1
- package/dist/config-validator.js +46 -0
- package/dist/config-validator.js.map +1 -1
- package/dist/config.js +12 -0
- package/dist/config.js.map +1 -1
- package/dist/connection-secrets.d.ts +6 -0
- package/dist/connection-secrets.js +4 -0
- package/dist/connection-secrets.js.map +1 -1
- package/dist/daemon.d.ts +89 -4
- package/dist/daemon.js +661 -77
- package/dist/daemon.js.map +1 -1
- package/dist/darwin-memory.d.ts +6 -1
- package/dist/darwin-memory.js +17 -6
- package/dist/darwin-memory.js.map +1 -1
- package/dist/delivery-consumed-watch.d.ts +85 -0
- package/dist/delivery-consumed-watch.js +244 -0
- package/dist/delivery-consumed-watch.js.map +1 -0
- package/dist/delivery-outbox.d.ts +61 -0
- package/dist/delivery-outbox.js +120 -2
- package/dist/delivery-outbox.js.map +1 -1
- package/dist/delivery-reconciliation.d.ts +14 -5
- package/dist/delivery-reconciliation.js +27 -4
- package/dist/delivery-reconciliation.js.map +1 -1
- package/dist/delivery-reconciliation.test.js +35 -1
- package/dist/delivery-reconciliation.test.js.map +1 -1
- package/dist/event-loop-watch.d.ts +28 -0
- package/dist/event-loop-watch.js +75 -3
- package/dist/event-loop-watch.js.map +1 -1
- package/dist/fleet-context.d.ts +22 -2
- package/dist/fleet-level-config.d.ts +2 -2
- package/dist/fleet-level-config.js +6 -1
- package/dist/fleet-level-config.js.map +1 -1
- package/dist/fleet-manager.d.ts +293 -12
- package/dist/fleet-manager.js +2364 -449
- package/dist/fleet-manager.js.map +1 -1
- package/dist/host-memory.d.ts +4 -0
- package/dist/host-memory.js.map +1 -1
- package/dist/instance-config-impact.js +5 -0
- package/dist/instance-config-impact.js.map +1 -1
- package/dist/instance-lifecycle.d.ts +10 -5
- package/dist/instance-lifecycle.js +162 -53
- package/dist/instance-lifecycle.js.map +1 -1
- package/dist/locale.js +150 -16
- package/dist/locale.js.map +1 -1
- package/dist/login-controller.d.ts +2 -0
- package/dist/login-controller.js +17 -5
- package/dist/login-controller.js.map +1 -1
- package/dist/memory-pressure.d.ts +7 -8
- package/dist/memory-pressure.js +76 -15
- package/dist/memory-pressure.js.map +1 -1
- package/dist/monotonic-budget.d.ts +2 -0
- package/dist/monotonic-budget.js +28 -0
- package/dist/monotonic-budget.js.map +1 -0
- package/dist/needs-you-hub.d.ts +114 -0
- package/dist/needs-you-hub.js +370 -0
- package/dist/needs-you-hub.js.map +1 -0
- package/dist/needs-you-live.d.ts +116 -0
- package/dist/needs-you-live.js +228 -0
- package/dist/needs-you-live.js.map +1 -0
- package/dist/needs-you.d.ts +132 -0
- package/dist/needs-you.js +164 -0
- package/dist/needs-you.js.map +1 -0
- package/dist/node-version-guard.d.ts +30 -0
- package/dist/node-version-guard.js +50 -0
- package/dist/node-version-guard.js.map +1 -0
- package/dist/operator-control-paths.d.ts +4 -0
- package/dist/operator-control-paths.js +24 -0
- package/dist/operator-control-paths.js.map +1 -0
- package/dist/outbound-handlers.d.ts +2 -0
- package/dist/outbound-handlers.js +9 -2
- package/dist/outbound-handlers.js.map +1 -1
- package/dist/outbound-schemas.d.ts +5 -5
- package/dist/profile-control.js +4 -20
- package/dist/profile-control.js.map +1 -1
- package/dist/public-web-gateway.d.ts +18 -0
- package/dist/public-web-gateway.js +141 -0
- package/dist/public-web-gateway.js.map +1 -0
- package/dist/public-web-link.d.ts +53 -0
- package/dist/public-web-link.js +175 -0
- package/dist/public-web-link.js.map +1 -0
- package/dist/quickstart-api.d.ts +8 -1
- package/dist/quickstart-api.js +86 -48
- package/dist/quickstart-api.js.map +1 -1
- package/dist/quickstart.d.ts +1 -0
- package/dist/quickstart.js +6 -2
- package/dist/quickstart.js.map +1 -1
- package/dist/scheduler/db.d.ts +7 -1
- package/dist/scheduler/db.js +38 -0
- package/dist/scheduler/db.js.map +1 -1
- package/dist/scheduler/index.d.ts +1 -1
- package/dist/scheduler/retry-label.d.ts +11 -0
- package/dist/scheduler/retry-label.js +24 -0
- package/dist/scheduler/retry-label.js.map +1 -0
- package/dist/scheduler/scheduler.d.ts +55 -2
- package/dist/scheduler/scheduler.js +220 -8
- package/dist/scheduler/scheduler.js.map +1 -1
- package/dist/scheduler/types.d.ts +22 -0
- package/dist/scheduler/types.js.map +1 -1
- package/dist/secret-store.d.ts +5 -0
- package/dist/secret-store.js +20 -0
- package/dist/secret-store.js.map +1 -1
- package/dist/service-activation.d.ts +110 -0
- package/dist/service-activation.js +302 -0
- package/dist/service-activation.js.map +1 -0
- package/dist/service-installer.d.ts +7 -0
- package/dist/service-installer.js +7 -4
- package/dist/service-installer.js.map +1 -1
- package/dist/service-restart-selection.d.ts +6 -5
- package/dist/service-restart-selection.js +6 -5
- package/dist/service-restart-selection.js.map +1 -1
- package/dist/settings-api.d.ts +10 -2
- package/dist/settings-api.js +175 -72
- package/dist/settings-api.js.map +1 -1
- package/dist/settings-baseline.d.ts +20 -0
- package/dist/settings-baseline.js +104 -0
- package/dist/settings-baseline.js.map +1 -0
- package/dist/settings-change.d.ts +21 -0
- package/dist/settings-change.js +133 -0
- package/dist/settings-change.js.map +1 -0
- package/dist/settings-confirmation.d.ts +105 -0
- package/dist/settings-confirmation.js +232 -0
- package/dist/settings-confirmation.js.map +1 -0
- package/dist/settings-control.d.ts +41 -0
- package/dist/settings-control.js +294 -0
- package/dist/settings-control.js.map +1 -0
- package/dist/settings-effect.d.ts +24 -0
- package/dist/settings-effect.js +169 -0
- package/dist/settings-effect.js.map +1 -0
- package/dist/settings-http-confirmation.d.ts +29 -0
- package/dist/settings-http-confirmation.js +123 -0
- package/dist/settings-http-confirmation.js.map +1 -0
- package/dist/settings-instance-patch.d.ts +4 -0
- package/dist/settings-instance-patch.js +26 -0
- package/dist/settings-instance-patch.js.map +1 -0
- package/dist/settings-request-capability.d.ts +16 -0
- package/dist/settings-request-capability.js +32 -0
- package/dist/settings-request-capability.js.map +1 -0
- package/dist/settings-transaction.d.ts +65 -0
- package/dist/settings-transaction.js +223 -0
- package/dist/settings-transaction.js.map +1 -0
- package/dist/setup-auth.d.ts +10 -18
- package/dist/setup-auth.js +14 -38
- package/dist/setup-auth.js.map +1 -1
- package/dist/setup-form.d.ts +1 -1
- package/dist/setup-form.js +75 -18
- package/dist/setup-form.js.map +1 -1
- package/dist/setup-guide.d.ts +13 -0
- package/dist/setup-guide.js +25 -0
- package/dist/setup-guide.js.map +1 -0
- package/dist/setup-host.d.ts +16 -0
- package/dist/setup-host.js +197 -32
- package/dist/setup-host.js.map +1 -1
- package/dist/setup-wizard.js +3 -0
- package/dist/setup-wizard.js.map +1 -1
- package/dist/slash-authz.d.ts +17 -3
- package/dist/slash-authz.js +5 -0
- package/dist/slash-authz.js.map +1 -1
- package/dist/spawn-gate.js +3 -3
- package/dist/spawn-gate.js.map +1 -1
- package/dist/statusline-watcher.d.ts +5 -0
- package/dist/statusline-watcher.js +2 -0
- package/dist/statusline-watcher.js.map +1 -1
- package/dist/steer-capability.d.ts +6 -0
- package/dist/steer-capability.js +8 -0
- package/dist/steer-capability.js.map +1 -1
- package/dist/sync-work-attribution.d.ts +14 -0
- package/dist/sync-work-attribution.js +43 -8
- package/dist/sync-work-attribution.js.map +1 -1
- package/dist/tips.js +10 -5
- package/dist/tips.js.map +1 -1
- package/dist/tmux-control.d.ts +35 -5
- package/dist/tmux-control.js +291 -57
- package/dist/tmux-control.js.map +1 -1
- package/dist/tmux-manager.d.ts +20 -6
- package/dist/tmux-manager.js +90 -47
- package/dist/tmux-manager.js.map +1 -1
- package/dist/tmux-read.d.ts +59 -0
- package/dist/tmux-read.js +213 -0
- package/dist/tmux-read.js.map +1 -0
- package/dist/topic-commands.d.ts +21 -10
- package/dist/topic-commands.js +191 -58
- package/dist/topic-commands.js.map +1 -1
- package/dist/transcript-delta-reader.js +2 -1
- package/dist/transcript-delta-reader.js.map +1 -1
- package/dist/tunnel/cloudflared-install.d.ts +2 -0
- package/dist/tunnel/cloudflared-install.js +1 -1
- package/dist/tunnel/cloudflared-install.js.map +1 -1
- package/dist/tunnel/purpose-lane.d.ts +14 -0
- package/dist/tunnel/purpose-lane.js +43 -0
- package/dist/tunnel/purpose-lane.js.map +1 -0
- package/dist/turn-reply-guard.d.ts +2 -0
- package/dist/turn-reply-guard.js +10 -1
- package/dist/turn-reply-guard.js.map +1 -1
- package/dist/types.d.ts +33 -0
- package/dist/ui/app.html +18 -0
- package/dist/ui/chat-render.js +478 -0
- package/dist/ui/chat-store.js +289 -0
- package/dist/ui/chat-strings.js +69 -0
- package/dist/ui/chat-thread.js +209 -0
- package/dist/ui/chat-tour.js +116 -0
- package/dist/ui/fleet-org.js +142 -0
- package/dist/ui/panel-chat.js +418 -0
- package/dist/ui/panel-fleet.js +413 -0
- package/dist/ui/panel-needs.js +202 -0
- package/dist/ui/panel-settings.js +750 -0
- package/dist/ui/preview.js +266 -0
- package/dist/ui/settings-apply.js +239 -0
- package/dist/ui/settings-confirm.js +186 -0
- package/dist/ui/settings-dialogs.js +546 -0
- package/dist/ui/settings-model.js +277 -0
- package/dist/ui/settings-strings.js +652 -0
- package/dist/ui/settings-wizard.js +140 -0
- package/dist/ui/shared/agend-auth.js +93 -0
- package/dist/ui/shared/app-ctx.js +80 -0
- package/dist/ui/shared/app-html.js +9 -0
- package/dist/ui/shared/app-i18n.js +95 -0
- package/dist/ui/shared/app-nav.js +73 -0
- package/dist/ui/shared/app-needs.js +114 -0
- package/dist/ui/shared/app-route.js +73 -0
- package/dist/ui/shared/app-session.js +66 -0
- package/dist/ui/shared/app-shell.js +344 -0
- package/dist/ui/shared/app-store.js +51 -0
- package/dist/ui/shared/app-stream.js +201 -0
- package/dist/ui/shared/app.css +676 -0
- package/dist/ui/shared/app.js +88 -0
- package/dist/ui/shared/fonts/OFL.txt +92 -0
- package/dist/ui/shared/fonts/README.md +21 -0
- package/dist/ui/shared/fonts/inter.woff2 +0 -0
- package/dist/ui/shared/htm.module.js +1 -0
- package/dist/ui/shared/panel-view.js +655 -0
- package/dist/ui/shared/preact-hooks.module.js +2 -0
- package/dist/ui/shared/preact.module.js +2 -0
- package/dist/ui/shared/signin.js +130 -0
- package/dist/ui/shared/theme.js +29 -0
- package/dist/ui/shared/tokens.css +153 -0
- package/dist/ui/shared/ui-confirm.js +43 -0
- package/dist/ui/shared/ui-dialog.js +45 -0
- package/dist/ui/shared/ui-icons.js +61 -0
- package/dist/ui/shared/ui-menu.js +39 -0
- package/dist/ui/shared/ui-states.js +20 -0
- package/dist/ui/shared/ui-toast.js +18 -0
- package/dist/ui/shared/vendor/htm.LICENSE +202 -0
- package/dist/ui/shared/vendor/preact.LICENSE +21 -0
- package/dist/ui/shared/vendor/vendor.json +39 -0
- package/dist/ui/shared/view-strings.js +309 -0
- package/dist/ui/signin.html +51 -0
- package/dist/update-check.d.ts +6 -2
- package/dist/update-check.js +12 -3
- package/dist/update-check.js.map +1 -1
- package/dist/update-install.d.ts +71 -0
- package/dist/update-install.js +162 -0
- package/dist/update-install.js.map +1 -0
- package/dist/upgrade-notices.d.ts +17 -0
- package/dist/upgrade-notices.js +93 -0
- package/dist/upgrade-notices.js.map +1 -0
- package/dist/usage/statusline-usage.d.ts +2 -0
- package/dist/usage/statusline-usage.js +14 -10
- package/dist/usage/statusline-usage.js.map +1 -1
- package/dist/view-api.d.ts +6 -1
- package/dist/view-api.js +62 -51
- package/dist/view-api.js.map +1 -1
- package/dist/web-api.d.ts +71 -14
- package/dist/web-api.js +492 -77
- package/dist/web-api.js.map +1 -1
- package/dist/web-auth.d.ts +71 -27
- package/dist/web-auth.js +169 -69
- package/dist/web-auth.js.map +1 -1
- package/dist/web-body.d.ts +3 -0
- package/dist/web-body.js +55 -0
- package/dist/web-body.js.map +1 -0
- package/dist/web-channel-echo.d.ts +9 -0
- package/dist/web-channel-echo.js +55 -0
- package/dist/web-channel-echo.js.map +1 -0
- package/dist/web-chat-history.d.ts +125 -0
- package/dist/web-chat-history.js +184 -0
- package/dist/web-chat-history.js.map +1 -0
- package/dist/web-continuation.d.ts +7 -0
- package/dist/web-continuation.js +22 -0
- package/dist/web-continuation.js.map +1 -0
- package/dist/web-host-guard.d.ts +34 -0
- package/dist/web-host-guard.js +57 -1
- package/dist/web-host-guard.js.map +1 -1
- package/dist/web-login.d.ts +72 -0
- package/dist/web-login.js +132 -0
- package/dist/web-login.js.map +1 -0
- package/dist/web-org.d.ts +55 -0
- package/dist/web-org.js +67 -0
- package/dist/web-org.js.map +1 -0
- package/dist/web-preview.d.ts +77 -0
- package/dist/web-preview.js +240 -0
- package/dist/web-preview.js.map +1 -0
- package/dist/web-request-context.d.ts +10 -0
- package/dist/web-request-context.js +13 -0
- package/dist/web-request-context.js.map +1 -0
- package/dist/web-session.d.ts +167 -0
- package/dist/web-session.js +389 -0
- package/dist/web-session.js.map +1 -0
- package/dist/web-shell-routes.d.ts +59 -0
- package/dist/web-shell-routes.js +96 -0
- package/dist/web-shell-routes.js.map +1 -0
- package/dist/web-upload.d.ts +183 -0
- package/dist/web-upload.js +468 -0
- package/dist/web-upload.js.map +1 -0
- package/dist/website-tips-renderer.d.ts +2 -2
- package/dist/website-tips-renderer.js +3 -3
- package/dist/website-tips-renderer.js.map +1 -1
- package/package.json +8 -5
- package/scripts/preinstall-guard.cjs +36 -0
- package/dist/ui/dashboard.html +0 -774
- package/dist/ui/settings.html +0 -2165
- package/dist/ui/view.html +0 -1139
package/dist/tmux-manager.js
CHANGED
|
@@ -1,6 +1,16 @@
|
|
|
1
1
|
import { execFile } from "node:child_process";
|
|
2
2
|
import { promisify } from "node:util";
|
|
3
|
-
|
|
3
|
+
import { measureSyncWork } from "./sync-work-attribution.js";
|
|
4
|
+
import { tmuxReadArgs } from "./tmux-read.js";
|
|
5
|
+
const execAsync = promisify(execFile);
|
|
6
|
+
/**
|
|
7
|
+
* Every `tmux` call here. Starting the child process is synchronous on the fleet's loop (fork/exec of a large process),
|
|
8
|
+
* and a sweep starts one per instance in the same tick (the shared control client's 60 s safety sweep): the spawn is
|
|
9
|
+
* attributed so a stall made of N of them names itself (#1235). The promise itself is unchanged.
|
|
10
|
+
*/
|
|
11
|
+
const exec = ((...args) => measureSyncWork("tmux.spawn", () => execAsync(...args)));
|
|
12
|
+
/** `exec`, bounded when a timeout is given — and in exactly the old (file, args) form when it is not. */
|
|
13
|
+
const execBounded = (args, timeoutMs) => timeoutMs ? exec("tmux", args, { timeout: timeoutMs }) : exec("tmux", args);
|
|
4
14
|
/** Keys sendKeySequence may send: cursor moves and deletions inside an input line. */
|
|
5
15
|
const EDITING_KEYS = new Set(["C-a", "C-e", "C-u", "C-k", "BSpace", "DC", "Home", "End", "Left", "Right"]);
|
|
6
16
|
/** A load-buffer write can transiently fail under fleet-wide fd/pipe pressure. */
|
|
@@ -22,9 +32,9 @@ function isTransientLoadBufferError(err) {
|
|
|
22
32
|
return code === "EAGAIN" || code === "EMFILE";
|
|
23
33
|
}
|
|
24
34
|
/** Feed a tmux buffer through stdin so payload bytes never become an argv element. */
|
|
25
|
-
function execTmuxWithInput(tmuxArgs, input) {
|
|
35
|
+
function execTmuxWithInput(tmuxArgs, input, timeoutMs) {
|
|
26
36
|
return new Promise((resolve, reject) => {
|
|
27
|
-
const
|
|
37
|
+
const done = (error, _stdout, stderr) => {
|
|
28
38
|
if (!error) {
|
|
29
39
|
resolve();
|
|
30
40
|
return;
|
|
@@ -33,7 +43,11 @@ function execTmuxWithInput(tmuxArgs, input) {
|
|
|
33
43
|
if (detail && !error.message.includes(detail))
|
|
34
44
|
error.message = `${error.message}: ${detail}`;
|
|
35
45
|
reject(error);
|
|
36
|
-
}
|
|
46
|
+
};
|
|
47
|
+
// Options only when a bound is asked for: every other caller keeps execFile's (file, args, callback) form.
|
|
48
|
+
const child = measureSyncWork("tmux.spawn", () => timeoutMs
|
|
49
|
+
? execFile("tmux", tmuxArgs, { timeout: timeoutMs }, done)
|
|
50
|
+
: execFile("tmux", tmuxArgs, done));
|
|
37
51
|
child?.stdin?.on("error", reject);
|
|
38
52
|
child?.stdin?.end(input);
|
|
39
53
|
});
|
|
@@ -60,6 +74,7 @@ const LOGIN_TMUX_OP_TIMEOUT_MS = 10_000;
|
|
|
60
74
|
export class TmuxManager {
|
|
61
75
|
sessionName;
|
|
62
76
|
logicalSize;
|
|
77
|
+
readPort;
|
|
63
78
|
static ensureSessionInFlight = new Map();
|
|
64
79
|
windowId;
|
|
65
80
|
lastSendSpecialKeyError = null;
|
|
@@ -77,9 +92,10 @@ export class TmuxManager {
|
|
|
77
92
|
return args;
|
|
78
93
|
return ["-L", TmuxManager.socketName, ...args];
|
|
79
94
|
}
|
|
80
|
-
constructor(sessionName, windowId, logicalSize = { ...DEFAULT_TMUX_LOGICAL_SIZE }) {
|
|
95
|
+
constructor(sessionName, windowId, logicalSize = { ...DEFAULT_TMUX_LOGICAL_SIZE }, readPort) {
|
|
81
96
|
this.sessionName = sessionName;
|
|
82
97
|
this.logicalSize = logicalSize;
|
|
98
|
+
this.readPort = readPort;
|
|
83
99
|
this.windowId = windowId;
|
|
84
100
|
}
|
|
85
101
|
// === Static session-level methods ===
|
|
@@ -160,11 +176,11 @@ export class TmuxManager {
|
|
|
160
176
|
// Expected if session doesn't exist
|
|
161
177
|
}
|
|
162
178
|
}
|
|
163
|
-
static async listWindows(sessionName) {
|
|
179
|
+
static async listWindows(sessionName, readPort) {
|
|
164
180
|
try {
|
|
165
|
-
const {
|
|
181
|
+
const stdout = readPort ? await TmuxManager.portRead(readPort, { kind: "windows", session: sessionName }, 10_000) : (await exec("tmux", TmuxManager.tmuxArgs([
|
|
166
182
|
"list-windows", "-t", sessionName, "-F", "#{window_id}|||#{window_name}"
|
|
167
|
-
]));
|
|
183
|
+
]))).stdout;
|
|
168
184
|
return stdout.trim().split("\n").filter(Boolean).map(line => {
|
|
169
185
|
const [id, name] = line.split("|||");
|
|
170
186
|
return { id, name };
|
|
@@ -174,11 +190,12 @@ export class TmuxManager {
|
|
|
174
190
|
return [];
|
|
175
191
|
}
|
|
176
192
|
}
|
|
177
|
-
/** Bounded
|
|
178
|
-
static async listWindowsStrict(sessionName) {
|
|
179
|
-
const
|
|
180
|
-
|
|
181
|
-
|
|
193
|
+
/** Bounded health/login read: errors REJECT instead of proving "no windows". */
|
|
194
|
+
static async listWindowsStrict(sessionName, readPort) {
|
|
195
|
+
const stdout = readPort ? await TmuxManager.portRead(readPort, { kind: "windows", session: sessionName }, LOGIN_TMUX_OP_TIMEOUT_MS)
|
|
196
|
+
: (await exec("tmux", TmuxManager.tmuxArgs([
|
|
197
|
+
"list-windows", "-t", sessionName, "-F", "#{window_id}|||#{window_name}"
|
|
198
|
+
]), { timeout: LOGIN_TMUX_OP_TIMEOUT_MS })).stdout;
|
|
182
199
|
return stdout.trim().split("\n").filter(Boolean).map(line => {
|
|
183
200
|
const [id, name] = line.split("|||");
|
|
184
201
|
return { id, name };
|
|
@@ -197,6 +214,16 @@ export class TmuxManager {
|
|
|
197
214
|
}
|
|
198
215
|
}
|
|
199
216
|
// === Instance window methods ===
|
|
217
|
+
static portRead(port, query, timeoutMs) {
|
|
218
|
+
if (!port.isFor(query.session, TmuxManager.socketName))
|
|
219
|
+
return Promise.reject(new Error("tmux read port scope mismatch"));
|
|
220
|
+
return port.read(query, timeoutMs);
|
|
221
|
+
}
|
|
222
|
+
async read(query, timeoutMs = LOGIN_TMUX_OP_TIMEOUT_MS) {
|
|
223
|
+
if (this.readPort)
|
|
224
|
+
return TmuxManager.portRead(this.readPort, query, timeoutMs);
|
|
225
|
+
return (await exec("tmux", TmuxManager.tmuxArgs(tmuxReadArgs(query)), { timeout: timeoutMs })).stdout;
|
|
226
|
+
}
|
|
200
227
|
/** Window name handed to createWindow(), kept so a cleanup can find a window whose id we never learned. */
|
|
201
228
|
pendingWindowName = null;
|
|
202
229
|
async createWindow(command, cwd, windowName) {
|
|
@@ -337,7 +364,7 @@ export class TmuxManager {
|
|
|
337
364
|
if (!this.windowId)
|
|
338
365
|
return false;
|
|
339
366
|
try {
|
|
340
|
-
const windows = await TmuxManager.listWindows(this.sessionName);
|
|
367
|
+
const windows = await TmuxManager.listWindows(this.sessionName, this.readPort);
|
|
341
368
|
return windows.some(w => w.id === this.windowId);
|
|
342
369
|
}
|
|
343
370
|
catch {
|
|
@@ -365,10 +392,7 @@ export class TmuxManager {
|
|
|
365
392
|
// liveness recheck before classifying a crash.
|
|
366
393
|
for (let attempt = 0; attempt < 2; attempt++) {
|
|
367
394
|
try {
|
|
368
|
-
const
|
|
369
|
-
"list-panes", "-t", `${this.sessionName}:${this.windowId}`,
|
|
370
|
-
"-F", "#{pane_dead} #{pane_dead_status}",
|
|
371
|
-
]));
|
|
395
|
+
const stdout = await this.read({ kind: "pane", session: this.sessionName, window: this.windowId, field: "status" });
|
|
372
396
|
const line = stdout.trim().split("\n")[0];
|
|
373
397
|
if (!line)
|
|
374
398
|
return null;
|
|
@@ -412,9 +436,7 @@ export class TmuxManager {
|
|
|
412
436
|
if (!this.windowId)
|
|
413
437
|
return "unknown";
|
|
414
438
|
try {
|
|
415
|
-
const
|
|
416
|
-
"display-message", "-p", "-t", `${this.sessionName}:${this.windowId}`, "#{pane_tty}",
|
|
417
|
-
]), { timeout: 2_000 });
|
|
439
|
+
const stdout = await this.read({ kind: "tty", session: this.sessionName, window: this.windowId }, 2_000);
|
|
418
440
|
const tty = stdout.trim();
|
|
419
441
|
if (!/^\/dev\/(?:pts\/\d+|tty\w*)$/.test(tty))
|
|
420
442
|
return "unknown";
|
|
@@ -453,10 +475,10 @@ export class TmuxManager {
|
|
|
453
475
|
return false;
|
|
454
476
|
}
|
|
455
477
|
}
|
|
456
|
-
async sendSpecialKey(key) {
|
|
478
|
+
async sendSpecialKey(key, timeoutMs) {
|
|
457
479
|
this.lastSendSpecialKeyError = null;
|
|
458
480
|
try {
|
|
459
|
-
await
|
|
481
|
+
await execBounded(TmuxManager.tmuxArgs(["send-keys", "-t", `${this.sessionName}:${this.windowId}`, key]), timeoutMs);
|
|
460
482
|
return true;
|
|
461
483
|
}
|
|
462
484
|
catch (err) {
|
|
@@ -467,6 +489,18 @@ export class TmuxManager {
|
|
|
467
489
|
return false;
|
|
468
490
|
}
|
|
469
491
|
}
|
|
492
|
+
/** Delete `count` characters before the cursor (a paste AgEnD must take back before submitting it). */
|
|
493
|
+
async deleteBackward(count, timeoutMs) {
|
|
494
|
+
if (!Number.isInteger(count) || count <= 0)
|
|
495
|
+
return true;
|
|
496
|
+
try {
|
|
497
|
+
await execBounded(TmuxManager.tmuxArgs(["send-keys", "-t", `${this.sessionName}:${this.windowId}`, "-N", String(count), "BSpace"]), timeoutMs);
|
|
498
|
+
return true;
|
|
499
|
+
}
|
|
500
|
+
catch {
|
|
501
|
+
return false;
|
|
502
|
+
}
|
|
503
|
+
}
|
|
470
504
|
/** Diagnostic from the most recent failed sendSpecialKey call. */
|
|
471
505
|
getLastSendSpecialKeyError() {
|
|
472
506
|
return this.lastSendSpecialKeyError;
|
|
@@ -479,16 +513,24 @@ export class TmuxManager {
|
|
|
479
513
|
isLastPasteFailureRecoverable() {
|
|
480
514
|
return this.lastPasteFailureRecoverable;
|
|
481
515
|
}
|
|
482
|
-
|
|
516
|
+
/**
|
|
517
|
+
* `guard`, when given, is asked before every step that touches tmux — each load attempt and the paste into the
|
|
518
|
+
* pane — so a caller that stopped waiting (its owner stopped, its deadline passed) is never followed by a late pane
|
|
519
|
+
* write. `timeoutMs` bounds each tmux call.
|
|
520
|
+
*/
|
|
521
|
+
async loadAndPaste(text, opts = {}) {
|
|
483
522
|
const target = `${this.sessionName}:${this.windowId}`;
|
|
523
|
+
const allowed = () => !opts.guard || opts.guard();
|
|
484
524
|
const bufName = `paste-${this.windowId}-${Date.now()}`;
|
|
485
525
|
this.lastPasteError = null;
|
|
486
526
|
this.lastPasteFailureRecoverable = false;
|
|
487
527
|
let loadError;
|
|
488
528
|
let loaded = false;
|
|
489
529
|
for (let attempt = 1; attempt <= LOAD_BUFFER_MAX_ATTEMPTS; attempt++) {
|
|
530
|
+
if (!allowed())
|
|
531
|
+
return false;
|
|
490
532
|
try {
|
|
491
|
-
await execTmuxWithInput(TmuxManager.tmuxArgs(["load-buffer", "-b", bufName, "-"]), text);
|
|
533
|
+
await execTmuxWithInput(TmuxManager.tmuxArgs(["load-buffer", "-b", bufName, "-"]), text, opts.timeoutMs);
|
|
492
534
|
loaded = true;
|
|
493
535
|
break;
|
|
494
536
|
}
|
|
@@ -506,14 +548,26 @@ export class TmuxManager {
|
|
|
506
548
|
this.lastPasteError = formatExecError(loadError);
|
|
507
549
|
return false;
|
|
508
550
|
}
|
|
551
|
+
let pasteStarted = false;
|
|
509
552
|
try {
|
|
510
|
-
|
|
511
|
-
|
|
553
|
+
if (!allowed())
|
|
554
|
+
return false;
|
|
555
|
+
pasteStarted = true;
|
|
556
|
+
try {
|
|
557
|
+
await execBounded(TmuxManager.tmuxArgs(["paste-buffer", "-d", "-b", bufName, "-t", target, "-p"]), opts.timeoutMs);
|
|
558
|
+
return true;
|
|
559
|
+
}
|
|
560
|
+
catch (err) {
|
|
561
|
+
this.lastPasteError = formatExecError(err);
|
|
562
|
+
this.lastPasteFailureRecoverable = true;
|
|
563
|
+
return false;
|
|
564
|
+
}
|
|
512
565
|
}
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
566
|
+
finally {
|
|
567
|
+
// Cancellation may return false or throw (e.g. a revoked consent capability).
|
|
568
|
+
// Both retain ownership of the loaded buffer and must dispose of it without a pane write.
|
|
569
|
+
if (!pasteStarted)
|
|
570
|
+
void execBounded(TmuxManager.tmuxArgs(["delete-buffer", "-b", bufName]), opts.timeoutMs).catch(() => { });
|
|
517
571
|
}
|
|
518
572
|
}
|
|
519
573
|
/**
|
|
@@ -554,8 +608,8 @@ export class TmuxManager {
|
|
|
554
608
|
* Callers that need to verify the idle→busy transition before/after Enter use this
|
|
555
609
|
* together with sendSpecialKey("Enter") so they control submit timing and retries.
|
|
556
610
|
*/
|
|
557
|
-
async pasteBuffer(text) {
|
|
558
|
-
return this.loadAndPaste(text);
|
|
611
|
+
async pasteBuffer(text, opts = {}) {
|
|
612
|
+
return this.loadAndPaste(text, opts);
|
|
559
613
|
}
|
|
560
614
|
async pipeOutput(logPath) {
|
|
561
615
|
// pipe-pane's shell command runs via /bin/sh -c. Reject control characters
|
|
@@ -571,18 +625,11 @@ export class TmuxManager {
|
|
|
571
625
|
]));
|
|
572
626
|
}
|
|
573
627
|
async capturePane(timeoutMs = LOGIN_TMUX_OP_TIMEOUT_MS) {
|
|
574
|
-
|
|
575
|
-
"capture-pane", "-t", `${this.sessionName}:${this.windowId}`, "-p",
|
|
576
|
-
]), { timeout: timeoutMs });
|
|
577
|
-
return stdout;
|
|
628
|
+
return this.read({ kind: "capture", session: this.sessionName, window: this.windowId }, timeoutMs);
|
|
578
629
|
}
|
|
579
630
|
/** Capture pane content including scrollback history (last N lines). */
|
|
580
631
|
async capturePaneWithHistory(lines = 50, timeoutMs = LOGIN_TMUX_OP_TIMEOUT_MS) {
|
|
581
|
-
|
|
582
|
-
"capture-pane", "-t", `${this.sessionName}:${this.windowId}`,
|
|
583
|
-
"-p", "-S", `-${lines}`,
|
|
584
|
-
]), { timeout: timeoutMs });
|
|
585
|
-
return stdout;
|
|
632
|
+
return this.read({ kind: "capture", session: this.sessionName, window: this.windowId, history: lines }, timeoutMs);
|
|
586
633
|
}
|
|
587
634
|
/**
|
|
588
635
|
* Capture with wrapped lines joined (`-J`): a long OAuth URL that wraps
|
|
@@ -590,11 +637,7 @@ export class TmuxManager {
|
|
|
590
637
|
* where URL reassembly matters more than screen-faithful geometry.
|
|
591
638
|
*/
|
|
592
639
|
async capturePaneJoined(lines = 50) {
|
|
593
|
-
|
|
594
|
-
"capture-pane", "-t", `${this.sessionName}:${this.windowId}`,
|
|
595
|
-
"-p", "-J", "-S", `-${lines}`,
|
|
596
|
-
]));
|
|
597
|
-
return stdout;
|
|
640
|
+
return this.read({ kind: "capture", session: this.sessionName, window: this.windowId, history: lines, joined: true });
|
|
598
641
|
}
|
|
599
642
|
getWindowId() { return this.windowId; }
|
|
600
643
|
}
|
package/dist/tmux-manager.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tmux-manager.js","sourceRoot":"","sources":["../src/tmux-manager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tmux-manager.js","sourceRoot":"","sources":["../src/tmux-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
export declare const TMUX_READ_MAX_BYTES: number;
|
|
2
|
+
export declare const TMUX_READ_QUEUE_LIMIT = 256;
|
|
3
|
+
export declare const TMUX_CONTROL_ATTEMPT_MS = 2000;
|
|
4
|
+
export declare const TMUX_FALLBACK_CHILDREN = 2;
|
|
5
|
+
/** Internal read operations only. No arbitrary command/format capability. */
|
|
6
|
+
export type TmuxReadQuery = {
|
|
7
|
+
session: string;
|
|
8
|
+
} & ({
|
|
9
|
+
kind: "capture";
|
|
10
|
+
window: string;
|
|
11
|
+
history?: number;
|
|
12
|
+
joined?: boolean;
|
|
13
|
+
} | {
|
|
14
|
+
kind: "windows";
|
|
15
|
+
} | {
|
|
16
|
+
kind: "pane";
|
|
17
|
+
window: string;
|
|
18
|
+
field: "id" | "status" | "pid";
|
|
19
|
+
} | {
|
|
20
|
+
kind: "tty";
|
|
21
|
+
window: string;
|
|
22
|
+
});
|
|
23
|
+
export interface TmuxReadPort {
|
|
24
|
+
isFor(session: string, socket: string | null): boolean;
|
|
25
|
+
read(query: TmuxReadQuery, timeoutMs?: number): Promise<string>;
|
|
26
|
+
}
|
|
27
|
+
export declare class TmuxReadError extends Error {
|
|
28
|
+
readonly kind: "transport" | "command" | "limit" | "timeout" | "stopped";
|
|
29
|
+
readonly code?: string | number;
|
|
30
|
+
constructor(kind: "transport" | "command" | "limit" | "timeout" | "stopped", message: string, cause?: unknown);
|
|
31
|
+
}
|
|
32
|
+
export declare function tmuxReadArgs(query: TmuxReadQuery): string[];
|
|
33
|
+
/** tmux's command lexer, not a shell: quoted parts concatenate into one token. */
|
|
34
|
+
export declare function tmuxCommandToken(value: string): string;
|
|
35
|
+
interface ControlReadTransport {
|
|
36
|
+
ready(): boolean;
|
|
37
|
+
execute(args: string[], deadline: number): Promise<string>;
|
|
38
|
+
retire(): void;
|
|
39
|
+
}
|
|
40
|
+
/** One logical FIFO shared by control and fallback; physical children can outlive a job. */
|
|
41
|
+
export declare class TmuxReadLane {
|
|
42
|
+
private socket;
|
|
43
|
+
private control;
|
|
44
|
+
private jobs;
|
|
45
|
+
private active;
|
|
46
|
+
private physical;
|
|
47
|
+
private stopped;
|
|
48
|
+
private lifetime;
|
|
49
|
+
constructor(socket: string | null, control: ControlReadTransport);
|
|
50
|
+
start(): void;
|
|
51
|
+
wake(): void;
|
|
52
|
+
stop(): void;
|
|
53
|
+
read(args: string[], timeoutMs: number): Promise<string>;
|
|
54
|
+
private current;
|
|
55
|
+
private finish;
|
|
56
|
+
private pump;
|
|
57
|
+
private run;
|
|
58
|
+
}
|
|
59
|
+
export {};
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
import { execFile } from "node:child_process";
|
|
2
|
+
import { measureSyncWork } from "./sync-work-attribution.js";
|
|
3
|
+
export const TMUX_READ_MAX_BYTES = 1024 * 1024;
|
|
4
|
+
export const TMUX_READ_QUEUE_LIMIT = 256;
|
|
5
|
+
export const TMUX_CONTROL_ATTEMPT_MS = 2_000;
|
|
6
|
+
export const TMUX_FALLBACK_CHILDREN = 2;
|
|
7
|
+
export class TmuxReadError extends Error {
|
|
8
|
+
kind;
|
|
9
|
+
code;
|
|
10
|
+
constructor(kind, message, cause) {
|
|
11
|
+
super(message, { cause });
|
|
12
|
+
this.kind = kind;
|
|
13
|
+
const code = cause?.code;
|
|
14
|
+
if (typeof code === "string" || typeof code === "number")
|
|
15
|
+
this.code = code;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
/** Only an ordinary nonzero exit is a semantic tmux command failure. */
|
|
19
|
+
function fallbackReadError(error) {
|
|
20
|
+
const detail = error;
|
|
21
|
+
const kind = detail?.code === "ERR_CHILD_PROCESS_STDIO_MAXBUFFER" ? "limit"
|
|
22
|
+
: detail?.killed ? "timeout"
|
|
23
|
+
: typeof detail?.code === "number" && detail.code !== 0 && !detail.signal ? "command" : "transport";
|
|
24
|
+
return new TmuxReadError(kind, "tmux fallback read failed", error);
|
|
25
|
+
}
|
|
26
|
+
export function tmuxReadArgs(query) {
|
|
27
|
+
const target = "window" in query ? `${query.session}:${query.window}` : query.session;
|
|
28
|
+
if (/[\x00-\x1f\x7f]/u.test(target))
|
|
29
|
+
throw new TmuxReadError("command", "Invalid tmux read target");
|
|
30
|
+
switch (query.kind) {
|
|
31
|
+
case "windows": return ["list-windows", "-t", target, "-F", "#{window_id}|||#{window_name}"];
|
|
32
|
+
case "pane": return ["list-panes", "-t", target, "-F", {
|
|
33
|
+
id: "#{pane_id}", status: "#{pane_dead} #{pane_dead_status}", pid: "#{pane_pid}",
|
|
34
|
+
}[query.field]];
|
|
35
|
+
case "tty": return ["display-message", "-p", "-t", target, "#{pane_tty}"];
|
|
36
|
+
case "capture": {
|
|
37
|
+
const args = ["capture-pane", "-t", target, "-p"];
|
|
38
|
+
if (query.joined)
|
|
39
|
+
args.push("-J");
|
|
40
|
+
if (query.history !== undefined) {
|
|
41
|
+
if (!Number.isSafeInteger(query.history))
|
|
42
|
+
throw new TmuxReadError("command", "Invalid tmux history size");
|
|
43
|
+
args.push("-S", `-${query.history}`);
|
|
44
|
+
}
|
|
45
|
+
return args;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
/** tmux's command lexer, not a shell: quoted parts concatenate into one token. */
|
|
50
|
+
export function tmuxCommandToken(value) {
|
|
51
|
+
if (/[\x00-\x1f\x7f]/u.test(value))
|
|
52
|
+
throw new TmuxReadError("command", "Invalid tmux command token");
|
|
53
|
+
return `'${value.replace(/'/g, "'\\''")}'`;
|
|
54
|
+
}
|
|
55
|
+
function killReadChild(child) {
|
|
56
|
+
try {
|
|
57
|
+
child?.kill();
|
|
58
|
+
}
|
|
59
|
+
catch { /* physical ownership still waits for exit */ }
|
|
60
|
+
}
|
|
61
|
+
/** One logical FIFO shared by control and fallback; physical children can outlive a job. */
|
|
62
|
+
export class TmuxReadLane {
|
|
63
|
+
socket;
|
|
64
|
+
control;
|
|
65
|
+
jobs = [];
|
|
66
|
+
active = null;
|
|
67
|
+
physical = new Set();
|
|
68
|
+
stopped = false;
|
|
69
|
+
lifetime = 0;
|
|
70
|
+
constructor(socket, control) {
|
|
71
|
+
this.socket = socket;
|
|
72
|
+
this.control = control;
|
|
73
|
+
}
|
|
74
|
+
start() { this.stopped = false; }
|
|
75
|
+
wake() { this.pump(); }
|
|
76
|
+
stop() {
|
|
77
|
+
this.stopped = true;
|
|
78
|
+
this.lifetime++;
|
|
79
|
+
for (const job of [this.active, ...this.jobs]) {
|
|
80
|
+
if (job)
|
|
81
|
+
this.finish(job, new TmuxReadError("stopped", "tmux read client stopped"));
|
|
82
|
+
}
|
|
83
|
+
for (const job of this.physical)
|
|
84
|
+
killReadChild(job.child);
|
|
85
|
+
}
|
|
86
|
+
read(args, timeoutMs) {
|
|
87
|
+
if (this.stopped)
|
|
88
|
+
return Promise.reject(new TmuxReadError("stopped", "tmux read client stopped"));
|
|
89
|
+
if (!Number.isFinite(timeoutMs) || timeoutMs <= 0)
|
|
90
|
+
return Promise.reject(new TmuxReadError("timeout", "tmux read deadline expired"));
|
|
91
|
+
if (this.jobs.length + Number(this.active !== null) >= TMUX_READ_QUEUE_LIMIT) {
|
|
92
|
+
return Promise.reject(new TmuxReadError("limit", "tmux read queue full"));
|
|
93
|
+
}
|
|
94
|
+
return new Promise((resolve, reject) => {
|
|
95
|
+
const job = {
|
|
96
|
+
args, deadline: performance.now() + timeoutMs, lifetime: this.lifetime, resolve, reject, done: false,
|
|
97
|
+
};
|
|
98
|
+
job.timer = setTimeout(() => {
|
|
99
|
+
if (this.active === job && !job.child)
|
|
100
|
+
this.control.retire();
|
|
101
|
+
killReadChild(job.child);
|
|
102
|
+
this.finish(job, new TmuxReadError("timeout", "tmux read deadline expired"));
|
|
103
|
+
}, Math.max(1, Math.floor(timeoutMs)));
|
|
104
|
+
this.jobs.push(job);
|
|
105
|
+
this.pump();
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
current(job) {
|
|
109
|
+
return !job.done && !this.stopped && job.lifetime === this.lifetime && performance.now() < job.deadline;
|
|
110
|
+
}
|
|
111
|
+
finish(job, error, output = "") {
|
|
112
|
+
if (job.done)
|
|
113
|
+
return;
|
|
114
|
+
job.done = true;
|
|
115
|
+
clearTimeout(job.timer);
|
|
116
|
+
this.jobs = this.jobs.filter(item => item !== job);
|
|
117
|
+
if (this.active === job)
|
|
118
|
+
this.active = null;
|
|
119
|
+
if (error)
|
|
120
|
+
job.reject(error);
|
|
121
|
+
else
|
|
122
|
+
job.resolve(output);
|
|
123
|
+
this.pump();
|
|
124
|
+
}
|
|
125
|
+
pump() {
|
|
126
|
+
if (this.stopped || this.active)
|
|
127
|
+
return;
|
|
128
|
+
const job = this.jobs[0];
|
|
129
|
+
if (!job)
|
|
130
|
+
return;
|
|
131
|
+
if (!this.current(job)) {
|
|
132
|
+
this.finish(job, new TmuxReadError("timeout", "tmux read deadline expired"));
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
if (!this.control.ready() && this.physical.size >= TMUX_FALLBACK_CHILDREN)
|
|
136
|
+
return;
|
|
137
|
+
this.jobs.shift();
|
|
138
|
+
this.active = job;
|
|
139
|
+
void this.run(job);
|
|
140
|
+
}
|
|
141
|
+
async run(job) {
|
|
142
|
+
if (this.control.ready()) {
|
|
143
|
+
try {
|
|
144
|
+
const remaining = job.deadline - performance.now();
|
|
145
|
+
const attempt = performance.now() + Math.min(TMUX_CONTROL_ATTEMPT_MS, remaining / 2);
|
|
146
|
+
const result = await this.control.execute(job.args, attempt);
|
|
147
|
+
if (!this.current(job))
|
|
148
|
+
throw new TmuxReadError("timeout", "tmux read deadline expired");
|
|
149
|
+
this.finish(job, undefined, result);
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
catch (error) {
|
|
153
|
+
if (job.done)
|
|
154
|
+
return;
|
|
155
|
+
if (!(error instanceof TmuxReadError) || error.kind !== "transport") {
|
|
156
|
+
this.finish(job, error);
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
if (!this.current(job)) {
|
|
162
|
+
this.finish(job, new TmuxReadError("timeout", "tmux read deadline expired"));
|
|
163
|
+
return;
|
|
164
|
+
}
|
|
165
|
+
// A timed-out fallback child keeps its physical slot until actual exit.
|
|
166
|
+
if (this.physical.size >= TMUX_FALLBACK_CHILDREN) {
|
|
167
|
+
this.active = null;
|
|
168
|
+
this.jobs.unshift(job);
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
this.physical.add(job);
|
|
172
|
+
const release = () => { if (this.physical.delete(job))
|
|
173
|
+
this.pump(); };
|
|
174
|
+
let spawnReturned = false;
|
|
175
|
+
let callbackError;
|
|
176
|
+
try {
|
|
177
|
+
const args = this.socket ? ["-L", this.socket, ...job.args] : job.args;
|
|
178
|
+
const child = measureSyncWork("tmux.spawn", () => execFile("tmux", args, {
|
|
179
|
+
timeout: Math.max(1, Math.floor(job.deadline - performance.now())), maxBuffer: TMUX_READ_MAX_BYTES,
|
|
180
|
+
}, (error, stdout) => {
|
|
181
|
+
// Node can invoke this callback on error before a live child exits
|
|
182
|
+
// (e.g. kill EPERM). It settles the read, not physical ownership.
|
|
183
|
+
callbackError = error;
|
|
184
|
+
if (spawnReturned && error && job.child?.pid === undefined)
|
|
185
|
+
release();
|
|
186
|
+
if (job.done)
|
|
187
|
+
return;
|
|
188
|
+
if (!this.current(job))
|
|
189
|
+
this.finish(job, new TmuxReadError("timeout", "tmux read deadline expired"));
|
|
190
|
+
else
|
|
191
|
+
this.finish(job, error ? fallbackReadError(error) : undefined, String(stdout));
|
|
192
|
+
}));
|
|
193
|
+
job.child = child;
|
|
194
|
+
spawnReturned = true;
|
|
195
|
+
child?.once("exit", release);
|
|
196
|
+
child?.once("close", release);
|
|
197
|
+
child?.once("error", () => { if (child.pid === undefined)
|
|
198
|
+
release(); });
|
|
199
|
+
// Native execFile always returns a ChildProcess. The no-child branch
|
|
200
|
+
// also permits inert test doubles; a failed spawn has no process to own.
|
|
201
|
+
if (!child || (callbackError && child.pid === undefined))
|
|
202
|
+
release();
|
|
203
|
+
if (job.done && this.physical.has(job))
|
|
204
|
+
killReadChild(child);
|
|
205
|
+
}
|
|
206
|
+
catch (error) {
|
|
207
|
+
if (!spawnReturned || job.child?.pid === undefined)
|
|
208
|
+
release();
|
|
209
|
+
this.finish(job, fallbackReadError(error));
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
//# sourceMappingURL=tmux-read.js.map
|