@claudexor/daemon 3.1.1 → 3.2.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 (94) hide show
  1. package/README.md +1 -1
  2. package/dist/client.d.ts +21 -0
  3. package/dist/client.d.ts.map +1 -1
  4. package/dist/client.js +10 -0
  5. package/dist/client.js.map +1 -1
  6. package/dist/command-rpc.d.ts +19 -0
  7. package/dist/command-rpc.d.ts.map +1 -0
  8. package/dist/command-rpc.js +20 -0
  9. package/dist/command-rpc.js.map +1 -0
  10. package/dist/command-store.d.ts +9 -0
  11. package/dist/command-store.d.ts.map +1 -1
  12. package/dist/command-store.js +322 -0
  13. package/dist/command-store.js.map +1 -1
  14. package/dist/daemon-shutdown-rpc.d.ts +27 -0
  15. package/dist/daemon-shutdown-rpc.d.ts.map +1 -0
  16. package/dist/daemon-shutdown-rpc.js +110 -0
  17. package/dist/daemon-shutdown-rpc.js.map +1 -0
  18. package/dist/delegation-admission.d.ts +12 -0
  19. package/dist/delegation-admission.d.ts.map +1 -0
  20. package/dist/delegation-admission.js +47 -0
  21. package/dist/delegation-admission.js.map +1 -0
  22. package/dist/delivery-command.d.ts +28 -0
  23. package/dist/delivery-command.d.ts.map +1 -0
  24. package/dist/delivery-command.js +37 -0
  25. package/dist/delivery-command.js.map +1 -0
  26. package/dist/events.d.ts.map +1 -1
  27. package/dist/index.d.ts +2 -0
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js +2 -0
  30. package/dist/index.js.map +1 -1
  31. package/dist/interactions.d.ts +3 -3
  32. package/dist/interactions.d.ts.map +1 -1
  33. package/dist/interactions.js +15 -4
  34. package/dist/interactions.js.map +1 -1
  35. package/dist/job-record.d.ts +25 -0
  36. package/dist/job-record.d.ts.map +1 -0
  37. package/dist/job-record.js +62 -0
  38. package/dist/job-record.js.map +1 -0
  39. package/dist/job-settlement.d.ts +16 -0
  40. package/dist/job-settlement.d.ts.map +1 -0
  41. package/dist/job-settlement.js +56 -0
  42. package/dist/job-settlement.js.map +1 -0
  43. package/dist/journal-manager.d.ts +5 -5
  44. package/dist/journal-manager.d.ts.map +1 -1
  45. package/dist/journal-manager.js.map +1 -1
  46. package/dist/journal-recovery-files.d.ts +1 -1
  47. package/dist/operator-decisions.d.ts +10 -1
  48. package/dist/operator-decisions.d.ts.map +1 -1
  49. package/dist/operator-decisions.js +18 -10
  50. package/dist/operator-decisions.js.map +1 -1
  51. package/dist/project-partitions.d.ts +18 -10
  52. package/dist/project-partitions.d.ts.map +1 -1
  53. package/dist/project-partitions.js +13 -34
  54. package/dist/project-partitions.js.map +1 -1
  55. package/dist/projects.d.ts.map +1 -1
  56. package/dist/projects.js.map +1 -1
  57. package/dist/quota-registry.d.ts +62 -13
  58. package/dist/quota-registry.d.ts.map +1 -1
  59. package/dist/quota-registry.js +92 -9
  60. package/dist/quota-registry.js.map +1 -1
  61. package/dist/resource-store.d.ts.map +1 -1
  62. package/dist/run-events.d.ts.map +1 -1
  63. package/dist/run-events.js.map +1 -1
  64. package/dist/server.d.ts +28 -48
  65. package/dist/server.d.ts.map +1 -1
  66. package/dist/server.js +126 -154
  67. package/dist/server.js.map +1 -1
  68. package/dist/socket-probe.d.ts +3 -0
  69. package/dist/socket-probe.d.ts.map +1 -0
  70. package/dist/socket-probe.js +15 -0
  71. package/dist/socket-probe.js.map +1 -0
  72. package/dist/terminal-authority.d.ts +39 -0
  73. package/dist/terminal-authority.d.ts.map +1 -0
  74. package/dist/terminal-authority.js +58 -0
  75. package/dist/terminal-authority.js.map +1 -0
  76. package/dist/terminate.d.ts +14 -0
  77. package/dist/terminate.d.ts.map +1 -1
  78. package/dist/terminate.js +13 -1
  79. package/dist/terminate.js.map +1 -1
  80. package/dist/thread-head-ping.d.ts.map +1 -1
  81. package/dist/thread-head-ping.js.map +1 -1
  82. package/dist/thread-store-support.d.ts +7 -0
  83. package/dist/thread-store-support.d.ts.map +1 -1
  84. package/dist/thread-store-support.js +22 -0
  85. package/dist/thread-store-support.js.map +1 -1
  86. package/dist/threads.d.ts +6 -15
  87. package/dist/threads.d.ts.map +1 -1
  88. package/dist/threads.js +23 -37
  89. package/dist/threads.js.map +1 -1
  90. package/dist/writer-lease.d.ts +4 -0
  91. package/dist/writer-lease.d.ts.map +1 -1
  92. package/dist/writer-lease.js +1 -0
  93. package/dist/writer-lease.js.map +1 -1
  94. package/package.json +7 -6
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @claudexor/daemon
2
2
 
3
- Internal package of [Claudexor](https://github.com/razzant/claudexor) — Optional local daemon: Unix-socket JSON-RPC, token auth, task queue. Runner injected (no second scheduler).
3
+ Internal package of [Claudexor](https://github.com/razzant/claudexor) — Managed local daemon: Unix-socket JSON-RPC, token auth, task queue. Runner injected (no second scheduler).
4
4
 
5
5
  Published as part of the Claudexor toolchain; it follows the monorepo's
6
6
  lockstep version and has no separate semver contract. Use the `claudexor`
package/dist/client.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import type { RuntimeReplacementTarget } from "./daemon-shutdown-rpc.js";
1
2
  /** Thin JSON-RPC client for the daemon over a Unix socket. */
2
3
  export declare class DaemonClient {
3
4
  private readonly socketPath;
@@ -13,6 +14,7 @@ export declare class DaemonClient {
13
14
  }): Promise<{
14
15
  id: string;
15
16
  state: string;
17
+ reused: boolean;
16
18
  }>;
17
19
  status(id: string): Promise<{
18
20
  id: string;
@@ -25,6 +27,9 @@ export declare class DaemonClient {
25
27
  error?: string;
26
28
  errorCode?: string;
27
29
  errorStatus?: number;
30
+ errorRetryable?: boolean;
31
+ errorRequiredActions?: string[];
32
+ errorContext?: Record<string, unknown>;
28
33
  createdAt?: string;
29
34
  startedAt?: string;
30
35
  finishedAt?: string;
@@ -33,6 +38,7 @@ export declare class DaemonClient {
33
38
  idempotencyKey: string;
34
39
  clientId?: string;
35
40
  operation?: string;
41
+ idempotencyRequest?: unknown;
36
42
  }): Promise<{
37
43
  id: string;
38
44
  state: string;
@@ -44,6 +50,9 @@ export declare class DaemonClient {
44
50
  error?: string;
45
51
  errorCode?: string;
46
52
  errorStatus?: number;
53
+ errorRetryable?: boolean;
54
+ errorRequiredActions?: string[];
55
+ errorContext?: Record<string, unknown>;
47
56
  createdAt?: string;
48
57
  startedAt?: string;
49
58
  finishedAt?: string;
@@ -58,11 +67,23 @@ export declare class DaemonClient {
58
67
  error?: string;
59
68
  errorCode?: string;
60
69
  errorStatus?: number;
70
+ errorRetryable?: boolean;
71
+ errorRequiredActions?: string[];
72
+ errorContext?: Record<string, unknown>;
61
73
  createdAt?: string;
62
74
  startedAt?: string;
63
75
  finishedAt?: string;
64
76
  }[]>;
65
77
  cancel(id: string): Promise<unknown>;
78
+ fenceDelegationParent(runId: string): Promise<{
79
+ runId: string;
80
+ fenced: boolean;
81
+ }>;
66
82
  shutdown(): Promise<unknown>;
83
+ shutdownForRuntimeReplacement(expectedTarget: RuntimeReplacementTarget): Promise<{
84
+ ok: true;
85
+ fenced: true;
86
+ targetBound: true;
87
+ }>;
67
88
  }
68
89
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAIA,8DAA8D;AAC9D,qBAAa,YAAY;IAErB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,KAAK;gBADL,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM;IAGhC,IAAI,CAAC,CAAC,GAAG,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IAgD/D,MAAM;IAGN,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;;IAQ9C,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;oBACR,MAAM;oBACN,MAAM;qBACL,MAAM;;IAGvB,YAAY,CACV,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE;QAAE,cAAc,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE;YAjBpE,MAAM;eACH,MAAM;iBACJ,OAAO;gBACR,MAAM;iBACL,MAAM;iBACN,MAAM;iBACN,OAAO;gBACR,MAAM;oBACF,MAAM;sBACJ,MAAM;oBACR,MAAM;oBACN,MAAM;qBACL,MAAM;;IAcvB,IAAI;YAGM,MAAM;eACH,MAAM;iBACJ,OAAO;gBACR,MAAM;iBACL,MAAM;iBACN,MAAM;gBACP,MAAM;oBACF,MAAM;sBACJ,MAAM;oBACR,MAAM;oBACN,MAAM;qBACL,MAAM;;IAIzB,MAAM,CAAC,EAAE,EAAE,MAAM;IAGjB,QAAQ;CAGT"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAGA,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,IAAI;YAGM,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,oBAEhB;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
@@ -46,6 +46,9 @@ export class DaemonClient {
46
46
  const error = Object.assign(new Error(msg.error.message), {
47
47
  ...(typeof msg.error.code === "string" ? { code: msg.error.code } : {}),
48
48
  ...(typeof msg.error.status === "number" ? { status: msg.error.status } : {}),
49
+ ...(typeof msg.error.retryable === "boolean"
50
+ ? { retryable: msg.error.retryable }
51
+ : {}),
49
52
  });
50
53
  finish(() => reject(error));
51
54
  }
@@ -79,6 +82,7 @@ export class DaemonClient {
79
82
  idempotencyKey: options.idempotencyKey,
80
83
  clientId: options.clientId ?? "daemon-client",
81
84
  operation: options.operation,
85
+ idempotencyRequest: options.idempotencyRequest,
82
86
  });
83
87
  }
84
88
  list() {
@@ -87,8 +91,14 @@ export class DaemonClient {
87
91
  cancel(id) {
88
92
  return this.call("claudexor.cancel", { id });
89
93
  }
94
+ fenceDelegationParent(runId) {
95
+ return this.call("claudexor.delegationFence", { runId });
96
+ }
90
97
  shutdown() {
91
98
  return this.call("claudexor.shutdown");
92
99
  }
100
+ shutdownForRuntimeReplacement(expectedTarget) {
101
+ return this.call("claudexor.shutdownForRuntimeReplacement", expectedTarget);
102
+ }
93
103
  }
94
104
  //# sourceMappingURL=client.js.map
@@ -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,19 @@
1
+ import { type CommandAuthority } from "./command-authority.js";
2
+ import { publicJobRecord, type JobRecord } from "./job-record.js";
3
+ interface CommandLookupEnvelope {
4
+ request?: unknown;
5
+ idempotencyKey?: unknown;
6
+ clientId?: unknown;
7
+ operation?: unknown;
8
+ idempotencyRequest?: unknown;
9
+ }
10
+ /** One parser for enqueue replay and the explicit findAccepted RPC. */
11
+ export declare function findAcceptedCommand(commands: CommandAuthority, input: CommandLookupEnvelope | null | undefined): JobRecord | null;
12
+ export declare function publicAcceptedCommand(commands: CommandAuthority, input: CommandLookupEnvelope | null | undefined): ReturnType<typeof publicJobRecord> | null;
13
+ export declare function commandAcceptanceReceipt(record: JobRecord, reused: boolean): {
14
+ id: string;
15
+ state: "cancelled" | "failed" | "interrupted" | "queued" | "running" | "succeeded";
16
+ reused: boolean;
17
+ };
18
+ export {};
19
+ //# sourceMappingURL=command-rpc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-rpc.d.ts","sourceRoot":"","sources":["../src/command-rpc.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,KAAK,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AACvF,OAAO,EAAE,eAAe,EAAE,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAElE,UAAU,qBAAqB;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,uEAAuE;AACvE,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,gBAAgB,EAC1B,KAAK,EAAE,qBAAqB,GAAG,IAAI,GAAG,SAAS,GAC9C,SAAS,GAAG,IAAI,CAQlB;AAED,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,gBAAgB,EAC1B,KAAK,EAAE,qBAAqB,GAAG,IAAI,GAAG,SAAS,GAC9C,UAAU,CAAC,OAAO,eAAe,CAAC,GAAG,IAAI,CAG3C;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO;;;;EAE1E"}
@@ -0,0 +1,20 @@
1
+ import { commandStoreForRequest } from "./command-authority.js";
2
+ import { publicJobRecord } from "./job-record.js";
3
+ /** One parser for enqueue replay and the explicit findAccepted RPC. */
4
+ export function findAcceptedCommand(commands, input) {
5
+ return commandStoreForRequest(commands, input?.request).find({
6
+ params: input?.request,
7
+ idempotencyKey: String(input?.idempotencyKey ?? ""),
8
+ clientId: String(input?.clientId ?? "daemon-client"),
9
+ operation: typeof input?.operation === "string" ? input.operation : undefined,
10
+ idempotencyParams: input?.idempotencyRequest,
11
+ });
12
+ }
13
+ export function publicAcceptedCommand(commands, input) {
14
+ const record = findAcceptedCommand(commands, input);
15
+ return record ? publicJobRecord(record) : null;
16
+ }
17
+ export function commandAcceptanceReceipt(record, reused) {
18
+ return { id: record.id, state: record.state, reused };
19
+ }
20
+ //# sourceMappingURL=command-rpc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-rpc.js","sourceRoot":"","sources":["../src/command-rpc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAyB,MAAM,wBAAwB,CAAC;AACvF,OAAO,EAAE,eAAe,EAAkB,MAAM,iBAAiB,CAAC;AAUlE,uEAAuE;AACvE,MAAM,UAAU,mBAAmB,CACjC,QAA0B,EAC1B,KAA+C;IAE/C,OAAO,sBAAsB,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC;QAC3D,MAAM,EAAE,KAAK,EAAE,OAAO;QACtB,cAAc,EAAE,MAAM,CAAC,KAAK,EAAE,cAAc,IAAI,EAAE,CAAC;QACnD,QAAQ,EAAE,MAAM,CAAC,KAAK,EAAE,QAAQ,IAAI,eAAe,CAAC;QACpD,SAAS,EAAE,OAAO,KAAK,EAAE,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;QAC7E,iBAAiB,EAAE,KAAK,EAAE,kBAAkB;KAC7C,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,QAA0B,EAC1B,KAA+C;IAE/C,MAAM,MAAM,GAAG,mBAAmB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACpD,OAAO,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,MAAiB,EAAE,MAAe;IACzE,OAAO,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;AACxD,CAAC"}
@@ -23,14 +23,23 @@ export declare class CommandStore {
23
23
  idempotencyKey: string;
24
24
  clientId: string;
25
25
  operation?: string;
26
+ idempotencyParams?: unknown;
26
27
  }): JobRecord | null;
27
28
  get(id: string): JobRecord | undefined;
28
29
  records(): JobRecord[];
29
30
  update(id: string, patch: Partial<JobRecord>): JobRecord;
30
31
  prune(ids: readonly string[]): void;
32
+ /**
33
+ * Reconcile one command after the partition journal accepted its terminal
34
+ * but local receipt/tail finalization failed.
35
+ */
36
+ recoverDurableTerminal(id: string): JobRecord | null;
31
37
  validateProjection(): void;
32
38
  private replay;
33
39
  private interruptUnknownCommands;
40
+ private reconcileTerminal;
41
+ private durableTerminalEvents;
42
+ private recoverTerminalArtifacts;
34
43
  private drop;
35
44
  }
36
45
  export declare function commandProjection(): {
@@ -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;AAEzD,OAAO,EAAc,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAgBzD,oFAAoF;AACpF,qBAAa,YAAY;IAKrB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,GAAG;IALtB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAgC;IAC5D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA4D;gBAGvE,OAAO,EAAE,cAAc,EACvB,GAAG,GAAE,MAAM,IAAuB;IAMrD,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;IA0B1C,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;KACpB,GAAG,SAAS,GAAG,IAAI;IASpB,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAItC,OAAO,IAAI,SAAS,EAAE;IAItB,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,SAAS;IASxD,KAAK,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI;IAMnC,kBAAkB,IAAI,IAAI;IAO1B,OAAO,CAAC,MAAM;IAkCd,OAAO,CAAC,wBAAwB;IAahC,OAAO,CAAC,IAAI;CAOb;AAED,wBAAgB,iBAAiB;;sBAGX,cAAc;sBACd,YAAY;EAEjC"}
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;AAUzD,OAAO,EAAc,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAqBzD,oFAAoF;AACpF,qBAAa,YAAY;IAKrB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,GAAG;IALtB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAgC;IAC5D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA4D;IAE1F,YACmB,OAAO,EAAE,cAAc,EACvB,GAAG,GAAE,MAAM,IAAuB,EAIpD;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,CAOvD;IAED,KAAK,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAIlC;IAED;;;OAGG;IACH,sBAAsB,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAKnD;IAED,kBAAkB,IAAI,IAAI,CAKzB;IAED,OAAO,CAAC,MAAM;IAkCd,OAAO,CAAC,wBAAwB;IAmBhC,OAAO,CAAC,iBAAiB;IAsDzB,OAAO,CAAC,qBAAqB;IAmB7B,OAAO,CAAC,wBAAwB;IAgKhC,OAAO,CAAC,IAAI;CAOb;AAsFD,wBAAgB,iBAAiB;IAE7B,IAAI;IACJ,MAAM,YAAY,cAAc;IAChC,QAAQ,UAAU,YAAY;EAEjC"}
@@ -1,5 +1,12 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { closeSync, constants, fsyncSync, openSync, readFileSync, renameSync, unlinkSync, writeFileSync, } from "node:fs";
3
+ import { dirname, join } from "node:path";
4
+ import { TextDecoder } from "node:util";
5
+ import { RunEvent as RunEventSchema, RunTelemetry, validateRunFactsInvariants, } from "@claudexor/schema";
1
6
  import { hashJson } from "@claudexor/util";
7
+ import { parse as parseYaml, stringify as stringifyYaml } from "yaml";
2
8
  import { JOB_STATES } from "./server.js";
9
+ import { lstatOrNull, recoveredTerminalFacts, terminalCommandResult, } from "./terminal-authority.js";
3
10
  const ACCEPTED = "command.accepted";
4
11
  const UPDATED = "command.updated";
5
12
  const PRUNED = "command.pruned";
@@ -73,6 +80,17 @@ export class CommandStore {
73
80
  this.journal.append(PRUNED, { ids: [...ids] });
74
81
  this.drop(ids);
75
82
  }
83
+ /**
84
+ * Reconcile one command after the partition journal accepted its terminal
85
+ * but local receipt/tail finalization failed.
86
+ */
87
+ recoverDurableTerminal(id) {
88
+ const record = this.recordsById.get(id);
89
+ if (!record?.runId)
90
+ return null;
91
+ const terminal = this.durableTerminalEvents().get(record.runId);
92
+ return terminal ? this.reconcileTerminal(record, terminal) : null;
93
+ }
76
94
  validateProjection() {
77
95
  for (const record of this.recordsById.values())
78
96
  validateRecord(record);
@@ -116,7 +134,13 @@ export class CommandStore {
116
134
  }
117
135
  }
118
136
  interruptUnknownCommands() {
137
+ const terminals = this.durableTerminalEvents();
119
138
  for (const record of this.recordsById.values()) {
139
+ const terminal = record.runId ? terminals.get(record.runId) : undefined;
140
+ if (terminal) {
141
+ this.reconcileTerminal(record, terminal);
142
+ continue;
143
+ }
120
144
  if (record.state !== "queued" && record.state !== "running")
121
145
  continue;
122
146
  this.update(record.id, {
@@ -128,6 +152,237 @@ export class CommandStore {
128
152
  });
129
153
  }
130
154
  }
155
+ reconcileTerminal(record, terminal) {
156
+ const hasRunFacts = Object.prototype.hasOwnProperty.call(terminal.payload, "run_facts");
157
+ if (!hasRunFacts) {
158
+ // Pre-RunFacts journals remain readable across the upgrade. An
159
+ // already-terminal command has its historical command.updated
160
+ // authority; an active command cannot reconstruct the new
161
+ // byte-equivalent receipt and therefore follows the legacy crash path.
162
+ if (record.state !== "queued" && record.state !== "running")
163
+ return record;
164
+ return this.update(record.id, {
165
+ state: "interrupted",
166
+ error: "daemon restarted after a legacy terminal event without recoverable RunFacts",
167
+ errorCode: "legacy_terminal_recovery_unavailable",
168
+ errorStatus: 503,
169
+ errorRetryable: false,
170
+ finishedAt: this.now().toISOString(),
171
+ });
172
+ }
173
+ const active = record.state === "queued" || record.state === "running";
174
+ const provisionalRecovery = !active && record.errorCode === "terminal_recovery_required";
175
+ if (!active && !provisionalRecovery) {
176
+ // Already reconciled: the durable payload is still re-validated in
177
+ // memory, but artifact recovery is skipped entirely. Restart must not
178
+ // re-read per-run evidence for every historical terminal command (O(N)
179
+ // disk work per start) and must not require a run directory that disk
180
+ // retention may have legitimately reclaimed after the terminal
181
+ // committed — either would poison the whole partition.
182
+ const { facts } = recoveredTerminalFacts(record, terminal);
183
+ if (record.state !== facts.outcome.lifecycle ||
184
+ !terminalResultMatches(record.result, terminalCommandResult(record, facts))) {
185
+ throw new Error("terminal command result conflicts with durable terminal authority");
186
+ }
187
+ return record;
188
+ }
189
+ const facts = this.recoverTerminalArtifacts(record, terminal);
190
+ const lifecycle = facts.outcome.lifecycle;
191
+ return this.update(record.id, {
192
+ state: lifecycle,
193
+ result: terminalCommandResult(record, facts),
194
+ error: lifecycle === "failed" || lifecycle === "interrupted"
195
+ ? `recovered durable ${lifecycle} terminal after daemon restart`
196
+ : undefined,
197
+ errorCode: undefined,
198
+ errorStatus: undefined,
199
+ errorRetryable: undefined,
200
+ errorRequiredActions: undefined,
201
+ errorContext: undefined,
202
+ finishedAt: terminal.ts,
203
+ });
204
+ }
205
+ durableTerminalEvents() {
206
+ const terminals = new Map();
207
+ for (const entry of this.journal.records()) {
208
+ if (entry.type !== "run.event")
209
+ continue;
210
+ const event = RunEventSchema.parse(entry.payload);
211
+ if (event.type === "run.completed" ||
212
+ event.type === "run.failed" ||
213
+ event.type === "run.blocked") {
214
+ if (terminals.has(event.run_id)) {
215
+ throw new Error(`multiple durable terminal events for run ${event.run_id}`);
216
+ }
217
+ terminals.set(event.run_id, event);
218
+ }
219
+ }
220
+ return terminals;
221
+ }
222
+ recoverTerminalArtifacts(record, terminal) {
223
+ const { facts, terminalSeq } = recoveredTerminalFacts(record, terminal);
224
+ // ENOENT on the run root or its final/ directory means disk retention
225
+ // already reclaimed this run's on-disk evidence (rmSync may leave only a
226
+ // recreated root holding a tombstone marker). The partition journal is the
227
+ // durable authority, so the recovered facts are returned WITHOUT
228
+ // filesystem repair instead of poisoning the partition on restart.
229
+ const rootStat = lstatOrNull(record.runDir);
230
+ if (!rootStat)
231
+ return facts;
232
+ if (rootStat.isSymbolicLink() || !rootStat.isDirectory()) {
233
+ throw new Error("durable terminal run directory is not a canonical directory");
234
+ }
235
+ const finalDir = join(record.runDir, "final");
236
+ const finalStat = lstatOrNull(finalDir);
237
+ if (!finalStat)
238
+ return facts;
239
+ if (finalStat.isSymbolicLink() || !finalStat.isDirectory()) {
240
+ throw new Error("durable terminal run directory is not a canonical directory");
241
+ }
242
+ const receiptPath = join(finalDir, "run_facts.yaml");
243
+ const receiptStat = lstatOrNull(receiptPath);
244
+ if (!receiptStat) {
245
+ // JSON is valid YAML and avoids a second schema-to-presentation owner.
246
+ replaceFileDurably(receiptPath, `${JSON.stringify(facts, null, 2)}\n`);
247
+ }
248
+ else {
249
+ if (receiptStat.isSymbolicLink() || !receiptStat.isFile()) {
250
+ throw new Error("durable terminal RunFacts receipt is not a regular file");
251
+ }
252
+ const receiptText = readFileSync(receiptPath, "utf8");
253
+ let receiptValue;
254
+ let receiptTorn = false;
255
+ try {
256
+ receiptValue = parseYaml(receiptText);
257
+ }
258
+ catch {
259
+ // Older direct writers could crash mid-file. The complete journal
260
+ // payload is the durable authority, so a syntactically TORN receipt is
261
+ // safely reconstructible. ONLY the YAML tear is rebuilt: a receipt that
262
+ // parses but violates the canonical schema, or one that validates but
263
+ // differs from the journal, is corruption evidence and fails loud below
264
+ // instead of being silently destroyed.
265
+ receiptTorn = true;
266
+ replaceFileDurably(receiptPath, `${JSON.stringify(facts, null, 2)}\n`);
267
+ }
268
+ if (!receiptTorn) {
269
+ let existing;
270
+ try {
271
+ existing = validateRunFactsInvariants(receiptValue);
272
+ }
273
+ catch {
274
+ throw new Error("durable terminal RunFacts receipt violates the canonical schema");
275
+ }
276
+ if (hashJson(existing) !== hashJson(facts)) {
277
+ throw new Error("durable terminal RunFacts receipt does not match journal authority");
278
+ }
279
+ }
280
+ }
281
+ const telemetryPath = join(finalDir, "telemetry.yaml");
282
+ const telemetryStat = lstatOrNull(telemetryPath);
283
+ if (telemetryStat) {
284
+ if (telemetryStat.isSymbolicLink() || !telemetryStat.isFile()) {
285
+ throw new Error("durable terminal telemetry is not a regular file");
286
+ }
287
+ // Telemetry is best-effort descriptive evidence written non-atomically
288
+ // (no fsync), and the terminal commit path itself tolerates a corrupt
289
+ // copy (safeParse -> the embedded receipt is simply skipped). The JOURNAL
290
+ // is the authority, so an unreadable or schema-invalid telemetry file
291
+ // must never take the whole partition into recovery: it stays in place as
292
+ // corruption evidence, and only a READABLE copy participates in the
293
+ // receipt-consistency fence below.
294
+ let telemetry = null;
295
+ try {
296
+ telemetry = RunTelemetry.parse(parseYaml(readFileSync(telemetryPath, "utf8")));
297
+ }
298
+ catch {
299
+ telemetry = null;
300
+ }
301
+ if (telemetry?.run_facts) {
302
+ if (hashJson(telemetry.run_facts) !== hashJson(facts)) {
303
+ throw new Error("durable terminal telemetry does not match journal authority");
304
+ }
305
+ }
306
+ else if (telemetry) {
307
+ replaceFileDurably(telemetryPath, stringifyYaml(RunTelemetry.parse({ ...telemetry, run_facts: facts })));
308
+ }
309
+ }
310
+ const eventsPath = join(record.runDir, "events.jsonl");
311
+ const eventsStat = lstatOrNull(eventsPath);
312
+ let eventsBytes = Buffer.alloc(0);
313
+ if (eventsStat) {
314
+ if (eventsStat.isSymbolicLink() || !eventsStat.isFile()) {
315
+ throw new Error("durable terminal event log is not a regular file");
316
+ }
317
+ eventsBytes = readFileSync(eventsPath);
318
+ }
319
+ const normalizedLines = [];
320
+ let terminalOccurrences = 0;
321
+ let previousSeq = 0;
322
+ const rawLines = splitLines(eventsBytes);
323
+ const finalNonEmptyIndex = rawLines.findLastIndex((line) => !isAsciiWhitespace(line));
324
+ const canonicalTerminalLine = JSON.stringify(terminal);
325
+ const canonicalTerminalBytes = Buffer.from(canonicalTerminalLine, "utf8");
326
+ const endsWithNewline = eventsBytes.at(-1) === 0x0a;
327
+ const utf8 = new TextDecoder("utf-8", { fatal: true });
328
+ for (const [index, lineBytes] of rawLines.entries()) {
329
+ if (isAsciiWhitespace(lineBytes))
330
+ continue;
331
+ let event;
332
+ try {
333
+ const line = utf8.decode(lineBytes);
334
+ event = RunEventSchema.parse(JSON.parse(line));
335
+ }
336
+ catch {
337
+ const tornFinalLine = index === finalNonEmptyIndex &&
338
+ !endsWithNewline &&
339
+ terminalOccurrences === 0 &&
340
+ isBufferPrefix(canonicalTerminalBytes, lineBytes);
341
+ if (tornFinalLine)
342
+ break;
343
+ throw new Error("per-run event log contains malformed committed evidence");
344
+ }
345
+ if (event.run_id !== terminal.run_id || event.task_id !== terminal.task_id) {
346
+ throw new Error("per-run event identity conflicts with durable terminal authority");
347
+ }
348
+ if (typeof event.seq !== "number" || !Number.isSafeInteger(event.seq) || event.seq <= 0) {
349
+ throw new Error("per-run event has no valid sequence");
350
+ }
351
+ const eventSeq = event.seq;
352
+ if (eventSeq <= previousSeq) {
353
+ throw new Error("per-run event sequence is duplicate or non-monotonic");
354
+ }
355
+ const sameEvent = hashJson(event) === hashJson(terminal);
356
+ if (terminalOccurrences === 0 && !sameEvent && eventSeq >= terminalSeq) {
357
+ throw new Error("per-run event sequence conflicts with durable terminal authority");
358
+ }
359
+ if (terminalOccurrences > 0 && !sameEvent && !isPostTerminalControlAudit(event.type)) {
360
+ throw new Error("per-run event appears after terminal authority");
361
+ }
362
+ const eventIsTerminal = event.type === "run.completed" ||
363
+ event.type === "run.failed" ||
364
+ event.type === "run.blocked";
365
+ if (eventIsTerminal) {
366
+ if (!sameEvent) {
367
+ throw new Error("per-run terminal event conflicts with durable journal authority");
368
+ }
369
+ terminalOccurrences += 1;
370
+ if (terminalOccurrences > 1) {
371
+ throw new Error("per-run event log contains multiple terminal events");
372
+ }
373
+ }
374
+ previousSeq = eventSeq;
375
+ normalizedLines.push(JSON.stringify(event));
376
+ }
377
+ if (terminalOccurrences === 0) {
378
+ normalizedLines.push(JSON.stringify(terminal));
379
+ }
380
+ const normalizedEvents = normalizedLines.length > 0 ? `${normalizedLines.join("\n")}\n` : "";
381
+ if (!Buffer.from(normalizedEvents, "utf8").equals(eventsBytes)) {
382
+ replaceFileDurably(eventsPath, normalizedEvents);
383
+ }
384
+ return facts;
385
+ }
131
386
  drop(ids) {
132
387
  const removed = new Set(ids);
133
388
  for (const id of removed)
@@ -138,6 +393,73 @@ export class CommandStore {
138
393
  }
139
394
  }
140
395
  }
396
+ function splitLines(bytes) {
397
+ const lines = [];
398
+ let start = 0;
399
+ for (let index = 0; index < bytes.length; index += 1) {
400
+ if (bytes[index] !== 0x0a)
401
+ continue;
402
+ lines.push(bytes.subarray(start, index));
403
+ start = index + 1;
404
+ }
405
+ lines.push(bytes.subarray(start));
406
+ return lines;
407
+ }
408
+ function isAsciiWhitespace(bytes) {
409
+ for (const byte of bytes) {
410
+ if (byte !== 0x09 && byte !== 0x0b && byte !== 0x0c && byte !== 0x0d && byte !== 0x20) {
411
+ return false;
412
+ }
413
+ }
414
+ return true;
415
+ }
416
+ function isBufferPrefix(whole, prefix) {
417
+ return prefix.length <= whole.length && whole.subarray(0, prefix.length).equals(prefix);
418
+ }
419
+ function isPostTerminalControlAudit(type) {
420
+ return type === "control.requested" || type === "control.applied" || type === "control.rejected";
421
+ }
422
+ function terminalResultMatches(result, expected) {
423
+ if (!result || typeof result !== "object" || Array.isArray(result))
424
+ return false;
425
+ const value = result;
426
+ return (value["lifecycle"] === expected.lifecycle &&
427
+ value["runId"] === expected.runId &&
428
+ value["taskId"] === expected.taskId &&
429
+ value["runDir"] === expected.runDir &&
430
+ hashJson(value["facts"]) === hashJson(expected.facts));
431
+ }
432
+ function replaceFileDurably(path, text) {
433
+ const parent = dirname(path);
434
+ const tmp = join(parent, `.claudexor-recovery-${randomUUID()}`);
435
+ let fd = null;
436
+ try {
437
+ fd = openSync(tmp, constants.O_WRONLY | constants.O_CREAT | constants.O_EXCL | constants.O_NOFOLLOW, 0o600);
438
+ writeFileSync(fd, text, "utf8");
439
+ fsyncSync(fd);
440
+ closeSync(fd);
441
+ fd = null;
442
+ renameSync(tmp, path);
443
+ const parentFd = openSync(parent, constants.O_RDONLY | constants.O_DIRECTORY | constants.O_NOFOLLOW);
444
+ try {
445
+ fsyncSync(parentFd);
446
+ }
447
+ finally {
448
+ closeSync(parentFd);
449
+ }
450
+ }
451
+ finally {
452
+ if (fd !== null)
453
+ closeSync(fd);
454
+ try {
455
+ unlinkSync(tmp);
456
+ }
457
+ catch (error) {
458
+ if (error.code !== "ENOENT")
459
+ throw error;
460
+ }
461
+ }
462
+ }
141
463
  export function commandProjection() {
142
464
  return {
143
465
  name: "commands",
@@ -1 +1 @@
1
- {"version":3,"file":"command-store.js","sourceRoot":"","sources":["../src/command-store.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAkB,MAAM,aAAa,CAAC;AAYzD,MAAM,QAAQ,GAAG,kBAAkB,CAAC;AACpC,MAAM,OAAO,GAAG,iBAAiB,CAAC;AAClC,MAAM,MAAM,GAAG,gBAAgB,CAAC;AAEhC,oFAAoF;AACpF,MAAM,OAAO,YAAY;IAKJ;IACA;IALF,WAAW,GAAG,IAAI,GAAG,EAAqB,CAAC;IAC3C,aAAa,GAAG,IAAI,GAAG,EAAiD,CAAC;IAE1F,YACmB,OAAuB,EACvB,MAAkB,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE;QADlC,YAAO,GAAP,OAAO,CAAgB;QACvB,QAAG,GAAH,GAAG,CAA+B;QAEnD,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,IAAI,CAAC,wBAAwB,EAAE,CAAC;IAClC,CAAC;IAED,MAAM,CAAC,KAON;QACC,WAAW,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAClC,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QACpF,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAChD,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,KAAK,CAAC,aAAa,KAAK,aAAa;gBAAE,MAAM,QAAQ,EAAE,CAAC;YAC5D,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC9C,IAAI,CAAC,MAAM;gBAAE,MAAM,IAAI,KAAK,CAAC,gDAAgD,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;YACzF,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;QAClC,CAAC;QACD,MAAM,MAAM,GAAc;YACxB,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,KAAK,EAAE,QAAQ;YACf,MAAM,EAAE,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC;YACrC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,MAAM,CAAkB,QAAQ,EAAE;YAC7C,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC;YACzB,SAAS;YACT,aAAa;SACd,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QACxC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,aAAa,EAAE,CAAC,CAAC;QACpE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IACnC,CAAC;IAED,IAAI,CAAC,KAKJ;QACC,WAAW,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAClC,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QACpF,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAChD,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QACxB,IAAI,KAAK,CAAC,aAAa,KAAK,aAAa;YAAE,MAAM,QAAQ,EAAE,CAAC;QAC5D,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC;IAChD,CAAC;IAED,GAAG,CAAC,EAAU;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClC,CAAC;IAED,OAAO;QACL,OAAO,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;IACxC,CAAC;IAED,MAAM,CAAC,EAAU,EAAE,KAAyB;QAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACzC,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;QACpD,MAAM,IAAI,GAAG,EAAE,GAAG,OAAO,EAAE,GAAG,eAAe,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC;QACvE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAgB,OAAO,EAAE,EAAE,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACzE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,GAAsB;QAC1B,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAC7B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;QAC/C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACjB,CAAC;IAED,kBAAkB;QAChB,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;YAAE,cAAc,CAAC,MAAM,CAAC,CAAC;QACvE,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,CAAC;YAChD,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAChG,CAAC;IACH,CAAC;IAEO,MAAM;QACZ,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;YAC3C,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC5B,MAAM,OAAO,GAAG,KAAK,CAAC,OAA0B,CAAC;gBACjD,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBAC/B,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,aAAa;oBAC9C,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;gBAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;gBACxD,IACE,KAAK;oBACL,CAAC,KAAK,CAAC,EAAE,KAAK,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,KAAK,CAAC,aAAa,KAAK,OAAO,CAAC,aAAa,CAAC,EACjF,CAAC;oBACD,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;gBAC7D,CAAC;gBACD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;gBACzE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE;oBACxC,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE;oBACrB,aAAa,EAAE,OAAO,CAAC,aAAa;iBACrC,CAAC,CAAC;YACL,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBAClC,MAAM,MAAM,GAAI,KAAK,CAAC,OAAyB,CAAC,MAAM,CAAC;gBACvD,cAAc,CAAC,MAAM,CAAC,CAAC;gBACvB,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;oBAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;gBAC5F,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC;YAC3D,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBACjC,MAAM,GAAG,GAAI,KAAK,CAAC,OAA6B,CAAC,GAAG,CAAC;gBACrD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,EAAE,KAAK,QAAQ,CAAC,EAAE,CAAC;oBACpE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;gBAClD,CAAC;gBACD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACjB,CAAC;QACH,CAAC;IACH,CAAC;IAEO,wBAAwB;QAC9B,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC;YAC/C,IAAI,MAAM,CAAC,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS;gBAAE,SAAS;YACtE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE;gBACrB,uEAAuE;gBACvE,kEAAkE;gBAClE,KAAK,EAAE,aAAa;gBACpB,KAAK,EAAE,iEAAiE;gBACxE,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;aACrC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAEO,IAAI,CAAC,GAAsB;QACjC,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QAC7B,KAAK,MAAM,EAAE,IAAI,OAAO;YAAE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACtD,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACjD,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBAAE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;CACF;AAED,MAAM,UAAU,iBAAiB;IAC/B,OAAO;QACL,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE,CAAC,OAAuB,EAAE,EAAE,CAAC,IAAI,YAAY,CAAC,OAAO,CAAC;QAC9D,QAAQ,EAAE,CAAC,KAAmB,EAAE,EAAE,CAAC,KAAK,CAAC,kBAAkB,EAAE;KAC9D,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,MAAiB;IAClC,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC;AACjC,CAAC;AAED,SAAS,cAAc,CAAC,MAAiB;IACvC,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;QAC7E,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC5C,CAAC;IACD,iEAAiE;IACjE,MAAM,MAAM,GAAsB,UAAU,CAAC;IAC7C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;AACjG,CAAC;AAED,SAAS,WAAW,CAAC,GAAW;IAC9B,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;QAC7B,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,+CAA+C,CAAC,EAAE;YAC9E,IAAI,EAAE,yBAAyB;YAC/B,MAAM,EAAE,GAAG;SACZ,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,SAAS,OAAO,CACd,SAAiB,EACjB,KAMC;IAED,OAAO;QACL,aAAa,EAAE,QAAQ,CAAC,KAAK,CAAC,iBAAiB,IAAI,KAAK,CAAC,MAAM,CAAC;QAChE,SAAS,EAAE,QAAQ,CAAC;YAClB,MAAM,EAAE,KAAK,CAAC,QAAQ;YACtB,SAAS;YACT,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,YAAY;YAC1C,GAAG,EAAE,KAAK,CAAC,cAAc;SAC1B,CAAC;KACH,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ;IACf,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,2DAA2D,CAAC,EAAE;QAC3F,IAAI,EAAE,sBAAsB;QAC5B,MAAM,EAAE,GAAG;KACZ,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"command-store.js","sourceRoot":"","sources":["../src/command-store.ts"],"names":[],"mappings":"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"}