@sentropic/h2a-runtime 0.98.6 → 0.98.7-rc.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.
Files changed (130) hide show
  1. package/dist/agent-launch-args.d.ts.map +1 -1
  2. package/dist/agent-launch-args.js +5 -5
  3. package/dist/agent-launch-args.js.map +1 -1
  4. package/dist/agy-claude.d.ts +2 -0
  5. package/dist/agy-claude.d.ts.map +1 -0
  6. package/dist/agy-claude.js +3 -0
  7. package/dist/agy-claude.js.map +1 -0
  8. package/dist/agy-headless.d.ts +11 -0
  9. package/dist/agy-headless.d.ts.map +1 -0
  10. package/dist/agy-headless.js +104 -0
  11. package/dist/agy-headless.js.map +1 -0
  12. package/dist/attach.d.ts +2 -0
  13. package/dist/attach.d.ts.map +1 -1
  14. package/dist/attach.js +73 -6
  15. package/dist/attach.js.map +1 -1
  16. package/dist/auth-login.d.ts +24 -1
  17. package/dist/auth-login.d.ts.map +1 -1
  18. package/dist/auth-login.js +132 -4
  19. package/dist/auth-login.js.map +1 -1
  20. package/dist/central-mcp.d.ts +2 -0
  21. package/dist/central-mcp.d.ts.map +1 -1
  22. package/dist/central-mcp.js +90 -3
  23. package/dist/central-mcp.js.map +1 -1
  24. package/dist/claude-code-cli-isolation.d.ts +53 -0
  25. package/dist/claude-code-cli-isolation.d.ts.map +1 -0
  26. package/dist/claude-code-cli-isolation.js +277 -0
  27. package/dist/claude-code-cli-isolation.js.map +1 -0
  28. package/dist/claude-code-cli-lifecycle.d.ts +80 -0
  29. package/dist/claude-code-cli-lifecycle.d.ts.map +1 -0
  30. package/dist/claude-code-cli-lifecycle.js +402 -0
  31. package/dist/claude-code-cli-lifecycle.js.map +1 -0
  32. package/dist/claude-code-cli-runner.d.ts +89 -0
  33. package/dist/claude-code-cli-runner.d.ts.map +1 -0
  34. package/dist/claude-code-cli-runner.js +659 -0
  35. package/dist/claude-code-cli-runner.js.map +1 -0
  36. package/dist/claude-seat-input.d.ts +47 -0
  37. package/dist/claude-seat-input.d.ts.map +1 -0
  38. package/dist/claude-seat-input.js +272 -0
  39. package/dist/claude-seat-input.js.map +1 -0
  40. package/dist/claude-seat-mesh-contract.d.ts +88 -0
  41. package/dist/claude-seat-mesh-contract.d.ts.map +1 -0
  42. package/dist/claude-seat-mesh-contract.js +13 -0
  43. package/dist/claude-seat-mesh-contract.js.map +1 -0
  44. package/dist/cli-help-groups.js +1 -1
  45. package/dist/cli-help-groups.js.map +1 -1
  46. package/dist/crash-log.d.ts +112 -0
  47. package/dist/crash-log.d.ts.map +1 -0
  48. package/dist/crash-log.js +560 -0
  49. package/dist/crash-log.js.map +1 -0
  50. package/dist/delegate.d.ts +10 -0
  51. package/dist/delegate.d.ts.map +1 -1
  52. package/dist/delegate.js +29 -0
  53. package/dist/delegate.js.map +1 -1
  54. package/dist/gateway-host/claude-seat-client.d.ts +32 -0
  55. package/dist/gateway-host/claude-seat-client.d.ts.map +1 -0
  56. package/dist/gateway-host/claude-seat-client.js +38 -0
  57. package/dist/gateway-host/claude-seat-client.js.map +1 -0
  58. package/dist/gateway-host/host.d.ts +6 -0
  59. package/dist/gateway-host/host.d.ts.map +1 -1
  60. package/dist/gateway-host/host.js +24 -3
  61. package/dist/gateway-host/host.js.map +1 -1
  62. package/dist/gateway-host/live-declarations.d.ts +58 -0
  63. package/dist/gateway-host/live-declarations.d.ts.map +1 -0
  64. package/dist/gateway-host/live-declarations.js +429 -0
  65. package/dist/gateway-host/live-declarations.js.map +1 -0
  66. package/dist/gateway-host/live-github.d.ts +11 -0
  67. package/dist/gateway-host/live-github.d.ts.map +1 -0
  68. package/dist/gateway-host/live-github.js +374 -0
  69. package/dist/gateway-host/live-github.js.map +1 -0
  70. package/dist/gateway-host/live-object-store.d.ts +35 -0
  71. package/dist/gateway-host/live-object-store.d.ts.map +1 -0
  72. package/dist/gateway-host/live-object-store.js +447 -0
  73. package/dist/gateway-host/live-object-store.js.map +1 -0
  74. package/dist/gateway-host/live-registration.d.ts +162 -0
  75. package/dist/gateway-host/live-registration.d.ts.map +1 -0
  76. package/dist/gateway-host/live-registration.js +455 -0
  77. package/dist/gateway-host/live-registration.js.map +1 -0
  78. package/dist/index.d.ts.map +1 -1
  79. package/dist/index.js +290 -23
  80. package/dist/index.js.map +1 -1
  81. package/dist/llm-mesh-accounts.d.ts +70 -4
  82. package/dist/llm-mesh-accounts.d.ts.map +1 -1
  83. package/dist/llm-mesh-accounts.js +296 -9
  84. package/dist/llm-mesh-accounts.js.map +1 -1
  85. package/dist/native-host.d.ts +1 -1
  86. package/dist/native-host.d.ts.map +1 -1
  87. package/dist/native-host.js +30 -17
  88. package/dist/native-host.js.map +1 -1
  89. package/dist/native-terminal/host.d.ts +6 -1
  90. package/dist/native-terminal/host.d.ts.map +1 -1
  91. package/dist/native-terminal/host.js +6 -25
  92. package/dist/native-terminal/host.js.map +1 -1
  93. package/dist/native-terminal/journal.d.ts +5 -0
  94. package/dist/native-terminal/journal.d.ts.map +1 -1
  95. package/dist/native-terminal/journal.js +28 -16
  96. package/dist/native-terminal/journal.js.map +1 -1
  97. package/dist/native-terminal/op.d.ts +13 -0
  98. package/dist/native-terminal/op.d.ts.map +1 -1
  99. package/dist/native-terminal/op.js +64 -5
  100. package/dist/native-terminal/op.js.map +1 -1
  101. package/dist/proc-identity.d.ts +31 -0
  102. package/dist/proc-identity.d.ts.map +1 -1
  103. package/dist/proc-identity.js +54 -0
  104. package/dist/proc-identity.js.map +1 -1
  105. package/dist/prompt-delivery.d.ts +3 -0
  106. package/dist/prompt-delivery.d.ts.map +1 -1
  107. package/dist/prompt-delivery.js +8 -3
  108. package/dist/prompt-delivery.js.map +1 -1
  109. package/dist/run.d.ts.map +1 -1
  110. package/dist/run.js +79 -16
  111. package/dist/run.js.map +1 -1
  112. package/dist/terminal-reset.d.ts +104 -0
  113. package/dist/terminal-reset.d.ts.map +1 -0
  114. package/dist/terminal-reset.js +229 -0
  115. package/dist/terminal-reset.js.map +1 -0
  116. package/dist/tmux.d.ts +26 -4
  117. package/dist/tmux.d.ts.map +1 -1
  118. package/dist/tmux.js +60 -25
  119. package/dist/tmux.js.map +1 -1
  120. package/dist/vendor/engram-live/contracts.d.ts +825 -0
  121. package/dist/vendor/engram-live/contracts.js +1734 -0
  122. package/dist/vendor/engram-live/integration.d.ts +113 -0
  123. package/dist/vendor/engram-live/integration.js +254 -0
  124. package/dist/vendor/engram-live/pr-sync.d.ts +144 -0
  125. package/dist/vendor/engram-live/pr-sync.js +411 -0
  126. package/dist/vendor/engram-live/registration.d.ts +138 -0
  127. package/dist/vendor/engram-live/registration.js +358 -0
  128. package/dist/vendor/engram-live/retention.d.ts +56 -0
  129. package/dist/vendor/engram-live/retention.js +179 -0
  130. package/package.json +2 -2
@@ -0,0 +1,229 @@
1
+ /**
2
+ * Sane-state reset for h2a verbs that hand the REAL client terminal to a child
3
+ * over inherited stdio (`tmux attach`, foreground CLI, `kubectl exec` attach).
4
+ *
5
+ * Unlike the native attach path (native-terminal/op.ts), these verbs never see
6
+ * the child's output bytes, so there is nothing to track: emit a fixed,
7
+ * idempotent reset that is a no-op on an already-sane terminal. The DEC set
8
+ * and ordering mirror TerminalModeTracker's DEC_MODES so both mechanisms stay
9
+ * comparable (see terminal-reset.test.ts for the cross-check).
10
+ *
11
+ * Sync limitation (rev351-1): the wrapped child runs in a BLOCKING spawnSync,
12
+ * which owns a private libuv loop. A JS `process.on(signal)` handler installed
13
+ * around it can never run synchronously: delivery is deferred until the event
14
+ * loop regains control, and removing the listener right after spawnSync
15
+ * destroys the pending signal. Trapping therefore swallows the signal (exit 0)
16
+ * and blocks the wrapper until the child ends on its own (plus it breaks
17
+ * Ctrl-C in the reconnect loop). So this wrapper installs NO signal handlers:
18
+ * a signal addressed to the wrapper itself keeps its default disposition (the
19
+ * wrapper dies promptly, like SIGKILL — residual, no reset possible), while a
20
+ * signal that kills only the CHILD is observed synchronously via r.signal and
21
+ * mapped to 128+n by statusFromSpawnResult (never 0).
22
+ */
23
+ import { spawnSync } from "node:child_process";
24
+ import { writeSync } from "node:fs";
25
+ import { constants as osConstants } from "node:os";
26
+ const ESC = "\x1b";
27
+ /**
28
+ * Unconditional sane-state reset for the client terminal. Every sequence is a
29
+ * no-op when the terminal is already sane: clearing an unset private mode,
30
+ * showing a visible cursor, leaving the normal keypad, or zeroing
31
+ * modifyOtherKeys changes nothing.
32
+ *
33
+ * Prefix `\x18` (CAN) + `ESC \` (ST) aborts a truncated CSI/OSC sequence when
34
+ * the child died mid-write; without it the reset itself could be swallowed
35
+ * inside the incomplete sequence. Kitty keyboard stacks are per-screen
36
+ * (main vs alternate, cf. terminal-modes.ts): pop up to 16 entries and zero
37
+ * flags BEFORE leaving the alternate screen, then pop again after returning
38
+ * to the main screen. Without a byte stream there is no exact stack to pop,
39
+ * so the maximal pop is the best-effort bound (the tracked native attach path
40
+ * pops exactly instead).
41
+ */
42
+ export const CLIENT_TERMINAL_RESET_SEQUENCE = `\x18${ESC}\\` + // abort any truncated CSI/OSC first
43
+ `${ESC}[?2026l` + // end synchronized output first
44
+ `${ESC}[<16u${ESC}[=0u` + // pop Kitty alternate-screen stack before leaving it
45
+ `${ESC}[?1l` + // normal cursor keys
46
+ `${ESC}[?1000l${ESC}[?1002l${ESC}[?1003l` + // mouse reporting
47
+ `${ESC}[?1004l` + // focus reporting (the ^[[I/^[[O stuck symptom)
48
+ `${ESC}[?1006l${ESC}[?1015l` + // mouse encoding
49
+ `${ESC}[?2004l` + // bracketed paste
50
+ `${ESC}[?47l${ESC}[?1047l${ESC}[?1049l` + // back to the normal screen
51
+ `${ESC}[<16u${ESC}[=0u` + // pop Kitty main-screen stack after returning
52
+ `${ESC}[?25h` + // visible cursor
53
+ `${ESC}>` + // normal keypad
54
+ `${ESC}[>4;0m`; // modifyOtherKeys off
55
+ /** Write the reset to a TTY stdout, synchronously so teardown paths can use it. */
56
+ export function resetClientTerminal(stdout = process.stdout) {
57
+ try {
58
+ if (stdout.isTTY !== true)
59
+ return false;
60
+ if (typeof stdout.fd === "number") {
61
+ writeSync(stdout.fd, CLIENT_TERMINAL_RESET_SEQUENCE);
62
+ }
63
+ else {
64
+ stdout.write?.(CLIENT_TERMINAL_RESET_SEQUENCE);
65
+ }
66
+ return true;
67
+ }
68
+ catch {
69
+ return false;
70
+ }
71
+ }
72
+ /**
73
+ * rev351r2-6: signal numbers for the 128+n exit-code mapping, read from the
74
+ * running platform (`os.constants.signals`) with a Linux fallback for names
75
+ * the platform does not know. A frozen literal got macOS/BSD numbers wrong
76
+ * (SIGBUS 10 not 7, SIGUSR1 30 not 10, SIGCHLD 20, SIGSTOP 17, ...); the
77
+ * operational signals (HUP/INT/QUIT/KILL/TERM/SEGV/ABRT) agree everywhere,
78
+ * but crash-code mapping should still use the platform's own table.
79
+ */
80
+ const FALLBACK_SIGNAL_NUMBERS = {
81
+ SIGHUP: 1,
82
+ SIGINT: 2,
83
+ SIGQUIT: 3,
84
+ SIGILL: 4,
85
+ SIGTRAP: 5,
86
+ SIGABRT: 6,
87
+ SIGBUS: 7,
88
+ SIGFPE: 8,
89
+ SIGKILL: 9,
90
+ SIGUSR1: 10,
91
+ SIGSEGV: 11,
92
+ SIGUSR2: 12,
93
+ SIGPIPE: 13,
94
+ SIGALRM: 14,
95
+ SIGTERM: 15,
96
+ SIGSTKFLT: 16,
97
+ SIGCHLD: 17,
98
+ SIGCONT: 18,
99
+ SIGSTOP: 19,
100
+ SIGTSTP: 20,
101
+ SIGTTIN: 21,
102
+ SIGTTOU: 22,
103
+ SIGURG: 23,
104
+ SIGXCPU: 24,
105
+ SIGXFSZ: 25,
106
+ SIGVTALRM: 26,
107
+ SIGPROF: 27,
108
+ SIGWINCH: 28,
109
+ SIGIO: 29,
110
+ SIGPWR: 30,
111
+ SIGSYS: 31,
112
+ };
113
+ function platformSignalNumber(name) {
114
+ const fromOs = osConstants.signals[name];
115
+ if (typeof fromOs === "number")
116
+ return fromOs;
117
+ return FALLBACK_SIGNAL_NUMBERS[name] ?? 0;
118
+ }
119
+ /** POSIX signal numbers for the 128+n exit-code mapping. */
120
+ export const SIGNAL_NUMBERS = Object.fromEntries(Object.keys(FALLBACK_SIGNAL_NUMBERS).map((name) => [
121
+ name,
122
+ platformSignalNumber(name),
123
+ ]));
124
+ /**
125
+ * Map a spawnSync result to a process exit code that preserves signal-death
126
+ * semantics. A child killed by a signal has status null: the old `?? 0`
127
+ * reported that as success. Now it reports 128+signo; a spawn error reports
128
+ * 127; a null status with no signal and no error (should not happen) reports
129
+ * 1 rather than 0.
130
+ */
131
+ export function statusFromSpawnResult(result) {
132
+ if (result.signal)
133
+ return 128 + (SIGNAL_NUMBERS[result.signal] ?? 0);
134
+ if (result.error !== undefined && result.error !== null)
135
+ return 127;
136
+ return result.status ?? 1;
137
+ }
138
+ const defaultSttySpawn = (args, { stdinFd, capture }) => {
139
+ const result = spawnSync("stty", [...args], {
140
+ stdio: [stdinFd, capture ? "pipe" : "ignore", "ignore"],
141
+ encoding: "utf8",
142
+ });
143
+ return result;
144
+ };
145
+ /**
146
+ * rev351r2-2: single home for the termios save every client-terminal owner
147
+ * (`withClientTerminalReset`, `run`, `attach`, `auth login`) used to copy.
148
+ * Captures stdin raw mode plus `stty -g` on a real TTY; elsewhere (or when
149
+ * `stty` fails) the save is empty and the restore below degrades to the VT
150
+ * reset plus the raw-mode restore.
151
+ */
152
+ export function saveTtyState(stdin, stty = defaultSttySpawn) {
153
+ const wasRaw = stdin.isRaw === true;
154
+ const fd = stdin.fd;
155
+ const stdinFd = typeof fd === "number" ? fd : undefined;
156
+ if (stdin.isTTY !== true ||
157
+ stdinFd === undefined ||
158
+ process.platform === "win32") {
159
+ return { stdinFd, wasRaw, saved: undefined };
160
+ }
161
+ try {
162
+ return { stdinFd, wasRaw, saved: stty(["-g"], { stdinFd, capture: true }) };
163
+ }
164
+ catch {
165
+ return { stdinFd, wasRaw, saved: undefined };
166
+ }
167
+ }
168
+ /**
169
+ * rev351r2-2: single home for the termios restore. Emits the VT reset, puts
170
+ * stdin raw mode back the way it was, then re-applies the saved `stty` state
171
+ * when there is one. Every step is best effort so teardown never masks the
172
+ * session outcome.
173
+ */
174
+ export function restoreTtyState(state, stdin, doReset, stty = defaultSttySpawn) {
175
+ try {
176
+ doReset();
177
+ }
178
+ catch {
179
+ // Best effort on teardown; the caller's own outcome takes precedence.
180
+ }
181
+ try {
182
+ if (stdin.isTTY === true) {
183
+ try {
184
+ stdin.setRawMode?.(state.wasRaw);
185
+ }
186
+ catch {
187
+ // Restoring raw must never mask the caller's outcome.
188
+ }
189
+ }
190
+ }
191
+ catch {
192
+ // Best effort on teardown.
193
+ }
194
+ try {
195
+ const saved = state.saved;
196
+ if (saved?.status === 0 &&
197
+ typeof saved.stdout === "string" &&
198
+ saved.stdout.trim() &&
199
+ state.stdinFd !== undefined) {
200
+ stty([saved.stdout.trim()], {
201
+ stdinFd: state.stdinFd,
202
+ capture: false,
203
+ });
204
+ }
205
+ }
206
+ catch {
207
+ // Best effort; the VT reset above already ran.
208
+ }
209
+ }
210
+ /**
211
+ * Run `run` (usually one blocking inherit-stdio child) and restore the client
212
+ * terminal on every SYNCHRONOUS exit path (normal return, sync exception,
213
+ * child signal death observed via its spawn result). Restores termios
214
+ * (`stty -g`) and stdin raw mode like withAttachTerminalRecovery, plus the
215
+ * unconditional VT reset. Installs no signal handlers (see header): trapping
216
+ * around spawnSync would swallow and block.
217
+ */
218
+ export function withClientTerminalReset(run, reset = () => {
219
+ resetClientTerminal();
220
+ }, stdin = process.stdin) {
221
+ const state = saveTtyState(stdin);
222
+ try {
223
+ return run();
224
+ }
225
+ finally {
226
+ restoreTtyState(state, stdin, reset);
227
+ }
228
+ }
229
+ //# sourceMappingURL=terminal-reset.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal-reset.js","sourceRoot":"","sources":["../src/terminal-reset.ts"],"names":[],"mappings":"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"}
package/dist/tmux.d.ts CHANGED
@@ -63,6 +63,8 @@ export declare const STRUCTURED_LOCAL_WRAPPER = "cli=\"$0\"\nexec \"$cli\" \"$@\
63
63
  * the CLI starts, so prompt content never appears in process argv.
64
64
  */
65
65
  export declare const HEADLESS_WRAPPER = "result=\"$0\"; log=\"$1\"; prompt=\"$2\"; cli=\"$3\"; shift 3\nif [ -n \"$prompt\" ]; then\n exec 3<\"$prompt\"\n rm -f -- \"$prompt\"\n \"$cli\" \"$@\" <&3 >\"$log\" 2>&1; code=$?\nelse\n \"$cli\" \"$@\" >\"$log\" 2>&1; code=$?\nfi\nif [ \"$code\" -eq 0 ]; then state=done; else state=failed; fi\nprintf '{\"state\":\"%s\",\"exitCode\":%s}\\n' \"$state\" \"$code\" >\"$result\"";
66
+ /** Keep both terminal hosts on the same quota-aware run-once contract. */
67
+ export declare function headlessCommand(profile: string, command: string, args: ReadonlyArray<string>, result: string, log: string, prompt: string, outputFile?: string): string[];
66
68
  /**
67
69
  * The `remote run …` line that recreates this exact local session — shown when
68
70
  * the CLI exits so the user can copy-paste it. Pure, exported for tests.
@@ -309,7 +311,7 @@ export declare function localSessionAgentPanePid(session: string): number | unde
309
311
  * startLocalSession unless `refuseExisting` is set for structured launches.
310
312
  * Returns the session name + slug.
311
313
  */
312
- export declare function startHeadlessSession(profile: string, command: string, cwd: string, args: ReadonlyArray<string>, resultJson: string, outputLog: string, label: string, tmuxProfile?: string, promptInput?: string, refuseExisting?: boolean, sessionClass?: SessionClass, onCreateAttempt?: () => void): StartLocalResult;
314
+ export declare function startHeadlessSession(profile: string, command: string, cwd: string, args: ReadonlyArray<string>, resultJson: string, outputLog: string, label: string, tmuxProfile?: string, promptInput?: string, refuseExisting?: boolean, sessionClass?: SessionClass, onCreateAttempt?: () => void, outputFile?: string): StartLocalResult;
313
315
  /** Best-effort cleanup for a headless prompt that the wrapper did not consume. */
314
316
  export declare function cleanupHeadlessPromptFile(promptFile?: string): void;
315
317
  /**
@@ -599,13 +601,33 @@ export declare function readFleetProcView(): ProcView;
599
601
  /** Confine the fleet /proc walk for tests; `undefined` restores /proc. */
600
602
  export declare function setTestProcReaderRoot(root: string | undefined): void;
601
603
  export declare function procReaderDeps(): ProcReaderDeps;
604
+ export type AttachPodTmuxDeps = {
605
+ readonly spawnKubectl?: (args: ReadonlyArray<string>, env: NodeJS.ProcessEnv) => {
606
+ status: number | null;
607
+ signal: NodeJS.Signals | null;
608
+ error?: unknown;
609
+ };
610
+ readonly sleepOnce?: () => {
611
+ status: number | null;
612
+ signal: NodeJS.Signals | null;
613
+ };
614
+ readonly reset?: () => void;
615
+ readonly stderr?: Pick<NodeJS.WriteStream, "write">;
616
+ };
602
617
  /**
603
618
  * Attach the real terminal straight into the Pod's tmux session via
604
619
  * `kubectl exec -it`. The local terminal talks to tmux directly (no WS proxy),
605
620
  * so scrollback + copy-to-local-clipboard (OSC52) work natively. Requires a
606
621
  * tmux-backed session (Pod started by the tmux-wrapping agent). Blocks until
607
- * detach/exit; returns the kubectl exit status.
608
- */
609
- export declare function attachPodTmux(tunnel: TunnelConfig, sessionId: string): number;
622
+ * detach/exit; returns the kubectl exit status (128+n when killed by signal).
623
+ *
624
+ * rev351-1: each `kubectl` spawn is wrapped individually (not the whole
625
+ * reconnect loop) so a killed `kubectl exec` resets the client terminal BEFORE
626
+ * the diagnostic + sleep. A kubectl killed by signal stops the loop and
627
+ * reports 128+n — never 0 (clean detach) and never a silent reconnect, so
628
+ * Ctrl-C stops instead of looping. With no signal trapping the wrapper itself
629
+ * also dies promptly on SIGINT/SIGTERM (no blocking).
630
+ */
631
+ export declare function attachPodTmux(tunnel: TunnelConfig, sessionId: string, deps?: AttachPodTmuxDeps): number;
610
632
  export {};
611
633
  //# sourceMappingURL=tmux.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tmux.d.ts","sourceRoot":"","sources":["../src/tmux.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tmux.d.ts","sourceRoot":"","sources":["../src/tmux.ts"],"names":[],"mappings":"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"}
package/dist/tmux.js CHANGED
@@ -17,10 +17,12 @@ import { defaultLocalH2aRoot } from "./h2a-bridge.js";
17
17
  import { mkdtempSync, readFileSync, readdirSync, rmSync, statSync, unlinkSync, writeFileSync, } from "node:fs";
18
18
  import { basename, join } from "node:path";
19
19
  import { homedir, tmpdir } from "node:os";
20
+ import { fileURLToPath } from "node:url";
20
21
  import { readProcessObservation, readProcessTreeCpuMs, readProcView, readWorkerAttribution, readWorkerPid, resolveWorkerAttributionFromView, } from "./proc-cpu.js";
21
22
  import { decideRelaunchSafety, isRelaunchKillable, } from "./relaunch.js";
22
23
  import { LAUNCH_OPTION_PREFIX, buildLaunchContext, launchContextOptions, parseLaunchContext, redactSecrets, } from "./launch-context.js";
23
24
  import { SESSION_CLASS_ENV } from "./session-class.js";
25
+ import { statusFromSpawnResult, withClientTerminalReset, } from "./terminal-reset.js";
24
26
  const TMUX = "tmux";
25
27
  /** Canonical tmux session-name prefix for h2a-managed local sessions. */
26
28
  export const LOCAL_PREFIX = "h2a-";
@@ -106,6 +108,16 @@ else
106
108
  fi
107
109
  if [ "$code" -eq 0 ]; then state=done; else state=failed; fi
108
110
  printf '{"state":"%s","exitCode":%s}\\n' "$state" "$code" >"$result"`;
111
+ /** Keep both terminal hosts on the same quota-aware run-once contract. */
112
+ export function headlessCommand(profile, command, args, result, log, prompt, outputFile) {
113
+ const modelIndex = args.indexOf("--model");
114
+ const model = modelIndex < 0 ? undefined : args[modelIndex + 1];
115
+ if (profile === "agy" && model?.startsWith("claude-")) {
116
+ return [process.execPath, fileURLToPath(new URL("./agy-headless.js", import.meta.url)),
117
+ result, log, prompt, model, outputFile ?? "", command, ...args];
118
+ }
119
+ return ["/bin/bash", "-lc", HEADLESS_WRAPPER, result, log, prompt, command, ...args];
120
+ }
109
121
  /**
110
122
  * The `remote run …` line that recreates this exact local session — shown when
111
123
  * the CLI exits so the user can copy-paste it. Pure, exported for tests.
@@ -846,7 +858,7 @@ export function localSessionAgentPanePid(session) {
846
858
  * startLocalSession unless `refuseExisting` is set for structured launches.
847
859
  * Returns the session name + slug.
848
860
  */
849
- export function startHeadlessSession(profile, command, cwd, args, resultJson, outputLog, label, tmuxProfile = getTmuxProfileConfig().profile, promptInput, refuseExisting = false, sessionClass, onCreateAttempt) {
861
+ export function startHeadlessSession(profile, command, cwd, args, resultJson, outputLog, label, tmuxProfile = getTmuxProfileConfig().profile, promptInput, refuseExisting = false, sessionClass, onCreateAttempt, outputFile) {
850
862
  const slug = slugify(label);
851
863
  const name = localSessionName(slug);
852
864
  ensureScrollConfig(tmuxProfile);
@@ -883,14 +895,7 @@ export function startHeadlessSession(profile, command, cwd, args, resultJson, ou
883
895
  "-c",
884
896
  cwd,
885
897
  ...anthopicEnvUnsetCommandPrefix(),
886
- "/bin/bash",
887
- "-lc",
888
- HEADLESS_WRAPPER,
889
- resultJson,
890
- outputLog,
891
- promptFile,
892
- command,
893
- ...args,
898
+ ...headlessCommand(profile, command, args, resultJson, outputLog, promptFile, outputFile),
894
899
  ], {
895
900
  encoding: "utf8",
896
901
  stdio: ["ignore", "pipe", "inherit"],
@@ -1589,12 +1594,14 @@ export async function startH2aWindowVerified(session, cwd, commandLine, agentPan
1589
1594
  * detaches (Ctrl-b d) or the session ends. Returns the tmux exit status.
1590
1595
  */
1591
1596
  export function attachLocalSession(name) {
1592
- ensureScrollConfig();
1593
- const args = process.env.TMUX
1594
- ? ["switch-client", "-t", `=${name}`]
1595
- : ["attach-session", "-t", `=${name}`];
1596
- const r = spawnSync(TMUX, args, { stdio: "inherit" });
1597
- return r.status ?? 0;
1597
+ return withClientTerminalReset(() => {
1598
+ ensureScrollConfig();
1599
+ const args = process.env.TMUX
1600
+ ? ["switch-client", "-t", `=${name}`]
1601
+ : ["attach-session", "-t", `=${name}`];
1602
+ const r = spawnSync(TMUX, args, { stdio: "inherit" });
1603
+ return statusFromSpawnResult(r);
1604
+ });
1598
1605
  }
1599
1606
  export function currentTmuxSessionIs(name) {
1600
1607
  if (!process.env.TMUX)
@@ -1606,8 +1613,10 @@ export function currentTmuxSessionIs(name) {
1606
1613
  return r.status === 0 && r.stdout.trim() === name;
1607
1614
  }
1608
1615
  export function runLocalCliForeground(command, args) {
1609
- const r = spawnSync(command, args, { stdio: "inherit" });
1610
- return r.status ?? 0;
1616
+ return withClientTerminalReset(() => {
1617
+ const r = spawnSync(command, args, { stdio: "inherit" });
1618
+ return statusFromSpawnResult(r);
1619
+ });
1611
1620
  }
1612
1621
  /**
1613
1622
  * Kill a local tmux session. A relaunch kill carries the pane generation that
@@ -2008,9 +2017,16 @@ export function procReaderDeps() {
2008
2017
  * `kubectl exec -it`. The local terminal talks to tmux directly (no WS proxy),
2009
2018
  * so scrollback + copy-to-local-clipboard (OSC52) work natively. Requires a
2010
2019
  * tmux-backed session (Pod started by the tmux-wrapping agent). Blocks until
2011
- * detach/exit; returns the kubectl exit status.
2020
+ * detach/exit; returns the kubectl exit status (128+n when killed by signal).
2021
+ *
2022
+ * rev351-1: each `kubectl` spawn is wrapped individually (not the whole
2023
+ * reconnect loop) so a killed `kubectl exec` resets the client terminal BEFORE
2024
+ * the diagnostic + sleep. A kubectl killed by signal stops the loop and
2025
+ * reports 128+n — never 0 (clean detach) and never a silent reconnect, so
2026
+ * Ctrl-C stops instead of looping. With no signal trapping the wrapper itself
2027
+ * also dies promptly on SIGINT/SIGTERM (no blocking).
2012
2028
  */
2013
- export function attachPodTmux(tunnel, sessionId) {
2029
+ export function attachPodTmux(tunnel, sessionId, deps = {}) {
2014
2030
  const env = { ...process.env };
2015
2031
  if (tunnel.kubeconfig)
2016
2032
  env.KUBECONFIG = expandHome(tunnel.kubeconfig);
@@ -2038,6 +2054,16 @@ export function attachPodTmux(tunnel, sessionId) {
2038
2054
  "-s",
2039
2055
  POD_TMUX_SESSION,
2040
2056
  ];
2057
+ const spawnKubectl = deps.spawnKubectl ??
2058
+ ((a, e) => spawnSync("kubectl", [...a], { stdio: "inherit", env: e }));
2059
+ const sleepOnce = deps.sleepOnce ?? (() => spawnSync("sleep", ["1"], { stdio: "ignore" }));
2060
+ const stderr = deps.stderr ?? process.stderr;
2061
+ const runReset = (run) => {
2062
+ if (deps.reset !== undefined) {
2063
+ return withClientTerminalReset(run, deps.reset);
2064
+ }
2065
+ return withClientTerminalReset(run);
2066
+ };
2041
2067
  // Long-lived `kubectl exec` streams corrupt over time ("tls: bad record MAC"
2042
2068
  // / "next reader: local error" from the SPDY/WS executor): the terminal fills
2043
2069
  // with garbage and the client dies, dumping the user back to their local
@@ -2049,19 +2075,25 @@ export function attachPodTmux(tunnel, sessionId) {
2049
2075
  let quickFailures = 0;
2050
2076
  for (;;) {
2051
2077
  const startedAt = Date.now();
2052
- const r = spawnSync("kubectl", args, { stdio: "inherit", env });
2053
- const status = r.status ?? 0;
2078
+ const r = runReset(() => spawnKubectl(args, env));
2079
+ if (r.signal) {
2080
+ const status = statusFromSpawnResult(r);
2081
+ stderr.write(`[h2a] kubectl attach killed by ${String(r.signal)} (status ${status}) — not reconnecting. ` +
2082
+ `Re-run \`h2a attach ${sessionId} --exec\` once ready.\n`);
2083
+ return status;
2084
+ }
2085
+ const status = statusFromSpawnResult(r);
2054
2086
  if (status === 0) {
2055
2087
  // Clean detach (Ctrl-b d) or exit: the Pod session keeps running — tell
2056
2088
  // the user how to get back in.
2057
- process.stderr.write(`[h2a] detached from ${sessionId} — re-attach: h2a attach ${sessionId} --exec\n`);
2089
+ stderr.write(`[h2a] detached from ${sessionId} — re-attach: h2a attach ${sessionId} --exec\n`);
2058
2090
  return 0;
2059
2091
  }
2060
2092
  const ranMs = Date.now() - startedAt;
2061
2093
  if (ranMs < 3000) {
2062
2094
  quickFailures += 1;
2063
2095
  if (quickFailures >= 5) {
2064
- process.stderr.write(`[h2a] exec attach keeps failing immediately (status ${status}) — the Pod may be gone. ` +
2096
+ stderr.write(`[h2a] exec attach keeps failing immediately (status ${status}) — the Pod may be gone. ` +
2065
2097
  `Re-run \`h2a attach ${sessionId} --exec\` once it's back.\n`);
2066
2098
  return status;
2067
2099
  }
@@ -2069,9 +2101,12 @@ export function attachPodTmux(tunnel, sessionId) {
2069
2101
  else {
2070
2102
  quickFailures = 0; // a real session that ran a while then dropped
2071
2103
  }
2072
- process.stderr.write(`[h2a] exec stream dropped (status ${status} — e.g. "tls: bad record MAC" on a long kubectl exec). ` +
2104
+ stderr.write(`[h2a] exec stream dropped (status ${status} — e.g. "tls: bad record MAC" on a long kubectl exec). ` +
2073
2105
  `Your Pod session is intact; reconnecting to its tmux… (Ctrl-C to stop)\n`);
2074
- spawnSync("sleep", ["1"], { stdio: "ignore" });
2106
+ const slept = runReset(sleepOnce);
2107
+ if (slept.signal) {
2108
+ return statusFromSpawnResult(slept);
2109
+ }
2075
2110
  }
2076
2111
  }
2077
2112
  //# sourceMappingURL=tmux.js.map