@claudexor/cli 3.3.16 → 3.4.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 (83) hide show
  1. package/dist/acp-surface-runner.d.ts +3 -2
  2. package/dist/acp-surface-runner.d.ts.map +1 -1
  3. package/dist/acp-surface-runner.js +20 -17
  4. package/dist/acp-surface-runner.js.map +1 -1
  5. package/dist/claudexord-entry.d.ts +7 -0
  6. package/dist/claudexord-entry.d.ts.map +1 -1
  7. package/dist/claudexord-entry.js +14 -0
  8. package/dist/claudexord-entry.js.map +1 -1
  9. package/dist/claudexord.d.ts +0 -10
  10. package/dist/claudexord.d.ts.map +1 -1
  11. package/dist/claudexord.js +95 -100
  12. package/dist/claudexord.js.map +1 -1
  13. package/dist/cli.js +10 -12
  14. package/dist/cli.js.map +1 -1
  15. package/dist/control-services.d.ts +4 -1
  16. package/dist/control-services.d.ts.map +1 -1
  17. package/dist/control-services.js +22 -21
  18. package/dist/control-services.js.map +1 -1
  19. package/dist/daemon-admission-runtime.d.ts +63 -0
  20. package/dist/daemon-admission-runtime.d.ts.map +1 -0
  21. package/dist/daemon-admission-runtime.js +180 -0
  22. package/dist/daemon-admission-runtime.js.map +1 -0
  23. package/dist/daemon-launch.d.ts +53 -0
  24. package/dist/daemon-launch.d.ts.map +1 -0
  25. package/dist/daemon-launch.js +211 -0
  26. package/dist/daemon-launch.js.map +1 -0
  27. package/dist/daemon-lifecycle.d.ts +14 -2
  28. package/dist/daemon-lifecycle.d.ts.map +1 -1
  29. package/dist/daemon-lifecycle.js +53 -10
  30. package/dist/daemon-lifecycle.js.map +1 -1
  31. package/dist/daemon-run.d.ts +6 -1
  32. package/dist/daemon-run.d.ts.map +1 -1
  33. package/dist/daemon-run.js +70 -19
  34. package/dist/daemon-run.js.map +1 -1
  35. package/dist/daemon-start-report.d.ts +8 -0
  36. package/dist/daemon-start-report.d.ts.map +1 -0
  37. package/dist/daemon-start-report.js +24 -0
  38. package/dist/daemon-start-report.js.map +1 -0
  39. package/dist/daemon-startup.d.ts +90 -0
  40. package/dist/daemon-startup.d.ts.map +1 -0
  41. package/dist/daemon-startup.js +156 -0
  42. package/dist/daemon-startup.js.map +1 -0
  43. package/dist/engine-skew.d.ts +4 -0
  44. package/dist/engine-skew.d.ts.map +1 -1
  45. package/dist/engine-skew.js +10 -3
  46. package/dist/engine-skew.js.map +1 -1
  47. package/dist/mcp-run-projections.d.ts +78 -1
  48. package/dist/mcp-run-projections.d.ts.map +1 -1
  49. package/dist/mcp-run-projections.js +57 -3
  50. package/dist/mcp-run-projections.js.map +1 -1
  51. package/dist/mcp-runner.d.ts.map +1 -1
  52. package/dist/mcp-runner.js +41 -37
  53. package/dist/mcp-runner.js.map +1 -1
  54. package/dist/ops-commands.d.ts +9 -0
  55. package/dist/ops-commands.d.ts.map +1 -1
  56. package/dist/ops-commands.js +61 -66
  57. package/dist/ops-commands.js.map +1 -1
  58. package/dist/ops-harness-selection.d.ts +6 -0
  59. package/dist/ops-harness-selection.d.ts.map +1 -0
  60. package/dist/ops-harness-selection.js +29 -0
  61. package/dist/ops-harness-selection.js.map +1 -0
  62. package/dist/orphan-sweeper.js +13 -3
  63. package/dist/orphan-sweeper.js.map +1 -1
  64. package/dist/remote-command.d.ts +10 -1
  65. package/dist/remote-command.d.ts.map +1 -1
  66. package/dist/remote-command.js +34 -10
  67. package/dist/remote-command.js.map +1 -1
  68. package/dist/runtime-replacement-stop.d.ts +13 -2
  69. package/dist/runtime-replacement-stop.d.ts.map +1 -1
  70. package/dist/runtime-replacement-stop.js +46 -11
  71. package/dist/runtime-replacement-stop.js.map +1 -1
  72. package/dist/setup-lifecycle-binding.d.ts +7 -1
  73. package/dist/setup-lifecycle-binding.d.ts.map +1 -1
  74. package/dist/setup-lifecycle-binding.js +27 -17
  75. package/dist/setup-lifecycle-binding.js.map +1 -1
  76. package/dist/startup-diagnostics.d.ts +61 -0
  77. package/dist/startup-diagnostics.d.ts.map +1 -0
  78. package/dist/startup-diagnostics.js +416 -0
  79. package/dist/startup-diagnostics.js.map +1 -0
  80. package/dist/thread-turn-services.d.ts +1 -1
  81. package/dist/thread-turn-services.d.ts.map +1 -1
  82. package/dist/thread-turn-services.js.map +1 -1
  83. package/package.json +23 -23
@@ -8,39 +8,64 @@
8
8
  */
9
9
  import { appendFileSync } from "node:fs";
10
10
  import { join } from "node:path";
11
+ import { safeProblemMessage } from "@claudexor/util";
11
12
  import { reapRecordedOrphans, writePidsSnapshot } from "./orphan-reaper.js";
12
13
  import { sweepOrphanWorkspaces } from "./orphan-sweeper.js";
13
14
  export const logLine = (path, message) => {
14
15
  try {
15
- appendFileSync(path, `[${new Date().toISOString()}] ${message}\n`);
16
+ appendFileSync(path, `[${new Date().toISOString()}] ${safeProblemMessage(message)}\n`);
16
17
  }
17
18
  catch {
18
19
  /* lifecycle safety must not depend on diagnostic I/O */
19
20
  }
20
21
  };
22
+ function lifecycleDiagnostic(deps, record) {
23
+ if (deps.diagnostics) {
24
+ try {
25
+ void deps.diagnostics.record(record);
26
+ }
27
+ catch {
28
+ /* lifecycle safety must not depend on diagnostic I/O */
29
+ }
30
+ return;
31
+ }
32
+ if (deps.logPath)
33
+ logLine(deps.logPath, record.message);
34
+ }
21
35
  /** Pre-start: kill surviving children of a previous daemon life, then GC
22
36
  * envelopes/branches/tmp-homes nothing owns anymore. */
23
37
  export async function runStartupCrashGc(deps) {
24
38
  const pidsPath = join(deps.daemonDir, "pids.json");
25
39
  for (const action of reapRecordedOrphans(pidsPath)) {
26
- logLine(deps.logPath, `reaper: ${action}`);
40
+ lifecycleDiagnostic(deps, { stage: "crash_gc_reaper", message: `reaper: ${action}` });
27
41
  }
28
42
  try {
29
43
  const sweepActions = await sweepOrphanWorkspaces({
30
44
  journalRoot: join(deps.daemonDir, "journal"),
31
45
  });
32
46
  for (const action of sweepActions) {
33
- logLine(deps.logPath, `sweep: ${action}`);
47
+ lifecycleDiagnostic(deps, { stage: "crash_gc_sweep", message: `sweep: ${action}` });
34
48
  }
35
49
  }
36
50
  catch (err) {
37
- logLine(deps.logPath, `sweep FAILED: ${err instanceof Error ? err.message : String(err)}`);
51
+ lifecycleDiagnostic(deps, {
52
+ stage: "crash_gc_sweep",
53
+ message: `sweep FAILED: ${err instanceof Error ? err.message : String(err)}`,
54
+ error: err,
55
+ });
38
56
  }
39
57
  }
40
58
  /**
41
59
  * Post-start: periodic live-children snapshots (the reap list a crash leaves
42
60
  * behind) and SIGTERM/SIGINT -> the shutdown state machine (abort children,
43
61
  * persist, close, bounded escalation). Returns the finalizer for main()'s tail.
62
+ *
63
+ * The snapshot timer is NOT armed here: with zero live children a snapshot
64
+ * DELETES pids.json, and until stage-4 crash-GC has consumed the previous
65
+ * life's file that file is the only record of surviving children (C2). The
66
+ * composition root calls `beginPidSnapshots()` once admission is normal;
67
+ * recovery-only serving leaves the previous pids.json byte-untouched, and the
68
+ * finalizer writes a final snapshot only when snapshots were armed.
44
69
  */
45
70
  export function armDaemonLifecycle(deps) {
46
71
  const pidsPath = join(deps.daemonDir, "pids.json");
@@ -51,11 +76,14 @@ export function armDaemonLifecycle(deps) {
51
76
  snapshot(pidsPath);
52
77
  }
53
78
  catch (error) {
54
- logLine(deps.logPath, `pid snapshot FAILED: ${error instanceof Error ? error.message : String(error)}`);
79
+ lifecycleDiagnostic(deps, {
80
+ stage: "pid_snapshot",
81
+ message: `pid snapshot FAILED: ${error instanceof Error ? error.message : String(error)}`,
82
+ error,
83
+ });
55
84
  }
56
85
  };
57
- const pidsTimer = setInterval(writeSnapshot, 2_000);
58
- pidsTimer.unref?.();
86
+ let pidsTimer = null;
59
87
  let stopping = false;
60
88
  let finalized = false;
61
89
  const onShutdownSignal = (sig) => {
@@ -64,7 +92,10 @@ export function armDaemonLifecycle(deps) {
64
92
  if (stopping)
65
93
  return;
66
94
  stopping = true;
67
- logLine(deps.logPath, `${sig} received; stopping daemon`);
95
+ lifecycleDiagnostic(deps, {
96
+ stage: "shutdown_signal",
97
+ message: `${sig} received; stopping daemon`,
98
+ });
68
99
  void deps.beginShutdown(sig).catch(() => {
69
100
  // The machine logged the failure and keeps its deadline armed.
70
101
  });
@@ -74,16 +105,28 @@ export function armDaemonLifecycle(deps) {
74
105
  signals.on("SIGTERM", onSigterm);
75
106
  signals.on("SIGINT", onSigint);
76
107
  return {
108
+ beginPidSnapshots: () => {
109
+ if (pidsTimer || finalized)
110
+ return;
111
+ pidsTimer = setInterval(writeSnapshot, 2_000);
112
+ pidsTimer.unref?.();
113
+ },
77
114
  finalize: () => {
78
115
  if (finalized)
79
116
  return;
80
117
  finalized = true;
81
- clearInterval(pidsTimer);
118
+ const snapshotsWereArmed = pidsTimer !== null;
119
+ if (pidsTimer)
120
+ clearInterval(pidsTimer);
121
+ pidsTimer = null;
82
122
  signals.off("SIGTERM", onSigterm);
83
123
  signals.off("SIGINT", onSigint);
84
124
  // Graceful stop aborted all children; one final snapshot records any
85
125
  // that survived the grace window (SIGKILL escalation may be in flight).
86
- writeSnapshot();
126
+ // Without armed snapshots there were no children to record, and the
127
+ // previous life's pids.json must stay byte-untouched (C2).
128
+ if (snapshotsWereArmed)
129
+ writeSnapshot();
87
130
  },
88
131
  };
89
132
  }
@@ -1 +1 @@
1
- {"version":3,"file":"daemon-lifecycle.js","sourceRoot":"","sources":["../src/daemon-lifecycle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"daemon-lifecycle.js","sourceRoot":"","sources":["../src/daemon-lifecycle.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ import { type ControlApiAddress } from "./live.js";
4
4
  export { projectOutcomeBanner } from "./run-detail-projections.js";
5
5
  export { projectRunOutcomeFacts, mergeDaemonRunOutcome } from "./daemon-outcome.js";
6
6
  export declare const DAEMON_START_READY_TIMEOUT_MS = 90000;
7
+ export declare const DAEMON_CONTROL_API_FRESH_START_TAIL_MS = 10000;
7
8
  /**
8
9
  * Ensure a daemon (and its control API) is running and return a connected
9
10
  * client + control-api address. Connects to the existing socket; if unreachable,
@@ -32,6 +33,9 @@ export declare function ensureDaemon(timeoutMs?: number): Promise<{
32
33
  export declare function connectDaemonIfRunning(): Promise<{
33
34
  client: DaemonClientType;
34
35
  addr: ControlApiAddress;
36
+ /** Handshake identity incl. servingMode (C7): read-only paths stay
37
+ * connectable to a recovery-only daemon and report the mode honestly. */
38
+ engine: EngineIdentity;
35
39
  } | null>;
36
40
  /**
37
41
  * Poll until the daemon (socket + control API) is fully ready, or the timeout
@@ -39,9 +43,10 @@ export declare function connectDaemonIfRunning(): Promise<{
39
43
  * is guaranteed to succeed (no start/status race). A typed handshake refusal
40
44
  * propagates — waiting cannot fix an incompatible daemon (#93).
41
45
  */
42
- export declare function waitForDaemonReady(timeoutMs?: number): Promise<{
46
+ export declare function waitForDaemonReady(timeoutMs?: number, abort?: () => Error | null): Promise<{
43
47
  client: DaemonClientType;
44
48
  addr: ControlApiAddress;
49
+ engine: EngineIdentity;
45
50
  } | null>;
46
51
  export interface DaemonRunOutcome {
47
52
  runId: string;
@@ -1 +1 @@
1
- {"version":3,"file":"daemon-run.d.ts","sourceRoot":"","sources":["../src/daemon-run.ts"],"names":[],"mappings":"AAIA,OAAO,EAML,KAAK,YAAY,IAAI,gBAAgB,EACtC,MAAM,mBAAmB,CAAC;AAI3B,OAAO,EAAoB,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,EAIL,KAAK,iBAAiB,EACvB,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAQpF,eAAO,MAAM,6BAA6B,QAAS,CAAC;AAsCpD;;;;;;;;;;GAUG;AACH,wBAAsB,YAAY,CAChC,SAAS,SAAgC,GACxC,OAAO,CAAC;IAAE,MAAM,EAAE,gBAAgB,CAAC;IAAC,IAAI,EAAE,iBAAiB,CAAC;IAAC,MAAM,EAAE,cAAc,CAAA;CAAE,CAAC,CA0DxF;AAED;;;;;;;;GAQG;AACH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC;IACtD,MAAM,EAAE,gBAAgB,CAAC;IACzB,IAAI,EAAE,iBAAiB,CAAC;CACzB,GAAG,IAAI,CAAC,CAQR;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,SAAS,SAAgC,GACxC,OAAO,CAAC;IAAE,MAAM,EAAE,gBAAgB,CAAC;IAAC,IAAI,EAAE,iBAAiB,CAAA;CAAE,GAAG,IAAI,CAAC,CAQvE;AAMD,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,0FAA0F;IAC1F,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACxC;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,iBAAiB,EACvB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,IAAI,GAAE;IACJ,eAAe,EAAE,OAAO,CAAC;IACzB;gFAC4E;IAC5E,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;6EAEyE;IACzE,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACpC,GAC5B,OAAO,CAAC,gBAAgB,CAAC,CA0J3B;AAkDD,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,YAAY,EACZ,cAAc,EACd,qBAAqB,EACrB,oBAAoB,EACpB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"daemon-run.d.ts","sourceRoot":"","sources":["../src/daemon-run.ts"],"names":[],"mappings":"AAEA,OAAO,EAML,KAAK,YAAY,IAAI,gBAAgB,EACtC,MAAM,mBAAmB,CAAC;AAS3B,OAAO,EAAoB,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,EAIL,KAAK,iBAAiB,EACvB,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAQpF,eAAO,MAAM,6BAA6B,QAAS,CAAC;AAOpD,eAAO,MAAM,sCAAsC,QAAS,CAAC;AAsC7D;;;;;;;;;;GAUG;AACH,wBAAsB,YAAY,CAChC,SAAS,SAAgC,GACxC,OAAO,CAAC;IAAE,MAAM,EAAE,gBAAgB,CAAC;IAAC,IAAI,EAAE,iBAAiB,CAAC;IAAC,MAAM,EAAE,cAAc,CAAA;CAAE,CAAC,CA2FxF;AAED;;;;;;;;GAQG;AACH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC;IACtD,MAAM,EAAE,gBAAgB,CAAC;IACzB,IAAI,EAAE,iBAAiB,CAAC;IACxB;6EACyE;IACzE,MAAM,EAAE,cAAc,CAAC;CACxB,GAAG,IAAI,CAAC,CAQR;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,SAAS,SAAgC,EACzC,KAAK,CAAC,EAAE,MAAM,KAAK,GAAG,IAAI,GACzB,OAAO,CAAC;IAAE,MAAM,EAAE,gBAAgB,CAAC;IAAC,IAAI,EAAE,iBAAiB,CAAC;IAAC,MAAM,EAAE,cAAc,CAAA;CAAE,GAAG,IAAI,CAAC,CAiB/F;AAMD,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,0FAA0F;IAC1F,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACxC;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,iBAAiB,EACvB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,IAAI,GAAE;IACJ,eAAe,EAAE,OAAO,CAAC;IACzB;gFAC4E;IAC5E,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;6EAEyE;IACzE,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACpC,GAC5B,OAAO,CAAC,gBAAgB,CAAC,CA0J3B;AAkDD,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,YAAY,EACZ,cAAc,EACd,qBAAqB,EACrB,oBAAoB,EACpB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,uBAAuB,CAAC"}
@@ -1,11 +1,10 @@
1
1
  import process from "node:process";
2
- import { spawn } from "node:child_process";
3
- import { existsSync } from "node:fs";
4
2
  import { fileURLToPath } from "node:url";
5
3
  import { DaemonClient, daemonDir, defaultSocketPath, ensureToken, readToken, } from "@claudexor/daemon";
6
4
  import { harnessRuntimeEnv } from "@claudexor/core";
7
5
  import { hashJson } from "@claudexor/util";
8
6
  import { CliError, controlProblemError } from "./cli-error.js";
7
+ import { CLI_DAEMON_LAUNCH_SOURCES, launchDetachedDaemon, } from "./daemon-launch.js";
9
8
  import { recordEngineSkew } from "./engine-skew.js";
10
9
  import { controlApiAddress, controlApiFetch, handshakeControlApi, } from "./live.js";
11
10
  import { TERMINAL_LIFECYCLES } from "@claudexor/schema";
@@ -17,6 +16,12 @@ const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
17
16
  // `daemon start` and acting-command auto-start use this one bounded budget so
18
17
  // neither reports a false failure while the detached daemon is still starting.
19
18
  export const DAEMON_START_READY_TIMEOUT_MS = 90_000;
19
+ // The bounded TAIL of that fresh-start budget spent waiting for the control
20
+ // API after the daemon socket already answers (C10): the pointer file lands
21
+ // as soon as the control transport binds — on the recovery plane too — so
22
+ // this tail covers only bind/pointer-write latency, never journal replay
23
+ // (that part is behind the socket wait above).
24
+ export const DAEMON_CONTROL_API_FRESH_START_TAIL_MS = 10_000;
20
25
  /** Is something accepting on the daemon socket right now? (cheap reachability probe). */
21
26
  async function daemonReachable(client) {
22
27
  return client.health().then(() => true, () => false);
@@ -62,24 +67,24 @@ export async function ensureDaemon(timeoutMs = DAEMON_START_READY_TIMEOUT_MS) {
62
67
  const token = ensureToken();
63
68
  const socketPath = defaultSocketPath();
64
69
  let client = new DaemonClient(socketPath, token);
70
+ let launch = null;
71
+ // ONE shared budget for the whole readiness sequence (socket, pointer,
72
+ // normal admission): a journal-heavy startup may spend most of it in any
73
+ // single phase, and stacking per-phase budgets would multiply the worst case.
74
+ const overallDeadline = Date.now() + timeoutMs;
65
75
  const ok = await daemonReachable(client);
66
76
  if (!ok) {
67
77
  // Auto-start the daemon entry (the same one `claudexor daemon start` spawns).
68
78
  const daemonScript = process.env["CLAUDEXOR_DAEMON_ENTRY"] ??
69
79
  fileURLToPath(new URL("./claudexord.js", import.meta.url));
70
- if (!existsSync(daemonScript)) {
71
- throw new Error(`cannot auto-start the daemon: entry not found at ${daemonScript} (run \`pnpm build\`)`);
72
- }
73
- const child = spawn(process.execPath, [daemonScript], {
74
- detached: true,
75
- stdio: "ignore",
80
+ launch = launchDetachedDaemon({
81
+ entryPath: daemonScript,
82
+ launchSource: CLI_DAEMON_LAUNCH_SOURCES.ensureDaemon,
76
83
  env: harnessRuntimeEnv(),
77
84
  });
78
- child.unref();
79
85
  // Wait for the socket to accept connections (health round-trip).
80
- const deadline = Date.now() + timeoutMs;
81
86
  let started = false;
82
- while (Date.now() < deadline) {
87
+ while (Date.now() < overallDeadline) {
83
88
  await sleep(150);
84
89
  // Re-read the token: ensureToken() above generated it before spawn, and the
85
90
  // daemon reuses the same per-user token file, so this client stays valid.
@@ -88,24 +93,60 @@ export async function ensureDaemon(timeoutMs = DAEMON_START_READY_TIMEOUT_MS) {
88
93
  started = true;
89
94
  break;
90
95
  }
96
+ if (launch.failure())
97
+ throw launch.callerError("socket_wait", timeoutMs);
91
98
  }
92
- if (!started) {
93
- throw new Error(`daemon did not come up within ${Math.round(timeoutMs / 1000)}s after auto-start (socket ${socketPath}); check \`claudexor daemon logs\``);
94
- }
99
+ if (!started)
100
+ throw launch.callerError("socket_wait", timeoutMs);
95
101
  }
96
102
  // The control API (HTTP/SSE viewport over the daemon) is what streams events
97
103
  // and resolves the run for apply/decision. Wait for its pointer to be written.
98
104
  let reached = await controlApiReachable();
99
105
  if (!reached) {
100
- const deadline = Date.now() + 10_000;
106
+ const deadline = Date.now() + DAEMON_CONTROL_API_FRESH_START_TAIL_MS;
101
107
  while (Date.now() < deadline && !reached) {
102
108
  await sleep(150);
103
109
  reached = await controlApiReachable();
110
+ if (!reached && launch?.failure()) {
111
+ throw launch.callerError("control_api_wait", DAEMON_CONTROL_API_FRESH_START_TAIL_MS);
112
+ }
104
113
  }
105
114
  }
106
115
  if (!reached) {
116
+ if (launch)
117
+ throw launch.callerError("control_api_wait", DAEMON_CONTROL_API_FRESH_START_TAIL_MS);
107
118
  throw new Error(`daemon is up but its control API is not reachable (no ${daemonDir()}/control-api.json); it may be disabled by CLAUDEXOR_NO_CONTROL_API=1`);
108
119
  }
120
+ launch?.markReady();
121
+ // C7d × D5: the daemon binds its transport and writes the pointer in
122
+ // startup stage 3 with product admission still CLOSED (handshake reports
123
+ // recovery_only), and only stage 4 — journal revalidation, crash-GC, the
124
+ // full recover(), activation — opens normal admission. On journal-heavy
125
+ // roots stage 4 takes the tens of seconds this shared start budget exists
126
+ // for, so a recovery_only handshake here is AMBIGUOUS between "still
127
+ // starting" and "genuinely blocked". Keep re-handshaking until the budget
128
+ // expires; a genuinely blocked root never opens normal and still gets the
129
+ // typed error below (the macOS app connect loop waits the same way).
130
+ while (reached.engine.servingMode !== "normal" && Date.now() < overallDeadline) {
131
+ await sleep(150);
132
+ if (launch?.failure())
133
+ throw launch.callerError("normal_admission_wait", timeoutMs);
134
+ // Absence mid-wait (daemon died or is restarting) keeps the last observed
135
+ // identity: the loop stays bounded and the deadline names the state.
136
+ reached = (await controlApiReachable()) ?? reached;
137
+ }
138
+ // C7d: acting paths must not proceed into a wall of daemon_recovery_only
139
+ // route refusals — name the recovery state once, typed and retryable.
140
+ if (reached.engine.servingMode !== "normal") {
141
+ throw new CliError("operational", "daemon is serving recovery only; product routes are closed until journal recovery completes", {
142
+ code: "daemon_recovery_only",
143
+ retryable: true,
144
+ requiredActions: [
145
+ "inspect `claudexor daemon logs` and the /recovery control surface",
146
+ "retry after journal recovery completes",
147
+ ],
148
+ });
149
+ }
109
150
  return { client, addr: reached.addr, engine: reached.engine };
110
151
  }
111
152
  /**
@@ -127,7 +168,7 @@ export async function connectDaemonIfRunning() {
127
168
  const reached = await controlApiReachable();
128
169
  if (!reached)
129
170
  return null;
130
- return { client, addr: reached.addr };
171
+ return { client, addr: reached.addr, engine: reached.engine };
131
172
  }
132
173
  /**
133
174
  * Poll until the daemon (socket + control API) is fully ready, or the timeout
@@ -135,14 +176,24 @@ export async function connectDaemonIfRunning() {
135
176
  * is guaranteed to succeed (no start/status race). A typed handshake refusal
136
177
  * propagates — waiting cannot fix an incompatible daemon (#93).
137
178
  */
138
- export async function waitForDaemonReady(timeoutMs = DAEMON_START_READY_TIMEOUT_MS) {
179
+ export async function waitForDaemonReady(timeoutMs = DAEMON_START_READY_TIMEOUT_MS, abort) {
139
180
  const deadline = Date.now() + timeoutMs;
181
+ // D5: a reachable daemon may still be mid-startup (stage 3 binds the
182
+ // transport recovery-only; stage 4 opens normal admission after journal
183
+ // recovery). Report the TERMINAL mode, not the transient stage-3 value:
184
+ // keep polling a recovery_only handshake until it opens normal or the
185
+ // budget expires — a genuinely blocked root is then reported honestly.
186
+ let last = null;
140
187
  for (;;) {
141
188
  const conn = await connectDaemonIfRunning();
142
- if (conn)
189
+ if (conn?.engine.servingMode === "normal")
143
190
  return conn;
191
+ last = conn ?? last;
192
+ const failure = abort?.();
193
+ if (failure)
194
+ throw failure;
144
195
  if (Date.now() >= deadline)
145
- return null;
196
+ return last;
146
197
  await sleep(150);
147
198
  }
148
199
  }
@@ -1 +1 @@
1
- {"version":3,"file":"daemon-run.js","sourceRoot":"","sources":["../src/daemon-run.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"daemon-run.js","sourceRoot":"","sources":["../src/daemon-run.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export declare function reportDaemonStartReady(input: {
2
+ json: boolean;
3
+ socket: string;
4
+ servingMode: "normal" | "recovery_only";
5
+ pid: number | null;
6
+ alreadyRunning: boolean;
7
+ }): void;
8
+ //# sourceMappingURL=daemon-start-report.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daemon-start-report.d.ts","sourceRoot":"","sources":["../src/daemon-start-report.ts"],"names":[],"mappings":"AAQA,wBAAgB,sBAAsB,CAAC,KAAK,EAAE;IAC5C,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,QAAQ,GAAG,eAAe,CAAC;IACxC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,cAAc,EAAE,OAAO,CAAC;CACzB,GAAG,IAAI,CAmBP"}
@@ -0,0 +1,24 @@
1
+ /** C7c: `claudexor daemon start` reports the admission mode honestly — a
2
+ * recovery-only daemon came up (exit 0) but product routes stay closed until
3
+ * journal recovery completes, and the JSON envelope carries servingMode. */
4
+ import { print, printJson } from "./cli-io.js";
5
+ const RECOVERY_ONLY_NOTE = " and is serving recovery only — product routes are closed until journal recovery completes";
6
+ export function reportDaemonStartReady(input) {
7
+ if (input.json) {
8
+ printJson({
9
+ pid: input.pid,
10
+ socket: input.socket,
11
+ ready: true,
12
+ ...(input.alreadyRunning ? { alreadyRunning: true } : {}),
13
+ servingMode: input.servingMode,
14
+ });
15
+ return;
16
+ }
17
+ const note = input.servingMode === "recovery_only" ? RECOVERY_ONLY_NOTE : "";
18
+ print(input.alreadyRunning
19
+ ? `claudexord already running${note}; socket ${input.socket}`
20
+ : note
21
+ ? `claudexord started (pid ${input.pid})${note}; socket ${input.socket}`
22
+ : `claudexord ready (pid ${input.pid}); socket ${input.socket}`);
23
+ }
24
+ //# sourceMappingURL=daemon-start-report.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daemon-start-report.js","sourceRoot":"","sources":["../src/daemon-start-report.ts"],"names":[],"mappings":"AAAA;;4EAE4E;AAC5E,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE/C,MAAM,kBAAkB,GACtB,4FAA4F,CAAC;AAE/F,MAAM,UAAU,sBAAsB,CAAC,KAMtC;IACC,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;QACf,SAAS,CAAC;YACR,GAAG,EAAE,KAAK,CAAC,GAAG;YACd,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,KAAK,EAAE,IAAI;YACX,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzD,WAAW,EAAE,KAAK,CAAC,WAAW;SAC/B,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IACD,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,KAAK,eAAe,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7E,KAAK,CACH,KAAK,CAAC,cAAc;QAClB,CAAC,CAAC,6BAA6B,IAAI,YAAY,KAAK,CAAC,MAAM,EAAE;QAC7D,CAAC,CAAC,IAAI;YACJ,CAAC,CAAC,2BAA2B,KAAK,CAAC,GAAG,IAAI,IAAI,YAAY,KAAK,CAAC,MAAM,EAAE;YACxE,CAAC,CAAC,yBAAyB,KAAK,CAAC,GAAG,aAAa,KAAK,CAAC,MAAM,EAAE,CACpE,CAAC;AACJ,CAAC"}
@@ -0,0 +1,90 @@
1
+ import { type DaemonServingMode, type JournalManagerPreparation, type ProjectPartitionsPreparation, type RootAuthorityGrant } from "@claudexor/daemon";
2
+ /** Single canonical admission snapshot; both transports read the SAME fact. */
3
+ export declare class DaemonStartupAdmission {
4
+ private mode;
5
+ readonly snapshot: () => DaemonServingMode;
6
+ openNormal(): void;
7
+ }
8
+ /** Stage-2 verdict: every partition that blocks destructive recovery. The
9
+ * loose Picks let the C6 in-process reopen feed LIVE inspections through the
10
+ * same verdict the frozen stage-2 receipts use. */
11
+ export declare function recoveryBlockedPartitions(input: {
12
+ globalPreparation: {
13
+ inspection: Pick<JournalManagerPreparation["inspection"], "status">;
14
+ };
15
+ partitionsPreparation: Pick<ProjectPartitionsPreparation, "coverage" | "recoveryRequiredPartitions">;
16
+ }): string[];
17
+ /** C6a: whether the control API binds this startup. CLAUDEXOR_NO_CONTROL_API=1
18
+ * is honored only on a clean verdict — the recovery surface IS the point of
19
+ * the recovery plane, so a recovery-required verdict overrides it (logged). */
20
+ export declare function controlApiEnabledForStartup(input: {
21
+ disabledByEnv: boolean;
22
+ blockedPartitions: string[];
23
+ log: (message: string) => void;
24
+ }): boolean;
25
+ /** Stage 3 bind: start the REAL socket + control transports (product
26
+ * admission still closed) and publish their addresses. Returns the control
27
+ * address, or null when the control API is disabled or shutdown began. */
28
+ export declare function bindRecoveryTransport(input: {
29
+ server: {
30
+ start(): Promise<void>;
31
+ };
32
+ control: {
33
+ start(): Promise<{
34
+ host: string;
35
+ port: number;
36
+ }>;
37
+ } | null;
38
+ requested: () => boolean;
39
+ daemonDir: string;
40
+ logPath: string;
41
+ socketPath: string;
42
+ }): Promise<{
43
+ host: string;
44
+ port: number;
45
+ } | null>;
46
+ /** Stage 3 proof: prove self-health and exact identity through the REAL
47
+ * transport while product admission is still closed. */
48
+ export declare function proveRecoveryTransport(input: {
49
+ socket: {
50
+ health(): Promise<unknown>;
51
+ };
52
+ identity: {
53
+ version: string;
54
+ sha: string;
55
+ };
56
+ token: string;
57
+ control: {
58
+ host: string;
59
+ port: number;
60
+ } | null;
61
+ }): Promise<void>;
62
+ /** Stage 4: revalidate every read-only preparation FIRST; only on all-green
63
+ * advance the floor, run destructive recovery and open normal admission — or
64
+ * the protected recovery-only outcome (floor unchanged, cleanup off). */
65
+ export declare function completeStartupAdmission(input: {
66
+ grant: Pick<RootAuthorityGrant, "advanceFloor">;
67
+ blockedPartitions: string[];
68
+ global: {
69
+ revalidatePreparation(): void;
70
+ activatePrepared(): void;
71
+ recoverAfterStartup(): void;
72
+ };
73
+ partitions: {
74
+ revalidatePreparation(): void;
75
+ activatePrepared(): void;
76
+ recoverAfterStartup(): void;
77
+ };
78
+ crashGc: () => Promise<void>;
79
+ admission: DaemonStartupAdmission;
80
+ log: (message: string) => void;
81
+ }): Promise<DaemonServingMode>;
82
+ /** Post-admission ghost-project quarantine (F2), normal admission only. */
83
+ export declare function quarantineGhostProjectsAtStartup(threads: {
84
+ quarantineGhostProjects(): Iterable<{
85
+ projectId: string;
86
+ reason: string;
87
+ root: string;
88
+ }>;
89
+ }, log: (message: string) => void): void;
90
+ //# sourceMappingURL=daemon-startup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daemon-startup.d.ts","sourceRoot":"","sources":["../src/daemon-startup.ts"],"names":[],"mappings":"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"}