@claudexor/daemon 4.7.0 → 4.8.2

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 (169) hide show
  1. package/dist/client.d.ts +203 -1
  2. package/dist/client.d.ts.map +1 -1
  3. package/dist/client.js +14 -0
  4. package/dist/client.js.map +1 -1
  5. package/dist/command-authority.d.ts +2 -0
  6. package/dist/command-authority.d.ts.map +1 -1
  7. package/dist/command-authority.js.map +1 -1
  8. package/dist/command-rpc.d.ts +1 -1
  9. package/dist/command-rpc.d.ts.map +1 -1
  10. package/dist/command-rpc.js +5 -2
  11. package/dist/command-rpc.js.map +1 -1
  12. package/dist/daemon-health.d.ts +30 -0
  13. package/dist/daemon-health.d.ts.map +1 -1
  14. package/dist/deferred-message-owner.d.ts +24 -0
  15. package/dist/deferred-message-owner.d.ts.map +1 -0
  16. package/dist/deferred-message-owner.js +12 -0
  17. package/dist/deferred-message-owner.js.map +1 -0
  18. package/dist/deferred-messages.d.ts +182 -0
  19. package/dist/deferred-messages.d.ts.map +1 -0
  20. package/dist/deferred-messages.js +285 -0
  21. package/dist/deferred-messages.js.map +1 -0
  22. package/dist/enqueue-command.d.ts +19 -0
  23. package/dist/enqueue-command.d.ts.map +1 -0
  24. package/dist/enqueue-command.js +37 -0
  25. package/dist/enqueue-command.js.map +1 -0
  26. package/dist/exact-retry-defaults.d.ts +7 -0
  27. package/dist/exact-retry-defaults.d.ts.map +1 -0
  28. package/dist/exact-retry-defaults.js +32 -0
  29. package/dist/exact-retry-defaults.js.map +1 -0
  30. package/dist/index.d.ts +5 -0
  31. package/dist/index.d.ts.map +1 -1
  32. package/dist/index.js +3 -0
  33. package/dist/index.js.map +1 -1
  34. package/dist/interactions.d.ts +7 -1
  35. package/dist/interactions.d.ts.map +1 -1
  36. package/dist/interactions.js +40 -0
  37. package/dist/interactions.js.map +1 -1
  38. package/dist/quota-registry-support.d.ts +2 -2
  39. package/dist/quota-registry.d.ts +5 -5
  40. package/dist/run-observation.d.ts +7 -0
  41. package/dist/run-observation.d.ts.map +1 -0
  42. package/dist/run-observation.js +111 -0
  43. package/dist/run-observation.js.map +1 -0
  44. package/dist/server.d.ts +6 -1
  45. package/dist/server.d.ts.map +1 -1
  46. package/dist/server.js +56 -41
  47. package/dist/server.js.map +1 -1
  48. package/dist/store/blob-files.d.ts +2 -2
  49. package/dist/store/blob-files.d.ts.map +1 -1
  50. package/dist/store/blob-files.js +1 -0
  51. package/dist/store/blob-files.js.map +1 -1
  52. package/dist/store/command-prune.d.ts.map +1 -1
  53. package/dist/store/command-prune.js +28 -7
  54. package/dist/store/command-prune.js.map +1 -1
  55. package/dist/store/command-queries.d.ts +6 -2
  56. package/dist/store/command-queries.d.ts.map +1 -1
  57. package/dist/store/command-queries.js +64 -1
  58. package/dist/store/command-queries.js.map +1 -1
  59. package/dist/store/command-rows.d.ts +1 -0
  60. package/dist/store/command-rows.d.ts.map +1 -1
  61. package/dist/store/command-rows.js +5 -2
  62. package/dist/store/command-rows.js.map +1 -1
  63. package/dist/store/commands.d.ts +22 -0
  64. package/dist/store/commands.d.ts.map +1 -1
  65. package/dist/store/commands.js +26 -13
  66. package/dist/store/commands.js.map +1 -1
  67. package/dist/store/deferred-message-rows.d.ts +23 -0
  68. package/dist/store/deferred-message-rows.d.ts.map +1 -0
  69. package/dist/store/deferred-message-rows.js +59 -0
  70. package/dist/store/deferred-message-rows.js.map +1 -0
  71. package/dist/store/deferred-messages.d.ts +58 -0
  72. package/dist/store/deferred-messages.d.ts.map +1 -0
  73. package/dist/store/deferred-messages.js +439 -0
  74. package/dist/store/deferred-messages.js.map +1 -0
  75. package/dist/store/deferred-retention.d.ts +6 -0
  76. package/dist/store/deferred-retention.d.ts.map +1 -0
  77. package/dist/store/deferred-retention.js +30 -0
  78. package/dist/store/deferred-retention.js.map +1 -0
  79. package/dist/store/generations.d.ts.map +1 -1
  80. package/dist/store/generations.js +7 -0
  81. package/dist/store/generations.js.map +1 -1
  82. package/dist/store/idempotency.d.ts +2 -2
  83. package/dist/store/idempotency.d.ts.map +1 -1
  84. package/dist/store/idempotency.js +4 -2
  85. package/dist/store/idempotency.js.map +1 -1
  86. package/dist/store/importer.js +3 -1
  87. package/dist/store/importer.js.map +1 -1
  88. package/dist/store/interactions.d.ts +2 -1
  89. package/dist/store/interactions.d.ts.map +1 -1
  90. package/dist/store/interactions.js +23 -2
  91. package/dist/store/interactions.js.map +1 -1
  92. package/dist/store/mutation.d.ts +5 -0
  93. package/dist/store/mutation.d.ts.map +1 -1
  94. package/dist/store/mutation.js +13 -0
  95. package/dist/store/mutation.js.map +1 -1
  96. package/dist/store/observation-notices.d.ts +14 -0
  97. package/dist/store/observation-notices.d.ts.map +1 -0
  98. package/dist/store/observation-notices.js +25 -0
  99. package/dist/store/observation-notices.js.map +1 -0
  100. package/dist/store/publish-blob.d.ts +4 -0
  101. package/dist/store/publish-blob.d.ts.map +1 -1
  102. package/dist/store/publish-blob.js +33 -10
  103. package/dist/store/publish-blob.js.map +1 -1
  104. package/dist/store/resource-rows.d.ts +6 -0
  105. package/dist/store/resource-rows.d.ts.map +1 -1
  106. package/dist/store/resource-rows.js.map +1 -1
  107. package/dist/store/resources.d.ts +22 -0
  108. package/dist/store/resources.d.ts.map +1 -1
  109. package/dist/store/resources.js +6 -0
  110. package/dist/store/resources.js.map +1 -1
  111. package/dist/store/retention-changes.d.ts +1 -0
  112. package/dist/store/retention-changes.d.ts.map +1 -1
  113. package/dist/store/retention-changes.js +5 -2
  114. package/dist/store/retention-changes.js.map +1 -1
  115. package/dist/store/retention-generations.d.ts +5 -0
  116. package/dist/store/retention-generations.d.ts.map +1 -1
  117. package/dist/store/retention-generations.js +13 -2
  118. package/dist/store/retention-generations.js.map +1 -1
  119. package/dist/store/retention-pages.d.ts +1 -1
  120. package/dist/store/retention-pages.d.ts.map +1 -1
  121. package/dist/store/retention-pages.js.map +1 -1
  122. package/dist/store/retention-references.d.ts +2 -1
  123. package/dist/store/retention-references.d.ts.map +1 -1
  124. package/dist/store/retention-references.js +5 -0
  125. package/dist/store/retention-references.js.map +1 -1
  126. package/dist/store/retention.d.ts.map +1 -1
  127. package/dist/store/retention.js +5 -0
  128. package/dist/store/retention.js.map +1 -1
  129. package/dist/store/schema.d.ts +6 -2
  130. package/dist/store/schema.d.ts.map +1 -1
  131. package/dist/store/schema.js +59 -5
  132. package/dist/store/schema.js.map +1 -1
  133. package/dist/store/sql-command-router.d.ts +4 -0
  134. package/dist/store/sql-command-router.d.ts.map +1 -1
  135. package/dist/store/sql-command-router.js +18 -0
  136. package/dist/store/sql-command-router.js.map +1 -1
  137. package/dist/store/sql-daemon-services.d.ts.map +1 -1
  138. package/dist/store/sql-daemon-services.js +14 -1
  139. package/dist/store/sql-daemon-services.js.map +1 -1
  140. package/dist/store/sql-validation.d.ts.map +1 -1
  141. package/dist/store/sql-validation.js +8 -0
  142. package/dist/store/sql-validation.js.map +1 -1
  143. package/dist/store/store.d.ts +3 -1
  144. package/dist/store/store.d.ts.map +1 -1
  145. package/dist/store/store.js +2 -0
  146. package/dist/store/store.js.map +1 -1
  147. package/dist/store/thread-history-read.d.ts +81 -0
  148. package/dist/store/thread-history-read.d.ts.map +1 -0
  149. package/dist/store/thread-history-read.js +215 -0
  150. package/dist/store/thread-history-read.js.map +1 -0
  151. package/dist/store/thread-prompt-read.d.ts +7 -0
  152. package/dist/store/thread-prompt-read.d.ts.map +1 -0
  153. package/dist/store/thread-prompt-read.js +62 -0
  154. package/dist/store/thread-prompt-read.js.map +1 -0
  155. package/dist/store/upload-binding-retention.d.ts +3 -3
  156. package/dist/store/upload-binding-retention.d.ts.map +1 -1
  157. package/dist/store/upload-binding-retention.js +2 -1
  158. package/dist/store/upload-binding-retention.js.map +1 -1
  159. package/dist/store/upload-imports.d.ts +21 -0
  160. package/dist/store/upload-imports.d.ts.map +1 -0
  161. package/dist/store/upload-imports.js +96 -0
  162. package/dist/store/upload-imports.js.map +1 -0
  163. package/dist/store/uploads.d.ts +7 -2
  164. package/dist/store/uploads.d.ts.map +1 -1
  165. package/dist/store/uploads.js +44 -10
  166. package/dist/store/uploads.js.map +1 -1
  167. package/dist/store-contracts.d.ts +14 -1
  168. package/dist/store-contracts.d.ts.map +1 -1
  169. package/package.json +5 -5
@@ -0,0 +1,58 @@
1
+ import { CapturedRunStart, DeferredMessageMutation, DeferredMessageDetail, DeferredMessageProjection, DeferredMessageHold, type DeferredMessageReceipt, type ResourceAttachmentRef } from "@claudexor/schema";
2
+ import type { JobRecord } from "../job-record.js";
3
+ import { type DeferredMessageOwner } from "../deferred-message-owner.js";
4
+ import type { BlobFiles } from "./blob-files.js";
5
+ import type { SqlCommandStore } from "./commands.js";
6
+ import type { PartitionGeneration } from "./partitions.js";
7
+ import type { EngineStore } from "./store.js";
8
+ export declare function deferredConflict(code: string, message: string, context?: object): Error;
9
+ /** Minimal partition-scoped owner. It owns no timer, runner or retry authority.
10
+ * Every mutable decision linearizes on the same SQL writer as commands. */
11
+ export declare class SqlDeferredMessages implements DeferredMessageOwner {
12
+ private readonly store;
13
+ private readonly blobs;
14
+ readonly generation: Pick<PartitionGeneration, "pid" | "name" | "epoch">;
15
+ private readonly commands;
16
+ private readonly validateRefs;
17
+ private readonly assertCurrentRoute;
18
+ private readonly events;
19
+ constructor(store: EngineStore, blobs: BlobFiles, generation: Pick<PartitionGeneration, "pid" | "name" | "epoch">, commands: SqlCommandStore, validateRefs?: (refs: ResourceAttachmentRef[]) => void, assertCurrentRoute?: (request: CapturedRunStart) => void);
20
+ get(id: string): DeferredMessageDetail | null;
21
+ reservation(predecessor: string): DeferredMessageProjection | null;
22
+ latest(predecessor: string): DeferredMessageProjection | null;
23
+ outcomeHold(id: string): DeferredMessageHold | null;
24
+ assertCreatable(predecessor: string): void;
25
+ /** Key lookup precedes current state, CAS, resource admission and captures.
26
+ * The binding stores only the applied revision; current handles are addressed. */
27
+ replay(input: DeferredMessageMutation, key: string): DeferredMessageReceipt | null;
28
+ mutate(raw: DeferredMessageMutation, key: string, capturedStart?: CapturedRunStart): DeferredMessageReceipt;
29
+ /** A one-shot ordinary command request for async preparation. */
30
+ request(id: string): CapturedRunStart;
31
+ /** Async preparation finishes before this call. Rechecks and acceptance plus
32
+ * freeze are ONE synchronous mutation; publish the returned job only after it.
33
+ * A post-COMMIT notification error is deliberately allowed to escape: recovery
34
+ * reads this same dispatched handle instead of accepting another command. */
35
+ promote(id: string, expectedRevision: number, preparedStart: CapturedRunStart, fence: () => DeferredMessageHold | null, admit: (request: CapturedRunStart, draftId: string) => void): {
36
+ draft: DeferredMessageProjection;
37
+ record: JobRecord | null;
38
+ reused: boolean;
39
+ };
40
+ hold(id: string, reason: DeferredMessageHold): void;
41
+ recoverAfterStartup(): void;
42
+ private terminalHold;
43
+ /** Compact job/run alias resolution. Slot reads stop here; only callers that
44
+ * use the predecessor's params, state or result hydrate the command. */
45
+ private predecessorId;
46
+ private requirePredecessor;
47
+ private assertTarget;
48
+ private assertReservation;
49
+ private assertRevision;
50
+ private assertEditable;
51
+ private dispatched;
52
+ private row;
53
+ private requireRow;
54
+ private project;
55
+ private digests;
56
+ private write;
57
+ }
58
+ //# sourceMappingURL=deferred-messages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deferred-messages.d.ts","sourceRoot":"","sources":["../../src/store/deferred-messages.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,439 @@
1
+ import { CapturedRunStart, DeferredMessageMutation, DeferredMessageHold, continuationRefusal, continuationRefusalError, deferredMessageHold, isTerminalLifecycle, } from "@claudexor/schema";
2
+ import { assertNoInlineSecretValues, hashJson, newId, safeProblemContext, safeProblemMessage, safeProblemRequiredActions, } from "@claudexor/util";
3
+ import { validateCommandKey } from "../command-store.js";
4
+ import { assertDeferredOperator } from "../deferred-message-owner.js";
5
+ import { recoveredTerminalFacts } from "../terminal-authority.js";
6
+ import { SqlEventLedger, collectReleasedBodies } from "./event-store.js";
7
+ import { requireServedGeneration } from "./generations.js";
8
+ import { bindIdempotencyInTx, lookupIdempotency } from "./idempotency.js";
9
+ import { runMutation } from "./mutation.js";
10
+ import { storedTerminal } from "./run-events.js";
11
+ import { deferredMessageDetail, deferredMessageProjection, } from "./deferred-message-rows.js";
12
+ export function deferredConflict(code, message, context = {}) {
13
+ return Object.assign(new Error(message), { code, status: 409, retryable: false, context });
14
+ }
15
+ /** Minimal partition-scoped owner. It owns no timer, runner or retry authority.
16
+ * Every mutable decision linearizes on the same SQL writer as commands. */
17
+ export class SqlDeferredMessages {
18
+ store;
19
+ blobs;
20
+ generation;
21
+ commands;
22
+ validateRefs;
23
+ assertCurrentRoute;
24
+ events;
25
+ constructor(store, blobs, generation, commands, validateRefs = (refs) => {
26
+ if (refs.length)
27
+ throw new Error("ordinary resource admission is unavailable");
28
+ }, assertCurrentRoute = (request) => {
29
+ if (request.scope.kind === "project")
30
+ throw deferredConflict("project_routing_unavailable", "canonical project routing is unavailable");
31
+ }) {
32
+ this.store = store;
33
+ this.blobs = blobs;
34
+ this.generation = generation;
35
+ this.commands = commands;
36
+ this.validateRefs = validateRefs;
37
+ this.assertCurrentRoute = assertCurrentRoute;
38
+ this.events = new SqlEventLedger(store, blobs, generation);
39
+ }
40
+ get(id) {
41
+ const row = this.row(id);
42
+ if (!row)
43
+ return null;
44
+ return deferredMessageDetail(this.store, this.blobs, row);
45
+ }
46
+ reservation(predecessor) {
47
+ const id = this.predecessorId(predecessor);
48
+ if (!id)
49
+ return null;
50
+ const row = this.store
51
+ .prepare(`SELECT * FROM deferred_message WHERE pid=?
52
+ AND predecessor_job_id=? AND state IN ('waiting','held')`)
53
+ .get(this.generation.pid, id);
54
+ return row ? this.project(row) : null;
55
+ }
56
+ latest(predecessor) {
57
+ const id = this.predecessorId(predecessor);
58
+ if (!id)
59
+ return null;
60
+ const row = this.store
61
+ .prepare("SELECT * FROM deferred_message WHERE pid=? AND predecessor_job_id=? ORDER BY rowid DESC LIMIT 1")
62
+ .get(this.generation.pid, id);
63
+ return row ? this.project(row) : null;
64
+ }
65
+ outcomeHold(id) {
66
+ return this.terminalHold(this.requirePredecessor(this.requireRow(id).predecessor_job_id));
67
+ }
68
+ assertCreatable(predecessor) {
69
+ const record = this.requirePredecessor(predecessor);
70
+ assertDeferredOperator(false, record.params);
71
+ this.assertTarget(record);
72
+ }
73
+ /** Key lookup precedes current state, CAS, resource admission and captures.
74
+ * The binding stores only the applied revision; current handles are addressed. */
75
+ replay(input, key) {
76
+ const digests = this.digests(input, key);
77
+ const binding = lookupIdempotency(this.store, { owner: "deferred_message", pid: this.generation.pid, keyDigest: digests.keyDigest }, digests.requestDigest);
78
+ if (!binding)
79
+ return null;
80
+ const row = this.row(binding.targetId);
81
+ if (!row)
82
+ throw new Error("deferred message idempotency binding is dangling");
83
+ const applied = binding.result;
84
+ return { appliedRevision: applied.revision, draft: this.project(row) };
85
+ }
86
+ mutate(raw, key, capturedStart) {
87
+ const input = DeferredMessageMutation.parse(raw);
88
+ const replay = this.replay(input, key);
89
+ if (replay)
90
+ return replay;
91
+ assertNoInlineSecretValues(input, "$", "deferred message");
92
+ const previous = input.action === "create" ? null : this.requireRow(input.draftId);
93
+ const predecessor = input.action === "create"
94
+ ? this.requirePredecessor(input.predecessorId)
95
+ : this.requirePredecessor(previous.predecessor_job_id);
96
+ if (input.action !== "clear")
97
+ assertDeferredOperator(false, predecessor.params);
98
+ if (input.action === "create")
99
+ this.assertTarget(predecessor);
100
+ else
101
+ this.assertEditable(previous, input.expectedRevision);
102
+ if (input.action !== "clear")
103
+ this.validateRefs(input.attachments);
104
+ const captured = input.action === "clear"
105
+ ? null
106
+ : input.action === "create"
107
+ ? CapturedRunStart.parse(capturedStart)
108
+ : this.get(previous.id).capturedStart;
109
+ if (input.action === "create" && !capturedStart)
110
+ throw new Error("creation requires canonical captured controls");
111
+ if (input.action === "create") {
112
+ assertNoInlineSecretValues(captured, "$", "captured deferred controls");
113
+ for (const field of [
114
+ "threadId",
115
+ "turnId",
116
+ "planRunId",
117
+ "planRef",
118
+ "retryOf",
119
+ "parentRunId",
120
+ "delegatedFromRunId",
121
+ ])
122
+ if (captured?.[field] !== undefined)
123
+ throw deferredConflict("draft_controls_invalid", "captured controls cannot introduce thread, plan, retry or delegation authority");
124
+ const refusal = continuationRefusal({ ...captured, continueFrom: predecessor.id }, [
125
+ { ...predecessor, state: "succeeded", runId: predecessor.runId ?? predecessor.id },
126
+ ]);
127
+ if (refusal)
128
+ throw continuationRefusalError(refusal);
129
+ }
130
+ const id = previous?.id ?? newId("draft");
131
+ const revision = (previous?.revision ?? 0) + 1;
132
+ if (!Number.isSafeInteger(revision))
133
+ throw deferredConflict("draft_revision_exhausted", "draft revision is exhausted");
134
+ const body = input.action === "clear"
135
+ ? null
136
+ : this.blobs.prepareBody(Buffer.from(JSON.stringify({
137
+ prompt: input.prompt,
138
+ attachments: input.attachments,
139
+ capturedStart: CapturedRunStart.parse({
140
+ ...captured,
141
+ prompt: "",
142
+ attachments: [],
143
+ }),
144
+ })));
145
+ const next = {
146
+ id,
147
+ pid: this.generation.pid,
148
+ predecessor_job_id: predecessor.id,
149
+ revision,
150
+ state: input.action === "clear" ? "cleared" : (previous?.state ?? "waiting"),
151
+ body_sha: body?.sha256 ?? null,
152
+ hold: previous?.hold ?? null,
153
+ successor_job_id: null,
154
+ dispatched_revision: null,
155
+ created_at: previous?.created_at ?? this.store.now().toISOString(),
156
+ };
157
+ const event = this.events.prepare("deferred_message.changed", { draftId: id, revision });
158
+ const digests = this.digests(input, key);
159
+ runMutation(this.store, (tx) => {
160
+ requireServedGeneration(tx, this.generation.pid);
161
+ // No await occurred since lookup/preparation; keep the recheck explicit.
162
+ if (input.action === "create")
163
+ this.assertTarget(this.requirePredecessor(predecessor.id));
164
+ else
165
+ this.assertEditable(this.requireRow(id), input.expectedRevision);
166
+ if (body)
167
+ this.blobs.insertRow(body);
168
+ this.write(tx, next);
169
+ bindIdempotencyInTx(tx, {
170
+ owner: "deferred_message",
171
+ pid: this.generation.pid,
172
+ ...digests,
173
+ operation: "deferred_message.mutate",
174
+ targetId: id,
175
+ createdAt: next.created_at,
176
+ result: { revision },
177
+ });
178
+ this.events.appendInTx(tx, event);
179
+ tx.changes.blobChanged(previous?.body_sha, body?.sha256);
180
+ });
181
+ if (previous?.body_sha)
182
+ collectReleasedBodies(this.store, this.blobs, [previous.body_sha]);
183
+ return { appliedRevision: revision, draft: this.project(next) };
184
+ }
185
+ /** A one-shot ordinary command request for async preparation. */
186
+ request(id) {
187
+ const draft = this.get(id);
188
+ if (!draft?.capturedStart)
189
+ throw deferredConflict("draft_cleared", "draft was cleared");
190
+ const predecessor = this.requirePredecessor(draft.predecessorJobId);
191
+ return CapturedRunStart.parse({
192
+ ...draft.capturedStart,
193
+ prompt: draft.prompt,
194
+ attachments: draft.attachments,
195
+ continueFrom: predecessor.runId ?? predecessor.id,
196
+ });
197
+ }
198
+ /** Async preparation finishes before this call. Rechecks and acceptance plus
199
+ * freeze are ONE synchronous mutation; publish the returned job only after it.
200
+ * A post-COMMIT notification error is deliberately allowed to escape: recovery
201
+ * reads this same dispatched handle instead of accepting another command. */
202
+ promote(id, expectedRevision, preparedStart, fence, admit) {
203
+ const row = this.requireRow(id);
204
+ if (row.state === "dispatched")
205
+ return this.dispatched(row);
206
+ this.assertRevision(row, expectedRevision);
207
+ if (row.state !== "waiting")
208
+ return { draft: this.project(row), record: null, reused: false };
209
+ const request = this.request(id);
210
+ // Preparation can validate but never widen or silently reroute the capsule.
211
+ if (hashJson(request) !== hashJson(CapturedRunStart.parse(preparedStart)))
212
+ throw deferredConflict("draft_controls_changed", "prepared execution controls differ from the captured draft");
213
+ const acceptance = this.commands.prepareAcceptance({
214
+ id: newId("job"),
215
+ params: request,
216
+ clientId: "deferred-message",
217
+ operation: "run.create",
218
+ idempotencyKey: `deferred:${id}`,
219
+ idempotencyParams: { draftId: id, revision: expectedRevision },
220
+ });
221
+ const event = this.events.prepare("deferred_message.changed", {
222
+ draftId: id,
223
+ revision: expectedRevision,
224
+ });
225
+ return runMutation(this.store, (tx) => {
226
+ const current = this.requireRow(id);
227
+ if (current.state === "dispatched")
228
+ return this.dispatched(current);
229
+ // Accepted-command replay is authoritative before mutable/CAS admission.
230
+ const replay = this.commands.find(acceptance.input);
231
+ if (replay)
232
+ throw new Error("deferred acceptance exists without its atomic dispatched receipt");
233
+ requireServedGeneration(tx, this.generation.pid);
234
+ this.assertRevision(current, expectedRevision);
235
+ if (current.state !== "waiting")
236
+ return { draft: this.project(current), record: null, reused: false };
237
+ const predecessor = this.requirePredecessor(current.predecessor_job_id);
238
+ const stopped = fence();
239
+ if (!stopped && !isTerminalLifecycle(predecessor.state))
240
+ return { draft: this.project(current), record: null, reused: false };
241
+ let hold = stopped ?? this.terminalHold(predecessor);
242
+ if (!hold) {
243
+ try {
244
+ assertDeferredOperator(false, predecessor.params);
245
+ this.assertReservation(current);
246
+ this.validateRefs(request.attachments ?? []);
247
+ // This synchronous canonical read runs on the same SQL connection
248
+ // and transaction as acceptance/freeze; it starts no nested mutation.
249
+ this.assertCurrentRoute(request);
250
+ admit(request, id);
251
+ }
252
+ catch (error) {
253
+ hold = admissionHold(error);
254
+ }
255
+ }
256
+ if (hold) {
257
+ const held = {
258
+ ...current,
259
+ state: "held",
260
+ hold: Buffer.from(JSON.stringify(hold)),
261
+ };
262
+ this.write(tx, held);
263
+ this.events.appendInTx(tx, event);
264
+ return { draft: this.project(held), record: null, reused: false };
265
+ }
266
+ const accepted = this.commands.acceptInTx(tx, acceptance);
267
+ const dispatched = {
268
+ ...current,
269
+ state: "dispatched",
270
+ successor_job_id: accepted.record.id,
271
+ dispatched_revision: current.revision,
272
+ };
273
+ this.write(tx, dispatched);
274
+ this.events.appendInTx(tx, event);
275
+ return { draft: this.project(dispatched), record: accepted.record, reused: accepted.reused };
276
+ });
277
+ }
278
+ hold(id, reason) {
279
+ const row = this.requireRow(id);
280
+ if (row.state !== "waiting")
281
+ return;
282
+ const event = this.events.prepare("deferred_message.changed", {
283
+ draftId: id,
284
+ revision: row.revision,
285
+ });
286
+ runMutation(this.store, (tx) => {
287
+ const current = this.requireRow(id);
288
+ if (current.state !== "waiting")
289
+ return;
290
+ this.write(tx, {
291
+ ...current,
292
+ state: "held",
293
+ hold: Buffer.from(JSON.stringify(DeferredMessageHold.parse(reason))),
294
+ });
295
+ this.events.appendInTx(tx, event);
296
+ });
297
+ }
298
+ recoverAfterStartup() {
299
+ const rows = this.store
300
+ .prepare("SELECT id FROM deferred_message WHERE pid=? AND state IN ('waiting','held') AND state='waiting'")
301
+ .all(this.generation.pid);
302
+ for (const row of rows)
303
+ this.hold(row.id, { code: "restart_requires_controller" });
304
+ }
305
+ terminalHold(record) {
306
+ let facts = null;
307
+ try {
308
+ const terminal = record.runId
309
+ ? storedTerminal(this.store, record.runId, this.generation.pid)
310
+ : null;
311
+ if (terminal)
312
+ facts = recoveredTerminalFacts(record, terminal).facts;
313
+ }
314
+ catch {
315
+ /* missing/contradictory authority holds; existing result stays addressed */
316
+ }
317
+ return deferredMessageHold(record.state, facts, { runId: record.runId, taskId: record.taskId });
318
+ }
319
+ /** Compact job/run alias resolution. Slot reads stop here; only callers that
320
+ * use the predecessor's params, state or result hydrate the command. */
321
+ predecessorId(alias) {
322
+ const row = this.store
323
+ .prepare("SELECT id FROM command WHERE pid=? AND (id=? OR run_id=?)")
324
+ .get(this.generation.pid, alias, alias);
325
+ return row?.id;
326
+ }
327
+ requirePredecessor(alias) {
328
+ const id = this.predecessorId(alias);
329
+ const record = id ? this.commands.get(id) : undefined;
330
+ if (!record)
331
+ throw Object.assign(new Error("no retained daemon-owned predecessor"), {
332
+ code: "predecessor_unknown",
333
+ status: 404,
334
+ retryable: false,
335
+ });
336
+ return record;
337
+ }
338
+ assertTarget(record) {
339
+ const params = record.params;
340
+ if (params?.threadId)
341
+ throw Object.assign(new Error("Use claudexor_thread_turn for a persistent thread"), {
342
+ code: "use_thread_turn",
343
+ status: 400,
344
+ retryable: false,
345
+ });
346
+ const kind = this.store
347
+ .prepare("SELECT kind FROM command WHERE id=? AND pid=?")
348
+ .get(record.id, this.generation.pid);
349
+ const mode = params?.mode ?? "agent";
350
+ if (kind.kind !== "product" || (mode !== "agent" && mode !== "ask"))
351
+ throw Object.assign(new Error("only one-shot Agent and Ask predecessors support a deferred message"), {
352
+ code: "continue_from_unsupported",
353
+ status: 400,
354
+ retryable: false,
355
+ });
356
+ const refusal = continuationRefusal({ ...params, continueFrom: record.id }, [
357
+ { ...record, state: "succeeded", runId: record.runId ?? record.id },
358
+ ]);
359
+ if (refusal)
360
+ throw continuationRefusalError(refusal);
361
+ if (this.reservation(record.id))
362
+ throw deferredConflict("continuation_reserved", "predecessor next message is reserved");
363
+ const successor = this.store
364
+ .prepare(`SELECT id FROM command WHERE pid=? AND continue_from IN (?,?)
365
+ AND (run_id IS NOT NULL OR state IN ('queued','running')) LIMIT 1`)
366
+ .get(this.generation.pid, record.id, record.runId ?? record.id);
367
+ if (successor)
368
+ throw deferredConflict("continuation_superseded", "predecessor already has a successor");
369
+ }
370
+ assertReservation(row) {
371
+ if (this.reservation(row.predecessor_job_id)?.draftId !== row.id)
372
+ throw deferredConflict("continuation_reserved", "the exact draft no longer owns the successor claim");
373
+ }
374
+ assertRevision(row, revision) {
375
+ if (row.revision !== revision)
376
+ throw deferredConflict("draft_revision_conflict", "draft revision changed", this.project(row));
377
+ }
378
+ assertEditable(row, revision) {
379
+ this.assertRevision(row, revision);
380
+ if (row.state !== "waiting" && row.state !== "held")
381
+ throw deferredConflict("draft_not_editable", `draft is ${row.state}`, this.project(row));
382
+ }
383
+ dispatched(row) {
384
+ const record = row.successor_job_id ? this.commands.get(row.successor_job_id) : undefined;
385
+ if (!record)
386
+ throw new Error("dispatched draft lost its retained successor");
387
+ return { draft: this.project(row), record, reused: true };
388
+ }
389
+ row(id) {
390
+ return this.store
391
+ .prepare("SELECT * FROM deferred_message WHERE id=? AND pid=?")
392
+ .get(id, this.generation.pid);
393
+ }
394
+ requireRow(id) {
395
+ const row = this.row(id);
396
+ if (!row)
397
+ throw Object.assign(new Error("no such deferred message"), {
398
+ code: "draft_unknown",
399
+ status: 404,
400
+ });
401
+ return row;
402
+ }
403
+ project(row) {
404
+ return deferredMessageProjection(this.store, row);
405
+ }
406
+ digests(input, key) {
407
+ validateCommandKey(key);
408
+ return {
409
+ keyDigest: hashJson({
410
+ partition: this.generation.name,
411
+ operation: "deferred_message.mutate",
412
+ key,
413
+ }),
414
+ requestDigest: hashJson(input),
415
+ };
416
+ }
417
+ write(tx, row) {
418
+ tx.prepare(`INSERT INTO deferred_message(id,pid,predecessor_job_id,revision,state,body_sha,hold,
419
+ successor_job_id,dispatched_revision,created_at) VALUES(?,?,?,?,?,?,?,?,?,?)
420
+ ON CONFLICT(id) DO UPDATE SET revision=excluded.revision,state=excluded.state,
421
+ body_sha=excluded.body_sha,hold=excluded.hold,successor_job_id=excluded.successor_job_id,
422
+ dispatched_revision=excluded.dispatched_revision`).run(row.id, row.pid, row.predecessor_job_id, row.revision, row.state, row.body_sha, row.hold, row.successor_job_id, row.dispatched_revision, row.created_at);
423
+ }
424
+ }
425
+ function admissionHold(error) {
426
+ // Preserve existing typed admission guidance, sanitized by the normal problem owner.
427
+ const e = error;
428
+ return {
429
+ code: "admission_refused",
430
+ problem: {
431
+ code: typeof e?.code === "string" ? e.code : null,
432
+ message: safeProblemMessage(error),
433
+ retryable: typeof e?.retryable === "boolean" ? e.retryable : false,
434
+ required_actions: safeProblemRequiredActions(e?.requiredActions),
435
+ context: safeProblemContext(e?.context),
436
+ },
437
+ };
438
+ }
439
+ //# sourceMappingURL=deferred-messages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deferred-messages.js","sourceRoot":"","sources":["../../src/store/deferred-messages.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { EngineStore } from "./store.js";
2
+ /** Pending/held drafts own their predecessor evidence. Dispatched receipts own
3
+ * both identities until command retention removes receipt and bindings together.
4
+ * Quarantined generations have evidence, never restored execution authority. */
5
+ export declare function deferredRetentionReferences(store: EngineStore, retained: (pid: number) => boolean, add: (id: string) => void, signal?: AbortSignal): Promise<(id: string) => void>;
6
+ //# sourceMappingURL=deferred-retention.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deferred-retention.d.ts","sourceRoot":"","sources":["../../src/store/deferred-retention.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAY9C;;gFAEgF;AAChF,wBAAsB,2BAA2B,CAC/C,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,EAClC,GAAG,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,EACzB,MAAM,CAAC,EAAE,WAAW,gBAeR,MAAM,WAKnB"}
@@ -0,0 +1,30 @@
1
+ import { retentionPages } from "./retention-pages.js";
2
+ const COLUMNS = "id,pid,predecessor_job_id,successor_job_id,state";
3
+ /** Pending/held drafts own their predecessor evidence. Dispatched receipts own
4
+ * both identities until command retention removes receipt and bindings together.
5
+ * Quarantined generations have evidence, never restored execution authority. */
6
+ export async function deferredRetentionReferences(store, retained, add, signal) {
7
+ const read = (row) => {
8
+ if (!retained(row.pid) || row.state === "cleared")
9
+ return;
10
+ for (const id of [row.predecessor_job_id, row.successor_job_id]) {
11
+ if (!id)
12
+ continue;
13
+ add(id);
14
+ const command = store
15
+ .prepare("SELECT run_id FROM command WHERE id=? AND pid=?")
16
+ .get(id, row.pid);
17
+ if (command?.run_id)
18
+ add(command.run_id);
19
+ }
20
+ };
21
+ for await (const rows of retentionPages(store, "deferred_message", COLUMNS, signal))
22
+ for (const row of rows)
23
+ read(row);
24
+ return (id) => {
25
+ const row = store.prepare(`SELECT ${COLUMNS} FROM deferred_message WHERE id=?`).get(id);
26
+ if (row)
27
+ read(row); // Releasing a dependency waits for the next inventory.
28
+ };
29
+ }
30
+ //# sourceMappingURL=deferred-retention.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deferred-retention.js","sourceRoot":"","sources":["../../src/store/deferred-retention.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAStD,MAAM,OAAO,GAAG,kDAAkD,CAAC;AAEnE;;gFAEgF;AAChF,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,KAAkB,EAClB,QAAkC,EAClC,GAAyB,EACzB,MAAoB;IAEpB,MAAM,IAAI,GAAG,CAAC,GAAQ,EAAE,EAAE;QACxB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS;YAAE,OAAO;QAC1D,KAAK,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,kBAAkB,EAAE,GAAG,CAAC,gBAAgB,CAAC,EAAE,CAAC;YAChE,IAAI,CAAC,EAAE;gBAAE,SAAS;YAClB,GAAG,CAAC,EAAE,CAAC,CAAC;YACR,MAAM,OAAO,GAAG,KAAK;iBAClB,OAAO,CAAC,iDAAiD,CAAC;iBAC1D,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAA0C,CAAC;YAC7D,IAAI,OAAO,EAAE,MAAM;gBAAE,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC,CAAC;IACF,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,cAAc,CAAM,KAAK,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,CAAC;QACtF,KAAK,MAAM,GAAG,IAAI,IAAI;YAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IACpC,OAAO,CAAC,EAAU,EAAE,EAAE;QACpB,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,OAAO,mCAAmC,CAAC,CAAC,GAAG,CAAC,EAAE,CACrE,CAAC;QAClB,IAAI,GAAG;YAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,uDAAuD;IAC7E,CAAC,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"generations.d.ts","sourceRoot":"","sources":["../../src/store/generations.ts"],"names":[],"mappings":"AACA,OAAO,EAA0C,KAAK,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEnG,OAAO,EAAmC,KAAK,eAAe,EAAE,MAAM,eAAe,CAAC;AACtF,OAAO,EAIL,KAAK,mBAAmB,EACzB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,KAAK,MAAM,GAAG,IAAI,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;AAE/C,4EAA4E;AAC5E,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI,CAIxE;AAED,6EAA6E;AAC7E,eAAO,MAAM,eAAe,waAO0B,CAAC;AAEvD,gFAAgF;AAChF,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAW7D;AAED,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,mBAAmB,CASrF;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,mBAAmB,EAAE,CAYpE;AAED,gFAAgF;AAChF,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAa/E;AAED,4EAA4E;AAC5E,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,eAAe,GAAG,IAAI,CAQ5D;AAED,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAU/F;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAK/E;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAI7E;AAED;+EAC+E;AAC/E,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,eAAe,EACpB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE;IACL,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB,GACA,mBAAmB,CAcrB;AAED;uEACuE;AACvE,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,WAAW,EAClB,KAAK,EAAE,SAAS,EAChB,KAAK,EAAE;IACL,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GACA;IAAE,UAAU,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAAC,OAAO,EAAE,kBAAkB,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,CA4B1F"}
1
+ {"version":3,"file":"generations.d.ts","sourceRoot":"","sources":["../../src/store/generations.ts"],"names":[],"mappings":"AACA,OAAO,EAA0C,KAAK,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEnG,OAAO,EAAmC,KAAK,eAAe,EAAE,MAAM,eAAe,CAAC;AACtF,OAAO,EAIL,KAAK,mBAAmB,EACzB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,KAAK,MAAM,GAAG,IAAI,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;AAE/C,4EAA4E;AAC5E,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI,CAIxE;AAED,6EAA6E;AAC7E,eAAO,MAAM,eAAe,waAO0B,CAAC;AAEvD,gFAAgF;AAChF,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAW7D;AAED,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,mBAAmB,CASrF;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,mBAAmB,EAAE,CAYpE;AAED,gFAAgF;AAChF,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAgB/E;AAED,4EAA4E;AAC5E,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,eAAe,GAAG,IAAI,CAQ5D;AAED,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAc/F;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAK/E;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAI7E;AAED;+EAC+E;AAC/E,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,eAAe,EACpB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE;IACL,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB,GACA,mBAAmB,CAcrB;AAED;uEACuE;AACvE,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,WAAW,EAClB,KAAK,EAAE,SAAS,EAChB,KAAK,EAAE;IACL,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GACA;IAAE,UAAU,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAAC,OAAO,EAAE,kBAAkB,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,CA4B1F"}
@@ -53,6 +53,9 @@ export function setGlobalGenerationInTx(sql, pid) {
53
53
  .run(String(pid));
54
54
  // Global registry replacement also hides all previously registered projects.
55
55
  sql.prepare("UPDATE command SET live = 0 WHERE live = 1 AND pid <> ?").run(pid);
56
+ sql
57
+ .prepare(`UPDATE deferred_message SET state='held',hold=? WHERE pid<>? AND state='waiting'`)
58
+ .run(Buffer.from(JSON.stringify({ code: "partition_retired" })), pid);
56
59
  reconcileLiveInTx(sql);
57
60
  }
58
61
  /** Import's final pass, after project current_pid bindings are complete. */
@@ -66,6 +69,10 @@ export function reconcileLiveInTx(sql) {
66
69
  export function setGenerationStatusInTx(sql, pid, status) {
67
70
  requireTransaction(sql);
68
71
  sql.prepare("UPDATE partition SET status = ? WHERE id = ?").run(status, pid);
72
+ if (status !== "ready")
73
+ sql
74
+ .prepare("UPDATE deferred_message SET state='held',hold=? WHERE pid=? AND state='waiting'")
75
+ .run(Buffer.from(JSON.stringify({ code: "partition_retired" })), pid);
69
76
  if (globalGeneration(sql)?.pid === pid) {
70
77
  reconcileLiveInTx(sql);
71
78
  }
@@ -1 +1 @@
1
- {"version":3,"file":"generations.js","sourceRoot":"","sources":["../../src/store/generations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generations.js","sourceRoot":"","sources":["../../src/store/generations.ts"],"names":[],"mappings":"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"}