@fabric-harness/sdk 1.13.0 → 2.0.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 (169) hide show
  1. package/dist/action.d.ts +69 -0
  2. package/dist/action.d.ts.map +1 -0
  3. package/dist/action.js +119 -0
  4. package/dist/action.js.map +1 -0
  5. package/dist/agent-definition.d.ts +6 -0
  6. package/dist/agent-definition.d.ts.map +1 -1
  7. package/dist/agent-definition.js.map +1 -1
  8. package/dist/agent.d.ts +2 -0
  9. package/dist/agent.d.ts.map +1 -1
  10. package/dist/agent.js +35 -1
  11. package/dist/agent.js.map +1 -1
  12. package/dist/attachment-store-contract.d.ts +34 -0
  13. package/dist/attachment-store-contract.d.ts.map +1 -0
  14. package/dist/attachment-store-contract.js +0 -0
  15. package/dist/attachment-store-contract.js.map +1 -0
  16. package/dist/attachment-store.d.ts +107 -0
  17. package/dist/attachment-store.d.ts.map +1 -0
  18. package/dist/attachment-store.js +164 -0
  19. package/dist/attachment-store.js.map +1 -0
  20. package/dist/channel.d.ts +84 -0
  21. package/dist/channel.d.ts.map +1 -0
  22. package/dist/channel.js +115 -0
  23. package/dist/channel.js.map +1 -0
  24. package/dist/context-budget.d.ts +16 -0
  25. package/dist/context-budget.d.ts.map +1 -1
  26. package/dist/context-budget.js +38 -3
  27. package/dist/context-budget.js.map +1 -1
  28. package/dist/conversation-projection.d.ts +52 -0
  29. package/dist/conversation-projection.d.ts.map +1 -0
  30. package/dist/conversation-projection.js +207 -0
  31. package/dist/conversation-projection.js.map +1 -0
  32. package/dist/conversation-stream-contract.d.ts +37 -0
  33. package/dist/conversation-stream-contract.d.ts.map +1 -0
  34. package/dist/conversation-stream-contract.js +453 -0
  35. package/dist/conversation-stream-contract.js.map +1 -0
  36. package/dist/conversation-stream.d.ts +141 -0
  37. package/dist/conversation-stream.d.ts.map +1 -0
  38. package/dist/conversation-stream.js +159 -0
  39. package/dist/conversation-stream.js.map +1 -0
  40. package/dist/cost-budget.d.ts +106 -1
  41. package/dist/cost-budget.d.ts.map +1 -1
  42. package/dist/cost-budget.js +48 -2
  43. package/dist/cost-budget.js.map +1 -1
  44. package/dist/delivered-message.d.ts +90 -0
  45. package/dist/delivered-message.d.ts.map +1 -0
  46. package/dist/delivered-message.js +154 -0
  47. package/dist/delivered-message.js.map +1 -0
  48. package/dist/dispatch.d.ts +108 -0
  49. package/dist/dispatch.d.ts.map +1 -0
  50. package/dist/dispatch.js +179 -0
  51. package/dist/dispatch.js.map +1 -0
  52. package/dist/error.d.ts +1 -1
  53. package/dist/error.d.ts.map +1 -1
  54. package/dist/error.js.map +1 -1
  55. package/dist/history.d.ts +49 -2
  56. package/dist/history.d.ts.map +1 -1
  57. package/dist/history.js +163 -0
  58. package/dist/history.js.map +1 -1
  59. package/dist/in-memory-submission-store.d.ts +53 -0
  60. package/dist/in-memory-submission-store.d.ts.map +1 -0
  61. package/dist/in-memory-submission-store.js +340 -0
  62. package/dist/in-memory-submission-store.js.map +1 -0
  63. package/dist/index.d.ts +51 -13
  64. package/dist/index.d.ts.map +1 -1
  65. package/dist/index.js +28 -7
  66. package/dist/index.js.map +1 -1
  67. package/dist/loop.d.ts +29 -3
  68. package/dist/loop.d.ts.map +1 -1
  69. package/dist/loop.js +167 -24
  70. package/dist/loop.js.map +1 -1
  71. package/dist/model.d.ts +37 -0
  72. package/dist/model.d.ts.map +1 -1
  73. package/dist/model.js +250 -79
  74. package/dist/model.js.map +1 -1
  75. package/dist/otel-observer.d.ts +44 -0
  76. package/dist/otel-observer.d.ts.map +1 -0
  77. package/dist/otel-observer.js +165 -0
  78. package/dist/otel-observer.js.map +1 -0
  79. package/dist/persistence.d.ts +70 -0
  80. package/dist/persistence.d.ts.map +1 -0
  81. package/dist/persistence.js +17 -0
  82. package/dist/persistence.js.map +1 -0
  83. package/dist/persistent-agent.d.ts +86 -0
  84. package/dist/persistent-agent.d.ts.map +1 -0
  85. package/dist/persistent-agent.js +75 -0
  86. package/dist/persistent-agent.js.map +1 -0
  87. package/dist/pi-loop-runtime.d.ts.map +1 -1
  88. package/dist/pi-loop-runtime.js +7 -1
  89. package/dist/pi-loop-runtime.js.map +1 -1
  90. package/dist/profile.d.ts +33 -0
  91. package/dist/profile.d.ts.map +1 -0
  92. package/dist/profile.js +10 -0
  93. package/dist/profile.js.map +1 -0
  94. package/dist/providers.d.ts +14 -0
  95. package/dist/providers.d.ts.map +1 -1
  96. package/dist/providers.js +18 -1
  97. package/dist/providers.js.map +1 -1
  98. package/dist/result.d.ts +12 -0
  99. package/dist/result.d.ts.map +1 -1
  100. package/dist/result.js +26 -0
  101. package/dist/result.js.map +1 -1
  102. package/dist/retrieval.d.ts +61 -0
  103. package/dist/retrieval.d.ts.map +1 -0
  104. package/dist/retrieval.js +26 -0
  105. package/dist/retrieval.js.map +1 -0
  106. package/dist/runtime-mode.d.ts +1 -1
  107. package/dist/runtime-mode.d.ts.map +1 -1
  108. package/dist/runtime-mode.js +2 -1
  109. package/dist/runtime-mode.js.map +1 -1
  110. package/dist/scope-key.d.ts +25 -0
  111. package/dist/scope-key.d.ts.map +1 -0
  112. package/dist/scope-key.js +34 -0
  113. package/dist/scope-key.js.map +1 -0
  114. package/dist/session.d.ts +47 -1
  115. package/dist/session.d.ts.map +1 -1
  116. package/dist/session.js +364 -35
  117. package/dist/session.js.map +1 -1
  118. package/dist/skills.d.ts +33 -0
  119. package/dist/skills.d.ts.map +1 -0
  120. package/dist/skills.js +65 -0
  121. package/dist/skills.js.map +1 -0
  122. package/dist/store.d.ts +36 -1
  123. package/dist/store.d.ts.map +1 -1
  124. package/dist/store.js +83 -0
  125. package/dist/store.js.map +1 -1
  126. package/dist/stream-chunks.d.ts +42 -0
  127. package/dist/stream-chunks.d.ts.map +1 -0
  128. package/dist/stream-chunks.js +138 -0
  129. package/dist/stream-chunks.js.map +1 -0
  130. package/dist/strict.d.ts +40 -11
  131. package/dist/strict.d.ts.map +1 -1
  132. package/dist/strict.js +22 -7
  133. package/dist/strict.js.map +1 -1
  134. package/dist/submission-context.d.ts +26 -0
  135. package/dist/submission-context.d.ts.map +1 -0
  136. package/dist/submission-context.js +20 -0
  137. package/dist/submission-context.js.map +1 -0
  138. package/dist/submission-runner.d.ts +150 -0
  139. package/dist/submission-runner.d.ts.map +1 -0
  140. package/dist/submission-runner.js +767 -0
  141. package/dist/submission-runner.js.map +1 -0
  142. package/dist/submission-state.d.ts +50 -0
  143. package/dist/submission-state.d.ts.map +1 -0
  144. package/dist/submission-state.js +82 -0
  145. package/dist/submission-state.js.map +1 -0
  146. package/dist/submission-store-contract.d.ts +31 -0
  147. package/dist/submission-store-contract.d.ts.map +1 -0
  148. package/dist/submission-store-contract.js +730 -0
  149. package/dist/submission-store-contract.js.map +1 -0
  150. package/dist/submission-store.d.ts +365 -0
  151. package/dist/submission-store.d.ts.map +1 -0
  152. package/dist/submission-store.js +191 -0
  153. package/dist/submission-store.js.map +1 -0
  154. package/dist/submission-telemetry.d.ts +56 -0
  155. package/dist/submission-telemetry.d.ts.map +1 -0
  156. package/dist/submission-telemetry.js +36 -0
  157. package/dist/submission-telemetry.js.map +1 -0
  158. package/dist/testing-contracts.d.ts +17 -0
  159. package/dist/testing-contracts.d.ts.map +1 -0
  160. package/dist/testing-contracts.js +14 -0
  161. package/dist/testing-contracts.js.map +1 -0
  162. package/dist/tools.d.ts +32 -4
  163. package/dist/tools.d.ts.map +1 -1
  164. package/dist/tools.js +132 -6
  165. package/dist/tools.js.map +1 -1
  166. package/dist/types.d.ts +132 -3
  167. package/dist/types.d.ts.map +1 -1
  168. package/dist/types.js.map +1 -1
  169. package/package.json +16 -8
@@ -0,0 +1 @@
1
+ {"version":3,"file":"submission-store-contract.js","sourceRoot":"","sources":["../src/submission-store-contract.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,365 @@
1
+ /**
2
+ * Durable agent submission lifecycle storage.
3
+ *
4
+ * One contract for every backend: the in-memory reference store, the Node
5
+ * SQLite store, and the Postgres store (also used by Databricks Lakebase)
6
+ * implement this interface with identical observable behavior. The
7
+ * per-method invariants below are written in terms of observable behavior,
8
+ * not storage primitives, so a non-SQL backend implements them natively.
9
+ * Where a method is described as atomic, concurrent callers must never both
10
+ * observe success; whether that is achieved with transactions, conditional
11
+ * updates, or unique indexes is the implementation's choice. Verify an
12
+ * implementation with `defineSubmissionStoreContractTests` from
13
+ * `submission-store-contract.ts`.
14
+ */
15
+ import type { DeliveredMessage } from './delivered-message.js';
16
+ import type { DispatchInput } from './dispatch.js';
17
+ import type { FabricActor } from './types.js';
18
+ /** Default maximum total attempts before terminalization. */
19
+ export declare const DURABILITY_DEFAULT_MAX_ATTEMPTS = 10;
20
+ /** Default submission timeout in milliseconds (one hour). */
21
+ export declare const DURABILITY_DEFAULT_TIMEOUT_MS = 3600000;
22
+ /** Default lease duration for submission ownership in milliseconds (30 seconds). */
23
+ export declare const LEASE_DURATION_MS = 30000;
24
+ /**
25
+ * One admitted agent submission — the persisted operational payload for both
26
+ * transports. `kind` records how the submission arrived (`'dispatch'` via
27
+ * `dispatch()`, `'direct'` via the agent HTTP route); a dispatch's
28
+ * `submissionId` is the public `dispatchId` from its receipt.
29
+ */
30
+ export interface AgentSubmissionInput {
31
+ readonly kind: 'dispatch' | 'direct';
32
+ readonly submissionId: string;
33
+ /** Persistent agent name. */
34
+ readonly agent: string;
35
+ /** Instance id of the target persistent agent. */
36
+ readonly id: string;
37
+ /** Named session within the instance. */
38
+ readonly session: string;
39
+ /** The normalized message delivered to the session. */
40
+ readonly message: DeliveredMessage;
41
+ /** Admission timestamp in epoch milliseconds. */
42
+ readonly acceptedAt: number;
43
+ readonly tenantId?: string;
44
+ readonly actor?: FabricActor;
45
+ }
46
+ /**
47
+ * The harness identity string (`agent:<name>:<id>:<session>`) targeted by a
48
+ * submission input. This is the {@link persistentStoreSessionId} of the
49
+ * addressed instance session and the per-session FIFO key of the store.
50
+ */
51
+ export declare function submissionStoreSessionId(input: Pick<AgentSubmissionInput, 'agent' | 'id' | 'session'>): string;
52
+ /** Map a {@link DispatchInput} onto the persisted submission input shape. */
53
+ export declare function createDispatchAgentSubmissionInput(dispatch: DispatchInput): AgentSubmissionInput;
54
+ /** Mint a direct-prompt submission input with a fresh submission id. */
55
+ export declare function createDirectAgentSubmissionInput(options: {
56
+ agent: string;
57
+ id: string;
58
+ session?: string;
59
+ message: DeliveredMessage;
60
+ tenantId?: string;
61
+ actor?: FabricActor;
62
+ }): AgentSubmissionInput;
63
+ /**
64
+ * Minimal canonical settlement record for a direct submission. The
65
+ * conversation-stream phase reuses this shape as the durable terminal record
66
+ * a reconnecting waiter observes.
67
+ */
68
+ export interface SubmissionSettledRecord {
69
+ readonly type: 'submission_settled';
70
+ readonly submissionId: string;
71
+ readonly outcome: 'completed' | 'failed' | 'aborted';
72
+ readonly resultText?: string;
73
+ readonly error?: string;
74
+ }
75
+ export type AgentSubmissionStatus = 'queued' | 'running' | 'terminalizing' | 'settled';
76
+ export interface AgentSubmission {
77
+ readonly sequence: number;
78
+ readonly submissionId: string;
79
+ /** Harness identity string `agent:<name>:<id>:<session>` — the per-session FIFO key. */
80
+ readonly storeSessionId: string;
81
+ readonly kind: 'dispatch' | 'direct';
82
+ readonly input: AgentSubmissionInput;
83
+ readonly status: AgentSubmissionStatus;
84
+ readonly acceptedAt: number;
85
+ readonly canonicalReadyAt: number | null;
86
+ readonly attemptId?: string;
87
+ readonly inputAppliedAt?: number;
88
+ readonly recoveryRequestedAt?: number;
89
+ /**
90
+ * When set, abort was requested for this submission. This is a durable
91
+ * abort+recovery *signal*, NOT a terminal classification: the aborted
92
+ * outcome is read only from the settlement (a direct `submission_settled`
93
+ * record with `outcome: 'aborted'`). A submission that completes or fails
94
+ * while this is set still settles completed/failed — the flag merely tells
95
+ * the owning attempt to stop and tells recovery to settle aborted rather
96
+ * than retry. May be present while `queued` (an abort arrived before the
97
+ * submission was ever claimed).
98
+ */
99
+ readonly abortRequestedAt?: number;
100
+ readonly startedAt?: number;
101
+ readonly error?: string;
102
+ readonly attemptCount: number;
103
+ readonly maxRetry: number;
104
+ readonly timeoutAt: number;
105
+ readonly ownerId?: string;
106
+ readonly leaseExpiresAt: number;
107
+ }
108
+ export interface SubmissionSettlementObligation {
109
+ readonly submissionId: string;
110
+ readonly storeSessionId: string;
111
+ readonly attemptId: string;
112
+ readonly recordId: string;
113
+ readonly record: SubmissionSettledRecord;
114
+ }
115
+ export interface SubmissionAttemptRef {
116
+ readonly submissionId: string;
117
+ readonly attemptId: string;
118
+ }
119
+ export interface SubmissionClaimRef extends SubmissionAttemptRef {
120
+ readonly ownerId: string;
121
+ readonly leaseExpiresAt: number;
122
+ }
123
+ export interface AgentSubmissionDurability {
124
+ readonly maxRetry: number;
125
+ readonly timeoutAt: number;
126
+ }
127
+ /**
128
+ * Harness-owned durable evidence that a submission attempt was started and
129
+ * has not yet settled. A coordinator inserts a marker immediately before
130
+ * starting an attempt and deletes it when the attempt settles;
131
+ * reconciliation treats a fresh marker as proof that the attempt may still
132
+ * be running and must not be reconciled as interrupted.
133
+ */
134
+ export interface AgentAttemptMarker {
135
+ readonly submissionId: string;
136
+ readonly attemptId: string;
137
+ readonly createdAt: number;
138
+ }
139
+ export interface AgentDispatchReceipt {
140
+ readonly submissionId: string;
141
+ readonly acceptedAt: number;
142
+ }
143
+ export type AgentDispatchAdmission = {
144
+ readonly kind: 'submission';
145
+ readonly submission: AgentSubmission;
146
+ } | {
147
+ readonly kind: 'retained_receipt';
148
+ readonly receipt: AgentDispatchReceipt;
149
+ } | {
150
+ readonly kind: 'conflict';
151
+ };
152
+ /**
153
+ * Durable submission lifecycle storage.
154
+ *
155
+ * Stability: the lease method group mirrors the durable-execution engine and
156
+ * is subject to change until 1.0. This applies to every backend equally.
157
+ */
158
+ export interface AgentSubmissionStore {
159
+ /** Return the submission, or `null` when the id is unknown. */
160
+ getSubmission(submissionId: string): Promise<AgentSubmission | null>;
161
+ /** True while any submission is queued, running, or terminalizing. */
162
+ hasUnsettledSubmissions(): Promise<boolean>;
163
+ /**
164
+ * Queued submissions that are each the oldest unsettled submission of
165
+ * their session, in admission order. At most one runnable head exists
166
+ * per session; later queued work in the same session is excluded until
167
+ * everything admitted before it has settled.
168
+ */
169
+ listRunnableSubmissions(): Promise<AgentSubmission[]>;
170
+ /** All queued submissions without canonical readiness, in admission order. */
171
+ listUnreadySubmissions(): Promise<AgentSubmission[]>;
172
+ /** All running submissions, in admission order. */
173
+ listRunningSubmissions(): Promise<AgentSubmission[]>;
174
+ /** Direct settlement obligations reserved but not yet finalized. */
175
+ listPendingSubmissionSettlements(): Promise<SubmissionSettlementObligation[]>;
176
+ /**
177
+ * Recovery handoff: atomically move a running submission from `attempt`
178
+ * to `nextAttemptId`, increment `attemptCount`, clear any pending recovery
179
+ * request, and (when given) install the new lease. Returns the updated
180
+ * submission, or `null` — without writing — when the submission is not
181
+ * running under `attempt`.
182
+ */
183
+ replaceSubmissionAttempt(attempt: SubmissionAttemptRef, nextAttemptId: string, lease?: {
184
+ ownerId: string;
185
+ leaseExpiresAt: number;
186
+ }): Promise<AgentSubmission | null>;
187
+ /**
188
+ * Idempotent admission keyed by dispatch id. An exact replay (same id,
189
+ * same payload) returns the already-admitted submission; the same id
190
+ * with a different payload returns `conflict`.
191
+ */
192
+ admitDispatch(input: DispatchInput): Promise<AgentDispatchAdmission>;
193
+ /**
194
+ * Admit a direct prompt (`input.kind === 'direct'`) as a queued submission.
195
+ * Idempotent for an exact replay of the same submission id and payload.
196
+ */
197
+ admitDirect(input: AgentSubmissionInput): Promise<AgentSubmission>;
198
+ /**
199
+ * Mark a newly admitted queued submission's canonical conversation as materialized.
200
+ * Idempotent while queued; returns `null` when the submission is missing or no longer queued.
201
+ */
202
+ markSubmissionCanonicalReady(submissionId: string): Promise<AgentSubmission | null>;
203
+ /**
204
+ * Atomic compare-and-set. Transition the submission from queued to
205
+ * running ONLY when it is currently queued and is the runnable head of
206
+ * its session (no earlier unsettled submission in the same session),
207
+ * recording the attempt id, owner, lease expiry, and start time,
208
+ * incrementing `attemptCount`, resetting `maxRetry` to the system
209
+ * default, and initializing `timeoutAt` when still unset (a previously
210
+ * initialized timeout is preserved across requeue/reclaim). Returns the
211
+ * claimed submission, or `null` when any condition fails. Two concurrent
212
+ * claims for the same submission must never both succeed.
213
+ */
214
+ claimSubmission(claim: SubmissionClaimRef): Promise<AgentSubmission | null>;
215
+ /**
216
+ * Record once that the submission's input was canonically applied,
217
+ * installing the supplied durability (or defaults) on first application.
218
+ * Gated on a running submission owned by `attempt`; otherwise `false`.
219
+ */
220
+ markSubmissionInputApplied(attempt: SubmissionAttemptRef, durability?: AgentSubmissionDurability): Promise<boolean>;
221
+ /**
222
+ * Stamp `recoveryRequestedAt` once. Gated on a running submission owned
223
+ * by `attempt`; otherwise `false`.
224
+ */
225
+ requestSubmissionRecovery(attempt: SubmissionAttemptRef): Promise<boolean>;
226
+ /**
227
+ * Record an abort request for every unsettled submission in a session.
228
+ * Atomically stamps `abortRequestedAt` (COALESCE — first request wins) on
229
+ * each `queued` or `running` submission with the given `storeSessionId` and
230
+ * returns their submission ids. It does NOT settle anything and does NOT
231
+ * change `status`: terminal settlement always happens through an
232
+ * attempt-based path (the pre-execution abort check when a queued submission
233
+ * is claimed, the in-flight abort settle, or the recovery abort branch) so a
234
+ * durable canonical terminal record always exists. `terminalizing` and
235
+ * `settled` submissions are left untouched (a committed outcome must not be
236
+ * overridden). Idempotent; returns an empty array when nothing is unsettled.
237
+ */
238
+ requestSessionAbort(storeSessionId: string): Promise<string[]>;
239
+ /**
240
+ * Return a running submission to queued — clearing its attempt, owner,
241
+ * and lease — ONLY while input has not been applied and `attempt` owns
242
+ * the submission; otherwise `false`.
243
+ */
244
+ requeueSubmissionBeforeInputApplied(attempt: SubmissionAttemptRef): Promise<boolean>;
245
+ /**
246
+ * Atomically reserve the exact canonical settlement record as an obligation.
247
+ * Only a running direct submission owned by `attempt` may transition to
248
+ * terminalizing. Exact retries return the existing obligation; conflicting
249
+ * record identities or payloads return `null`.
250
+ */
251
+ reserveSubmissionSettlement(attempt: SubmissionAttemptRef, settlement: {
252
+ recordId: string;
253
+ record: SubmissionSettledRecord;
254
+ }): Promise<SubmissionSettlementObligation | null>;
255
+ /** Finalize an owned terminalizing submission after its canonical record exists. */
256
+ finalizeSubmissionSettlement(attempt: SubmissionAttemptRef, recordId: string): Promise<boolean>;
257
+ /**
258
+ * Settle the submission successfully. Gated on a running submission
259
+ * owned by `attempt`: a stale attempt or an already-settled submission
260
+ * returns `false` and preserves the first terminal state.
261
+ */
262
+ completeSubmission(attempt: SubmissionAttemptRef): Promise<boolean>;
263
+ /**
264
+ * Settle the submission with an error message. Same gating as
265
+ * {@link completeSubmission}: the first terminal state wins.
266
+ */
267
+ failSubmission(attempt: SubmissionAttemptRef, error: unknown): Promise<boolean>;
268
+ /**
269
+ * Durably record that the attempt was started. Idempotent: re-inserting
270
+ * the same (submissionId, attemptId) keeps the original `createdAt`.
271
+ */
272
+ insertAttemptMarker(attempt: SubmissionAttemptRef): Promise<void>;
273
+ /** Delete the marker matching both ids exactly; a no-op when absent. */
274
+ deleteAttemptMarker(attempt: SubmissionAttemptRef): Promise<void>;
275
+ /** All attempt markers. */
276
+ listAttemptMarkers(): Promise<AgentAttemptMarker[]>;
277
+ /**
278
+ * Extend the lease expiry (now + `LEASE_DURATION_MS`) for each listed
279
+ * submission that is running AND owned by `ownerId`. Submissions owned
280
+ * by another coordinator, settled, or unknown are silently skipped.
281
+ */
282
+ renewLeases(ownerId: string, submissionIds: string[]): Promise<void>;
283
+ /**
284
+ * Running submissions whose lease has expired (a positive
285
+ * `leaseExpiresAt` in the past). Queued and settled submissions are
286
+ * never returned.
287
+ */
288
+ listExpiredSubmissions(): Promise<AgentSubmission[]>;
289
+ }
290
+ /**
291
+ * Context needed for submission payload validation.
292
+ *
293
+ * Implementations extract these fields from their storage-specific
294
+ * row/document type before calling {@link isSubmissionPayload}.
295
+ */
296
+ export interface SubmissionPayloadContext {
297
+ readonly kind: string;
298
+ readonly submissionId: string;
299
+ readonly storeSessionId: string;
300
+ readonly acceptedAt: number;
301
+ }
302
+ /**
303
+ * Validate that a parsed JSON payload matches the expected submission shape.
304
+ *
305
+ * Used after deserializing a persisted payload to verify the object is a
306
+ * well-formed {@link AgentSubmissionInput} that is consistent with the stored
307
+ * submission metadata. Both dispatch and direct payloads carry the same
308
+ * `message: DeliveredMessage` field — validated identically here regardless
309
+ * of transport `kind`.
310
+ */
311
+ export declare function isSubmissionPayload(input: unknown, ctx: SubmissionPayloadContext): input is AgentSubmissionInput;
312
+ /** The queued row that {@link admitSubmissionWithBackend} writes on first admission. */
313
+ export interface SubmissionInsertRow {
314
+ readonly submissionId: string;
315
+ readonly storeSessionId: string;
316
+ readonly kind: 'dispatch' | 'direct';
317
+ /** The serialized {@link AgentSubmissionInput}. */
318
+ readonly payload: string;
319
+ readonly acceptedAt: number;
320
+ }
321
+ /**
322
+ * The minimal shape {@link admitSubmissionWithBackend} needs from a persisted
323
+ * submission row: the transport `kind` and persisted `payload` it compares
324
+ * against the incoming admission. `payload` may be the serialized JSON string
325
+ * or an already-deserialized object (e.g. a Postgres JSONB column).
326
+ */
327
+ export interface SubmissionAdmissionRow {
328
+ readonly kind?: unknown;
329
+ readonly payload?: unknown;
330
+ }
331
+ /**
332
+ * Storage callbacks for {@link admitSubmissionWithBackend}.
333
+ *
334
+ * Every callback runs inside the transaction the caller has already opened
335
+ * (or the backend's equivalent atomicity scope). Callbacks may return plain
336
+ * values (synchronous backends) or native `Promise`s — non-native thenables
337
+ * are not supported.
338
+ */
339
+ export interface SubmissionAdmissionBackend<Row extends SubmissionAdmissionRow> {
340
+ /** Look up a retained dispatch receipt. Only consulted for `kind: 'dispatch'`. */
341
+ getDispatchReceipt(submissionId: string): AgentDispatchReceipt | null | Promise<AgentDispatchReceipt | null>;
342
+ /** Insert the queued submission row, ignoring a duplicate `submissionId`. */
343
+ insertIfAbsent(row: SubmissionInsertRow): void | Promise<void>;
344
+ /** Read back the submission row for `submissionId`, if present. */
345
+ getExisting(submissionId: string): Row | undefined | Promise<Row | undefined>;
346
+ /** Parse a persisted row into an {@link AgentSubmission}. */
347
+ parseSubmission(row: Row): AgentSubmission;
348
+ }
349
+ /**
350
+ * Shared submission admission algorithm for row-oriented backends:
351
+ * dispatch-receipt check → insert-or-ignore → read-back → payload compare
352
+ * (idempotent replay vs. conflict). The message payload is stored as JSON
353
+ * verbatim; payload identity is deep JSON equality, so a backend that
354
+ * normalizes stored JSON (e.g. Postgres JSONB key ordering) still recognizes
355
+ * an exact replay.
356
+ *
357
+ * The caller owns transaction scoping — invoke this inside one transaction
358
+ * and pass callbacks bound to it. When every callback is synchronous the
359
+ * result is returned synchronously, so the algorithm also fits synchronous
360
+ * backends.
361
+ */
362
+ export declare function admitSubmissionWithBackend<Row extends SubmissionAdmissionRow>(input: AgentSubmissionInput, backend: SubmissionAdmissionBackend<Row>): AgentDispatchAdmission | Promise<AgentDispatchAdmission>;
363
+ /** Structural equality over JSON values (objects compared key-order-insensitively). */
364
+ export declare function jsonDeepEqual(a: unknown, b: unknown): boolean;
365
+ //# sourceMappingURL=submission-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"submission-store.d.ts","sourceRoot":"","sources":["../src/submission-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,191 @@
1
+ /**
2
+ * Durable agent submission lifecycle storage.
3
+ *
4
+ * One contract for every backend: the in-memory reference store, the Node
5
+ * SQLite store, and the Postgres store (also used by Databricks Lakebase)
6
+ * implement this interface with identical observable behavior. The
7
+ * per-method invariants below are written in terms of observable behavior,
8
+ * not storage primitives, so a non-SQL backend implements them natively.
9
+ * Where a method is described as atomic, concurrent callers must never both
10
+ * observe success; whether that is achieved with transactions, conditional
11
+ * updates, or unique indexes is the implementation's choice. Verify an
12
+ * implementation with `defineSubmissionStoreContractTests` from
13
+ * `submission-store-contract.ts`.
14
+ */
15
+ import { parseDeliveredMessage } from './delivered-message.js';
16
+ import { persistentStoreSessionId } from './persistent-agent.js';
17
+ // ─── Durability defaults ────────────────────────────────────────────────────
18
+ /** Default maximum total attempts before terminalization. */
19
+ export const DURABILITY_DEFAULT_MAX_ATTEMPTS = 10;
20
+ /** Default submission timeout in milliseconds (one hour). */
21
+ export const DURABILITY_DEFAULT_TIMEOUT_MS = 3_600_000;
22
+ /** Default lease duration for submission ownership in milliseconds (30 seconds). */
23
+ export const LEASE_DURATION_MS = 30_000;
24
+ /**
25
+ * The harness identity string (`agent:<name>:<id>:<session>`) targeted by a
26
+ * submission input. This is the {@link persistentStoreSessionId} of the
27
+ * addressed instance session and the per-session FIFO key of the store.
28
+ */
29
+ export function submissionStoreSessionId(input) {
30
+ return persistentStoreSessionId(input.agent, input.id, input.session);
31
+ }
32
+ /** Map a {@link DispatchInput} onto the persisted submission input shape. */
33
+ export function createDispatchAgentSubmissionInput(dispatch) {
34
+ const acceptedAt = Date.parse(dispatch.acceptedAt);
35
+ if (!Number.isFinite(acceptedAt)) {
36
+ throw new Error('[fabric-harness] Internal dispatch admission received an invalid acceptedAt timestamp.');
37
+ }
38
+ return {
39
+ kind: 'dispatch',
40
+ submissionId: dispatch.dispatchId,
41
+ agent: dispatch.agent,
42
+ id: dispatch.id,
43
+ session: dispatch.session,
44
+ message: dispatch.message,
45
+ acceptedAt,
46
+ ...(dispatch.tenantId ? { tenantId: dispatch.tenantId } : {}),
47
+ ...(dispatch.actor ? { actor: dispatch.actor } : {}),
48
+ };
49
+ }
50
+ /** Mint a direct-prompt submission input with a fresh submission id. */
51
+ export function createDirectAgentSubmissionInput(options) {
52
+ return {
53
+ kind: 'direct',
54
+ submissionId: crypto.randomUUID(),
55
+ agent: options.agent,
56
+ id: options.id,
57
+ session: options.session ?? 'default',
58
+ message: options.message,
59
+ acceptedAt: Date.now(),
60
+ ...(options.tenantId ? { tenantId: options.tenantId } : {}),
61
+ ...(options.actor ? { actor: options.actor } : {}),
62
+ };
63
+ }
64
+ /**
65
+ * Validate that a parsed JSON payload matches the expected submission shape.
66
+ *
67
+ * Used after deserializing a persisted payload to verify the object is a
68
+ * well-formed {@link AgentSubmissionInput} that is consistent with the stored
69
+ * submission metadata. Both dispatch and direct payloads carry the same
70
+ * `message: DeliveredMessage` field — validated identically here regardless
71
+ * of transport `kind`.
72
+ */
73
+ export function isSubmissionPayload(input, ctx) {
74
+ if (!input || typeof input !== 'object')
75
+ return false;
76
+ const value = input;
77
+ if (value.kind !== ctx.kind || value.submissionId !== ctx.submissionId)
78
+ return false;
79
+ try {
80
+ parseDeliveredMessage(value.message);
81
+ }
82
+ catch {
83
+ return false;
84
+ }
85
+ return (typeof value.agent === 'string' &&
86
+ typeof value.id === 'string' &&
87
+ typeof value.session === 'string' &&
88
+ persistentStoreSessionId(value.agent, value.id, value.session) === ctx.storeSessionId &&
89
+ typeof value.acceptedAt === 'number' &&
90
+ value.acceptedAt === ctx.acceptedAt);
91
+ }
92
+ // ─── Submission admission ───────────────────────────────────────────────────
93
+ /**
94
+ * Run a maybe-async continuation without forcing a promise: when `value` is a
95
+ * plain value the continuation runs synchronously, so a fully synchronous
96
+ * backend (e.g. `node:sqlite`, or the in-memory store) completes the whole
97
+ * admission without ever yielding to the microtask queue.
98
+ */
99
+ function chain(value, next) {
100
+ return value instanceof Promise ? value.then(next) : next(value);
101
+ }
102
+ /**
103
+ * Shared submission admission algorithm for row-oriented backends:
104
+ * dispatch-receipt check → insert-or-ignore → read-back → payload compare
105
+ * (idempotent replay vs. conflict). The message payload is stored as JSON
106
+ * verbatim; payload identity is deep JSON equality, so a backend that
107
+ * normalizes stored JSON (e.g. Postgres JSONB key ordering) still recognizes
108
+ * an exact replay.
109
+ *
110
+ * The caller owns transaction scoping — invoke this inside one transaction
111
+ * and pass callbacks bound to it. When every callback is synchronous the
112
+ * result is returned synchronously, so the algorithm also fits synchronous
113
+ * backends.
114
+ */
115
+ export function admitSubmissionWithBackend(input, backend) {
116
+ const { kind, submissionId } = input;
117
+ const payload = JSON.stringify(input);
118
+ const storeSessionId = submissionStoreSessionId(input);
119
+ if (!Number.isFinite(input.acceptedAt)) {
120
+ throw new Error(`[fabric-harness] Internal ${kind} admission received an invalid acceptedAt timestamp.`);
121
+ }
122
+ const adopt = (row) => {
123
+ if (row.kind !== kind)
124
+ return { kind: 'conflict' };
125
+ if (!persistedPayloadMatches(row.payload, payload))
126
+ return { kind: 'conflict' };
127
+ return { kind: 'submission', submission: backend.parseSubmission(row) };
128
+ };
129
+ const admit = () => chain(backend.insertIfAbsent({ submissionId, storeSessionId, kind, payload, acceptedAt: input.acceptedAt }), () => chain(backend.getExisting(submissionId), (row) => {
130
+ if (!row) {
131
+ throw new Error(`[fabric-harness] Durable ${kind} admission did not create a submission row.`);
132
+ }
133
+ return adopt(row);
134
+ }));
135
+ if (kind !== 'dispatch')
136
+ return admit();
137
+ return chain(backend.getDispatchReceipt(submissionId), (receipt) => receipt ? { kind: 'retained_receipt', receipt } : admit());
138
+ }
139
+ function persistedPayloadMatches(persisted, payload) {
140
+ if (persisted === payload)
141
+ return true;
142
+ let persistedValue;
143
+ if (typeof persisted === 'string') {
144
+ try {
145
+ persistedValue = JSON.parse(persisted);
146
+ }
147
+ catch {
148
+ return false;
149
+ }
150
+ }
151
+ else if (persisted && typeof persisted === 'object') {
152
+ persistedValue = persisted;
153
+ }
154
+ else {
155
+ return false;
156
+ }
157
+ return jsonDeepEqual(stripVolatileAdmissionFields(persistedValue), stripVolatileAdmissionFields(JSON.parse(payload)));
158
+ }
159
+ /**
160
+ * `acceptedAt` is excluded from admission payload identity: an upstream
161
+ * redelivery of the same event (same dispatch id, same content) legitimately
162
+ * carries a fresh admission timestamp — treating it as a conflict would turn
163
+ * at-least-once transports into hard failures. Content differences under the
164
+ * same id still conflict.
165
+ */
166
+ function stripVolatileAdmissionFields(value) {
167
+ if (value && typeof value === 'object' && !Array.isArray(value)) {
168
+ const { acceptedAt: _volatile, ...rest } = value;
169
+ return rest;
170
+ }
171
+ return value;
172
+ }
173
+ /** Structural equality over JSON values (objects compared key-order-insensitively). */
174
+ export function jsonDeepEqual(a, b) {
175
+ if (a === b)
176
+ return true;
177
+ if (Array.isArray(a) || Array.isArray(b)) {
178
+ if (!Array.isArray(a) || !Array.isArray(b) || a.length !== b.length)
179
+ return false;
180
+ return a.every((item, index) => jsonDeepEqual(item, b[index]));
181
+ }
182
+ if (a && b && typeof a === 'object' && typeof b === 'object') {
183
+ const aEntries = Object.entries(a);
184
+ const bRecord = b;
185
+ if (aEntries.length !== Object.keys(bRecord).length)
186
+ return false;
187
+ return aEntries.every(([key, value]) => key in bRecord && jsonDeepEqual(value, bRecord[key]));
188
+ }
189
+ return false;
190
+ }
191
+ //# sourceMappingURL=submission-store.js.map