@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
@@ -1,4 +1,5 @@
1
1
  import { spawn } from "node:child_process";
2
+ import { resetClientTerminal, restoreTtyState, saveTtyState, SIGNAL_NUMBERS, } from "./terminal-reset.js";
2
3
  /**
3
4
  * The local enrollment command for each profile that ships a non-interactive
4
5
  * (or terminal-driven) login. Profiles without an entry authenticate through
@@ -11,11 +12,138 @@ const PROFILE_LOGIN = {
11
12
  export function getLoginCommand(profile) {
12
13
  return PROFILE_LOGIN[profile];
13
14
  }
14
- export function runInteractiveLogin(cmd) {
15
+ /**
16
+ * rev351r2-4: how long the login waits for a forwarded parent signal to take
17
+ * effect before escalating to SIGKILL. Cooperative children die in
18
+ * milliseconds; only a signal-ignoring child ever sees the SIGKILL.
19
+ */
20
+ const LOGIN_SIGNAL_GRACE_MS = 500;
21
+ /**
22
+ * rev351-3.3: `h2a auth login` hands the REAL terminal to the CLI login flow
23
+ * over inherited stdio. Reset the VT modes and restore termios/raw on every
24
+ * exit path (clean exit, spawn error, child signal death mapped to 128+n).
25
+ * Async spawn: the event loop runs, so parent signals forward to the child,
26
+ * reset, then exit 128+n (like the native attach path).
27
+ */
28
+ export function runInteractiveLogin(cmd, deps = {}) {
29
+ const spawnImpl = deps.spawnImpl ??
30
+ ((command, args, options) => spawn(command, [...args], options));
31
+ const doReset = deps.reset ??
32
+ (() => {
33
+ resetClientTerminal(deps.stdout ?? process.stdout);
34
+ });
35
+ const stdin = deps.stdin ?? process.stdin;
36
+ // rev351r2-2: shared save/restore home (terminal-reset.ts), no local copy.
37
+ const ttyState = saveTtyState(stdin);
38
+ const restore = () => {
39
+ restoreTtyState(ttyState, stdin, doReset);
40
+ };
15
41
  return new Promise((resolve) => {
16
- const child = spawn(cmd.command, [...cmd.args], { stdio: "inherit" });
17
- child.on("error", () => resolve(127));
18
- child.on("close", (code) => resolve(code ?? 1));
42
+ let settled = false;
43
+ // rev351r2-4: set once a parent signal arrives; the child `close` below
44
+ // then exits 128+n instead of resolving the login promise, and `finish`
45
+ // stays out of the way so a late spawn error cannot resolve after exit.
46
+ let signaled = null;
47
+ let graceTimer = null;
48
+ const signalHandlers = new Map();
49
+ const uninstallSignals = () => {
50
+ for (const [signal, handler] of signalHandlers) {
51
+ process.removeListener(signal, handler);
52
+ }
53
+ signalHandlers.clear();
54
+ };
55
+ const exitAfterSignal = () => {
56
+ const pending = signaled;
57
+ if (!pending)
58
+ return;
59
+ signaled = null;
60
+ if (graceTimer) {
61
+ clearTimeout(graceTimer);
62
+ graceTimer = null;
63
+ }
64
+ try {
65
+ restore();
66
+ }
67
+ finally {
68
+ uninstallSignals();
69
+ process.exit(128 + pending.number);
70
+ }
71
+ };
72
+ const finish = (code) => {
73
+ if (settled || signaled)
74
+ return;
75
+ settled = true;
76
+ uninstallSignals();
77
+ restore();
78
+ resolve(code);
79
+ };
80
+ let child;
81
+ try {
82
+ child = spawnImpl(cmd.command, [...cmd.args], { stdio: "inherit" });
83
+ }
84
+ catch {
85
+ finish(127);
86
+ return;
87
+ }
88
+ const childEvents = child;
89
+ for (const signal of ["SIGHUP", "SIGINT", "SIGQUIT", "SIGTERM"]) {
90
+ const handler = () => {
91
+ if (signaled) {
92
+ // Second signal during the grace wait: escalate and leave at once.
93
+ if (graceTimer) {
94
+ clearTimeout(graceTimer);
95
+ graceTimer = null;
96
+ }
97
+ try {
98
+ child?.kill?.("SIGKILL");
99
+ }
100
+ catch {
101
+ // Best effort escalation before exiting.
102
+ }
103
+ exitAfterSignal();
104
+ return;
105
+ }
106
+ signaled = { number: SIGNAL_NUMBERS[signal] ?? 0 };
107
+ try {
108
+ child?.kill?.(signal);
109
+ }
110
+ catch {
111
+ // Best effort forwarding before waiting for the child.
112
+ }
113
+ if (!signaled)
114
+ return;
115
+ // rev351r2-4: wait for the forwarded signal to take effect instead of
116
+ // exiting at once — a child that ignores it (trap '' TERM) would
117
+ // otherwise survive orphaned and scribble after the prompt returns.
118
+ graceTimer = setTimeout(() => {
119
+ graceTimer = null;
120
+ try {
121
+ child?.kill?.("SIGKILL");
122
+ }
123
+ catch {
124
+ // Best effort escalation; the close below exits.
125
+ }
126
+ // A real child always reports close after SIGKILL; never hang the
127
+ // login if it somehow does not.
128
+ graceTimer = setTimeout(exitAfterSignal, LOGIN_SIGNAL_GRACE_MS);
129
+ graceTimer.unref?.();
130
+ }, LOGIN_SIGNAL_GRACE_MS);
131
+ graceTimer.unref?.();
132
+ };
133
+ signalHandlers.set(signal, handler);
134
+ process.on(signal, handler);
135
+ }
136
+ childEvents.on("error", () => finish(127));
137
+ childEvents.on("close", (code, signal) => {
138
+ if (signaled) {
139
+ exitAfterSignal();
140
+ return;
141
+ }
142
+ if (signal)
143
+ finish(128 + (SIGNAL_NUMBERS[signal] ?? 0));
144
+ else
145
+ finish(code ?? 1);
146
+ });
19
147
  });
20
148
  }
21
149
  //# sourceMappingURL=auth-login.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"auth-login.js","sourceRoot":"","sources":["../src/auth-login.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAS3C;;;;GAIG;AACH,MAAM,aAAa,GAA8C;IAC/D,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE;IAC5C,MAAM,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE;CACvD,CAAC;AAEF,MAAM,UAAU,eAAe,CAAC,OAAmB;IACjD,OAAO,aAAa,CAAC,OAAO,CAAC,CAAC;AAChC,CAAC;AAID,MAAM,UAAU,mBAAmB,CAAC,GAAiB;IACnD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QACtE,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;QACtC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"auth-login.js","sourceRoot":"","sources":["../src/auth-login.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,8 @@ export type CentralMcpPreparation = Readonly<{
6
6
  status: "degraded";
7
7
  reason: string;
8
8
  }>;
9
+ /** Raw (unstructured) central MCP server output. Read by `h2a logs`, rotated at spawn. */
10
+ export declare function resolveCentralMcpLogPath(): string;
9
11
  /**
10
12
  * Ensure the persisted central endpoint is served. A live matching marker is
11
13
  * reused; dead registrations are reclaimed by the existing foreground serve
@@ -1 +1 @@
1
- {"version":3,"file":"central-mcp.d.ts","sourceRoot":"","sources":["../src/central-mcp.ts"],"names":[],"mappings":"AAuDA,MAAM,MAAM,qBAAqB,GAC7B,QAAQ,CAAC;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,GACrE,QAAQ,CAAC;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAkFrD;;;;GAIG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,GAAE,QAAQ,CAAC;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAM,GACxC,OAAO,CAAC,QAAQ,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,SAAS,CAAC,CA8CzE;AA+ED,mFAAmF;AACnF,wBAAsB,0BAA0B,CAAC,OAAO,EAAE,QAAQ,CAAC;IACjE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;CACb,CAAC,GAAG,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,CAiC9C;AAED,2FAA2F;AAC3F,wBAAsB,2BAA2B,CAC/C,OAAO,GAAE,QAAQ,CAAC;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAM,GACxC,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,CAU5C"}
1
+ {"version":3,"file":"central-mcp.d.ts","sourceRoot":"","sources":["../src/central-mcp.ts"],"names":[],"mappings":"AA4DA,MAAM,MAAM,qBAAqB,GAC7B,QAAQ,CAAC;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,GACrE,QAAQ,CAAC;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAuDrD,0FAA0F;AAC1F,wBAAgB,wBAAwB,IAAI,MAAM,CAEjD;AAuFD;;;;GAIG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,GAAE,QAAQ,CAAC;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAM,GACxC,OAAO,CAAC,QAAQ,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,SAAS,CAAC,CA6DzE;AA+ED,mFAAmF;AACnF,wBAAsB,0BAA0B,CAAC,OAAO,EAAE,QAAQ,CAAC;IACjE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;CACb,CAAC,GAAG,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,CAiC9C;AAED,2FAA2F;AAC3F,wBAAsB,2BAA2B,CAC/C,OAAO,GAAE,QAAQ,CAAC;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAM,GACxC,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,CAU5C"}
@@ -5,10 +5,11 @@
5
5
  * existing foreground command as a detached child when necessary.
6
6
  */
7
7
  import { spawn } from "node:child_process";
8
- import { chmodSync, closeSync, existsSync, mkdirSync, openSync, readFileSync, unlinkSync, writeFileSync, } from "node:fs";
8
+ import { chmodSync, closeSync, constants, existsSync, mkdirSync, openSync, readFileSync, readSync, renameSync, statSync, unlinkSync, writeFileSync, } from "node:fs";
9
9
  import { homedir } from "node:os";
10
10
  import { dirname, join } from "node:path";
11
11
  import { getH2aConfig, resolveConfigPath, setH2aConfig } from "./config.js";
12
+ import { appendCrashLog, MAX_CRASH_LOG_BYTES } from "./crash-log.js";
12
13
  const CENTRAL_PORT_BASE = 47_000;
13
14
  const CENTRAL_PORT_SPAN = 10_000;
14
15
  const CENTRAL_START_TIMEOUT_MS = 10_000;
@@ -57,17 +58,84 @@ function configuredCentralEndpoint() {
57
58
  });
58
59
  return endpoint;
59
60
  }
61
+ /** Raw (unstructured) central MCP server output. Read by `h2a logs`, rotated at spawn. */
62
+ export function resolveCentralMcpLogPath() {
63
+ return join(dirname(resolveConfigPath()), "mcp-central.log");
64
+ }
65
+ /**
66
+ * Cap a rotated raw log to its last bound bytes, line-aligned, mode
67
+ * preserved. Reads the tail window positionally — the (possibly huge)
68
+ * rotation is never loaded whole.
69
+ */
70
+ function boundRawLogTail(path) {
71
+ let fd;
72
+ try {
73
+ const size = statSync(path).size;
74
+ if (size <= MAX_CRASH_LOG_BYTES)
75
+ return;
76
+ fd = openSync(path, constants.O_RDONLY | constants.O_NOFOLLOW);
77
+ const tail = Buffer.alloc(MAX_CRASH_LOG_BYTES);
78
+ const start = size - MAX_CRASH_LOG_BYTES;
79
+ for (let offset = 0; offset < tail.length;) {
80
+ const read = readSync(fd, tail, offset, tail.length - offset, start + offset);
81
+ if (read <= 0)
82
+ break;
83
+ offset += read;
84
+ }
85
+ try {
86
+ closeSync(fd);
87
+ }
88
+ catch {
89
+ /* fall through to the truncation below */
90
+ }
91
+ fd = undefined;
92
+ const cut = tail.indexOf(0x0a);
93
+ writeFileSync(path, cut < 0 ? tail : tail.subarray(cut + 1));
94
+ chmodSync(path, 0o600);
95
+ }
96
+ catch {
97
+ /* best-effort: bounding never blocks the spawn below */
98
+ }
99
+ finally {
100
+ if (fd !== undefined) {
101
+ try {
102
+ closeSync(fd);
103
+ }
104
+ catch {
105
+ /* bounding never throws */
106
+ }
107
+ }
108
+ }
109
+ }
60
110
  function centralLogFile() {
61
- const path = join(dirname(resolveConfigPath()), "mcp-central.log");
111
+ const path = resolveCentralMcpLogPath();
62
112
  mkdirSync(dirname(path), { recursive: true });
113
+ // Bounded at spawn: rotate the raw server output instead of growing it
114
+ // forever, and cap the rotation so a long-running server cannot leave an
115
+ // unbounded `.1` behind either. Output written between spawns is still
116
+ // unbounded (only the server could pace that); `h2a logs` shows its tail.
117
+ try {
118
+ if (existsSync(path) && statSync(path).size >= MAX_CRASH_LOG_BYTES) {
119
+ try {
120
+ unlinkSync(`${path}.1`);
121
+ }
122
+ catch { /* missing rotation is fine */ }
123
+ renameSync(path, `${path}.1`);
124
+ boundRawLogTail(`${path}.1`);
125
+ }
126
+ }
127
+ catch { /* rotation is best-effort; the spawn below still proceeds */ }
63
128
  return path;
64
129
  }
65
130
  async function waitForCentralStart(core, endpoint, spawnFailure) {
66
131
  const deadline = Date.now() + CENTRAL_START_TIMEOUT_MS;
67
132
  while (Date.now() < deadline) {
68
133
  const failure = spawnFailure();
69
- if (failure)
134
+ if (failure) {
135
+ // The server child never started: a startup failure, not a child exit.
136
+ appendCrashLog("mcp-server", { event: "startupError", reason: "spawn-failed", detail: failure.message });
70
137
  throw failure;
138
+ }
71
139
  const ping = await core.centralMcpPing(endpoint, CENTRAL_START_POLL_MS);
72
140
  if (ping.kind === "generation") {
73
141
  const marker = core.readCentralMcpMarker();
@@ -77,6 +145,9 @@ async function waitForCentralStart(core, endpoint, spawnFailure) {
77
145
  }
78
146
  await delay(CENTRAL_START_POLL_MS);
79
147
  }
148
+ // No child exited: the launcher gave up waiting, so `exit` (not
149
+ // `childExit`) keeps the record honest.
150
+ appendCrashLog("mcp-server", { event: "exit", reason: "readiness-timeout", detail: endpoint });
80
151
  throw new Error(`central MCP did not become ready at ${endpoint} within ${CENTRAL_START_TIMEOUT_MS}ms`);
81
152
  }
82
153
  /**
@@ -93,12 +164,14 @@ export async function ensureCentralMcp(options = {}) {
93
164
  if (marker) {
94
165
  const ping = await core.centralMcpPing(marker.endpoint);
95
166
  if (ping.kind === "ambiguous") {
167
+ appendCrashLog("mcp-server", { event: "refusal", instanceId: marker.generation, reason: "ambiguous-liveness", detail: marker.endpoint });
96
168
  throw new Error(`central MCP liveness at ${marker.endpoint} is ambiguous; refusing to start another server`);
97
169
  }
98
170
  if (ping.kind === "generation") {
99
171
  if (marker.endpoint === endpoint && ping.generation === marker.generation) {
100
172
  return { endpoint, generation: marker.generation };
101
173
  }
174
+ appendCrashLog("mcp-server", { event: "refusal", instanceId: marker.generation, reason: "marker-listener-mismatch", detail: marker.endpoint });
102
175
  throw new Error(`central MCP marker/listener mismatch (${marker.endpoint}, generation ${marker.generation}); refusing to replace a live server`);
103
176
  }
104
177
  }
@@ -119,6 +192,20 @@ export async function ensureCentralMcp(options = {}) {
119
192
  child.once("error", (error) => {
120
193
  spawnError = error;
121
194
  });
195
+ // A post-readiness crash leaves a structured record while this launcher
196
+ // is still alive. (Once the launcher exits, only the raw server output
197
+ // in mcp-central.log witnesses a later death — see `h2a logs`.)
198
+ child.once("exit", (code, signal) => {
199
+ if (code === 0 || (code === null && signal === null))
200
+ return;
201
+ appendCrashLog("mcp-server", {
202
+ event: "childExit",
203
+ reason: "server-exit",
204
+ ...(typeof code === "number" ? { exitCode: code } : {}),
205
+ ...(typeof signal === "string" && signal.length > 0 ? { signal } : {}),
206
+ detail: `central MCP server exited${typeof signal === "string" && signal.length > 0 ? ` on ${signal}` : ""}`,
207
+ });
208
+ });
122
209
  child.unref();
123
210
  }
124
211
  finally {
@@ -1 +1 @@
1
- {"version":3,"file":"central-mcp.js","sourceRoot":"","sources":["../src/central-mcp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"central-mcp.js","sourceRoot":"","sources":["../src/central-mcp.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ import type { ClaudeCodeAccessProjection } from "./claude-seat-mesh-contract.js";
2
+ export interface ClaudeRunSandbox {
3
+ readonly runId: string;
4
+ readonly runDir: string;
5
+ readonly homeDir: string;
6
+ readonly configDir: string;
7
+ readonly cwdDir: string;
8
+ readonly tmpDir: string;
9
+ readonly credentialPath: string;
10
+ readonly settingsPath: string;
11
+ readonly mcpConfigPath: string;
12
+ }
13
+ export declare const ALLOWED_ENV_VARS: readonly ["PATH", "LANG", "LC_ALL", "HOME", "TMPDIR", "XDG_CONFIG_HOME", "CLAUDE_CONFIG_DIR"];
14
+ /**
15
+ * Resolve the dedicated private runtime root outside workspaces and backups.
16
+ * Only per-user bases are candidates (XDG_RUNTIME_DIR, then /run/user/<euid>
17
+ * on Linux). Shared temporary roots (/dev/shm, tmpdir()) are never used;
18
+ * when no per-user base is available resolution fails closed.
19
+ */
20
+ export declare function resolvePrivateRuntimeRoot(customRoot?: string): string;
21
+ /**
22
+ * Creates isolated 0700 run/config/home/cwd directories and an exclusive 0600 .credentials.json.
23
+ * Writes access token only; real provider expiry preserved; NO refresh token.
24
+ */
25
+ export declare function createClaudeRunSandbox(options: {
26
+ readonly access: ClaudeCodeAccessProjection;
27
+ readonly runId?: string;
28
+ readonly rootDir?: string;
29
+ }): ClaudeRunSandbox;
30
+ /**
31
+ * Record child PID and start time in the run's run-meta.json so orphan sweeps
32
+ * can identify and reap detached child process trees.
33
+ */
34
+ export declare function recordChildPidInSandbox(sandbox: ClaudeRunSandbox, childPid: number): void;
35
+ /**
36
+ * Construct an environment allowlist; strips all ambient auth, proxies, traces, and overrides.
37
+ * PATH is never inherited: a fixed minimal value (plus the binary directory
38
+ * when known) replaces whatever the parent carried.
39
+ */
40
+ export declare function buildIsolatedEnvironment(sandbox: ClaudeRunSandbox, baseEnv?: NodeJS.ProcessEnv, options?: {
41
+ readonly binaryPath?: string;
42
+ }): Record<string, string>;
43
+ /**
44
+ * Verify that the child process did not rewrite credentials, change auth, or write back a refresh token.
45
+ */
46
+ export declare function verifyCredentialNotRewritten(sandbox: ClaudeRunSandbox, expectedAccess: ClaudeCodeAccessProjection): boolean;
47
+ /**
48
+ * Content-blind cleanup of the dedicated sandbox directory without following symlinks.
49
+ * Throws a static error when the run directory persists: callers must block
50
+ * any success terminal on cleanup failure (no success without custody release).
51
+ */
52
+ export declare function cleanClaudeRunSandbox(sandbox: ClaudeRunSandbox): void;
53
+ //# sourceMappingURL=claude-code-cli-isolation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-code-cli-isolation.d.ts","sourceRoot":"","sources":["../src/claude-code-cli-isolation.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,gCAAgC,CAAC;AAEjF,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC;AAED,eAAO,MAAM,gBAAgB,+FAQnB,CAAC;AA8DX;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CA0BrE;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE;IAC9C,QAAQ,CAAC,MAAM,EAAE,0BAA0B,CAAC;IAC5C,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B,GAAG,gBAAgB,CA4EnB;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAiBzF;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,gBAAgB,EACzB,OAAO,GAAE,MAAM,CAAC,UAAwB,EACxC,OAAO,GAAE;IAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAO,GAC7C,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAgBxB;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,gBAAgB,EACzB,cAAc,EAAE,0BAA0B,GACzC,OAAO,CA0BT;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI,CAWrE"}