@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.
- package/dist/action.d.ts +69 -0
- package/dist/action.d.ts.map +1 -0
- package/dist/action.js +119 -0
- package/dist/action.js.map +1 -0
- package/dist/agent-definition.d.ts +6 -0
- package/dist/agent-definition.d.ts.map +1 -1
- package/dist/agent-definition.js.map +1 -1
- package/dist/agent.d.ts +2 -0
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +35 -1
- package/dist/agent.js.map +1 -1
- package/dist/attachment-store-contract.d.ts +34 -0
- package/dist/attachment-store-contract.d.ts.map +1 -0
- package/dist/attachment-store-contract.js +0 -0
- package/dist/attachment-store-contract.js.map +1 -0
- package/dist/attachment-store.d.ts +107 -0
- package/dist/attachment-store.d.ts.map +1 -0
- package/dist/attachment-store.js +164 -0
- package/dist/attachment-store.js.map +1 -0
- package/dist/channel.d.ts +84 -0
- package/dist/channel.d.ts.map +1 -0
- package/dist/channel.js +115 -0
- package/dist/channel.js.map +1 -0
- package/dist/context-budget.d.ts +16 -0
- package/dist/context-budget.d.ts.map +1 -1
- package/dist/context-budget.js +38 -3
- package/dist/context-budget.js.map +1 -1
- package/dist/conversation-projection.d.ts +52 -0
- package/dist/conversation-projection.d.ts.map +1 -0
- package/dist/conversation-projection.js +207 -0
- package/dist/conversation-projection.js.map +1 -0
- package/dist/conversation-stream-contract.d.ts +37 -0
- package/dist/conversation-stream-contract.d.ts.map +1 -0
- package/dist/conversation-stream-contract.js +453 -0
- package/dist/conversation-stream-contract.js.map +1 -0
- package/dist/conversation-stream.d.ts +141 -0
- package/dist/conversation-stream.d.ts.map +1 -0
- package/dist/conversation-stream.js +159 -0
- package/dist/conversation-stream.js.map +1 -0
- package/dist/cost-budget.d.ts +106 -1
- package/dist/cost-budget.d.ts.map +1 -1
- package/dist/cost-budget.js +48 -2
- package/dist/cost-budget.js.map +1 -1
- package/dist/delivered-message.d.ts +90 -0
- package/dist/delivered-message.d.ts.map +1 -0
- package/dist/delivered-message.js +154 -0
- package/dist/delivered-message.js.map +1 -0
- package/dist/dispatch.d.ts +108 -0
- package/dist/dispatch.d.ts.map +1 -0
- package/dist/dispatch.js +179 -0
- package/dist/dispatch.js.map +1 -0
- package/dist/error.d.ts +1 -1
- package/dist/error.d.ts.map +1 -1
- package/dist/error.js.map +1 -1
- package/dist/history.d.ts +49 -2
- package/dist/history.d.ts.map +1 -1
- package/dist/history.js +163 -0
- package/dist/history.js.map +1 -1
- package/dist/in-memory-submission-store.d.ts +53 -0
- package/dist/in-memory-submission-store.d.ts.map +1 -0
- package/dist/in-memory-submission-store.js +340 -0
- package/dist/in-memory-submission-store.js.map +1 -0
- package/dist/index.d.ts +51 -13
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +28 -7
- package/dist/index.js.map +1 -1
- package/dist/loop.d.ts +29 -3
- package/dist/loop.d.ts.map +1 -1
- package/dist/loop.js +167 -24
- package/dist/loop.js.map +1 -1
- package/dist/model.d.ts +37 -0
- package/dist/model.d.ts.map +1 -1
- package/dist/model.js +250 -79
- package/dist/model.js.map +1 -1
- package/dist/otel-observer.d.ts +44 -0
- package/dist/otel-observer.d.ts.map +1 -0
- package/dist/otel-observer.js +165 -0
- package/dist/otel-observer.js.map +1 -0
- package/dist/persistence.d.ts +70 -0
- package/dist/persistence.d.ts.map +1 -0
- package/dist/persistence.js +17 -0
- package/dist/persistence.js.map +1 -0
- package/dist/persistent-agent.d.ts +86 -0
- package/dist/persistent-agent.d.ts.map +1 -0
- package/dist/persistent-agent.js +75 -0
- package/dist/persistent-agent.js.map +1 -0
- package/dist/pi-loop-runtime.d.ts.map +1 -1
- package/dist/pi-loop-runtime.js +7 -1
- package/dist/pi-loop-runtime.js.map +1 -1
- package/dist/profile.d.ts +33 -0
- package/dist/profile.d.ts.map +1 -0
- package/dist/profile.js +10 -0
- package/dist/profile.js.map +1 -0
- package/dist/providers.d.ts +14 -0
- package/dist/providers.d.ts.map +1 -1
- package/dist/providers.js +18 -1
- package/dist/providers.js.map +1 -1
- package/dist/result.d.ts +12 -0
- package/dist/result.d.ts.map +1 -1
- package/dist/result.js +26 -0
- package/dist/result.js.map +1 -1
- package/dist/retrieval.d.ts +61 -0
- package/dist/retrieval.d.ts.map +1 -0
- package/dist/retrieval.js +26 -0
- package/dist/retrieval.js.map +1 -0
- package/dist/runtime-mode.d.ts +1 -1
- package/dist/runtime-mode.d.ts.map +1 -1
- package/dist/runtime-mode.js +2 -1
- package/dist/runtime-mode.js.map +1 -1
- package/dist/scope-key.d.ts +25 -0
- package/dist/scope-key.d.ts.map +1 -0
- package/dist/scope-key.js +34 -0
- package/dist/scope-key.js.map +1 -0
- package/dist/session.d.ts +47 -1
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +364 -35
- package/dist/session.js.map +1 -1
- package/dist/skills.d.ts +33 -0
- package/dist/skills.d.ts.map +1 -0
- package/dist/skills.js +65 -0
- package/dist/skills.js.map +1 -0
- package/dist/store.d.ts +36 -1
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +83 -0
- package/dist/store.js.map +1 -1
- package/dist/stream-chunks.d.ts +42 -0
- package/dist/stream-chunks.d.ts.map +1 -0
- package/dist/stream-chunks.js +138 -0
- package/dist/stream-chunks.js.map +1 -0
- package/dist/strict.d.ts +40 -11
- package/dist/strict.d.ts.map +1 -1
- package/dist/strict.js +22 -7
- package/dist/strict.js.map +1 -1
- package/dist/submission-context.d.ts +26 -0
- package/dist/submission-context.d.ts.map +1 -0
- package/dist/submission-context.js +20 -0
- package/dist/submission-context.js.map +1 -0
- package/dist/submission-runner.d.ts +150 -0
- package/dist/submission-runner.d.ts.map +1 -0
- package/dist/submission-runner.js +767 -0
- package/dist/submission-runner.js.map +1 -0
- package/dist/submission-state.d.ts +50 -0
- package/dist/submission-state.d.ts.map +1 -0
- package/dist/submission-state.js +82 -0
- package/dist/submission-state.js.map +1 -0
- package/dist/submission-store-contract.d.ts +31 -0
- package/dist/submission-store-contract.d.ts.map +1 -0
- package/dist/submission-store-contract.js +730 -0
- package/dist/submission-store-contract.js.map +1 -0
- package/dist/submission-store.d.ts +365 -0
- package/dist/submission-store.d.ts.map +1 -0
- package/dist/submission-store.js +191 -0
- package/dist/submission-store.js.map +1 -0
- package/dist/submission-telemetry.d.ts +56 -0
- package/dist/submission-telemetry.d.ts.map +1 -0
- package/dist/submission-telemetry.js +36 -0
- package/dist/submission-telemetry.js.map +1 -0
- package/dist/testing-contracts.d.ts +17 -0
- package/dist/testing-contracts.d.ts.map +1 -0
- package/dist/testing-contracts.js +14 -0
- package/dist/testing-contracts.js.map +1 -0
- package/dist/tools.d.ts +32 -4
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +132 -6
- package/dist/tools.js.map +1 -1
- package/dist/types.d.ts +132 -3
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- 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
|