@claudexor/cli 3.3.11 → 3.3.13

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.
@@ -5,38 +5,42 @@ import { fileURLToPath } from "node:url";
5
5
  import { DaemonClient, daemonDir, defaultSocketPath, ensureToken, readToken, } from "@claudexor/daemon";
6
6
  import { harnessRuntimeEnv } from "@claudexor/core";
7
7
  import { hashJson } from "@claudexor/util";
8
- import { controlProblemError } from "./cli-error.js";
9
- import { controlApiAddress, controlApiFetch, handshakeControlApi, processExitCodeForRunStatus, } from "./live.js";
10
- import { TERMINAL_LIFECYCLES, outcomeExitCode } from "@claudexor/schema";
11
- import { projectApplyEligibility, projectOutcomeBanner, } from "./run-detail-projections.js";
8
+ import { CliError, controlProblemError } from "./cli-error.js";
9
+ import { recordEngineSkew } from "./engine-skew.js";
10
+ import { controlApiAddress, controlApiFetch, handshakeControlApi, } from "./live.js";
11
+ import { TERMINAL_LIFECYCLES } from "@claudexor/schema";
12
12
  export { projectOutcomeBanner } from "./run-detail-projections.js";
13
- import { projectRunOutcomeFacts } from "./daemon-outcome.js";
14
- import { readRunDetailResponse } from "./run-detail-response.js";
15
13
  export { projectRunOutcomeFacts, mergeDaemonRunOutcome } from "./daemon-outcome.js";
16
14
  const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
17
15
  /** Is something accepting on the daemon socket right now? (cheap reachability probe). */
18
16
  async function daemonReachable(client) {
19
- try {
20
- await client.health();
21
- return true;
22
- }
23
- catch {
24
- return false;
25
- }
17
+ return client.health().then(() => true, () => false);
26
18
  }
27
- /** Is the daemon's control-api up and answering /healthz right now? */
19
+ /** Is the daemon's control-api up and answering /healthz right now? Returns
20
+ * the address WITH the handshake's validated engine identity — callers that
21
+ * need capability negotiation (gc's data_root_report) reuse this one
22
+ * handshake instead of performing a second.
23
+ * Absence-vs-refusal (#93): null means ABSENCE only — no pointer file, connect
24
+ * refused/timeout, non-ok healthz (a STOPPING daemon's 503 included, R1 C-C3b),
25
+ * or the same stopping daemon losing the healthz/handshake race and answering
26
+ * the handshake with its typed `daemon_stopping` problem (R2) — and clears the
27
+ * skew record; any OTHER typed handshake problem THROWS, because "not
28
+ * reachable" would send callers into a doomed wait/auto-start. */
28
29
  async function controlApiReachable() {
29
30
  try {
30
31
  const addr = controlApiAddress();
31
32
  const res = await controlApiFetch(addr, "/healthz", { signal: AbortSignal.timeout(1500) });
32
- if (!res.ok)
33
- return null;
34
- await handshakeControlApi(addr);
35
- return addr;
33
+ if (res.ok) {
34
+ const engine = await handshakeControlApi(addr);
35
+ return { addr, engine };
36
+ }
36
37
  }
37
- catch {
38
- return null;
38
+ catch (err) {
39
+ if (err instanceof CliError && err.code !== "daemon_stopping")
40
+ throw err;
39
41
  }
42
+ recordEngineSkew(null); // absence (stopping included): no live connection to be skewed with
43
+ return null;
40
44
  }
41
45
  /**
42
46
  * Ensure a daemon (and its control API) is running and return a connected
@@ -45,6 +49,9 @@ async function controlApiReachable() {
45
49
  * socket and the control-api.json pointer to come up. FAILS LOUDLY if the daemon
46
50
  * cannot be started — never silently falls back to an in-process run (the apply
47
51
  * gate refuses a run no daemon tracks, so an in-process run is un-unblockable).
52
+ * A daemon that is up but REFUSES the typed handshake fails IMMEDIATELY with
53
+ * that typed problem — including after an auto-start that lost the singleton
54
+ * race to a foreign daemon (macOS app relaunch) this CLI then handshakes (#93).
48
55
  */
49
56
  export async function ensureDaemon(timeoutMs = 30_000) {
50
57
  const token = ensureToken();
@@ -83,18 +90,18 @@ export async function ensureDaemon(timeoutMs = 30_000) {
83
90
  }
84
91
  // The control API (HTTP/SSE viewport over the daemon) is what streams events
85
92
  // and resolves the run for apply/decision. Wait for its pointer to be written.
86
- let addr = await controlApiReachable();
87
- if (!addr) {
93
+ let reached = await controlApiReachable();
94
+ if (!reached) {
88
95
  const deadline = Date.now() + 10_000;
89
- while (Date.now() < deadline && !addr) {
96
+ while (Date.now() < deadline && !reached) {
90
97
  await sleep(150);
91
- addr = await controlApiReachable();
98
+ reached = await controlApiReachable();
92
99
  }
93
100
  }
94
- if (!addr) {
101
+ if (!reached) {
95
102
  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`);
96
103
  }
97
- return { client, addr };
104
+ return { client, addr: reached.addr, engine: reached.engine };
98
105
  }
99
106
  /**
100
107
  * Connect to an ALREADY-RUNNING daemon + control API WITHOUT ever spawning one.
@@ -102,7 +109,8 @@ export async function ensureDaemon(timeoutMs = 30_000) {
102
109
  * API is down. Used by read-only-looking run lookups (inspect/apply) so a typo'd
103
110
  * run id reports "no such run" instead of silently launching a background daemon
104
111
  * (`ensureDaemon`, by contrast, auto-starts and is reserved for paths that act —
105
- * enqueue/decision).
112
+ * enqueue/decision). A daemon that REFUSES the typed handshake is NOT "not
113
+ * running": the typed problem propagates — still without spawning (#93).
106
114
  */
107
115
  export async function connectDaemonIfRunning() {
108
116
  const token = readToken();
@@ -111,15 +119,16 @@ export async function connectDaemonIfRunning() {
111
119
  const client = new DaemonClient(defaultSocketPath(), token);
112
120
  if (!(await daemonReachable(client)))
113
121
  return null;
114
- const addr = await controlApiReachable();
115
- if (!addr)
122
+ const reached = await controlApiReachable();
123
+ if (!reached)
116
124
  return null;
117
- return { client, addr };
125
+ return { client, addr: reached.addr };
118
126
  }
119
127
  /**
120
128
  * Poll until the daemon (socket + control API) is fully ready, or the timeout
121
129
  * elapses. Lets `claudexor daemon start` return only once a subsequent `status`
122
- * is guaranteed to succeed (no start/status race).
130
+ * is guaranteed to succeed (no start/status race). A typed handshake refusal
131
+ * propagates — waiting cannot fix an incompatible daemon (#93).
123
132
  */
124
133
  export async function waitForDaemonReady(timeoutMs = 15_000) {
125
134
  const deadline = Date.now() + timeoutMs;
@@ -321,150 +330,7 @@ async function ensureRunProject(addr, body) {
321
330
  throw new Error(`project registration failed (HTTP ${response.status})${detail ? `: ${detail}` : ""}`);
322
331
  }
323
332
  }
324
- /** Daemon job state (= run lifecycle, D8) -> CLI exit code via the ONE
325
- * projection owner: a succeeded lifecycle is 0 (a "Done · needs review" run
326
- * included); everything else is 1. When the run's terminal outcome `facts` are
327
- * available, the D-16 outcome-aware projection is used instead so a
328
- * needs_input/incomplete work_state exits non-zero on a succeeded lifecycle. */
329
- export function exitCodeForState(state, facts) {
330
- if (facts)
331
- return outcomeExitCode(facts);
332
- return processExitCodeForRunStatus(state);
333
- }
334
- /** Server-derived plan readiness projection (mode=plan runs). */
335
- export async function fetchPlanReadiness(addr, runId) {
336
- if (!runId)
337
- return null;
338
- try {
339
- const res = await controlApiFetch(addr, `/runs/${encodeURIComponent(runId)}`, {
340
- headers: { authorization: `Bearer ${addr.token}` },
341
- });
342
- if (!res.ok)
343
- return null;
344
- const detail = (await res.json());
345
- const v = detail["planReadiness"];
346
- return v && typeof v === "object" ? v : null;
347
- }
348
- catch {
349
- return null;
350
- }
351
- }
352
- /** The plan run's open questions (D17), projected from GET /runs/:id — the
353
- * SAME server artifact readiness derives from, never a client re-parse. Empty
354
- * for ready/unverified plans and every non-plan run. */
355
- export async function fetchPlanQuestions(addr, runId) {
356
- if (!runId)
357
- return [];
358
- try {
359
- const res = await controlApiFetch(addr, `/runs/${encodeURIComponent(runId)}`, {
360
- headers: { authorization: `Bearer ${addr.token}` },
361
- });
362
- if (!res.ok)
363
- return [];
364
- const detail = (await res.json());
365
- const v = detail["planQuestions"];
366
- return Array.isArray(v) ? v : [];
367
- }
368
- catch {
369
- return [];
370
- }
371
- }
372
- /** Council membership + merge disclosure (INV-031) for a --council plan run;
373
- * null for solo plans and non-plan runs. Server-projected — the CLI never
374
- * re-derives membership. */
375
- export async function fetchCouncil(addr, runId) {
376
- if (!runId)
377
- return null;
378
- try {
379
- const res = await controlApiFetch(addr, `/runs/${encodeURIComponent(runId)}`, {
380
- headers: { authorization: `Bearer ${addr.token}` },
381
- });
382
- if (!res.ok)
383
- return null;
384
- const detail = (await res.json());
385
- const v = detail["council"];
386
- return v && typeof v === "object"
387
- ? v
388
- : null;
389
- }
390
- catch {
391
- return null;
392
- }
393
- }
394
- /**
395
- * ONE GET /runs/:id for the terminal path (INV-120/122): fetch the run detail
396
- * once and feed every pure projection below. Three-state semantics:
397
- * a MISSING detail (404 / legacy run) and a transport-UNAVAILABLE detail both
398
- * soft-fail to null (a hiccup must never eat a finished run's result), while a
399
- * typed problem response — especially 500 run_facts_invalid, the server's
400
- * verdict that the run's canonical receipt cannot be trusted — raises through
401
- * the typed CLI failure path (controlProblemError -> renderCliFailure,
402
- * non-zero exit) instead of masquerading as a legacy run. The per-projection
403
- * `fetch*` wrappers stay for callers that need exactly one projection.
404
- */
405
- export async function fetchRunDetail(addr, runId) {
406
- if (!runId)
407
- return null;
408
- let res;
409
- try {
410
- res = await controlApiFetch(addr, `/runs/${encodeURIComponent(runId)}`, {
411
- headers: { authorization: `Bearer ${addr.token}` },
412
- });
413
- }
414
- catch {
415
- return null;
416
- }
417
- if (res.status === 404)
418
- return null;
419
- if (!res.ok) {
420
- const body = await res.json().catch(() => ({}));
421
- throw controlProblemError(res.status, body, `run detail failed (HTTP ${res.status})`);
422
- }
423
- return readRunDetailResponse(res);
424
- }
425
- export async function fetchApplyEligibility(addr, runId) {
426
- return projectApplyEligibility(await fetchRunDetail(addr, runId));
427
- }
428
- /**
429
- * The run's terminal outcome facts through fetchRunDetail's THREE-state
430
- * semantics (INV-120/122): missing/legacy detail and transport loss project
431
- * null (the lifecycle-only exit stands), while a typed problem response — the
432
- * server's verdict that the terminal cannot be trusted (500 run_facts_invalid)
433
- * — raises into the CLI failure path instead of silently exiting as if the
434
- * facts never existed. Makes the direct-run CLI exit outcome-aware for a
435
- * work_state veto (callers that need only this one projection).
436
- */
437
- export async function fetchRunOutcomeFacts(addr, runId) {
438
- return projectRunOutcomeFacts(await fetchRunDetail(addr, runId));
439
- }
440
- /**
441
- * The server-owned outcome banner for a run (D18): the single honest headline,
442
- * derived by the control-plane projection owner. The CLI PRINTS it verbatim —
443
- * it never re-derives a headline of its own, so model prose can never outrank
444
- * the arbitrated truth. Null while the run is not terminal or unavailable.
445
- */
446
- export async function fetchOutcomeBanner(addr, runId) {
447
- return projectOutcomeBanner(await fetchRunDetail(addr, runId));
448
- }
449
- /**
450
- * Machine-readable reason for a non-clean DAEMON terminal (P2, D8). A
451
- * needs-decision run (review blocked / checks failed) has a SUCCEEDED lifecycle
452
- * and no `error`, so key the actionable decision hint on the run FACTS, not on
453
- * the lifecycle; other non-succeeded lifecycles use the error or a reason
454
- * label. A clean succeeded run returns undefined (no `summary` key emitted).
455
- */
456
- export function daemonOutcomeSummary(out) {
457
- const facts = out.outcomeFacts ?? null;
458
- const needsDecision = !!facts &&
459
- facts.lifecycle === "succeeded" &&
460
- (facts.review === "blocked" || facts.checks === "failed");
461
- if (needsDecision) {
462
- return `run needs a human decision — claudexor decision ${out.runId} --accept-risk | --rerun --feedback "..."`;
463
- }
464
- if (out.error)
465
- return out.error;
466
- if (exitCodeForState(out.status, facts) === 0)
467
- return undefined;
468
- return `run ${out.status}${facts?.reason ? ` (${facts.reason})` : ""}`;
469
- }
333
+ // Run-detail fetch wrappers + terminal projections live in run-detail-fetch.ts
334
+ // (ratchet split); re-exported so existing import sites stay stable.
335
+ export { exitCodeForState, fetchPlanReadiness, fetchPlanQuestions, fetchCouncil, fetchRunDetail, fetchApplyEligibility, fetchRunOutcomeFacts, fetchOutcomeBanner, daemonOutcomeSummary, } from "./run-detail-fetch.js";
470
336
  //# sourceMappingURL=daemon-run.js.map
@@ -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,64 @@
1
+ /** Same-major daemon/CLI skew observed on this process's control connection. */
2
+ export interface EngineSkew {
3
+ daemonVersion: string;
4
+ /** Present only when the daemon reported a well-formed 40-hex build SHA. */
5
+ daemonSha?: string;
6
+ cliVersion: string;
7
+ }
8
+ /** The daemon's validated build identity from a successful handshake. The
9
+ * engine version is the AUTHORITATIVE running-engine version (QA-033a): a
10
+ * `release check` must trust this live process identity over the executing CLI
11
+ * package constant. Null when the daemon did not report a well-formed version. */
12
+ export interface EngineIdentity {
13
+ engineVersion: string | null;
14
+ engineBuildSha: string | null;
15
+ }
16
+ /** The ONE remedy wording — stderr advisory and typed requiredActions speak
17
+ * with the same voice, so it must stay CALLER-NEUTRAL: acting commands
18
+ * (`ensureDaemon`) auto-start the CLI's own dist daemon after the stop, which
19
+ * cannot mismatch, but read-only paths (`connectDaemonIfRunning`: bare
20
+ * `follow`/`inspect`, the release check) never auto-start and need an
21
+ * explicit `claudexor daemon start` (a running macOS app may still relaunch
22
+ * its own runtime afterwards; its reconciler owns that lifecycle). */
23
+ export declare const ENGINE_STOP_REMEDY = "run `claudexor daemon stop`, then rerun \u2014 an acting command starts a matching daemon (read-only commands: run `claudexor daemon start` first)";
24
+ /** Overwrite the recorded skew (null clears). Called on every successful
25
+ * handshake and on transport absence — the record always reflects the LAST
26
+ * live observation, never a daemon this process can no longer see. */
27
+ export declare function recordEngineSkew(skew: EngineSkew | null): void;
28
+ /** The skew observed on this process's current connection, or null. */
29
+ export declare function observedEngineSkew(): EngineSkew | null;
30
+ export interface HandshakeIdentity {
31
+ /** The daemon's validated build identity (QA-033a); nulls when unreported. */
32
+ engine: EngineIdentity;
33
+ /** Pre-formatted stderr advisory line for a same-major skew; null when the
34
+ * daemon matches this CLI (or reported no well-formed version). */
35
+ skewAdvisory: string | null;
36
+ }
37
+ /**
38
+ * Consume a SUCCESSFUL (HTTP 200) handshake response body: parse the
39
+ * canonical envelope, validate the echoed identity, and update the skew
40
+ * record — set on a validated version mismatch, cleared otherwise (a
41
+ * malformed body observed nothing trustworthy and clears too).
42
+ */
43
+ export declare function consumeHandshakeIdentity(body: unknown): HandshakeIdentity;
44
+ /** The typed-problem fields `stampEngineSkew` shapes — a structural mirror of
45
+ * cli-error's CliProblemFields (deliberately NOT imported: the projector's
46
+ * dependency graph stays acyclic and last-resort-safe). */
47
+ export interface SkewStampableFields {
48
+ code?: string;
49
+ retryable?: boolean;
50
+ fieldErrors?: Record<string, string[]>;
51
+ requiredActions?: string[];
52
+ details?: Record<string, unknown>;
53
+ context?: Record<string, unknown>;
54
+ }
55
+ /**
56
+ * Shape a typed problem's fields at the controlProblemError choke point:
57
+ * append `appendRequiredActions` (the handshake-refusal path names the stop
58
+ * remedy explicitly), and when a same-major skew is recorded attach
59
+ * `context.engineSkew` plus the stop remedy. Duplicate actions are elided so
60
+ * the remedy reads once. With nothing to add, returns `fields` UNCHANGED —
61
+ * unskewed envelopes are byte-identical to before this fix.
62
+ */
63
+ export declare function stampEngineSkew(fields: SkewStampableFields, appendRequiredActions?: string[]): SkewStampableFields;
64
+ //# sourceMappingURL=engine-skew.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine-skew.d.ts","sourceRoot":"","sources":["../src/engine-skew.ts"],"names":[],"mappings":"AA0BA,gFAAgF;AAChF,MAAM,WAAW,UAAU;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,4EAA4E;IAC5E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;kFAGkF;AAClF,MAAM,WAAW,cAAc;IAC7B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED;;;;;;sEAMsE;AACtE,eAAO,MAAM,kBAAkB,uJACkH,CAAC;AAIlJ;;sEAEsE;AACtE,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,GAAG,IAAI,CAE9D;AAED,uEAAuE;AACvE,wBAAgB,kBAAkB,IAAI,UAAU,GAAG,IAAI,CAEtD;AAQD,MAAM,WAAW,iBAAiB;IAChC,8EAA8E;IAC9E,MAAM,EAAE,cAAc,CAAC;IACvB;uEACmE;IACnE,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,OAAO,GAAG,iBAAiB,CAyBzE;AAED;;2DAE2D;AAC3D,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACvC,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,mBAAmB,EAC3B,qBAAqB,CAAC,EAAE,MAAM,EAAE,GAC/B,mBAAmB,CAYrB"}
@@ -0,0 +1,101 @@
1
+ /**
2
+ * Engine/CLI version-skew evidence — the one small owner (issue #93).
3
+ *
4
+ * A CLI process talks to exactly one daemon connection at a time, and the
5
+ * /v2/handshake already reports the serving engine's build identity. This
6
+ * module keeps that fact usable at failure time:
7
+ *
8
+ * - `consumeHandshakeIdentity` parses the CANONICAL handshake envelope
9
+ * (`ControlHandshakeResponse` — never a hand-rolled partial parser),
10
+ * applies echo hygiene, and OVERWRITES the module-scoped skew record on
11
+ * every successful handshake. Long-lived MCP/ACP processes reconnect after
12
+ * daemon restarts, so a stale record must never annotate post-fix failures;
13
+ * transport absence clears the record too (daemon-run.ts).
14
+ * - `stampEngineSkew` is called by `controlProblemError` (cli-error.ts) — the
15
+ * single choke point every typed control-problem projection funnels
16
+ * through — so a stale daemon's own typed failure (e.g. a 422
17
+ * config_invalid raised against a NEWER config schema) carries the observed
18
+ * skew as bounded typed context plus the stop remedy. With no recorded skew
19
+ * the fields pass through UNTOUCHED: unskewed envelopes stay byte-identical.
20
+ *
21
+ * Same-major skew stays ADVISORY (a0c16964/PDR-02: the protocol major is the
22
+ * only hard fence) — this module records evidence, it never blocks.
23
+ */
24
+ import { ControlHandshakeResponse } from "@claudexor/schema";
25
+ import { CLAUDEXOR_VERSION } from "@claudexor/util";
26
+ /** The ONE remedy wording — stderr advisory and typed requiredActions speak
27
+ * with the same voice, so it must stay CALLER-NEUTRAL: acting commands
28
+ * (`ensureDaemon`) auto-start the CLI's own dist daemon after the stop, which
29
+ * cannot mismatch, but read-only paths (`connectDaemonIfRunning`: bare
30
+ * `follow`/`inspect`, the release check) never auto-start and need an
31
+ * explicit `claudexor daemon start` (a running macOS app may still relaunch
32
+ * its own runtime afterwards; its reconciler owns that lifecycle). */
33
+ export const ENGINE_STOP_REMEDY = "run `claudexor daemon stop`, then rerun — an acting command starts a matching daemon (read-only commands: run `claudexor daemon start` first)";
34
+ let observedSkew = null;
35
+ /** Overwrite the recorded skew (null clears). Called on every successful
36
+ * handshake and on transport absence — the record always reflects the LAST
37
+ * live observation, never a daemon this process can no longer see. */
38
+ export function recordEngineSkew(skew) {
39
+ observedSkew = skew;
40
+ }
41
+ /** The skew observed on this process's current connection, or null. */
42
+ export function observedEngineSkew() {
43
+ return observedSkew ? { ...observedSkew } : null;
44
+ }
45
+ // Echo hygiene (INV-062-adjacent): only a validated engine version/SHA may
46
+ // reach a terminal or a typed envelope — never arbitrary response text. Same
47
+ // bounds the plugin-skew check uses.
48
+ const ENGINE_VERSION_RE = /^[\w.+-]{1,32}$/;
49
+ const BUILD_SHA_RE = /^[0-9a-f]{40}$/;
50
+ /**
51
+ * Consume a SUCCESSFUL (HTTP 200) handshake response body: parse the
52
+ * canonical envelope, validate the echoed identity, and update the skew
53
+ * record — set on a validated version mismatch, cleared otherwise (a
54
+ * malformed body observed nothing trustworthy and clears too).
55
+ */
56
+ export function consumeHandshakeIdentity(body) {
57
+ const parsed = ControlHandshakeResponse.safeParse(body);
58
+ if (!parsed.success) {
59
+ // Identity is advisory; a malformed body never fails the handshake.
60
+ recordEngineSkew(null);
61
+ return { engine: { engineVersion: null, engineBuildSha: null }, skewAdvisory: null };
62
+ }
63
+ const { version, sha } = parsed.data.engine;
64
+ const daemonVersion = ENGINE_VERSION_RE.test(version) ? version : null;
65
+ const engineBuildSha = sha === "unknown" || BUILD_SHA_RE.test(sha) ? sha : null;
66
+ if (daemonVersion && daemonVersion !== CLAUDEXOR_VERSION) {
67
+ recordEngineSkew({
68
+ daemonVersion,
69
+ ...(engineBuildSha && engineBuildSha !== "unknown" ? { daemonSha: engineBuildSha } : {}),
70
+ cliVersion: CLAUDEXOR_VERSION,
71
+ });
72
+ return {
73
+ engine: { engineVersion: daemonVersion, engineBuildSha },
74
+ skewAdvisory: `claudexor: daemon is engine ${daemonVersion} but this CLI is ${CLAUDEXOR_VERSION}; ` +
75
+ `${ENGINE_STOP_REMEDY}\n`,
76
+ };
77
+ }
78
+ recordEngineSkew(null);
79
+ return { engine: { engineVersion: daemonVersion, engineBuildSha }, skewAdvisory: null };
80
+ }
81
+ /**
82
+ * Shape a typed problem's fields at the controlProblemError choke point:
83
+ * append `appendRequiredActions` (the handshake-refusal path names the stop
84
+ * remedy explicitly), and when a same-major skew is recorded attach
85
+ * `context.engineSkew` plus the stop remedy. Duplicate actions are elided so
86
+ * the remedy reads once. With nothing to add, returns `fields` UNCHANGED —
87
+ * unskewed envelopes are byte-identical to before this fix.
88
+ */
89
+ export function stampEngineSkew(fields, appendRequiredActions) {
90
+ const skew = observedSkew;
91
+ const existing = fields.requiredActions ?? [];
92
+ const appended = [...(appendRequiredActions ?? []), ...(skew ? [ENGINE_STOP_REMEDY] : [])].filter((action, index, all) => !existing.includes(action) && all.indexOf(action) === index);
93
+ if (!skew && appended.length === 0)
94
+ return fields;
95
+ return {
96
+ ...fields,
97
+ requiredActions: [...existing, ...appended],
98
+ ...(skew ? { context: { ...(fields.context ?? {}), engineSkew: { ...skew } } } : {}),
99
+ };
100
+ }
101
+ //# sourceMappingURL=engine-skew.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine-skew.js","sourceRoot":"","sources":["../src/engine-skew.ts"],"names":[],"mappings":"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"}
package/dist/live.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import { type EngineIdentity } from "./engine-skew.js";
1
2
  export { collectInteractionAnswers } from "./interaction-prompt.js";
2
3
  /** One CLI process-status policy for direct runs and streamed terminals — a
3
4
  * thin re-export of the ONE projection owner (D8): the lifecycle IS the exit
@@ -45,14 +46,6 @@ export { CONTROL_PROTOCOL_MAJOR };
45
46
  export declare function controlApiAddress(): ControlApiAddress;
46
47
  /** One control-plane transport boundary for CLI, MCP and ACP projections. */
47
48
  export declare function controlApiFetch(addr: ControlApiAddress, path: string, init?: RequestInit): Promise<Response>;
48
- /** The daemon's validated build identity from a successful handshake. The
49
- * engine version is the AUTHORITATIVE running-engine version (QA-033a): a
50
- * `release check` must trust this live process identity over the executing CLI
51
- * package constant. Null when the daemon did not report a well-formed version. */
52
- export interface EngineIdentity {
53
- engineVersion: string | null;
54
- engineBuildSha: string | null;
55
- }
56
49
  export declare function handshakeControlApi(addr: ControlApiAddress, client?: string): Promise<EngineIdentity>;
57
50
  /**
58
51
  * `claudexor follow <run_id>`: live SSE tail of a daemon-backed run with full
@@ -1 +1 @@
1
- {"version":3,"file":"live.d.ts","sourceRoot":"","sources":["../src/live.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAMpE;;sEAEsE;AACtE,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAElE;AAED;;;6EAG6E;AAC7E,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAInF;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,IAAI,CAqI7E;AAcD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,2BAA2B,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,GAAG,IAAI,CAgB5F;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAID,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,CAAC;AAElC,wBAAgB,iBAAiB,IAAI,iBAAiB,CASrD;AAED,6EAA6E;AAC7E,wBAAgB,eAAe,CAC7B,IAAI,EAAE,iBAAiB,EACvB,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,WAAgB,GACrB,OAAO,CAAC,QAAQ,CAAC,CA4BnB;AAED;;;kFAGkF;AAClF,MAAM,WAAW,cAAc;IAC7B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,iBAAiB,EACvB,MAAM,SAAkB,GACvB,OAAO,CAAC,cAAc,CAAC,CAwCzB;AAED;;;;;;;GAOG;AACH,wBAAsB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CA0J7E"}
1
+ {"version":3,"file":"live.d.ts","sourceRoot":"","sources":["../src/live.ts"],"names":[],"mappings":"AAeA,OAAO,EAA8C,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEnG,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAMpE;;sEAEsE;AACtE,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAElE;AAED;;;6EAG6E;AAC7E,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAInF;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,IAAI,CAqI7E;AAcD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,2BAA2B,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,GAAG,IAAI,CAgB5F;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAID,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,CAAC;AAElC,wBAAgB,iBAAiB,IAAI,iBAAiB,CAwCrD;AAED,6EAA6E;AAC7E,wBAAgB,eAAe,CAC7B,IAAI,EAAE,iBAAiB,EACvB,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,WAAgB,GACrB,OAAO,CAAC,QAAQ,CAAC,CA4BnB;AAED,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,iBAAiB,EACvB,MAAM,SAAkB,GACvB,OAAO,CAAC,cAAc,CAAC,CAyBzB;AAED;;;;;;;GAOG;AACH,wBAAsB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CA+J7E"}