@claudexor/daemon 3.22.0 → 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 (78) 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 +2 -17
  22. package/dist/command-retention.d.ts.map +1 -1
  23. package/dist/command-retention.js +5 -37
  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/daemon-health.d.ts +13 -0
  34. package/dist/daemon-health.d.ts.map +1 -1
  35. package/dist/daemon-health.js +2 -0
  36. package/dist/daemon-health.js.map +1 -1
  37. package/dist/index.d.ts +3 -0
  38. package/dist/index.d.ts.map +1 -1
  39. package/dist/index.js +3 -0
  40. package/dist/index.js.map +1 -1
  41. package/dist/memory-facts.d.ts +5 -0
  42. package/dist/memory-facts.d.ts.map +1 -0
  43. package/dist/memory-facts.js +23 -0
  44. package/dist/memory-facts.js.map +1 -0
  45. package/dist/project-partition-preparation.d.ts +8 -1
  46. package/dist/project-partition-preparation.d.ts.map +1 -1
  47. package/dist/project-partition-preparation.js +41 -3
  48. package/dist/project-partition-preparation.js.map +1 -1
  49. package/dist/project-partitions.d.ts +5 -0
  50. package/dist/project-partitions.d.ts.map +1 -1
  51. package/dist/project-partitions.js +7 -0
  52. package/dist/project-partitions.js.map +1 -1
  53. package/dist/project-remove.d.ts.map +1 -1
  54. package/dist/project-remove.js +2 -4
  55. package/dist/project-remove.js.map +1 -1
  56. package/dist/rpc-problem.d.ts +10 -0
  57. package/dist/rpc-problem.d.ts.map +1 -0
  58. package/dist/rpc-problem.js +22 -0
  59. package/dist/rpc-problem.js.map +1 -0
  60. package/dist/runless-turn-recovery.d.ts +30 -0
  61. package/dist/runless-turn-recovery.d.ts.map +1 -0
  62. package/dist/runless-turn-recovery.js +38 -0
  63. package/dist/runless-turn-recovery.js.map +1 -0
  64. package/dist/server.d.ts.map +1 -1
  65. package/dist/server.js +10 -23
  66. package/dist/server.js.map +1 -1
  67. package/dist/thread-store-support.d.ts +13 -2
  68. package/dist/thread-store-support.d.ts.map +1 -1
  69. package/dist/thread-store-support.js +48 -3
  70. package/dist/thread-store-support.js.map +1 -1
  71. package/dist/thread-worktree-state.d.ts.map +1 -1
  72. package/dist/thread-worktree-state.js +5 -0
  73. package/dist/thread-worktree-state.js.map +1 -1
  74. package/dist/threads.d.ts +5 -1
  75. package/dist/threads.d.ts.map +1 -1
  76. package/dist/threads.js +18 -33
  77. package/dist/threads.js.map +1 -1
  78. package/package.json +6 -6
@@ -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,22 +1,7 @@
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
@@ -1 +1 @@
1
- {"version":3,"file":"command-retention.d.ts","sourceRoot":"","sources":["../src/command-retention.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAQ7C,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;AAoDD;;;;;;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
+ {"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,45 +1,13 @@
1
+ import { parseCommandListQuery, selectCommandRecords } from "./command-list-select.js";
1
2
  import { retainedEnvelopeOfRun } from "@claudexor/workspace";
2
- import { CommandListQuery, continuedRunOf, directDelegatedChildrenFromRecords, isModelOperation, } from "@claudexor/schema";
3
+ import { continuedRunOf, isModelOperation } from "@claudexor/schema";
3
4
  export function productCommandRecords(records) {
4
5
  return records.filter((record) => !isDeliveryCommand(record) && !isModelOperation(record.params));
5
6
  }
6
- /**
7
- * The retained product commands a caller ADDRESSED, chosen before any public
8
- * projection runs.
9
- *
10
- * `publicJobRecord` recursively walks and redacts a record's params, so a
11
- * caller that wants ONE run (or one parent's direct children) must not pay for
12
- * every retained prompt in the partition: selection here is a reference and
13
- * metadata scan (`id`/`runId` equality, one shallow `delegatedFromRunId` read,
14
- * an O(M log M) sort over the matching children only), and the unselected
15
- * records are never traversed or serialized at all. An unqualified query keeps
16
- * the historical whole-list answer.
17
- *
18
- * An addressed miss is an EMPTY selection. The caller owns the distinction
19
- * between "this run is not retained" and "the daemon could not answer": a
20
- * transport failure throws and must never be read as an empty list.
21
- */
7
+ /** Addressed selection is shared by socket reads and in-process consumers. */
22
8
  export function selectProductCommands(records, query) {
23
- const { id, delegatedFromRunId } = parseCommandListQuery(query);
24
- const product = productCommandRecords(records);
25
- if (id !== undefined) {
26
- const addressed = product.find((record) => record.id === id || record.runId === id);
27
- return addressed ? [addressed] : [];
28
- }
29
- if (delegatedFromRunId !== undefined) {
30
- return directDelegatedChildrenFromRecords(delegatedFromRunId, product);
31
- }
32
- return product;
33
- }
34
- /** Wire boundary for the addressed read: an unusable query fails loudly rather
35
- * than degrading into a silent full scan the caller did not ask for. */
36
- function parseCommandListQuery(query) {
37
- if (query === undefined || query === null)
38
- return {};
39
- const parsed = CommandListQuery.safeParse(query);
40
- if (parsed.success)
41
- return parsed.data;
42
- 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);
43
11
  }
44
12
  /** Delivery commands persist the full run params of the apply they serve;
45
13
  * they keep their existing age/cap retention and are outside the byte budget. */
@@ -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"}
@@ -11,4 +11,17 @@ export function commandScopeRoots(records) {
11
11
  }
12
12
  return [...roots];
13
13
  }
14
+ /** Caller-owned execution roots a delegated command recorded. Crash GC reaches
15
+ * only Claudexor's own runtime scratch under them (envelopes), never the
16
+ * caller's tree or its Git refs. */
17
+ export function commandExecutionRoots(records) {
18
+ const roots = new Set();
19
+ for (const record of records) {
20
+ const root = record?.params
21
+ ?.execution?.workspaceRoot;
22
+ if (typeof root === "string" && root)
23
+ roots.add(root);
24
+ }
25
+ return [...roots];
26
+ }
14
27
  //# sourceMappingURL=command-scope-roots.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"command-scope-roots.js","sourceRoot":"","sources":["../src/command-scope-roots.ts"],"names":[],"mappings":"AAAA;;2DAE2D;AAC3D,MAAM,UAAU,iBAAiB,CAAC,OAAmD;IACnF,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAI,MAAM,EAAE,MAAqE;YAC1F,EAAE,KAAK,CAAC;QACV,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;YAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACjG,CAAC;IACD,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC;AACpB,CAAC"}
1
+ {"version":3,"file":"command-scope-roots.js","sourceRoot":"","sources":["../src/command-scope-roots.ts"],"names":[],"mappings":"AAAA;;2DAE2D;AAC3D,MAAM,UAAU,iBAAiB,CAAC,OAAmD;IACnF,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAI,MAAM,EAAE,MAAqE;YAC1F,EAAE,KAAK,CAAC;QACV,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;YAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACjG,CAAC;IACD,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC;AACpB,CAAC;AAED;;oCAEoC;AACpC,MAAM,UAAU,qBAAqB,CACnC,OAAmD;IAEnD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAI,MAAM,EAAE,MAAkE;YACtF,EAAE,SAAS,EAAE,aAAa,CAAC;QAC7B,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI;YAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC;AACpB,CAAC"}
@@ -29,15 +29,12 @@ export declare class CommandStore {
29
29
  idempotencyParams?: unknown;
30
30
  }): JobRecord | null;
31
31
  get(id: string): JobRecord | undefined;
32
+ get count(): number;
32
33
  records(): JobRecord[];
33
34
  update(id: string, patch: Partial<JobRecord>): JobRecord;
34
35
  prune(ids: readonly string[]): void;
35
- /** Project roots of commands this store pruned, across restarts and folds. */
36
36
  prunedScopeRoots(): string[];
37
- /**
38
- * Reconcile one command after the partition journal accepted its terminal
39
- * but local receipt/tail finalization failed.
40
- */
37
+ /** Reconcile after durable terminal acceptance but failed local receipt/tail finalization. */
41
38
  recoverDurableTerminal(id: string): JobRecord | null;
42
39
  validateProjection(): void;
43
40
  private replay;
@@ -1 +1 @@
1
- {"version":3,"file":"command-store.d.ts","sourceRoot":"","sources":["../src/command-store.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAczD,OAAO,EAAc,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAyBzD,oFAAoF;AACpF,qBAAa,YAAY;IAMrB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,GAAG;IANtB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAgC;IAC5D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA4D;IAC1F,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAqB;IAEjD,YACmB,OAAO,EAAE,cAAc,EACvB,GAAG,GAAE,MAAM,IAAuB,EAGpD;IAED,4FAA4F;IAC5F,mBAAmB,IAAI,IAAI,CAE1B;IAED,MAAM,CAAC,KAAK,EAAE;QACZ,EAAE,EAAE,MAAM,CAAC;QACX,MAAM,EAAE,OAAO,CAAC;QAChB,cAAc,EAAE,MAAM,CAAC;QACvB,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,iBAAiB,CAAC,EAAE,OAAO,CAAC;KAC7B,GAAG;QAAE,MAAM,EAAE,SAAS,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,CAwBzC;IAED,IAAI,CAAC,KAAK,EAAE;QACV,MAAM,EAAE,OAAO,CAAC;QAChB,cAAc,EAAE,MAAM,CAAC;QACvB,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,iBAAiB,CAAC,EAAE,OAAO,CAAC;KAC7B,GAAG,SAAS,GAAG,IAAI,CAOnB;IAED,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAErC;IAED,OAAO,IAAI,SAAS,EAAE,CAErB;IAED,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,SAAS,CAQvD;IAED,KAAK,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAWlC;IAED,8EAA8E;IAC9E,gBAAgB,IAAI,MAAM,EAAE,CAE3B;IAED;;;OAGG;IACH,sBAAsB,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAKnD;IAED,kBAAkB,IAAI,IAAI,CAKzB;IAED,OAAO,CAAC,MAAM;IA4Cd,OAAO,CAAC,wBAAwB;IAmBhC,OAAO,CAAC,iBAAiB;IAsDzB;oFACgF;IAChF,OAAO,CAAC,qBAAqB;IAI7B,OAAO,CAAC,wBAAwB;IAgKhC,OAAO,CAAC,IAAI;CAOb;AA8ED,wBAAgB,iBAAiB;IAE7B,IAAI;IACJ,MAAM,YAAY,cAAc;IAChC,QAAQ,UAAU,YAAY;IAC9B,OAAO,UAAU,YAAY;EAEhC"}
1
+ {"version":3,"file":"command-store.d.ts","sourceRoot":"","sources":["../src/command-store.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAczD,OAAO,EAAc,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAyBzD,oFAAoF;AACpF,qBAAa,YAAY;IAMrB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,GAAG;IANtB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAgC;IAC5D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA4D;IAC1F,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAqB;IAEjD,YACmB,OAAO,EAAE,cAAc,EACvB,GAAG,GAAE,MAAM,IAAuB,EAGpD;IAED,4FAA4F;IAC5F,mBAAmB,IAAI,IAAI,CAE1B;IAED,MAAM,CAAC,KAAK,EAAE;QACZ,EAAE,EAAE,MAAM,CAAC;QACX,MAAM,EAAE,OAAO,CAAC;QAChB,cAAc,EAAE,MAAM,CAAC;QACvB,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,iBAAiB,CAAC,EAAE,OAAO,CAAC;KAC7B,GAAG;QAAE,MAAM,EAAE,SAAS,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,CAwBzC;IAED,IAAI,CAAC,KAAK,EAAE;QACV,MAAM,EAAE,OAAO,CAAC;QAChB,cAAc,EAAE,MAAM,CAAC;QACvB,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,iBAAiB,CAAC,EAAE,OAAO,CAAC;KAC7B,GAAG,SAAS,GAAG,IAAI,CAOnB;IAED,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAErC;IAED,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,OAAO,IAAI,SAAS,EAAE,CAErB;IAED,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,SAAS,CAQvD;IAED,KAAK,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAWlC;IAED,gBAAgB,IAAI,MAAM,EAAE,CAE3B;IAED,8FAA8F;IAC9F,sBAAsB,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAKnD;IAED,kBAAkB,IAAI,IAAI,CAKzB;IAED,OAAO,CAAC,MAAM;IA4Cd,OAAO,CAAC,wBAAwB;IAmBhC,OAAO,CAAC,iBAAiB;IAsDzB;oFACgF;IAChF,OAAO,CAAC,qBAAqB;IAI7B,OAAO,CAAC,wBAAwB;IAgKhC,OAAO,CAAC,IAAI;CAOb;AA8ED,wBAAgB,iBAAiB;IAE7B,IAAI;IACJ,MAAM,YAAY,cAAc;IAChC,QAAQ,UAAU,YAAY;IAC9B,OAAO,UAAU,YAAY;EAEhC"}