@claudexor/daemon 3.20.1 → 3.23.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 (107) hide show
  1. package/dist/client-errors.d.ts +9 -0
  2. package/dist/client-errors.d.ts.map +1 -0
  3. package/dist/client-errors.js +15 -0
  4. package/dist/client-errors.js.map +1 -0
  5. package/dist/client.d.ts +3 -5
  6. package/dist/client.d.ts.map +1 -1
  7. package/dist/client.js +21 -13
  8. package/dist/client.js.map +1 -1
  9. package/dist/command-activity.d.ts +14 -0
  10. package/dist/command-activity.d.ts.map +1 -0
  11. package/dist/command-activity.js +16 -0
  12. package/dist/command-activity.js.map +1 -0
  13. package/dist/command-list-projection.d.ts +8 -0
  14. package/dist/command-list-projection.d.ts.map +1 -0
  15. package/dist/command-list-projection.js +43 -0
  16. package/dist/command-list-projection.js.map +1 -0
  17. package/dist/command-list-select.d.ts +8 -0
  18. package/dist/command-list-select.d.ts.map +1 -0
  19. package/dist/command-list-select.js +127 -0
  20. package/dist/command-list-select.js.map +1 -0
  21. package/dist/command-retention.d.ts +3 -18
  22. package/dist/command-retention.d.ts.map +1 -1
  23. package/dist/command-retention.js +24 -40
  24. package/dist/command-retention.js.map +1 -1
  25. package/dist/command-scope-roots.d.ts +6 -0
  26. package/dist/command-scope-roots.d.ts.map +1 -1
  27. package/dist/command-scope-roots.js +13 -0
  28. package/dist/command-scope-roots.js.map +1 -1
  29. package/dist/command-store.d.ts +2 -5
  30. package/dist/command-store.d.ts.map +1 -1
  31. package/dist/command-store.js +4 -5
  32. package/dist/command-store.js.map +1 -1
  33. package/dist/continuation-admission.d.ts +11 -0
  34. package/dist/continuation-admission.d.ts.map +1 -0
  35. package/dist/continuation-admission.js +16 -0
  36. package/dist/continuation-admission.js.map +1 -0
  37. package/dist/credential-unusable-ledger.d.ts +3 -8
  38. package/dist/credential-unusable-ledger.d.ts.map +1 -1
  39. package/dist/credential-unusable-ledger.js +5 -8
  40. package/dist/credential-unusable-ledger.js.map +1 -1
  41. package/dist/daemon-health.d.ts +13 -0
  42. package/dist/daemon-health.d.ts.map +1 -1
  43. package/dist/daemon-health.js +2 -0
  44. package/dist/daemon-health.js.map +1 -1
  45. package/dist/index.d.ts +3 -0
  46. package/dist/index.d.ts.map +1 -1
  47. package/dist/index.js +3 -0
  48. package/dist/index.js.map +1 -1
  49. package/dist/journal-fold-policy.d.ts.map +1 -1
  50. package/dist/journal-fold-policy.js +12 -1
  51. package/dist/journal-fold-policy.js.map +1 -1
  52. package/dist/memory-facts.d.ts +5 -0
  53. package/dist/memory-facts.d.ts.map +1 -0
  54. package/dist/memory-facts.js +23 -0
  55. package/dist/memory-facts.js.map +1 -0
  56. package/dist/project-partition-preparation.d.ts +8 -1
  57. package/dist/project-partition-preparation.d.ts.map +1 -1
  58. package/dist/project-partition-preparation.js +41 -3
  59. package/dist/project-partition-preparation.js.map +1 -1
  60. package/dist/project-partitions.d.ts +5 -0
  61. package/dist/project-partitions.d.ts.map +1 -1
  62. package/dist/project-partitions.js +7 -0
  63. package/dist/project-partitions.js.map +1 -1
  64. package/dist/project-remove.d.ts.map +1 -1
  65. package/dist/project-remove.js +2 -4
  66. package/dist/project-remove.js.map +1 -1
  67. package/dist/quota-poll-lanes.d.ts +25 -7
  68. package/dist/quota-poll-lanes.d.ts.map +1 -1
  69. package/dist/quota-poll-lanes.js +90 -16
  70. package/dist/quota-poll-lanes.js.map +1 -1
  71. package/dist/quota-poll-pacer.d.ts +33 -36
  72. package/dist/quota-poll-pacer.d.ts.map +1 -1
  73. package/dist/quota-poll-pacer.js +115 -63
  74. package/dist/quota-poll-pacer.js.map +1 -1
  75. package/dist/quota-registry-support.d.ts +74 -0
  76. package/dist/quota-registry-support.d.ts.map +1 -1
  77. package/dist/quota-registry-support.js +153 -1
  78. package/dist/quota-registry-support.js.map +1 -1
  79. package/dist/quota-registry.d.ts +26 -4
  80. package/dist/quota-registry.d.ts.map +1 -1
  81. package/dist/quota-registry.js +60 -76
  82. package/dist/quota-registry.js.map +1 -1
  83. package/dist/rpc-problem.d.ts +10 -0
  84. package/dist/rpc-problem.d.ts.map +1 -0
  85. package/dist/rpc-problem.js +22 -0
  86. package/dist/rpc-problem.js.map +1 -0
  87. package/dist/runless-turn-recovery.d.ts +30 -0
  88. package/dist/runless-turn-recovery.d.ts.map +1 -0
  89. package/dist/runless-turn-recovery.js +38 -0
  90. package/dist/runless-turn-recovery.js.map +1 -0
  91. package/dist/server.d.ts.map +1 -1
  92. package/dist/server.js +12 -24
  93. package/dist/server.js.map +1 -1
  94. package/dist/terminal-authority.d.ts +1 -0
  95. package/dist/terminal-authority.d.ts.map +1 -1
  96. package/dist/thread-store-support.d.ts +13 -2
  97. package/dist/thread-store-support.d.ts.map +1 -1
  98. package/dist/thread-store-support.js +48 -3
  99. package/dist/thread-store-support.js.map +1 -1
  100. package/dist/thread-worktree-state.d.ts.map +1 -1
  101. package/dist/thread-worktree-state.js +5 -0
  102. package/dist/thread-worktree-state.js.map +1 -1
  103. package/dist/threads.d.ts +5 -1
  104. package/dist/threads.d.ts.map +1 -1
  105. package/dist/threads.js +18 -33
  106. package/dist/threads.js.map +1 -1
  107. package/package.json +6 -5
@@ -0,0 +1,9 @@
1
+ /** Only failures of the local RPC transport carry this retryable 503 type.
2
+ * A lost answer does not establish whether a mutation was accepted. */
3
+ export declare class DaemonTransportError extends Error {
4
+ readonly status = 503;
5
+ readonly retryable = true;
6
+ readonly code: "daemon_busy" | "daemon_unavailable";
7
+ constructor(method: string, reason: "timeout" | "unavailable", cause?: unknown);
8
+ }
9
+ //# sourceMappingURL=client-errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-errors.d.ts","sourceRoot":"","sources":["../src/client-errors.ts"],"names":[],"mappings":"AAAA;uEACuE;AACvE,qBAAa,oBAAqB,SAAQ,KAAK;IAC7C,QAAQ,CAAC,MAAM,OAAO;IACtB,QAAQ,CAAC,SAAS,QAAQ;IAC1B,QAAQ,CAAC,IAAI,EAAE,aAAa,GAAG,oBAAoB,CAAC;IAEpD,YAAY,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,aAAa,EAAE,KAAK,CAAC,EAAE,OAAO,EAS7E;CACF"}
@@ -0,0 +1,15 @@
1
+ /** Only failures of the local RPC transport carry this retryable 503 type.
2
+ * A lost answer does not establish whether a mutation was accepted. */
3
+ export class DaemonTransportError extends Error {
4
+ status = 503;
5
+ retryable = true;
6
+ code;
7
+ constructor(method, reason, cause) {
8
+ super(reason === "timeout"
9
+ ? `daemon RPC timeout (${method})`
10
+ : `daemon RPC unavailable (${method})`, { cause });
11
+ this.name = "DaemonTransportError";
12
+ this.code = reason === "timeout" ? "daemon_busy" : "daemon_unavailable";
13
+ }
14
+ }
15
+ //# sourceMappingURL=client-errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-errors.js","sourceRoot":"","sources":["../src/client-errors.ts"],"names":[],"mappings":"AAAA;uEACuE;AACvE,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IACpC,MAAM,GAAG,GAAG,CAAC;IACb,SAAS,GAAG,IAAI,CAAC;IACjB,IAAI,CAAuC;IAEpD,YAAY,MAAc,EAAE,MAAiC,EAAE,KAAe;QAC5E,KAAK,CACH,MAAM,KAAK,SAAS;YAClB,CAAC,CAAC,uBAAuB,MAAM,GAAG;YAClC,CAAC,CAAC,2BAA2B,MAAM,GAAG,EACxC,EAAE,KAAK,EAAE,CACV,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;QACnC,IAAI,CAAC,IAAI,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,oBAAoB,CAAC;IAC1E,CAAC;CACF"}
package/dist/client.d.ts CHANGED
@@ -58,11 +58,9 @@ export declare class DaemonClient {
58
58
  startedAt?: string;
59
59
  finishedAt?: string;
60
60
  } | null>;
61
- /** Addressed read: `query` names one run id or one Delegate parent so the
62
- * daemon selects before it projects. Omit it for the whole retained product
63
- * list. An engine older than the query ignores it and answers with the full
64
- * list, so a caller must still apply its own selection to the result. */
65
- list(query?: CommandListQuery): Promise<{
61
+ /** Required addressed read; collection answers contain summary facts only. */
62
+ list(query: CommandListQuery): Promise<{
63
+ promptPreview?: string;
66
64
  id: string;
67
65
  state: string;
68
66
  params?: unknown;
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAI5E,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAEzE,8DAA8D;AAC9D,qBAAa,YAAY;IAErB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,KAAK;IAFxB,YACmB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EAC5B;IAEJ,IAAI,CAAC,CAAC,GAAG,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAiD9D;IAED,MAAM,qBAEL;IACD,OAAO,CACL,OAAO,EAAE,OAAO,EAChB,OAAO,GAAE;QACP,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,kBAAkB,CAAC,EAAE,OAAO,CAAC;QAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;KACf;YAEiB,MAAM;eAAS,MAAM;gBAAU,OAAO;OAO9D;IACD,MAAM,CAAC,EAAE,EAAE,MAAM;YAET,MAAM;eACH,MAAM;iBACJ,OAAO;gBACR,MAAM;iBACL,MAAM;iBACN,MAAM;iBACN,OAAO;gBACR,MAAM;oBACF,MAAM;sBACJ,MAAM;yBACH,OAAO;+BACD,MAAM,EAAE;uBAChB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;oBAC1B,MAAM;oBACN,MAAM;qBACL,MAAM;OAEtB;IACD,YAAY,CACV,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE;QACP,cAAc,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,kBAAkB,CAAC,EAAE,OAAO,CAAC;KAC9B;YAzBK,MAAM;eACH,MAAM;iBACJ,OAAO;gBACR,MAAM;iBACL,MAAM;iBACN,MAAM;iBACN,OAAO;gBACR,MAAM;oBACF,MAAM;sBACJ,MAAM;yBACH,OAAO;+BACD,MAAM,EAAE;uBAChB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;oBAC1B,MAAM;oBACN,MAAM;qBACL,MAAM;cAmBtB;IACD;;;6EAGyE;IACzE,IAAI,CAAC,KAAK,CAAC,EAAE,gBAAgB;YAGnB,MAAM;eACH,MAAM;iBACJ,OAAO;gBACR,MAAM;iBACL,MAAM;iBACN,MAAM;gBACP,MAAM;oBACF,MAAM;sBACJ,MAAM;yBACH,OAAO;+BACD,MAAM,EAAE;uBAChB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;oBAC1B,MAAM;oBACN,MAAM;qBACL,MAAM;SAGxB;IACD,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,gBAAgB,oBAE/C;IACD,qBAAqB,CAAC,KAAK,EAAE,MAAM;eACP,MAAM;gBAAU,OAAO;OAClD;IACD,QAAQ,qBAEP;IACD,6BAA6B,CAAC,cAAc,EAAE,wBAAwB;YAC7C,IAAI;gBAAU,IAAI;qBAAe,IAAI;OAI7D;CACF"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAI5E,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAEzE,8DAA8D;AAC9D,qBAAa,YAAY;IAErB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,KAAK;IAFxB,YACmB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EAC5B;IAEJ,IAAI,CAAC,CAAC,GAAG,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAkE9D;IAED,MAAM,qBAEL;IACD,OAAO,CACL,OAAO,EAAE,OAAO,EAChB,OAAO,GAAE;QACP,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,kBAAkB,CAAC,EAAE,OAAO,CAAC;QAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;KACf;YAEiB,MAAM;eAAS,MAAM;gBAAU,OAAO;OAO9D;IACD,MAAM,CAAC,EAAE,EAAE,MAAM;YAET,MAAM;eACH,MAAM;iBACJ,OAAO;gBACR,MAAM;iBACL,MAAM;iBACN,MAAM;iBACN,OAAO;gBACR,MAAM;oBACF,MAAM;sBACJ,MAAM;yBACH,OAAO;+BACD,MAAM,EAAE;uBAChB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;oBAC1B,MAAM;oBACN,MAAM;qBACL,MAAM;OAEtB;IACD,YAAY,CACV,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE;QACP,cAAc,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,kBAAkB,CAAC,EAAE,OAAO,CAAC;KAC9B;YAzBK,MAAM;eACH,MAAM;iBACJ,OAAO;gBACR,MAAM;iBACL,MAAM;iBACN,MAAM;iBACN,OAAO;gBACR,MAAM;oBACF,MAAM;sBACJ,MAAM;yBACH,OAAO;+BACD,MAAM,EAAE;uBAChB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;oBAC1B,MAAM;oBACN,MAAM;qBACL,MAAM;cAmBtB;IACD,8EAA8E;IAC9E,IAAI,CAAC,KAAK,EAAE,gBAAgB;wBAGN,MAAM;YAClB,MAAM;eACH,MAAM;iBACJ,OAAO;gBACR,MAAM;iBACL,MAAM;iBACN,MAAM;gBACP,MAAM;oBACF,MAAM;sBACJ,MAAM;yBACH,OAAO;+BACD,MAAM,EAAE;uBAChB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;oBAC1B,MAAM;oBACN,MAAM;qBACL,MAAM;SAGxB;IACD,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,gBAAgB,oBAE/C;IACD,qBAAqB,CAAC,KAAK,EAAE,MAAM;eACP,MAAM;gBAAU,OAAO;OAClD;IACD,QAAQ,qBAEP;IACD,6BAA6B,CAAC,cAAc,EAAE,wBAAwB;YAC7C,IAAI;gBAAU,IAAI;qBAAe,IAAI;OAI7D;CACF"}
package/dist/client.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { DaemonTransportError } from "./client-errors.js";
1
2
  import { connect } from "node:net";
2
3
  import { randomUUID } from "node:crypto";
3
4
  import { createInterface } from "node:readline";
@@ -26,22 +27,26 @@ export class DaemonClient {
26
27
  };
27
28
  // A socket that accepts but never replies must not hang the caller
28
29
  // (`daemon status`) forever — fail loudly after a bounded wait.
29
- const timer = setTimeout(() => finish(() => reject(new Error(`daemon RPC timeout (${method})`))), 10_000);
30
+ const timer = setTimeout(() => finish(() => reject(new DaemonTransportError(method, "timeout"))), 10_000);
30
31
  timer.unref?.();
31
32
  // Attach the error handler first so connect failures (ENOENT/ECONNREFUSED)
32
33
  // never become an unhandled 'error' event.
33
- sock.on("error", (err) => finish(() => reject(err)));
34
- sock.on("close", () => finish(() => reject(new Error("daemon connection closed"))));
34
+ sock.on("error", (err) => finish(() => reject(new DaemonTransportError(method, "unavailable", err))));
35
+ sock.on("close", () => finish(() => reject(new DaemonTransportError(method, "unavailable"))));
35
36
  rl = createInterface({ input: sock });
36
- rl.on("error", (err) => finish(() => reject(err))); // readline re-emits input 'error'
37
+ rl.on("error", (err) => finish(() => reject(new DaemonTransportError(method, "unavailable", err)))); // readline re-emits input 'error'
37
38
  sock.on("connect", () => {
38
39
  sock.write(JSON.stringify({ id, method, params, token: this.token }) + "\n");
39
40
  });
40
41
  rl.on("line", (line) => {
41
42
  try {
42
43
  const msg = JSON.parse(line);
43
- if (msg.id !== id)
44
- return;
44
+ if (!msg ||
45
+ typeof msg !== "object" ||
46
+ msg.id !== id ||
47
+ (msg.error ? typeof msg.error.message !== "string" : !("result" in msg))) {
48
+ throw new Error("invalid daemon RPC response");
49
+ }
45
50
  if (msg.error) {
46
51
  const error = Object.assign(new Error(msg.error.message), {
47
52
  ...(typeof msg.error.code === "string" ? { code: msg.error.code } : {}),
@@ -49,14 +54,20 @@ export class DaemonClient {
49
54
  ...(typeof msg.error.retryable === "boolean"
50
55
  ? { retryable: msg.error.retryable }
51
56
  : {}),
57
+ ...(msg.error.context && typeof msg.error.context === "object"
58
+ ? { context: msg.error.context }
59
+ : {}),
60
+ ...(Array.isArray(msg.error.requiredActions)
61
+ ? { requiredActions: msg.error.requiredActions }
62
+ : {}),
52
63
  });
53
64
  finish(() => reject(error));
54
65
  }
55
66
  else
56
67
  finish(() => resolve(msg.result));
57
68
  }
58
- catch {
59
- /* ignore */
69
+ catch (error) {
70
+ finish(() => reject(new DaemonTransportError(method, "unavailable", error)));
60
71
  }
61
72
  });
62
73
  });
@@ -85,12 +96,9 @@ export class DaemonClient {
85
96
  idempotencyRequest: options.idempotencyRequest,
86
97
  });
87
98
  }
88
- /** Addressed read: `query` names one run id or one Delegate parent so the
89
- * daemon selects before it projects. Omit it for the whole retained product
90
- * list. An engine older than the query ignores it and answers with the full
91
- * list, so a caller must still apply its own selection to the result. */
99
+ /** Required addressed read; collection answers contain summary facts only. */
92
100
  list(query) {
93
- return this.call("claudexor.list", query ? { query } : undefined);
101
+ return this.call("claudexor.list", { query });
94
102
  }
95
103
  cancel(id, reasonCode) {
96
104
  return this.call("claudexor.cancel", reasonCode ? { id, reason_code: reasonCode } : { id });
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { JobRecord } from "./job-record.js";
2
+ /** In-process project-removal/retention facts. No self-RPC, prompt copy or
3
+ * public redaction; include the global AND every healthy project partition.
4
+ * Project removal reads `scope`; the retention trash fence reads `threadId`. */
5
+ export declare function commandActivityRecords(records: readonly JobRecord[]): {
6
+ runId: string | undefined;
7
+ state: "cancelled" | "failed" | "interrupted" | "queued" | "running" | "succeeded";
8
+ finishedAt: string | undefined;
9
+ params: {
10
+ scope: unknown;
11
+ threadId: unknown;
12
+ };
13
+ }[];
14
+ //# sourceMappingURL=command-activity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-activity.d.ts","sourceRoot":"","sources":["../src/command-activity.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD;;gFAEgF;AAChF,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,SAAS,SAAS,EAAE;;;;;QAOpD,KAAK;QAAiB,QAAQ;;IAG7C"}
@@ -0,0 +1,16 @@
1
+ import { productCommandRecords } from "./command-retention.js";
2
+ /** In-process project-removal/retention facts. No self-RPC, prompt copy or
3
+ * public redaction; include the global AND every healthy project partition.
4
+ * Project removal reads `scope`; the retention trash fence reads `threadId`. */
5
+ export function commandActivityRecords(records) {
6
+ return productCommandRecords(records).map((record) => {
7
+ const params = record.params;
8
+ return {
9
+ runId: record.runId,
10
+ state: record.state,
11
+ finishedAt: record.finishedAt,
12
+ params: { scope: params?.scope, threadId: params?.threadId },
13
+ };
14
+ });
15
+ }
16
+ //# sourceMappingURL=command-activity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-activity.js","sourceRoot":"","sources":["../src/command-activity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAG/D;;gFAEgF;AAChF,MAAM,UAAU,sBAAsB,CAAC,OAA6B;IAClE,OAAO,qBAAqB,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QACnD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAwD,CAAC;QAC/E,OAAO;YACL,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE;SAC7D,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { type JobRecord } from "./job-record.js";
2
+ /** Collections carry only the request facts their consumers use, never full
3
+ * params/results. Keep the historical redacted 240-character HTTP preview. */
4
+ export declare function compactCommandRecord(record: JobRecord): JobRecord & {
5
+ promptPreview?: string;
6
+ };
7
+ export declare function publicCommandList(records: readonly JobRecord[], rawQuery: unknown): JobRecord[];
8
+ //# sourceMappingURL=command-list-projection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-list-projection.d.ts","sourceRoot":"","sources":["../src/command-list-projection.ts"],"names":[],"mappings":"AAEA,OAAO,EAAmB,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAIlE;8EAC8E;AAC9E,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG;IAAE,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE,CA8B9F;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,SAAS,SAAS,EAAE,EAAE,QAAQ,EAAE,OAAO,GAAG,SAAS,EAAE,CAK/F"}
@@ -0,0 +1,43 @@
1
+ import { COMMAND_SUMMARY_PARAM_KEYS } from "@claudexor/schema";
2
+ import { redactSecrets } from "@claudexor/util";
3
+ import { publicJobRecord } from "./job-record.js";
4
+ import { selectProductCommands } from "./command-retention.js";
5
+ import { parseCommandListQuery } from "./command-list-select.js";
6
+ /** Collections carry only the request facts their consumers use, never full
7
+ * params/results. Keep the historical redacted 240-character HTTP preview. */
8
+ export function compactCommandRecord(record) {
9
+ const source = record.params && typeof record.params === "object"
10
+ ? record.params
11
+ : {};
12
+ const params = {};
13
+ for (const key of COMMAND_SUMMARY_PARAM_KEYS) {
14
+ if (source[key] !== undefined)
15
+ params[key] = source[key];
16
+ }
17
+ const prompt = typeof source.prompt === "string" ? redactSecrets(source.prompt) : undefined;
18
+ return publicJobRecord({
19
+ id: record.id,
20
+ state: record.state,
21
+ createdAt: record.createdAt,
22
+ runId: record.runId,
23
+ taskId: record.taskId,
24
+ runDir: record.runDir,
25
+ startedAt: record.startedAt,
26
+ finishedAt: record.finishedAt,
27
+ error: record.error,
28
+ errorCode: record.errorCode,
29
+ errorStatus: record.errorStatus,
30
+ errorRetryable: record.errorRetryable,
31
+ errorRequiredActions: record.errorRequiredActions,
32
+ errorContext: record.errorContext,
33
+ params,
34
+ ...(prompt === undefined
35
+ ? {}
36
+ : { promptPreview: prompt.length > 240 ? `${prompt.slice(0, 240)}...` : prompt }),
37
+ });
38
+ }
39
+ export function publicCommandList(records, rawQuery) {
40
+ const query = parseCommandListQuery(rawQuery);
41
+ return selectProductCommands(records, query).map("id" in query || "turnId" in query ? publicJobRecord : compactCommandRecord);
42
+ }
43
+ //# sourceMappingURL=command-list-projection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-list-projection.js","sourceRoot":"","sources":["../src/command-list-projection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAA6B,MAAM,mBAAmB,CAAC;AAC1F,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAkB,MAAM,iBAAiB,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEjE;8EAC8E;AAC9E,MAAM,UAAU,oBAAoB,CAAC,MAAiB;IACpD,MAAM,MAAM,GACV,MAAM,CAAC,MAAM,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ;QAChD,CAAC,CAAE,MAAM,CAAC,MAAkC;QAC5C,CAAC,CAAC,EAAE,CAAC;IACT,MAAM,MAAM,GAAyB,EAAE,CAAC;IACxC,KAAK,MAAM,GAAG,IAAI,0BAA0B,EAAE,CAAC;QAC7C,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,SAAS;YAAG,MAAkC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IACxF,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5F,OAAO,eAAe,CAAC;QACrB,EAAE,EAAE,MAAM,CAAC,EAAE;QACb,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,cAAc,EAAE,MAAM,CAAC,cAAc;QACrC,oBAAoB,EAAE,MAAM,CAAC,oBAAoB;QACjD,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,MAAM;QACN,GAAG,CAAC,MAAM,KAAK,SAAS;YACtB,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,EAAE,aAAa,EAAE,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;KACpF,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,OAA6B,EAAE,QAAiB;IAChF,MAAM,KAAK,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IAC9C,OAAO,qBAAqB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,GAAG,CAC9C,IAAI,IAAI,KAAK,IAAI,QAAQ,IAAI,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,oBAAoB,CAC5E,CAAC;AACJ,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { CommandListQuery } from "@claudexor/schema";
2
+ import type { JobRecord } from "./job-record.js";
3
+ /** Parse at the RPC boundary before scanning anything, including empty history. */
4
+ export declare function parseCommandListQuery(query: unknown): CommandListQuery;
5
+ /** Select BEFORE redaction/copy/serialization. O(N) shallow reference scans
6
+ * are intentional; no unrelated prompt or result body is visited. */
7
+ export declare function selectCommandRecords(records: readonly JobRecord[], query: CommandListQuery): JobRecord[];
8
+ //# sourceMappingURL=command-list-select.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-list-select.d.ts","sourceRoot":"","sources":["../src/command-list-select.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAKjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,mFAAmF;AACnF,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,gBAAgB,CAQtE;AAmFD;qEACqE;AACrE,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,SAAS,SAAS,EAAE,EAC7B,KAAK,EAAE,gBAAgB,GACtB,SAAS,EAAE,CAiCb"}
@@ -0,0 +1,127 @@
1
+ import { CommandListQuery, continuedRunOf, delegatedParentOf, directDelegatedChildrenFromRecords, selectRunListPage, } from "@claudexor/schema";
2
+ /** Parse at the RPC boundary before scanning anything, including empty history. */
3
+ export function parseCommandListQuery(query) {
4
+ const parsed = CommandListQuery.safeParse(query);
5
+ if (parsed.success)
6
+ return parsed.data;
7
+ throw Object.assign(new Error("a command list query must name an addressed selector"), {
8
+ code: query == null ? "list_query_required" : "invalid_command_list_query",
9
+ status: 400,
10
+ retryable: false,
11
+ });
12
+ }
13
+ function param(record, key) {
14
+ return record.params && typeof record.params === "object"
15
+ ? record.params[key]
16
+ : undefined;
17
+ }
18
+ /** Reference-only graph scan. Preserve original record order for admission's
19
+ * first-successor rule, including old aliases, rejected successors and cycles. */
20
+ function continuationChain(records, from) {
21
+ const predecessor = records.find((record) => record.id === from || record.runId === from);
22
+ if (!predecessor)
23
+ return [];
24
+ const children = new Map();
25
+ for (const record of records) {
26
+ const parent = continuedRunOf(record.params);
27
+ if (parent === null)
28
+ continue;
29
+ const siblings = children.get(parent) ?? [];
30
+ siblings.push(record);
31
+ children.set(parent, siblings);
32
+ }
33
+ const selected = new Set([predecessor]);
34
+ const pending = [predecessor];
35
+ for (let i = 0; i < pending.length; i++) {
36
+ const record = pending[i];
37
+ for (const id of [record.id, ...(record.runId ? [record.runId] : [])]) {
38
+ for (const child of children.get(id) ?? []) {
39
+ if (selected.has(child))
40
+ continue;
41
+ selected.add(child);
42
+ pending.push(child);
43
+ }
44
+ }
45
+ }
46
+ return records.filter((record) => selected.has(record));
47
+ }
48
+ /** Transitive Delegate cancellation remains uncapped and cycle-safe. */
49
+ function delegatedDescendants(records, from) {
50
+ const children = new Map();
51
+ for (const record of records) {
52
+ const parent = delegatedParentOf(record.params);
53
+ if (parent === null)
54
+ continue;
55
+ const siblings = children.get(parent) ?? [];
56
+ siblings.push(record);
57
+ children.set(parent, siblings);
58
+ }
59
+ const out = [];
60
+ const seen = new Set([from]);
61
+ const queue = [from];
62
+ for (let i = 0; i < queue.length; i++) {
63
+ for (const child of children.get(queue[i]) ?? []) {
64
+ const id = child.runId ?? child.id;
65
+ if (seen.has(id))
66
+ continue;
67
+ seen.add(id);
68
+ out.push(child);
69
+ queue.push(id);
70
+ }
71
+ }
72
+ return out;
73
+ }
74
+ /** Turn cards also disclose direct Delegate children, whose commands need not
75
+ * carry their parent's threadId. Select those references without widening the
76
+ * read to unrelated history. Active-only fences need only the thread members. */
77
+ function threadRecords(records, ids, activeOnly = false) {
78
+ const members = records.filter((r) => {
79
+ const threadId = param(r, "threadId");
80
+ return (typeof threadId === "string" &&
81
+ ids.has(threadId) &&
82
+ (!activeOnly || r.state === "queued" || r.state === "running"));
83
+ });
84
+ if (activeOnly)
85
+ return members;
86
+ const memberSet = new Set(members);
87
+ const parents = new Set(members.map((r) => r.runId ?? r.id));
88
+ return records.filter((r) => memberSet.has(r) || parents.has(delegatedParentOf(r.params) ?? ""));
89
+ }
90
+ /** Select BEFORE redaction/copy/serialization. O(N) shallow reference scans
91
+ * are intentional; no unrelated prompt or result body is visited. */
92
+ export function selectCommandRecords(records, query) {
93
+ if ("id" in query) {
94
+ const record = records.find((r) => r.id === query.id || r.runId === query.id);
95
+ return record ? [record] : [];
96
+ }
97
+ if ("turnId" in query) {
98
+ const last = records
99
+ .filter((r) => param(r, "turnId") === query.turnId)
100
+ .sort((a, b) => String(a.createdAt ?? "").localeCompare(String(b.createdAt ?? "")))
101
+ .at(-1);
102
+ return last ? [last] : [];
103
+ }
104
+ if ("ids" in query) {
105
+ const ids = new Set(query.ids);
106
+ return records.filter((r) => ids.has(r.id) || (!!r.runId && ids.has(r.runId)));
107
+ }
108
+ if ("delegatedFromRunId" in query)
109
+ return directDelegatedChildrenFromRecords(query.delegatedFromRunId, records);
110
+ if ("continuationChainOf" in query)
111
+ return continuationChain(records, query.continuationChainOf);
112
+ if ("delegatedDescendantsOf" in query)
113
+ return delegatedDescendants(records, query.delegatedDescendantsOf);
114
+ if ("page" in query)
115
+ return selectRunListPage(records, { ...query.page, limit: query.page.limit + 1 }).page;
116
+ if ("threadIds" in query) {
117
+ const ids = new Set(query.threadIds);
118
+ return threadRecords(records, ids);
119
+ }
120
+ const active = query.activeOnly
121
+ ? records.filter((r) => r.state === "queued" || r.state === "running")
122
+ : records;
123
+ return "threadId" in query
124
+ ? threadRecords(records, new Set([query.threadId]), query.activeOnly)
125
+ : [...active];
126
+ }
127
+ //# sourceMappingURL=command-list-select.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-list-select.js","sourceRoot":"","sources":["../src/command-list-select.ts"],"names":[],"mappings":"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"}
@@ -1,27 +1,12 @@
1
1
  import type { JobRecord } from "./server.js";
2
2
  export declare function productCommandRecords(records: readonly JobRecord[]): JobRecord[];
3
- /**
4
- * The retained product commands a caller ADDRESSED, chosen before any public
5
- * projection runs.
6
- *
7
- * `publicJobRecord` recursively walks and redacts a record's params, so a
8
- * caller that wants ONE run (or one parent's direct children) must not pay for
9
- * every retained prompt in the partition: selection here is a reference and
10
- * metadata scan (`id`/`runId` equality, one shallow `delegatedFromRunId` read,
11
- * an O(M log M) sort over the matching children only), and the unselected
12
- * records are never traversed or serialized at all. An unqualified query keeps
13
- * the historical whole-list answer.
14
- *
15
- * An addressed miss is an EMPTY selection. The caller owns the distinction
16
- * between "this run is not retained" and "the daemon could not answer": a
17
- * transport failure throws and must never be read as an empty list.
18
- */
19
- export declare function selectProductCommands(records: readonly JobRecord[], query?: unknown): JobRecord[];
3
+ /** Addressed selection is shared by socket reads and in-process consumers. */
4
+ export declare function selectProductCommands(records: readonly JobRecord[], query: unknown): JobRecord[];
20
5
  /** Cap on the serialized `params` bytes retained across terminal product
21
6
  * commands (journal sprint owner decision D3, release 1). Prompts stay inline
22
7
  * in the command journal, so once their sum passes this bound the OLDEST
23
8
  * terminal product commands are pruned regardless of age; the 500/30-day rule
24
- * is unchanged. Model-operation receipts and needs-decision runs are exempt;
9
+ * is unchanged. Model-operation receipts, needs-decision and continuation references are exempt;
25
10
  * delivery commands (`delivery-*`, which carry a copy of the applied run's
26
11
  * params) keep their own age/cap policy and neither count nor get pruned here. */
27
12
  export declare const MAX_RETAINED_COMMAND_PARAMS_BYTES: number;
@@ -1 +1 @@
1
- {"version":3,"file":"command-retention.d.ts","sourceRoot":"","sources":["../src/command-retention.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAO7C,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,SAAS,SAAS,EAAE,GAAG,SAAS,EAAE,CAEhF;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,SAAS,SAAS,EAAE,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,EAAE,CAWjG;AAgCD;;;;;;kFAMkF;AAClF,eAAO,MAAM,iCAAiC,QAAoB,CAAC;AAEnE;;;gFAGgF;AAChF,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,SAAS,SAAS,EAAE,EAC7B,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,MAAM,EACnB,GAAG,EAAE,MAAM,EACX,cAAc,SAAoC,GACjD,MAAM,EAAE,CA0CV"}
1
+ {"version":3,"file":"command-retention.d.ts","sourceRoot":"","sources":["../src/command-retention.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAG7C,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,SAAS,SAAS,EAAE,GAAG,SAAS,EAAE,CAEhF;AAED,8EAA8E;AAC9E,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,SAAS,SAAS,EAAE,EAAE,KAAK,EAAE,OAAO,GAAG,SAAS,EAAE,CAGhG;AAwCD;;;;;;kFAMkF;AAClF,eAAO,MAAM,iCAAiC,QAAoB,CAAC;AAEnE;;;gFAGgF;AAChF,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,SAAS,SAAS,EAAE,EAC7B,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,MAAM,EACnB,GAAG,EAAE,MAAM,EACX,cAAc,SAAoC,GACjD,MAAM,EAAE,CA4CV"}
@@ -1,44 +1,13 @@
1
- import { CommandListQuery, directDelegatedChildrenFromRecords, isModelOperation, } from "@claudexor/schema";
1
+ import { parseCommandListQuery, selectCommandRecords } from "./command-list-select.js";
2
+ import { retainedEnvelopeOfRun } from "@claudexor/workspace";
3
+ import { continuedRunOf, isModelOperation } from "@claudexor/schema";
2
4
  export function productCommandRecords(records) {
3
5
  return records.filter((record) => !isDeliveryCommand(record) && !isModelOperation(record.params));
4
6
  }
5
- /**
6
- * The retained product commands a caller ADDRESSED, chosen before any public
7
- * projection runs.
8
- *
9
- * `publicJobRecord` recursively walks and redacts a record's params, so a
10
- * caller that wants ONE run (or one parent's direct children) must not pay for
11
- * every retained prompt in the partition: selection here is a reference and
12
- * metadata scan (`id`/`runId` equality, one shallow `delegatedFromRunId` read,
13
- * an O(M log M) sort over the matching children only), and the unselected
14
- * records are never traversed or serialized at all. An unqualified query keeps
15
- * the historical whole-list answer.
16
- *
17
- * An addressed miss is an EMPTY selection. The caller owns the distinction
18
- * between "this run is not retained" and "the daemon could not answer": a
19
- * transport failure throws and must never be read as an empty list.
20
- */
7
+ /** Addressed selection is shared by socket reads and in-process consumers. */
21
8
  export function selectProductCommands(records, query) {
22
- const { id, delegatedFromRunId } = parseCommandListQuery(query);
23
- const product = productCommandRecords(records);
24
- if (id !== undefined) {
25
- const addressed = product.find((record) => record.id === id || record.runId === id);
26
- return addressed ? [addressed] : [];
27
- }
28
- if (delegatedFromRunId !== undefined) {
29
- return directDelegatedChildrenFromRecords(delegatedFromRunId, product);
30
- }
31
- return product;
32
- }
33
- /** Wire boundary for the addressed read: an unusable query fails loudly rather
34
- * than degrading into a silent full scan the caller did not ask for. */
35
- function parseCommandListQuery(query) {
36
- if (query === undefined || query === null)
37
- return {};
38
- const parsed = CommandListQuery.safeParse(query);
39
- if (parsed.success)
40
- return parsed.data;
41
- throw Object.assign(new Error("a command list query addresses either one id or one Delegate parent"), { code: "invalid_command_list_query", status: 400 });
9
+ const addressed = parseCommandListQuery(query);
10
+ return selectCommandRecords(productCommandRecords(records), addressed);
42
11
  }
43
12
  /** Delivery commands persist the full run params of the apply they serve;
44
13
  * they keep their existing age/cap retention and are outside the byte budget. */
@@ -57,11 +26,24 @@ function isNeedsDecision(record) {
57
26
  return false;
58
27
  return facts.review === "blocked" || facts.checks === "failed";
59
28
  }
29
+ /** Pure exemptions: keep custody addressable and claims while their predecessor is retained.
30
+ * The input is the current kept set; if a predecessor is removed in this pass,
31
+ * its successor becomes eligible on the next pass. No lifetime is invented. */
32
+ function continuationExemptions(records) {
33
+ const identities = new Set(records.flatMap((record) => [record.id, ...(record.runId ? [record.runId] : [])]));
34
+ return new Set(records
35
+ .filter((record) => {
36
+ const predecessor = continuedRunOf(record.params);
37
+ return ((predecessor !== null && identities.has(predecessor)) ||
38
+ !!(record.runDir && record.runId && retainedEnvelopeOfRun(record.runDir, record.runId)));
39
+ })
40
+ .map((record) => record.id));
41
+ }
60
42
  /** Cap on the serialized `params` bytes retained across terminal product
61
43
  * commands (journal sprint owner decision D3, release 1). Prompts stay inline
62
44
  * in the command journal, so once their sum passes this bound the OLDEST
63
45
  * terminal product commands are pruned regardless of age; the 500/30-day rule
64
- * is unchanged. Model-operation receipts and needs-decision runs are exempt;
46
+ * is unchanged. Model-operation receipts, needs-decision and continuation references are exempt;
65
47
  * delivery commands (`delivery-*`, which carry a copy of the applied run's
66
48
  * params) keep their own age/cap policy and neither count nor get pruned here. */
67
49
  export const MAX_RETAINED_COMMAND_PARAMS_BYTES = 256 * 1024 * 1024;
@@ -77,10 +59,12 @@ export function prunableCommandIds(records, cap, retentionMs, now, maxParamsByte
77
59
  .filter((record) => !isModelOperation(record.params) && !["running", "queued"].includes(record.state))
78
60
  .sort((a, b) => (a.createdAt < b.createdAt ? -1 : 1));
79
61
  const pruned = new Set();
62
+ const continuation = continuationExemptions(records);
63
+ const exempt = (record) => isNeedsDecision(record) || continuation.has(record.id);
80
64
  if (terminal.length > cap) {
81
65
  for (const record of terminal
82
66
  .filter((record) => {
83
- if (isNeedsDecision(record))
67
+ if (exempt(record))
84
68
  return false;
85
69
  const settledAt = Date.parse(record.finishedAt ?? "");
86
70
  return Number.isFinite(settledAt) && now - settledAt >= retentionMs;
@@ -97,7 +81,7 @@ export function prunableCommandIds(records, cap, retentionMs, now, maxParamsByte
97
81
  let bytes = 0;
98
82
  const sizes = new Map();
99
83
  for (const record of terminal) {
100
- if (pruned.has(record.id) || isNeedsDecision(record) || isDeliveryCommand(record))
84
+ if (pruned.has(record.id) || exempt(record) || isDeliveryCommand(record))
101
85
  continue;
102
86
  const size = paramsBytes(record);
103
87
  sizes.set(record.id, size);
@@ -1 +1 @@
1
- {"version":3,"file":"command-retention.js","sourceRoot":"","sources":["../src/command-retention.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"command-retention.js","sourceRoot":"","sources":["../src/command-retention.ts"],"names":[],"mappings":"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"}
@@ -4,4 +4,10 @@
4
4
  export declare function commandScopeRoots(records: Iterable<{
5
5
  params?: unknown;
6
6
  } | undefined>): string[];
7
+ /** Caller-owned execution roots a delegated command recorded. Crash GC reaches
8
+ * only Claudexor's own runtime scratch under them (envelopes), never the
9
+ * caller's tree or its Git refs. */
10
+ export declare function commandExecutionRoots(records: Iterable<{
11
+ params?: unknown;
12
+ } | undefined>): string[];
7
13
  //# sourceMappingURL=command-scope-roots.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"command-scope-roots.d.ts","sourceRoot":"","sources":["../src/command-scope-roots.ts"],"names":[],"mappings":"AAAA;;2DAE2D;AAC3D,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,QAAQ,CAAC;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,SAAS,CAAC,GAAG,MAAM,EAAE,CAQ/F"}
1
+ {"version":3,"file":"command-scope-roots.d.ts","sourceRoot":"","sources":["../src/command-scope-roots.ts"],"names":[],"mappings":"AAAA;;2DAE2D;AAC3D,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,QAAQ,CAAC;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,SAAS,CAAC,GAAG,MAAM,EAAE,CAQ/F;AAED;;oCAEoC;AACpC,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,QAAQ,CAAC;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,SAAS,CAAC,GAClD,MAAM,EAAE,CAQV"}