borgmcp 5.1.2 → 5.3.0

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 (71) hide show
  1. package/dist/agent-runtime.d.ts +2 -4
  2. package/dist/agent-runtime.d.ts.map +1 -1
  3. package/dist/agent-runtime.js +3 -5
  4. package/dist/agent-runtime.js.map +1 -1
  5. package/dist/assimilate-cmd.d.ts +1 -11
  6. package/dist/assimilate-cmd.d.ts.map +1 -1
  7. package/dist/assimilate-cmd.js +37 -48
  8. package/dist/assimilate-cmd.js.map +1 -1
  9. package/dist/assimilate-deps.d.ts.map +1 -1
  10. package/dist/assimilate-deps.js +1 -4
  11. package/dist/assimilate-deps.js.map +1 -1
  12. package/dist/claude.d.ts.map +1 -1
  13. package/dist/claude.js +36 -77
  14. package/dist/claude.js.map +1 -1
  15. package/dist/codex-app-server.d.ts +4 -6
  16. package/dist/codex-app-server.d.ts.map +1 -1
  17. package/dist/codex-app-server.js +4 -25
  18. package/dist/codex-app-server.js.map +1 -1
  19. package/dist/codex-app-wake.d.ts +8 -10
  20. package/dist/codex-app-wake.d.ts.map +1 -1
  21. package/dist/codex-app-wake.js +49 -66
  22. package/dist/codex-app-wake.js.map +1 -1
  23. package/dist/codex-launch.d.ts +15 -24
  24. package/dist/codex-launch.d.ts.map +1 -1
  25. package/dist/codex-launch.js +29 -55
  26. package/dist/codex-launch.js.map +1 -1
  27. package/dist/codex-remote.d.ts +15 -8
  28. package/dist/codex-remote.d.ts.map +1 -1
  29. package/dist/codex-remote.js +71 -70
  30. package/dist/codex-remote.js.map +1 -1
  31. package/dist/codex-wake-resolve.d.ts +12 -31
  32. package/dist/codex-wake-resolve.d.ts.map +1 -1
  33. package/dist/codex-wake-resolve.js +21 -38
  34. package/dist/codex-wake-resolve.js.map +1 -1
  35. package/dist/config-utils.js +2 -2
  36. package/dist/config-utils.js.map +1 -1
  37. package/dist/cubes.d.ts +0 -17
  38. package/dist/cubes.d.ts.map +1 -1
  39. package/dist/cubes.js +0 -81
  40. package/dist/cubes.js.map +1 -1
  41. package/dist/index.d.ts.map +1 -1
  42. package/dist/index.js +3 -1
  43. package/dist/index.js.map +1 -1
  44. package/dist/log-stream.d.ts.map +1 -1
  45. package/dist/log-stream.js +4 -1
  46. package/dist/log-stream.js.map +1 -1
  47. package/dist/regen-format.d.ts +3 -1
  48. package/dist/regen-format.d.ts.map +1 -1
  49. package/dist/regen-format.js +24 -4
  50. package/dist/regen-format.js.map +1 -1
  51. package/dist/remote-client.d.ts +4 -3
  52. package/dist/remote-client.d.ts.map +1 -1
  53. package/dist/remote-client.js +9 -3
  54. package/dist/remote-client.js.map +1 -1
  55. package/docs/RELEASING.md +2 -2
  56. package/package.json +2 -2
  57. package/src/agent-runtime.ts +3 -5
  58. package/src/assimilate-cmd.ts +35 -58
  59. package/src/assimilate-deps.ts +0 -4
  60. package/src/claude.ts +34 -81
  61. package/src/codex-app-server.ts +8 -25
  62. package/src/codex-app-wake.ts +46 -73
  63. package/src/codex-launch.ts +43 -76
  64. package/src/codex-remote.ts +90 -82
  65. package/src/codex-wake-resolve.ts +26 -47
  66. package/src/config-utils.ts +2 -2
  67. package/src/cubes.ts +2 -100
  68. package/src/index.ts +3 -1
  69. package/src/log-stream.ts +4 -1
  70. package/src/regen-format.ts +28 -6
  71. package/src/remote-client.ts +14 -6
@@ -8,7 +8,7 @@ import { codexAppServerSocketConfigArgs } from './codex-wake-resolve.js';
8
8
  import { BORG_AGENT_KIND_ENV, BORG_CODEX_REMOTE_WAKE_ENV, codexAgentKindConfigArgs, codexRemoteWakeConfigArgs, codexStateRootConfigArgs, } from './agent-runtime.js';
9
9
  import { borgConfigRoot } from './private-root.js';
10
10
  export const DEFAULT_CODEX_REMOTE_DIR = join(borgConfigRoot(), 'codex-remote');
11
- const DEFAULT_CODEX_REMOTE_READY_TIMEOUT_MS = 30_000;
11
+ const DEFAULT_CODEX_REMOTE_READY_TIMEOUT_MS = 60_000;
12
12
  const MAX_CODEX_APP_SERVER_STDERR_CHARS = 16_384;
13
13
  /**
14
14
  * Keep app-server failure details useful without copying credentials or local
@@ -173,8 +173,8 @@ function pruneStaleSockets(runtimeDir, isAlive) {
173
173
  }
174
174
  }
175
175
  }
176
- function failLoud(reason) {
177
- return { args: [], env: {}, warning: reason };
176
+ function refuse(reason, stderr = '') {
177
+ return { ready: false, reason, stderr: sanitizeCodexDiagnostic(stderr).trim() };
178
178
  }
179
179
  function formatExitReason(diagnostics) {
180
180
  if (diagnostics.error)
@@ -185,21 +185,17 @@ function formatExitReason(diagnostics) {
185
185
  return `signal ${diagnostics.signal}`;
186
186
  return 'unknown exit status';
187
187
  }
188
- function formatStderr(stderr) {
189
- const trimmed = sanitizeCodexDiagnostic(stderr).trim();
190
- return trimmed ? ` Stderr: ${trimmed}` : '';
191
- }
192
188
  /**
193
189
  * Start a borg-owned per-launch Codex app-server, probe it for readiness, and
194
- * return the `--remote` launch args + an owned handle (or a fail-loud warning).
195
- * Async + lifecycle-owning: the caller MUST call `result.server?.cleanup()` on
196
- * TUI exit.
190
+ * return the `--remote` launch args + an owned handle, or a typed refusal after
191
+ * one retry. The caller MUST call `result.server.cleanup()` on TUI exit.
197
192
  */
198
193
  export async function prepareCodexRemoteLaunch(deps) {
199
194
  const runtimeDir = deps.runtimeDir ?? DEFAULT_CODEX_REMOTE_DIR;
200
195
  const isAlive = deps.isAlive ?? defaultIsAlive;
201
196
  const readyTimeoutMs = deps.readyTimeoutMs ?? DEFAULT_CODEX_REMOTE_READY_TIMEOUT_MS;
202
197
  const pollIntervalMs = deps.pollIntervalMs ?? 250;
198
+ const now = deps.now ?? Date.now;
203
199
  // 1. 0700 owned dir + prune crashed prior sockets (concurrent-safe via pid liveness).
204
200
  try {
205
201
  mkdirSync(runtimeDir, { recursive: true, mode: 0o700 });
@@ -207,80 +203,85 @@ export async function prepareCodexRemoteLaunch(deps) {
207
203
  pruneStaleSockets(runtimeDir, isAlive);
208
204
  }
209
205
  catch (err) {
210
- return failLoud(`Codex remote-wake disabled: could not prepare ${runtimeDir} (${err?.message ?? err}); run borg_regen manually.`);
211
- }
212
- // 2. unique, non-predictable socket path inside the owned dir.
213
- const id = (deps.socketId ?? (() => randomBytes(16).toString('hex')))();
214
- const socketPath = join(runtimeDir, `${id}.sock`);
215
- const pidPath = join(runtimeDir, `${id}.pid`);
216
- // 3. spawn the long-lived app-server.
217
- let child;
218
- try {
219
- child = deps.spawnAppServer(socketPath);
220
- }
221
- catch (err) {
222
- safeRm(socketPath);
223
- return failLoud(`Codex remote-wake disabled: could not start \`codex app-server\` (${sanitizeCodexDiagnostic(String(err?.message ?? err))}) — ` +
224
- `confirm the Codex executable is installed and available on PATH. ` +
225
- `Remote wake is unavailable for this session; run borg_regen manually to catch up.`);
206
+ return refuse(`could not prepare the Codex app-server runtime directory (${sanitizeCodexDiagnostic(String(err?.message ?? err))})`);
226
207
  }
227
- if (child.pid != null) {
208
+ let lastRefusal = refuse('the Codex app-server did not become ready');
209
+ for (let launchAttempt = 0; launchAttempt < 2; launchAttempt += 1) {
210
+ // Each retry owns a fresh, non-predictable socket and pidfile.
211
+ const id = (deps.socketId ?? (() => randomBytes(16).toString('hex')))();
212
+ const socketPath = join(runtimeDir, `${id}.sock`);
213
+ const pidPath = join(runtimeDir, `${id}.pid`);
214
+ let child;
228
215
  try {
229
- writeFileSync(pidPath, String(child.pid));
216
+ child = deps.spawnAppServer(socketPath);
230
217
  }
231
- catch {
232
- // pidfile is only for stale-prune; launch still proceeds.
233
- }
234
- }
235
- const cleanup = () => {
236
- try {
237
- child.kill();
238
- }
239
- catch {
240
- // best-effort
241
- }
242
- safeRm(socketPath);
243
- safeRm(pidPath);
244
- };
245
- // 4. readiness via a real protocol round-trip — bounded attempts (no clock dep).
246
- const attempts = Math.max(1, Math.ceil(readyTimeoutMs / pollIntervalMs));
247
- let ready = false;
248
- let exitDiagnostics;
249
- for (let i = 0; i < attempts && !ready; i++) {
250
- try {
251
- ready = await deps.probeReady(socketPath);
218
+ catch (err) {
219
+ safeRm(socketPath);
220
+ safeRm(pidPath);
221
+ lastRefusal = refuse(`could not start \`codex app-server\` (${sanitizeCodexDiagnostic(String(err?.message ?? err))}); confirm the Codex executable is installed and available on PATH`);
222
+ continue;
252
223
  }
253
- catch {
254
- ready = false;
224
+ if (child.pid != null) {
225
+ try {
226
+ writeFileSync(pidPath, String(child.pid));
227
+ }
228
+ catch {
229
+ // pidfile is only for stale-prune; launch still proceeds.
230
+ }
255
231
  }
256
- if (!ready) {
232
+ const cleanup = () => {
233
+ try {
234
+ child.kill();
235
+ }
236
+ catch {
237
+ // best-effort
238
+ }
239
+ safeRm(socketPath);
240
+ safeRm(pidPath);
241
+ };
242
+ // Readiness is bounded by elapsed wall time, so slow protocol probes count
243
+ // against the same cold-start budget as the poll sleeps.
244
+ const startedAt = now();
245
+ let ready = false;
246
+ let exitDiagnostics;
247
+ for (;;) {
248
+ try {
249
+ ready = await deps.probeReady(socketPath);
250
+ }
251
+ catch {
252
+ ready = false;
253
+ }
254
+ if (ready)
255
+ break;
257
256
  const diagnostics = child.diagnostics?.();
258
257
  if (diagnostics?.exited) {
259
258
  exitDiagnostics = diagnostics;
260
259
  break;
261
260
  }
261
+ const remainingMs = readyTimeoutMs - (now() - startedAt);
262
+ if (remainingMs <= 0)
263
+ break;
264
+ await deps.sleep(Math.min(pollIntervalMs, remainingMs));
262
265
  }
263
- if (!ready && i < attempts - 1)
264
- await deps.sleep(pollIntervalMs);
265
- }
266
- if (!ready) {
267
266
  const diagnostics = exitDiagnostics ?? child.diagnostics?.();
268
- cleanup();
269
- if (diagnostics?.exited) {
270
- return failLoud(`Codex remote-wake disabled: \`codex app-server\` exited before becoming ready ` +
271
- `(${formatExitReason(diagnostics)}).${formatStderr(diagnostics.stderr)} ` +
272
- `Run borg_regen manually to catch up.`);
267
+ if (!ready) {
268
+ cleanup();
269
+ if (diagnostics?.exited) {
270
+ lastRefusal = refuse(`\`codex app-server\` exited before becoming ready (${formatExitReason(diagnostics)})`, diagnostics.stderr);
271
+ }
272
+ else {
273
+ lastRefusal = refuse(`\`codex app-server\` remained running but did not become ready within ${readyTimeoutMs}ms`, diagnostics?.stderr ?? '');
274
+ }
275
+ continue;
273
276
  }
274
- return failLoud(`Codex remote-wake disabled: \`codex app-server\` remained running but did not become ready ` +
275
- `at ${sanitizeCodexDiagnostic(socketPath)} within ${readyTimeoutMs}ms.${formatStderr(diagnostics?.stderr ?? '')} ` +
276
- `Run borg_regen manually to catch up.`);
277
+ return {
278
+ ready: true,
279
+ args: ['--remote', `unix://${socketPath}`],
280
+ env: { [BORG_CODEX_REMOTE_WAKE_ENV]: '1' },
281
+ server: { pid: child.pid, socketPath, cleanup },
282
+ };
277
283
  }
278
- // 5. ready → owned remote launch.
279
- return {
280
- args: ['--remote', `unix://${socketPath}`],
281
- env: { [BORG_CODEX_REMOTE_WAKE_ENV]: '1' },
282
- server: { pid: child.pid, socketPath, cleanup },
283
- };
284
+ return lastRefusal;
284
285
  }
285
286
  /**
286
287
  * Production deps for prepareCodexRemoteLaunch — spawn the real `codex
@@ -1 +1 @@
1
- {"version":3,"file":"codex-remote.js","sourceRoot":"","sources":["../src/codex-remote.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"codex-remote.js","sourceRoot":"","sources":["../src/codex-remote.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,9 @@
1
1
  /**
2
2
  * gh#855 — pure helpers for FRESH codex wake-target re-resolution.
3
3
  *
4
- * Root cause of codex deaf-when-idle: the wake target (socket + thread) was
5
- * resolved once at launch and never refreshed, so a missed/stale launch probe
6
- * left the drone permanently deaf. Phase 1 makes the waking borg-mcp child
7
- * authoritative about its OWN live app-server socket — the socket is injected
4
+ * Root cause of codex deaf-when-idle: stale thread selection could leave the
5
+ * drone permanently deaf. The waking borg-mcp child is authoritative about its
6
+ * OWN live app-server socket the socket is injected
8
7
  * into the child's pinned env at spawn (codex-remote.ts, via the #851 `-c
9
8
  * mcp_servers.borg.env.X` channel) — and re-resolves the loaded thread FRESH on
10
9
  * every wake (loadedThreadIds is a re-runnable RPC).
@@ -13,7 +12,7 @@
13
12
  */
14
13
  /** Pinned-env var carrying THIS drone's live app-server socket (set at spawn). */
15
14
  export declare const BORG_CODEX_APP_SERVER_SOCKET_ENV = "BORG_CODEX_APP_SERVER_SOCKET";
16
- /** The live app-server socket for this borg-mcp child, or null (un-upgraded launch). */
15
+ /** The live app-server socket for this borg-mcp child. */
17
16
  export declare function codexAppServerSocketFromEnv(env?: NodeJS.ProcessEnv): string | null;
18
17
  /**
19
18
  * The per-launch codex config override that pins THIS app-server's live socket
@@ -28,44 +27,26 @@ export interface CodexThreadInfo {
28
27
  id: string;
29
28
  cwd?: string;
30
29
  updatedAt?: number;
30
+ source?: unknown;
31
+ ephemeral?: boolean;
32
+ threadSource?: string;
33
+ preview?: string;
34
+ turns?: unknown[];
31
35
  }
36
+ export declare function isCodexSubagentSource(source: unknown): boolean;
32
37
  /**
33
38
  * Pick the loaded thread to wake on the live socket. Each borg-owned app-server
34
39
  * is fresh-per-launch / single-session, so the common case is exactly one loaded
35
40
  * thread. When more than one is loaded, prefer the thread whose cwd matches this
36
41
  * drone's working directory (sibling worktrees have distinct cwds), then the
37
- * newest by updatedAt always deterministic. No loaded thread null (no wake
42
+ * newest by updatedAt, without preferring an empty thread over one with turns.
43
+ * System, ephemeral and subagent threads are never candidates. No loaded thread → null (no wake
38
44
  * this cycle; the next wake retries, so a transient empty list never causes
39
45
  * permanent deafness).
40
46
  */
41
47
  export declare function pickFreshThread(threads: CodexThreadInfo[], opts: {
42
48
  cwd: string;
43
49
  }): string | null;
44
- /**
45
- * Pure prune: drop wake-target entries whose app-server socket is positively
46
- * dead (liveness === false), so the file self-heals. Keeps alive (true) and
47
- * indeterminate (null) entries — false-deaf-avoidance, mirroring
48
- * checkCodexBridgeHealthy's tri-state. Returns the surviving map + whether
49
- * anything changed (so the caller writes only on change).
50
- */
51
- export declare function pruneDeadWakeTargets<T extends {
52
- socketPath: string;
53
- }>(targets: Record<string, T>, socketLiveness: (socketPath: string) => boolean | null): {
54
- targets: Record<string, T>;
55
- changed: boolean;
56
- };
57
- /**
58
- * Whether the freshly-resolved target differs from what's already recorded —
59
- * so the self-healing cache write happens only on change (no file thrash on a
60
- * busy cube re-resolving the same socket+thread every wake).
61
- */
62
- export declare function wakeTargetChanged(existing: {
63
- socketPath: string;
64
- threadId: string;
65
- } | null, fresh: {
66
- socketPath: string;
67
- threadId: string;
68
- }): boolean;
69
50
  /** Base backoff for the first retry of a dropped/deferred wake. */
70
51
  export declare const WAKE_RETRY_BASE_MS = 5000;
71
52
  /** Backoff ceiling — a wedged thread is retried at most this often. */
@@ -1 +1 @@
1
- {"version":3,"file":"codex-wake-resolve.d.ts","sourceRoot":"","sources":["../src/codex-wake-resolve.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,kFAAkF;AAClF,eAAO,MAAM,gCAAgC,iCAAiC,CAAC;AAE/E,wFAAwF;AACxF,wBAAgB,2BAA2B,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,GAAG,IAAI,CAG/F;AAED;;;;;;;GAOG;AACH,wBAAgB,8BAA8B,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAE3E;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,eAAe,EAAE,EAAE,IAAI,EAAE;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,GAAG,IAAI,CAUhG;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,SAAS;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,EACnE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EAC1B,cAAc,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,GAAG,IAAI,GACrD;IAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAWlD;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,EACzD,KAAK,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAC9C,OAAO,CAIT;AAID,mEAAmE;AACnE,eAAO,MAAM,kBAAkB,OAAQ,CAAC;AACxC,uEAAuE;AACvE,eAAO,MAAM,iBAAiB,QAAS,CAAC;AACxC;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,QAAc,CAAC;AACjD;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,OAAO,CAAC;AAE5C;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,SAAI,GAAG,MAAM,CAIvE;AAED,wFAAwF;AACxF,wBAAgB,gBAAgB,CAC9B,eAAe,EAAE,MAAM,EACvB,GAAG,EAAE,MAAM,EACX,QAAQ,SAAwB,GAC/B,OAAO,CAET;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,eAAe,EAAE,MAAM,GAAG,IAAI,EAC9B,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,GAChB,OAAO,CAGT"}
1
+ {"version":3,"file":"codex-wake-resolve.d.ts","sourceRoot":"","sources":["../src/codex-wake-resolve.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,kFAAkF;AAClF,eAAO,MAAM,gCAAgC,iCAAiC,CAAC;AAE/E,0DAA0D;AAC1D,wBAAgB,2BAA2B,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,GAAG,IAAI,CAG/F;AAED;;;;;;;GAOG;AACH,wBAAgB,8BAA8B,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAE3E;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC;CACnB;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAG9D;AAED;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,eAAe,EAAE,EAAE,IAAI,EAAE;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,GAAG,IAAI,CAgBhG;AAID,mEAAmE;AACnE,eAAO,MAAM,kBAAkB,OAAQ,CAAC;AACxC,uEAAuE;AACvE,eAAO,MAAM,iBAAiB,QAAS,CAAC;AACxC;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,QAAc,CAAC;AACjD;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,OAAO,CAAC;AAE5C;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,SAAI,GAAG,MAAM,CAIvE;AAED,wFAAwF;AACxF,wBAAgB,gBAAgB,CAC9B,eAAe,EAAE,MAAM,EACvB,GAAG,EAAE,MAAM,EACX,QAAQ,SAAwB,GAC/B,OAAO,CAET;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,eAAe,EAAE,MAAM,GAAG,IAAI,EAC9B,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,GAChB,OAAO,CAGT"}
@@ -1,10 +1,9 @@
1
1
  /**
2
2
  * gh#855 — pure helpers for FRESH codex wake-target re-resolution.
3
3
  *
4
- * Root cause of codex deaf-when-idle: the wake target (socket + thread) was
5
- * resolved once at launch and never refreshed, so a missed/stale launch probe
6
- * left the drone permanently deaf. Phase 1 makes the waking borg-mcp child
7
- * authoritative about its OWN live app-server socket — the socket is injected
4
+ * Root cause of codex deaf-when-idle: stale thread selection could leave the
5
+ * drone permanently deaf. The waking borg-mcp child is authoritative about its
6
+ * OWN live app-server socket the socket is injected
8
7
  * into the child's pinned env at spawn (codex-remote.ts, via the #851 `-c
9
8
  * mcp_servers.borg.env.X` channel) — and re-resolves the loaded thread FRESH on
10
9
  * every wake (loadedThreadIds is a re-runnable RPC).
@@ -13,7 +12,7 @@
13
12
  */
14
13
  /** Pinned-env var carrying THIS drone's live app-server socket (set at spawn). */
15
14
  export const BORG_CODEX_APP_SERVER_SOCKET_ENV = 'BORG_CODEX_APP_SERVER_SOCKET';
16
- /** The live app-server socket for this borg-mcp child, or null (un-upgraded launch). */
15
+ /** The live app-server socket for this borg-mcp child. */
17
16
  export function codexAppServerSocketFromEnv(env = process.env) {
18
17
  const v = env[BORG_CODEX_APP_SERVER_SOCKET_ENV];
19
18
  return v && v.length > 0 ? v : null;
@@ -29,22 +28,33 @@ export function codexAppServerSocketFromEnv(env = process.env) {
29
28
  export function codexAppServerSocketConfigArgs(socketPath) {
30
29
  return ['-c', `mcp_servers.borg.env.${BORG_CODEX_APP_SERVER_SOCKET_ENV}="${socketPath}"`];
31
30
  }
31
+ export function isCodexSubagentSource(source) {
32
+ if (!source || typeof source !== 'object' || Array.isArray(source))
33
+ return false;
34
+ return 'subagent' in source || 'subAgent' in source;
35
+ }
32
36
  /**
33
37
  * Pick the loaded thread to wake on the live socket. Each borg-owned app-server
34
38
  * is fresh-per-launch / single-session, so the common case is exactly one loaded
35
39
  * thread. When more than one is loaded, prefer the thread whose cwd matches this
36
40
  * drone's working directory (sibling worktrees have distinct cwds), then the
37
- * newest by updatedAt always deterministic. No loaded thread null (no wake
41
+ * newest by updatedAt, without preferring an empty thread over one with turns.
42
+ * System, ephemeral and subagent threads are never candidates. No loaded thread → null (no wake
38
43
  * this cycle; the next wake retries, so a transient empty list never causes
39
44
  * permanent deafness).
40
45
  */
41
46
  export function pickFreshThread(threads, opts) {
42
- if (threads.length === 0)
47
+ const rootThreads = threads.filter((thread) => !isCodexSubagentSource(thread.source) && thread.ephemeral !== true &&
48
+ (thread.threadSource === undefined || thread.threadSource === 'user'));
49
+ if (rootThreads.length === 0)
43
50
  return null;
44
- if (threads.length === 1)
45
- return threads[0].id;
46
- const cwdMatches = threads.filter((t) => t.cwd === opts.cwd);
47
- const pool = cwdMatches.length > 0 ? cwdMatches : threads;
51
+ if (rootThreads.length === 1)
52
+ return rootThreads[0].id;
53
+ const cwdMatches = rootThreads.filter((t) => t.cwd === opts.cwd);
54
+ let pool = cwdMatches.length > 0 ? cwdMatches : rootThreads;
55
+ if (pool.some((thread) => (thread.turns?.length ?? 0) > 0)) {
56
+ pool = pool.filter((thread) => (thread.turns?.length ?? 0) > 0 || !!thread.preview);
57
+ }
48
58
  let best = pool[0];
49
59
  for (const t of pool) {
50
60
  if ((t.updatedAt ?? 0) > (best.updatedAt ?? 0))
@@ -52,33 +62,6 @@ export function pickFreshThread(threads, opts) {
52
62
  }
53
63
  return best.id;
54
64
  }
55
- /**
56
- * Pure prune: drop wake-target entries whose app-server socket is positively
57
- * dead (liveness === false), so the file self-heals. Keeps alive (true) and
58
- * indeterminate (null) entries — false-deaf-avoidance, mirroring
59
- * checkCodexBridgeHealthy's tri-state. Returns the surviving map + whether
60
- * anything changed (so the caller writes only on change).
61
- */
62
- export function pruneDeadWakeTargets(targets, socketLiveness) {
63
- const out = {};
64
- let changed = false;
65
- for (const [key, t] of Object.entries(targets)) {
66
- if (socketLiveness(t.socketPath) === false) {
67
- changed = true;
68
- continue;
69
- }
70
- out[key] = t;
71
- }
72
- return { targets: out, changed };
73
- }
74
- /**
75
- * Whether the freshly-resolved target differs from what's already recorded —
76
- * so the self-healing cache write happens only on change (no file thrash on a
77
- * busy cube re-resolving the same socket+thread every wake).
78
- */
79
- export function wakeTargetChanged(existing, fresh) {
80
- return (!existing || existing.socketPath !== fresh.socketPath || existing.threadId !== fresh.threadId);
81
- }
82
65
  // ─── gh#857 Phase 2: durable retry + heartbeat (pure helpers) ───────────────
83
66
  /** Base backoff for the first retry of a dropped/deferred wake. */
84
67
  export const WAKE_RETRY_BASE_MS = 5_000;
@@ -1 +1 @@
1
- {"version":3,"file":"codex-wake-resolve.js","sourceRoot":"","sources":["../src/codex-wake-resolve.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"codex-wake-resolve.js","sourceRoot":"","sources":["../src/codex-wake-resolve.ts"],"names":[],"mappings":"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"}
@@ -1224,8 +1224,8 @@ export function addCodexMcpServer() {
1224
1224
  // Codex MCP config when the operator has explicitly set it.
1225
1225
  const apiUrl = process.env.BORG_API_URL;
1226
1226
  // Identity is durable configuration; remote wake is a per-launch
1227
- // transport capability. Do not persist a transport marker here: a future
1228
- // Codex child may launch without a live --remote socket.
1227
+ // transport capability pinned by the Borg-owned app-server. Do not persist
1228
+ // that transport marker in the user's static Codex configuration.
1229
1229
  const apiUrlEnvArg = apiUrl ? ` --env BORG_API_URL=${shellQuote(apiUrl)}` : '';
1230
1230
  const stateRoot = process.env[BORG_STATE_ROOT_ENV];
1231
1231
  const stateRootEnvArg = stateRoot