@claudexor/cli 3.0.3 → 3.1.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 (133) hide show
  1. package/LICENSE +1 -1
  2. package/dist/about-command.d.ts +32 -0
  3. package/dist/about-command.d.ts.map +1 -0
  4. package/dist/about-command.js +40 -0
  5. package/dist/about-command.js.map +1 -0
  6. package/dist/acp-surface-runner.d.ts +12 -0
  7. package/dist/acp-surface-runner.d.ts.map +1 -1
  8. package/dist/acp-surface-runner.js +113 -11
  9. package/dist/acp-surface-runner.js.map +1 -1
  10. package/dist/capabilities.d.ts.map +1 -1
  11. package/dist/capabilities.js +2 -1
  12. package/dist/capabilities.js.map +1 -1
  13. package/dist/claudexord.d.ts +21 -0
  14. package/dist/claudexord.d.ts.map +1 -1
  15. package/dist/claudexord.js +96 -8
  16. package/dist/claudexord.js.map +1 -1
  17. package/dist/cli-error.d.ts +97 -0
  18. package/dist/cli-error.d.ts.map +1 -0
  19. package/dist/cli-error.js +308 -0
  20. package/dist/cli-error.js.map +1 -0
  21. package/dist/cli-io.d.ts +9 -0
  22. package/dist/cli-io.d.ts.map +1 -1
  23. package/dist/cli-io.js +10 -1
  24. package/dist/cli-io.js.map +1 -1
  25. package/dist/cli.js +105 -110
  26. package/dist/cli.js.map +1 -1
  27. package/dist/codex-device-login.d.ts +117 -0
  28. package/dist/codex-device-login.d.ts.map +1 -0
  29. package/dist/codex-device-login.js +227 -0
  30. package/dist/codex-device-login.js.map +1 -0
  31. package/dist/command-flags.d.ts.map +1 -1
  32. package/dist/command-flags.js +4 -3
  33. package/dist/command-flags.js.map +1 -1
  34. package/dist/command-help.d.ts +46 -0
  35. package/dist/command-help.d.ts.map +1 -0
  36. package/dist/command-help.js +92 -0
  37. package/dist/command-help.js.map +1 -0
  38. package/dist/command-registry.d.ts +2 -0
  39. package/dist/command-registry.d.ts.map +1 -1
  40. package/dist/command-registry.js +11 -4
  41. package/dist/command-registry.js.map +1 -1
  42. package/dist/control-services.d.ts +45 -18
  43. package/dist/control-services.d.ts.map +1 -1
  44. package/dist/control-services.js +56 -30
  45. package/dist/control-services.js.map +1 -1
  46. package/dist/credential-commands.d.ts.map +1 -1
  47. package/dist/credential-commands.js +44 -1
  48. package/dist/credential-commands.js.map +1 -1
  49. package/dist/daemon-outcome.d.ts +24 -0
  50. package/dist/daemon-outcome.d.ts.map +1 -0
  51. package/dist/daemon-outcome.js +59 -0
  52. package/dist/daemon-outcome.js.map +1 -0
  53. package/dist/daemon-run.d.ts +23 -4
  54. package/dist/daemon-run.d.ts.map +1 -1
  55. package/dist/daemon-run.js +66 -27
  56. package/dist/daemon-run.js.map +1 -1
  57. package/dist/delegation-belt-descriptor.d.ts +31 -13
  58. package/dist/delegation-belt-descriptor.d.ts.map +1 -1
  59. package/dist/delegation-belt-descriptor.js +43 -15
  60. package/dist/delegation-belt-descriptor.js.map +1 -1
  61. package/dist/live.d.ts +13 -1
  62. package/dist/live.d.ts.map +1 -1
  63. package/dist/live.js +56 -7
  64. package/dist/live.js.map +1 -1
  65. package/dist/mcp-runner.d.ts.map +1 -1
  66. package/dist/mcp-runner.js +60 -6
  67. package/dist/mcp-runner.js.map +1 -1
  68. package/dist/native-login.d.ts +10 -1
  69. package/dist/native-login.d.ts.map +1 -1
  70. package/dist/native-login.js +32 -10
  71. package/dist/native-login.js.map +1 -1
  72. package/dist/ops-commands.d.ts.map +1 -1
  73. package/dist/ops-commands.js +42 -51
  74. package/dist/ops-commands.js.map +1 -1
  75. package/dist/plan-implement-readiness.d.ts +32 -0
  76. package/dist/plan-implement-readiness.d.ts.map +1 -0
  77. package/dist/plan-implement-readiness.js +51 -0
  78. package/dist/plan-implement-readiness.js.map +1 -0
  79. package/dist/plugins.d.ts.map +1 -1
  80. package/dist/plugins.js +73 -20
  81. package/dist/plugins.js.map +1 -1
  82. package/dist/project-command.d.ts +15 -0
  83. package/dist/project-command.d.ts.map +1 -1
  84. package/dist/project-command.js +75 -20
  85. package/dist/project-command.js.map +1 -1
  86. package/dist/quota-command.d.ts.map +1 -1
  87. package/dist/quota-command.js +2 -6
  88. package/dist/quota-command.js.map +1 -1
  89. package/dist/release-command.d.ts.map +1 -1
  90. package/dist/release-command.js +31 -6
  91. package/dist/release-command.js.map +1 -1
  92. package/dist/release.d.ts +41 -10
  93. package/dist/release.d.ts.map +1 -1
  94. package/dist/release.js +70 -48
  95. package/dist/release.js.map +1 -1
  96. package/dist/repo-asset-authority.d.ts +93 -0
  97. package/dist/repo-asset-authority.d.ts.map +1 -0
  98. package/dist/repo-asset-authority.js +178 -0
  99. package/dist/repo-asset-authority.js.map +1 -0
  100. package/dist/review-command.d.ts.map +1 -1
  101. package/dist/review-command.js +2 -6
  102. package/dist/review-command.js.map +1 -1
  103. package/dist/settings-command.d.ts.map +1 -1
  104. package/dist/settings-command.js +2 -6
  105. package/dist/settings-command.js.map +1 -1
  106. package/dist/settings-service.d.ts +51 -2
  107. package/dist/settings-service.d.ts.map +1 -1
  108. package/dist/settings-service.js +126 -2
  109. package/dist/settings-service.js.map +1 -1
  110. package/dist/setup-job-store.d.ts +14 -3
  111. package/dist/setup-job-store.d.ts.map +1 -1
  112. package/dist/setup-job-store.js +24 -4
  113. package/dist/setup-job-store.js.map +1 -1
  114. package/dist/setup-jobs.d.ts +14 -4
  115. package/dist/setup-jobs.d.ts.map +1 -1
  116. package/dist/setup-jobs.js +204 -23
  117. package/dist/setup-jobs.js.map +1 -1
  118. package/dist/setup-login-inline.d.ts +69 -0
  119. package/dist/setup-login-inline.d.ts.map +1 -0
  120. package/dist/setup-login-inline.js +206 -0
  121. package/dist/setup-login-inline.js.map +1 -0
  122. package/dist/setup-login-protocol.d.ts +3 -2
  123. package/dist/setup-login-protocol.d.ts.map +1 -1
  124. package/dist/setup-login-protocol.js +16 -1
  125. package/dist/setup-login-protocol.js.map +1 -1
  126. package/dist/setup-login-runner.d.ts +9 -0
  127. package/dist/setup-login-runner.d.ts.map +1 -1
  128. package/dist/setup-login-runner.js +212 -5
  129. package/dist/setup-login-runner.js.map +1 -1
  130. package/dist/thread-delivery.d.ts.map +1 -1
  131. package/dist/thread-delivery.js +3 -1
  132. package/dist/thread-delivery.js.map +1 -1
  133. package/package.json +23 -23
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2026 joi-lab
3
+ Copyright (c) 2026 Anton Razzhigaev
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
@@ -0,0 +1,32 @@
1
+ /**
2
+ * `claudexor about` — product identity, version, author, license, and the
3
+ * owner's canonical links (D-11). Text is the default; `--json` emits a small
4
+ * stable envelope agents can parse. The Swift About panel (Ф3) and the packed
5
+ * npm-manifest assertion (Ф5) consume the SAME facts declared here.
6
+ */
7
+ /** The single source of the product's non-version identity facts. */
8
+ export declare const ABOUT_PRODUCT_NAME = "Claudexor";
9
+ export declare const ABOUT_AUTHOR = "Anton Razzhigaev";
10
+ export declare const ABOUT_LICENSE = "MIT";
11
+ export declare const ABOUT_LINKS: {
12
+ readonly telegram: "https://t.me/abstractDL";
13
+ readonly x: "https://x.com/AbstractDL";
14
+ readonly repository: "https://github.com/razzant/claudexor";
15
+ };
16
+ export interface AboutJson {
17
+ readonly ok: true;
18
+ readonly name: string;
19
+ readonly version: string;
20
+ readonly author: string;
21
+ readonly license: string;
22
+ readonly links: {
23
+ readonly telegram: string;
24
+ readonly x: string;
25
+ readonly repository: string;
26
+ };
27
+ }
28
+ /** Machine-readable identity envelope (`claudexor about --json`). */
29
+ export declare function aboutJson(version: string): AboutJson;
30
+ /** Human-readable `claudexor about` text. */
31
+ export declare function renderAbout(version: string): string;
32
+ //# sourceMappingURL=about-command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"about-command.d.ts","sourceRoot":"","sources":["../src/about-command.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,qEAAqE;AACrE,eAAO,MAAM,kBAAkB,cAAc,CAAC;AAC9C,eAAO,MAAM,YAAY,qBAAqB,CAAC;AAC/C,eAAO,MAAM,aAAa,QAAQ,CAAC;AACnC,eAAO,MAAM,WAAW;;;;CAId,CAAC;AAEX,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAClB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE;QACd,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;KAC7B,CAAC;CACH;AAED,qEAAqE;AACrE,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CASpD;AAED,6CAA6C;AAC7C,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAWnD"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * `claudexor about` — product identity, version, author, license, and the
3
+ * owner's canonical links (D-11). Text is the default; `--json` emits a small
4
+ * stable envelope agents can parse. The Swift About panel (Ф3) and the packed
5
+ * npm-manifest assertion (Ф5) consume the SAME facts declared here.
6
+ */
7
+ /** The single source of the product's non-version identity facts. */
8
+ export const ABOUT_PRODUCT_NAME = "Claudexor";
9
+ export const ABOUT_AUTHOR = "Anton Razzhigaev";
10
+ export const ABOUT_LICENSE = "MIT";
11
+ export const ABOUT_LINKS = {
12
+ telegram: "https://t.me/abstractDL",
13
+ x: "https://x.com/AbstractDL",
14
+ repository: "https://github.com/razzant/claudexor",
15
+ };
16
+ /** Machine-readable identity envelope (`claudexor about --json`). */
17
+ export function aboutJson(version) {
18
+ return {
19
+ ok: true,
20
+ name: ABOUT_PRODUCT_NAME,
21
+ version,
22
+ author: ABOUT_AUTHOR,
23
+ license: ABOUT_LICENSE,
24
+ links: { ...ABOUT_LINKS },
25
+ };
26
+ }
27
+ /** Human-readable `claudexor about` text. */
28
+ export function renderAbout(version) {
29
+ return [
30
+ `${ABOUT_PRODUCT_NAME} v${version}`,
31
+ "harness-agnostic AI coding control plane",
32
+ "",
33
+ `Author: ${ABOUT_AUTHOR}`,
34
+ `License: ${ABOUT_LICENSE}`,
35
+ `Repository: ${ABOUT_LINKS.repository}`,
36
+ `Telegram: ${ABOUT_LINKS.telegram}`,
37
+ `X: ${ABOUT_LINKS.x}`,
38
+ ].join("\n");
39
+ }
40
+ //# sourceMappingURL=about-command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"about-command.js","sourceRoot":"","sources":["../src/about-command.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,qEAAqE;AACrE,MAAM,CAAC,MAAM,kBAAkB,GAAG,WAAW,CAAC;AAC9C,MAAM,CAAC,MAAM,YAAY,GAAG,kBAAkB,CAAC;AAC/C,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,CAAC;AACnC,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,QAAQ,EAAE,yBAAyB;IACnC,CAAC,EAAE,0BAA0B;IAC7B,UAAU,EAAE,sCAAsC;CAC1C,CAAC;AAeX,qEAAqE;AACrE,MAAM,UAAU,SAAS,CAAC,OAAe;IACvC,OAAO;QACL,EAAE,EAAE,IAAI;QACR,IAAI,EAAE,kBAAkB;QACxB,OAAO;QACP,MAAM,EAAE,YAAY;QACpB,OAAO,EAAE,aAAa;QACtB,KAAK,EAAE,EAAE,GAAG,WAAW,EAAE;KAC1B,CAAC;AACJ,CAAC;AAED,6CAA6C;AAC7C,MAAM,UAAU,WAAW,CAAC,OAAe;IACzC,OAAO;QACL,GAAG,kBAAkB,KAAK,OAAO,EAAE;QACnC,0CAA0C;QAC1C,EAAE;QACF,eAAe,YAAY,EAAE;QAC7B,eAAe,aAAa,EAAE;QAC9B,eAAe,WAAW,CAAC,UAAU,EAAE;QACvC,eAAe,WAAW,CAAC,QAAQ,EAAE;QACrC,eAAe,WAAW,CAAC,CAAC,EAAE;KAC/B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
@@ -1,4 +1,16 @@
1
1
  import { type ControlApiAddress } from "./live.js";
2
+ export declare const ACP_MAX_REPLAY_TURNS = 50;
3
+ /** Bound the load-replay to the most recent ACP_MAX_REPLAY_TURNS turns, and
4
+ * report how many older turns were omitted (disclosed to the client, never
5
+ * silently dropped). Pure + exported for test. */
6
+ export declare function selectReplayTurns<T>(rawTurns: readonly T[]): {
7
+ replayTurns: T[];
8
+ omittedTurnCount: number;
9
+ };
10
+ /** A machine-ish reason for a failed per-turn run-detail fetch: prefer the
11
+ * typed control-API `code` (e.g. run_expired_by_retention), then the HTTP
12
+ * status, then a generic marker — never the raw English message. */
13
+ export declare function typedFetchReason(error: unknown): string;
2
14
  type Hooks = {
3
15
  onInteraction?: (ctx: any) => Promise<any | null>;
4
16
  signal?: AbortSignal;
@@ -1 +1 @@
1
- {"version":3,"file":"acp-surface-runner.d.ts","sourceRoot":"","sources":["../src/acp-surface-runner.ts"],"names":[],"mappings":"AASA,OAAO,EAAmB,KAAK,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAOpE,KAAK,KAAK,GAAG;IACX,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC;IAClD,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,CAAC;AAEF,KAAK,OAAO,GAAG;IACb,MAAM,EAAE,CACN,IAAI,EAAE,iBAAiB,EACvB,MAAM,EAAE,WAAW,KAChB,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,YAAY,EAAE,CACZ,IAAI,EAAE,iBAAiB,EACvB,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,KACvC,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACjD,CAAC;AAEF,gFAAgF;AAChF,wBAAsB,eAAe,CACnC,CAAC,EAAE,GAAG,EACN,KAAK,EAAE,KAAK,GAAG,SAAS,EACxB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,OAAO,CAAC,CAmIlB"}
1
+ {"version":3,"file":"acp-surface-runner.d.ts","sourceRoot":"","sources":["../src/acp-surface-runner.ts"],"names":[],"mappings":"AAUA,OAAO,EAAmB,KAAK,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAWpE,eAAO,MAAM,oBAAoB,KAAK,CAAC;AAEvC;;mDAEmD;AACnD,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,GAAG;IAC5D,WAAW,EAAE,CAAC,EAAE,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;CAC1B,CAKA;AAED;;qEAEqE;AACrE,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAOvD;AAED,KAAK,KAAK,GAAG;IACX,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC;IAClD,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,CAAC;AAEF,KAAK,OAAO,GAAG;IACb,MAAM,EAAE,CACN,IAAI,EAAE,iBAAiB,EACvB,MAAM,EAAE,WAAW,KAChB,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,YAAY,EAAE,CACZ,IAAI,EAAE,iBAAiB,EACvB,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,KACvC,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACjD,CAAC;AAEF,gFAAgF;AAChF,wBAAsB,eAAe,CACnC,CAAC,EAAE,GAAG,EACN,KAAK,EAAE,KAAK,GAAG,SAAS,EACxB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,OAAO,CAAC,CA0MlB"}
@@ -1,4 +1,5 @@
1
1
  import { createHash, randomUUID } from "node:crypto";
2
+ import { noProjectRepoRoot } from "@claudexor/util";
2
3
  import { TERMINAL_LIFECYCLES } from "@claudexor/schema";
3
4
  import { daemonOutcomeSummary, ensureDaemon, fetchApplyEligibility, fetchPlanQuestions, fetchPlanReadiness, } from "./daemon-run.js";
4
5
  import { controlApiFetch } from "./live.js";
@@ -6,6 +7,33 @@ import { primaryOutputForCli } from "./primary-output.js";
6
7
  // Daemon job state IS the run lifecycle (D8): terminal set = the ONE
7
8
  // projection-owned TERMINAL_LIFECYCLES, never a local re-derivation.
8
9
  const TERMINALS = TERMINAL_LIFECYCLES;
10
+ // W5: an ACP session/load replays the conversation by fetching one run detail
11
+ // per turn. Cap that fan-out to the most recent N turns so reopening a long
12
+ // thread cannot issue thousands of per-reopen detail fetches; older turns are
13
+ // disclosed as omitted rather than silently dropped.
14
+ export const ACP_MAX_REPLAY_TURNS = 50;
15
+ /** Bound the load-replay to the most recent ACP_MAX_REPLAY_TURNS turns, and
16
+ * report how many older turns were omitted (disclosed to the client, never
17
+ * silently dropped). Pure + exported for test. */
18
+ export function selectReplayTurns(rawTurns) {
19
+ return {
20
+ replayTurns: rawTurns.slice(-ACP_MAX_REPLAY_TURNS),
21
+ omittedTurnCount: Math.max(0, rawTurns.length - ACP_MAX_REPLAY_TURNS),
22
+ };
23
+ }
24
+ /** A machine-ish reason for a failed per-turn run-detail fetch: prefer the
25
+ * typed control-API `code` (e.g. run_expired_by_retention), then the HTTP
26
+ * status, then a generic marker — never the raw English message. */
27
+ export function typedFetchReason(error) {
28
+ if (error && typeof error === "object") {
29
+ const e = error;
30
+ if (typeof e.code === "string" && e.code)
31
+ return e.code;
32
+ if (typeof e.status === "number")
33
+ return `http_${e.status}`;
34
+ }
35
+ return "detail_unavailable";
36
+ }
9
37
  /** Daemon-thread implementation behind the official ACP protocol projection. */
10
38
  export async function acpSessionQuery(p, hooks, bridges) {
11
39
  const { client, addr } = await ensureDaemon();
@@ -13,11 +41,16 @@ export async function acpSessionQuery(p, hooks, bridges) {
13
41
  const response = await controlApiFetch(addr, path, init);
14
42
  const body = (await response.json().catch(() => ({})));
15
43
  if (!response.ok) {
16
- throw new Error(typeof body["message"] === "string"
44
+ // Preserve the typed code/status on the throwable so callers can disclose
45
+ // a MACHINE reason (e.g. run_expired_by_retention) rather than only prose.
46
+ throw Object.assign(new Error(typeof body["message"] === "string"
17
47
  ? body["message"]
18
48
  : typeof body["error"] === "string"
19
49
  ? body["error"]
20
- : `control API ${path} failed (HTTP ${response.status})`);
50
+ : `control API ${path} failed (HTTP ${response.status})`), {
51
+ status: response.status,
52
+ ...(typeof body["code"] === "string" ? { code: body["code"] } : {}),
53
+ });
21
54
  }
22
55
  return body;
23
56
  };
@@ -55,15 +88,78 @@ export async function acpSessionQuery(p, hooks, bridges) {
55
88
  if (p.repoPath && session.cwd !== p.repoPath) {
56
89
  throw new Error(`ACP session ${sessionId} belongs to a different cwd`);
57
90
  }
58
- if (p.mode === "__acp_session_load" || p.mode === "__acp_session_resume") {
59
- const turns = (Array.isArray(detail["turns"]) ? detail["turns"] : []).map((turn) => {
91
+ if (p.mode === "__acp_session_resume") {
92
+ // ACP resume MUST NOT replay conversation history it is the no-history
93
+ // continuation capability. Return the session shell only; the server emits
94
+ // zero session/update notifications for resume.
95
+ return { ...session };
96
+ }
97
+ if (p.mode === "__acp_session_load") {
98
+ // ACP loadSession MUST replay the ENTIRE conversation before responding
99
+ // (QA-020). Build ordered {prompt, output} entries from the durable turns:
100
+ // the user half is ControlThreadTurn.prompt; the agent half is the Control
101
+ // API's OWN typed primary-output owner (ControlRunDetail.primaryOutput) —
102
+ // the same artifact macOS/run-detail render — never the non-existent
103
+ // `run.result.summary`. A runless (refused/preflight-failed) turn keeps its
104
+ // user prompt and discloses its typed enqueue error so it never vanishes.
105
+ // This per-turn run-detail read happens only on reopen (bounded to the
106
+ // thread's own turns), not on the hot thread-hydration path where INV-136's
107
+ // no-N+1 compact-card contract still holds. The reads are further BOUNDED to
108
+ // the most recent ACP_MAX_REPLAY_TURNS turns (W5): an old thread with
109
+ // thousands of turns must not fan out one detail fetch per turn on reopen. A
110
+ // failed per-turn detail fetch DISCLOSES a typed reason instead of vanishing.
111
+ const rawTurns = Array.isArray(detail["turns"]) ? detail["turns"] : [];
112
+ const { replayTurns, omittedTurnCount } = selectReplayTurns(rawTurns);
113
+ const turns = [];
114
+ // Disclose the cap so the reopened conversation never silently starts
115
+ // mid-stream as if the earlier turns never existed.
116
+ if (omittedTurnCount > 0) {
117
+ turns.push({
118
+ prompt: "",
119
+ output: {
120
+ kind: "diagnostic",
121
+ text: `[replaying the most recent ${ACP_MAX_REPLAY_TURNS} turns; ${omittedTurnCount} earlier turn(s) omitted]`,
122
+ truncated: true,
123
+ },
124
+ });
125
+ }
126
+ for (const turn of replayTurns) {
60
127
  const value = turn;
61
- const result = value["run"]?.["result"];
62
- return {
63
- prompt: typeof value["prompt"] === "string" ? value["prompt"] : "",
64
- summary: typeof result?.["summary"] === "string" ? result["summary"] : null,
65
- };
66
- });
128
+ const prompt = typeof value["prompt"] === "string" ? value["prompt"] : "";
129
+ const runId = typeof value["runId"] === "string" ? value["runId"] : "";
130
+ let output = null;
131
+ if (runId) {
132
+ try {
133
+ const run = await request(`/runs/${encodeURIComponent(runId)}`);
134
+ const primary = run["primaryOutput"];
135
+ const text = typeof primary?.["text"] === "string" ? primary["text"].trim() : "";
136
+ if (text) {
137
+ output = {
138
+ kind: typeof primary?.["kind"] === "string" ? primary["kind"] : "answer",
139
+ text,
140
+ truncated: primary?.["truncated"] === true,
141
+ };
142
+ }
143
+ }
144
+ catch (error) {
145
+ // The run detail could not be fetched (e.g. artifacts reclaimed by
146
+ // retention -> typed 410 run_expired_by_retention). Disclose the typed
147
+ // reason; do NOT drop the agent half silently.
148
+ output = {
149
+ kind: "diagnostic",
150
+ text: `[output unavailable: ${typedFetchReason(error)}]`,
151
+ truncated: false,
152
+ };
153
+ }
154
+ }
155
+ else {
156
+ const enqueueError = value["enqueueError"];
157
+ const message = typeof enqueueError?.["message"] === "string" ? enqueueError["message"].trim() : "";
158
+ if (message)
159
+ output = { kind: "diagnostic", text: message, truncated: false };
160
+ }
161
+ turns.push({ prompt, output });
162
+ }
67
163
  return { ...session, turns };
68
164
  }
69
165
  if (p.mode !== "__acp_session_prompt")
@@ -129,9 +225,15 @@ export async function acpSessionQuery(p, hooks, bridges) {
129
225
  }
130
226
  }
131
227
  function sessionRecord(thread) {
228
+ const repoRoot = typeof thread["repoRoot"] === "string" ? thread["repoRoot"] : "";
132
229
  return {
133
230
  sessionId: String(thread["id"] ?? ""),
134
- cwd: String(thread["repoRoot"] ?? ""),
231
+ // No-project threads persist repoRoot:null. ACP requires an absolute cwd on
232
+ // BOTH list and load (load also equality-checks it), so map a null/empty
233
+ // scope to the canonical no-project synthetic root the daemon already owns
234
+ // and materializes (~/.cache/claudexor/no-project) rather than the invalid
235
+ // empty string no conforming client could ever load back (QA-068).
236
+ cwd: repoRoot || noProjectRepoRoot(),
135
237
  title: typeof thread["title"] === "string" ? thread["title"] : null,
136
238
  updatedAt: typeof thread["updatedAt"] === "string" ? thread["updatedAt"] : null,
137
239
  };
@@ -1 +1 @@
1
- {"version":3,"file":"acp-surface-runner.js","sourceRoot":"","sources":["../src/acp-surface-runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acp-surface-runner.js","sourceRoot":"","sources":["../src/acp-surface-runner.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../src/capabilities.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,sBAAsB,EASvB,MAAM,mBAAmB,CAAC;AAQ3B,8EAA8E;AAC9E,wBAAgB,YAAY,IAAI,SAAS,MAAM,EAAE,CAEhD;AAKD;;;;;;;GAOG;AACH,wBAAsB,2BAA2B,IAAI,OAAO,CAAC,sBAAsB,CAAC,CAyFnF"}
1
+ {"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../src/capabilities.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,sBAAsB,EAUvB,MAAM,mBAAmB,CAAC;AAQ3B,8EAA8E;AAC9E,wBAAgB,YAAY,IAAI,SAAS,MAAM,EAAE,CAEhD;AAKD;;;;;;;GAOG;AACH,wBAAsB,2BAA2B,IAAI,OAAO,CAAC,sBAAsB,CAAC,CA0FnF"}
@@ -1,4 +1,4 @@
1
- import { AccessProfile, AgentCapabilityCatalog, ControlRunStartRequest, MODE_MUTABILITY, ModeKind, RUN_START_CLIENT_REJECTED_KEYS, RunApplyState, WorkspaceMode, } from "@claudexor/schema";
1
+ import { AccessProfile, AgentCapabilityCatalog, ControlRunStartRequest, MODE_MUTABILITY, ModeKind, OUTPUT_SCHEMA_DIALECTS, RUN_START_CLIENT_REJECTED_KEYS, RunApplyState, WorkspaceMode, } from "@claudexor/schema";
2
2
  import { loadConfig } from "@claudexor/config";
3
3
  import { validateModel } from "@claudexor/core";
4
4
  import { defaultClaudexorTools } from "@claudexor/mcp-server";
@@ -78,6 +78,7 @@ export async function buildAgentCapabilityCatalog() {
78
78
  availableHarnesses: harnesses.filter((h) => h.status === "ok" && h.enabled).map((h) => h.id),
79
79
  modes: [...ModeKind.options],
80
80
  runControlKeys,
81
+ outputSchemaDialects: OUTPUT_SCHEMA_DIALECTS.map((dialect) => ({ ...dialect })),
81
82
  mutability: {
82
83
  readOnlyModes: ModeKind.options.filter((m) => MODE_MUTABILITY[m] === "read"),
83
84
  writeModes: ModeKind.options.filter((m) => MODE_MUTABILITY[m] === "write"),
@@ -1 +1 @@
1
- {"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../src/capabilities.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../src/capabilities.ts"],"names":[],"mappings":"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"}
@@ -6,4 +6,25 @@ import { type QuotaSubject } from "@claudexor/schema";
6
6
  * surfaces a typed "no_source" absence instead of vanishing. Pure derivation
7
7
  * of the current config — recomputed every refresh cycle. */
8
8
  export declare function quotaSubjectUniverse(): QuotaSubject[];
9
+ /** Handle `claudexord --probe`: print the engine build identity as ONE JSON line
10
+ * ({version, buildSha}) and exit WITHOUT any durable startup — no writer lease,
11
+ * no socket bind, no journal open, no runtime root. This is the pre-swap
12
+ * handshake the macOS installer's RuntimeInstallCoordinator.probeVersion runs
13
+ * against a freshly-unpacked closure with the app-bundled Node (D-2). Returns
14
+ * true when the probe handled the invocation. */
15
+ export declare function runProbeIfRequested(argv: readonly string[]): boolean;
16
+ /** Handle `claudexord --stop`: the IDENTITY-PROVEN shutdown the macOS installer
17
+ * runs before an atomic pointer swap. It reuses the exact machinery the CLI's
18
+ * `claudexor daemon stop` uses — the socket `claudexor.shutdown` RPC plus
19
+ * `awaitDaemonTermination` (which proves the specific daemon PROCESS died, never
20
+ * a raw kill) — so the app can drive it as a subprocess with the app-bundled
21
+ * Node. Prints ONE JSON line and exits 0 when stopped (or already stopped),
22
+ * nonzero when a live daemon could not be confirmed dead. */
23
+ export declare function runStopIfRequested(argv: readonly string[]): Promise<boolean>;
24
+ export declare function main(): Promise<void>;
25
+ /** Boot the daemon and translate a fatal error into a nonzero exit. The npm
26
+ * bin wrapper (packages/claudexor/bin/claudexord.js) calls this EXPLICITLY —
27
+ * a bare import must never boot the daemon (X228: the probe test's import
28
+ * would race the LIVE daemon for the journal writer lease). */
29
+ export declare function runClaudexordEntry(): void;
9
30
  //# sourceMappingURL=claudexord.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"claudexord.d.ts","sourceRoot":"","sources":["../src/claudexord.ts"],"names":[],"mappings":";AAmCA,OAAO,EAAE,KAAK,YAAY,EAA8B,MAAM,mBAAmB,CAAC;AAclF;;;;6DAI6D;AAC7D,wBAAgB,oBAAoB,IAAI,YAAY,EAAE,CAsBrD"}
1
+ {"version":3,"file":"claudexord.d.ts","sourceRoot":"","sources":["../src/claudexord.ts"],"names":[],"mappings":";AAuCA,OAAO,EAAE,KAAK,YAAY,EAA8B,MAAM,mBAAmB,CAAC;AAclF;;;;6DAI6D;AAC7D,wBAAgB,oBAAoB,IAAI,YAAY,EAAE,CAsBrD;AAED;;;;;iDAKiD;AACjD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAKpE;AAED;;;;;;6DAM6D;AAC7D,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAsBlF;AAED,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAuf1C;AAED;;;+DAG+D;AAC/D,wBAAgB,kBAAkB,IAAI,IAAI,CAKzC"}
@@ -1,14 +1,16 @@
1
1
  #!/usr/bin/env node
2
2
  import { appendFileSync, mkdirSync, writeFileSync } from "node:fs";
3
3
  import { join } from "node:path";
4
- import { DaemonClient, commandProjection, interactionProjection, operatorDecisionProjection, runEventProjection, JournalManager, DaemonServer, InteractionRegistry, ProjectPartitions, projectProjection, RunEventBus, ResourceStore, quotaProjection, threadHeadPingProjection, threadProjection, daemonDir, defaultSocketPath, acquireDaemonWriterLease, ensureToken, ensureDaemonRuntimeRoot, logPath, socketAlive, } from "@claudexor/daemon";
4
+ import { pathToFileURL } from "node:url";
5
+ import { DaemonClient, awaitDaemonTermination, readToken, commandProjection, interactionProjection, operatorDecisionProjection, runEventProjection, JournalManager, DaemonServer, InteractionRegistry, ProjectPartitions, projectProjection, RunEventBus, ResourceStore, quotaProjection, threadHeadPingProjection, threadProjection, daemonDir, defaultSocketPath, acquireDaemonWriterLease, ensureToken, ensureDaemonRuntimeRoot, logPath, socketAlive, } from "@claudexor/daemon";
5
6
  import { DaemonControlApiServer, normalizeRunStartRequest } from "@claudexor/control-api";
6
7
  import { armDaemonLifecycle, logLine, runStartupCrashGc } from "./daemon-lifecycle.js";
8
+ import { assertPlanImplementReady } from "./plan-implement-readiness.js";
7
9
  import { Orchestrator } from "@claudexor/orchestrator";
8
10
  import { buildDelegationBeltDescriptor } from "./delegation-belt-descriptor.js";
9
11
  import { loadConfig, sweepRetiredConfigKeysAtStartup } from "@claudexor/config";
10
12
  import { ensureThreadWorktree } from "@claudexor/workspace";
11
- import { noProjectRepoRoot, redactSecrets } from "@claudexor/util";
13
+ import { engineBuildIdentity, noProjectRepoRoot, redactSecrets } from "@claudexor/util";
12
14
  import { scheduleStartupRetention } from "./retention-service.js";
13
15
  import { controlServices } from "./control-services.js";
14
16
  import { AuthReadinessService } from "@claudexor/gateway";
@@ -51,7 +53,59 @@ export function quotaSubjectUniverse() {
51
53
  }
52
54
  return subjects;
53
55
  }
54
- async function main() {
56
+ /** Handle `claudexord --probe`: print the engine build identity as ONE JSON line
57
+ * ({version, buildSha}) and exit WITHOUT any durable startup — no writer lease,
58
+ * no socket bind, no journal open, no runtime root. This is the pre-swap
59
+ * handshake the macOS installer's RuntimeInstallCoordinator.probeVersion runs
60
+ * against a freshly-unpacked closure with the app-bundled Node (D-2). Returns
61
+ * true when the probe handled the invocation. */
62
+ export function runProbeIfRequested(argv) {
63
+ if (!argv.includes("--probe"))
64
+ return false;
65
+ const id = engineBuildIdentity();
66
+ process.stdout.write(`${JSON.stringify({ version: id.version, buildSha: id.sha })}\n`);
67
+ return true;
68
+ }
69
+ /** Handle `claudexord --stop`: the IDENTITY-PROVEN shutdown the macOS installer
70
+ * runs before an atomic pointer swap. It reuses the exact machinery the CLI's
71
+ * `claudexor daemon stop` uses — the socket `claudexor.shutdown` RPC plus
72
+ * `awaitDaemonTermination` (which proves the specific daemon PROCESS died, never
73
+ * a raw kill) — so the app can drive it as a subprocess with the app-bundled
74
+ * Node. Prints ONE JSON line and exits 0 when stopped (or already stopped),
75
+ * nonzero when a live daemon could not be confirmed dead. */
76
+ export async function runStopIfRequested(argv) {
77
+ if (!argv.includes("--stop"))
78
+ return false;
79
+ const socketPath = defaultSocketPath();
80
+ const token = readToken();
81
+ // No token or no live socket → nothing to stop; a vacuous success.
82
+ if (!token || !(await socketAlive(socketPath))) {
83
+ process.stdout.write(`${JSON.stringify({ stopped: true, alreadyStopped: true })}\n`);
84
+ return true;
85
+ }
86
+ try {
87
+ await new DaemonClient(socketPath, token).shutdown();
88
+ }
89
+ catch {
90
+ // The shutdown RPC often drops the connection as the daemon exits — the
91
+ // authoritative signal is the termination confirmation below, not this call.
92
+ }
93
+ const termination = await awaitDaemonTermination(socketPath);
94
+ const stopped = termination.outcome !== "still_alive";
95
+ process.stdout.write(`${JSON.stringify({ stopped, outcome: termination.outcome, detail: termination.detail })}\n`);
96
+ if (!stopped)
97
+ process.exitCode = 1;
98
+ return true;
99
+ }
100
+ export async function main() {
101
+ // The probe MUST run before any durable startup so it never binds a socket or
102
+ // opens the journal (probing a candidate closure must be side-effect-free).
103
+ if (runProbeIfRequested(process.argv.slice(2)))
104
+ return;
105
+ // The identity-proven stop reuses the socket-shutdown machinery; it likewise
106
+ // starts nothing durable.
107
+ if (await runStopIfRequested(process.argv.slice(2)))
108
+ return;
55
109
  ensureDaemonRuntimeRoot();
56
110
  const socketPath = defaultSocketPath();
57
111
  const writerLease = acquireDaemonWriterLease(socketPath);
@@ -130,7 +184,7 @@ async function main() {
130
184
  if (threadId)
131
185
  threads.pingThreadHead(threadId);
132
186
  },
133
- onTurnEnqueueFailed: (turnId, error, code) => threads.setTurnEnqueueError(turnId, error, code),
187
+ onTurnEnqueueFailed: (turnId, error, code, retryable) => threads.setTurnEnqueueError(turnId, error, code, retryable),
134
188
  onShutdownRequested: () => shutdownRuntime?.beginShutdown("socket-rpc stop") ??
135
189
  Promise.reject(new Error("daemon shutdown coordinator is not initialized")),
136
190
  runner: async (params, ctx) => {
@@ -152,6 +206,20 @@ async function main() {
152
206
  : undefined,
153
207
  });
154
208
  const { threadId, turnId } = threads.assertKnownIds(p.threadId, p.turnId);
209
+ // Plan readiness gate (QA-045 / D17): refuse an Implement whose frozen
210
+ // plan still has open questions BEFORE any worktree, spawn, or spend —
211
+ // so the refusal is a durable, replayable refused turn (the daemon
212
+ // records enqueue_error=plan_not_ready on the turn; retry replays
213
+ // through this fresh preflight). Skipped when the operator explicitly
214
+ // overrode readiness (recorded on the turn at create time). The gate
215
+ // lives at run-start, not in the control API, so retry re-runs it.
216
+ if (p.planRef && typeof p.planRef === "object") {
217
+ const overridden = turnId != null && threads.getTurn(turnId)?.plan_readiness_overridden === true;
218
+ if (!overridden) {
219
+ const planRef = p.planRef;
220
+ assertPlanImplementReady(planRef.runId, planRef.path);
221
+ }
222
+ }
155
223
  let executionRoot;
156
224
  let inPlace = p.execution.isolation === "live";
157
225
  if (threadId && repoRoot !== NO_PROJECT_ROOT) {
@@ -331,6 +399,7 @@ async function main() {
331
399
  model: p.model,
332
400
  models: p.models,
333
401
  effort: p.effort,
402
+ efforts: p.efforts,
334
403
  tests: Array.isArray(p.tests) ? p.tests : undefined,
335
404
  protectedPathApprovals: Array.isArray(p.protectedPathApprovals)
336
405
  ? p.protectedPathApprovals
@@ -462,8 +531,27 @@ async function main() {
462
531
  writerLease.release();
463
532
  }
464
533
  }
465
- main().catch((err) => {
466
- process.stderr.write(`claudexord: ${err instanceof Error ? err.message : String(err)}\n`);
467
- process.exitCode = 1;
468
- });
534
+ /** Boot the daemon and translate a fatal error into a nonzero exit. The npm
535
+ * bin wrapper (packages/claudexor/bin/claudexord.js) calls this EXPLICITLY —
536
+ * a bare import must never boot the daemon (X228: the probe test's import
537
+ * would race the LIVE daemon for the journal writer lease). */
538
+ export function runClaudexordEntry() {
539
+ main().catch((err) => {
540
+ process.stderr.write(`claudexord: ${err instanceof Error ? err.message : String(err)}\n`);
541
+ process.exitCode = 1;
542
+ });
543
+ }
544
+ // Direct execution (node dist/claudexord.js) boots via the entry guard;
545
+ // imports (tests, the bin wrapper) get NO side effect and call
546
+ // runClaudexordEntry() themselves.
547
+ const invokedAsEntry = (() => {
548
+ try {
549
+ return (typeof process.argv[1] === "string" && import.meta.url === pathToFileURL(process.argv[1]).href);
550
+ }
551
+ catch {
552
+ return false;
553
+ }
554
+ })();
555
+ if (invokedAsEntry)
556
+ runClaudexordEntry();
469
557
  //# sourceMappingURL=claudexord.js.map