@fabric-harness/sdk 1.14.0 → 2.0.1

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 (91) 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/attachment-store-contract.d.ts +34 -0
  6. package/dist/attachment-store-contract.d.ts.map +1 -0
  7. package/dist/attachment-store-contract.js +0 -0
  8. package/dist/attachment-store-contract.js.map +1 -0
  9. package/dist/attachment-store.d.ts +107 -0
  10. package/dist/attachment-store.d.ts.map +1 -0
  11. package/dist/attachment-store.js +164 -0
  12. package/dist/attachment-store.js.map +1 -0
  13. package/dist/channel.d.ts +8 -1
  14. package/dist/channel.d.ts.map +1 -1
  15. package/dist/channel.js.map +1 -1
  16. package/dist/conversation-projection.d.ts +52 -0
  17. package/dist/conversation-projection.d.ts.map +1 -0
  18. package/dist/conversation-projection.js +207 -0
  19. package/dist/conversation-projection.js.map +1 -0
  20. package/dist/conversation-stream-contract.d.ts +37 -0
  21. package/dist/conversation-stream-contract.d.ts.map +1 -0
  22. package/dist/conversation-stream-contract.js +453 -0
  23. package/dist/conversation-stream-contract.js.map +1 -0
  24. package/dist/conversation-stream.d.ts +141 -0
  25. package/dist/conversation-stream.d.ts.map +1 -0
  26. package/dist/conversation-stream.js +159 -0
  27. package/dist/conversation-stream.js.map +1 -0
  28. package/dist/delivered-message.d.ts +90 -0
  29. package/dist/delivered-message.d.ts.map +1 -0
  30. package/dist/delivered-message.js +154 -0
  31. package/dist/delivered-message.js.map +1 -0
  32. package/dist/dispatch.d.ts +16 -3
  33. package/dist/dispatch.d.ts.map +1 -1
  34. package/dist/dispatch.js +5 -1
  35. package/dist/dispatch.js.map +1 -1
  36. package/dist/history.d.ts +27 -0
  37. package/dist/history.d.ts.map +1 -1
  38. package/dist/history.js +94 -0
  39. package/dist/history.js.map +1 -1
  40. package/dist/in-memory-submission-store.d.ts +53 -0
  41. package/dist/in-memory-submission-store.d.ts.map +1 -0
  42. package/dist/in-memory-submission-store.js +340 -0
  43. package/dist/in-memory-submission-store.js.map +1 -0
  44. package/dist/index.d.ts +24 -3
  45. package/dist/index.d.ts.map +1 -1
  46. package/dist/index.js +13 -2
  47. package/dist/index.js.map +1 -1
  48. package/dist/persistent-agent.d.ts +6 -0
  49. package/dist/persistent-agent.d.ts.map +1 -1
  50. package/dist/persistent-agent.js +6 -0
  51. package/dist/persistent-agent.js.map +1 -1
  52. package/dist/session.d.ts +13 -0
  53. package/dist/session.d.ts.map +1 -1
  54. package/dist/session.js +78 -2
  55. package/dist/session.js.map +1 -1
  56. package/dist/strict.d.ts +24 -3
  57. package/dist/strict.d.ts.map +1 -1
  58. package/dist/strict.js +13 -2
  59. package/dist/strict.js.map +1 -1
  60. package/dist/submission-context.d.ts +26 -0
  61. package/dist/submission-context.d.ts.map +1 -0
  62. package/dist/submission-context.js +20 -0
  63. package/dist/submission-context.js.map +1 -0
  64. package/dist/submission-runner.d.ts +150 -0
  65. package/dist/submission-runner.d.ts.map +1 -0
  66. package/dist/submission-runner.js +767 -0
  67. package/dist/submission-runner.js.map +1 -0
  68. package/dist/submission-state.d.ts +50 -0
  69. package/dist/submission-state.d.ts.map +1 -0
  70. package/dist/submission-state.js +82 -0
  71. package/dist/submission-state.js.map +1 -0
  72. package/dist/submission-store-contract.d.ts +31 -0
  73. package/dist/submission-store-contract.d.ts.map +1 -0
  74. package/dist/submission-store-contract.js +730 -0
  75. package/dist/submission-store-contract.js.map +1 -0
  76. package/dist/submission-store.d.ts +365 -0
  77. package/dist/submission-store.d.ts.map +1 -0
  78. package/dist/submission-store.js +191 -0
  79. package/dist/submission-store.js.map +1 -0
  80. package/dist/submission-telemetry.d.ts +56 -0
  81. package/dist/submission-telemetry.d.ts.map +1 -0
  82. package/dist/submission-telemetry.js +36 -0
  83. package/dist/submission-telemetry.js.map +1 -0
  84. package/dist/testing-contracts.d.ts +17 -0
  85. package/dist/testing-contracts.d.ts.map +1 -0
  86. package/dist/testing-contracts.js +14 -0
  87. package/dist/testing-contracts.js.map +1 -0
  88. package/dist/types.d.ts +28 -1
  89. package/dist/types.d.ts.map +1 -1
  90. package/dist/types.js.map +1 -1
  91. package/package.json +5 -1
package/dist/history.js CHANGED
@@ -96,6 +96,10 @@ export class SessionHistory {
96
96
  }
97
97
  return undefined;
98
98
  }
99
+ /** Trailing dangling tool calls on THIS history's active path. See {@link findTrailingDanglingToolCalls}. */
100
+ findTrailingDanglingToolCalls() {
101
+ return findTrailingDanglingToolCalls(this.getActivePath());
102
+ }
99
103
  buildContextEntries() {
100
104
  const path = this.getActivePath();
101
105
  const compaction = this.getLatestCompaction();
@@ -150,6 +154,96 @@ export class SessionHistory {
150
154
  export function buildModelMessagesFromHistory(data, role) {
151
155
  return SessionHistory.fromData(data).buildModelMessages(role);
152
156
  }
157
+ /**
158
+ * Entry types that end a turn's trailing tool window. A tool_call before any
159
+ * of these is either settled within the window or was abandoned by an
160
+ * interrupted turn.
161
+ */
162
+ const TOOL_WINDOW_BOUNDARY_TYPES = new Set([
163
+ 'user_prompt',
164
+ 'user_message',
165
+ 'assistant_message',
166
+ 'result',
167
+ 'compaction',
168
+ 'signal',
169
+ 'submission_settled',
170
+ ]);
171
+ /**
172
+ * Find trailing `tool_call` entries on the active path that were never
173
+ * settled — no matching `tool_result` (paired by `toolCallId`, falling back
174
+ * to tool name) and no subsequent `error` entry for the same tool.
175
+ *
176
+ * A dangling call means a model turn died (crash/abort) between recording
177
+ * the call and recording its outcome. Left in place it produces an
178
+ * assistant `tool_use` with no `tool_result` on resume, which providers
179
+ * reject — the repair path appends synthetic interrupted outcomes for
180
+ * exactly the entries returned here.
181
+ *
182
+ * Conservative by construction: only the window after the last turn
183
+ * boundary (user prompt / assistant message / result / compaction / signal)
184
+ * is examined, so historical, already-settled turns are never re-judged.
185
+ * Both the resume-repair and the submission terminalization derive the
186
+ * dangling set through this single function so they can never disagree.
187
+ */
188
+ export function findTrailingDanglingToolCalls(path) {
189
+ let windowStart = 0;
190
+ for (let index = path.length - 1; index >= 0; index -= 1) {
191
+ const entry = path[index];
192
+ if (entry && TOOL_WINDOW_BOUNDARY_TYPES.has(entry.type)) {
193
+ windowStart = index + 1;
194
+ break;
195
+ }
196
+ }
197
+ const window = path.slice(windowStart);
198
+ const dangling = [];
199
+ for (let index = 0; index < window.length; index += 1) {
200
+ const entry = window[index];
201
+ if (!entry || entry.type !== 'tool_call')
202
+ continue;
203
+ const callId = typeof entry.data?.toolCallId === 'string' ? entry.data.toolCallId : undefined;
204
+ const tool = typeof entry.data?.tool === 'string' ? entry.data.tool : undefined;
205
+ const settled = window.slice(index + 1).some((later) => {
206
+ if (later.type === 'tool_result') {
207
+ const laterId = typeof later.data?.toolCallId === 'string' ? later.data.toolCallId : undefined;
208
+ if (callId && laterId)
209
+ return laterId === callId;
210
+ return typeof later.data?.tool === 'string' && later.data.tool === tool;
211
+ }
212
+ // Tool failures and unavailable/denied tools record an `error` entry
213
+ // (no toolCallId) instead of a tool_result.
214
+ if (later.type === 'error') {
215
+ return typeof later.data?.tool === 'string' && later.data.tool === tool;
216
+ }
217
+ return false;
218
+ });
219
+ if (!settled)
220
+ dangling.push(entry);
221
+ }
222
+ return dangling;
223
+ }
224
+ /**
225
+ * Trailing `task_start` entries in the same window with no matching
226
+ * `task_end` — a subtask that was in flight when the turn died. These do not
227
+ * corrupt model context (task entries are bookkeeping), but settling them
228
+ * keeps UI/audit state coherent.
229
+ */
230
+ export function findTrailingUnfinishedTasks(path) {
231
+ let windowStart = 0;
232
+ for (let index = path.length - 1; index >= 0; index -= 1) {
233
+ const entry = path[index];
234
+ if (entry && TOOL_WINDOW_BOUNDARY_TYPES.has(entry.type)) {
235
+ windowStart = index + 1;
236
+ break;
237
+ }
238
+ }
239
+ const window = path.slice(windowStart);
240
+ const ended = new Set(window
241
+ .filter((entry) => entry.type === 'task_end')
242
+ .map((entry) => (typeof entry.data?.taskId === 'string' ? entry.data.taskId : '')));
243
+ return window.filter((entry) => entry.type === 'task_start' &&
244
+ typeof entry.data?.taskId === 'string' &&
245
+ !ended.has(entry.data.taskId));
246
+ }
153
247
  function entryToModelMessage(entry) {
154
248
  switch (entry.type) {
155
249
  case 'compaction': {
@@ -1 +1 @@
1
- {"version":3,"file":"history.js","sourceRoot":"","sources":["../src/history.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"history.js","sourceRoot":"","sources":["../src/history.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * In-memory reference implementation of {@link AgentSubmissionStore}.
3
+ *
4
+ * Suitable for the inline runtime, dev, and tests. Single-threaded JS makes
5
+ * every compare-and-set trivially atomic, but the observable gating
6
+ * conditions — runnable-head FIFO per session, owner checks, first-terminal-
7
+ * wins, idempotent admission with payload-conflict detection — match the
8
+ * durable backends exactly so the contract suite passes unchanged.
9
+ */
10
+ import type { AgentAttemptMarker, AgentDispatchAdmission, AgentSubmission, AgentSubmissionInput, AgentSubmissionStore, SubmissionAttemptRef, SubmissionClaimRef, AgentSubmissionDurability, SubmissionSettledRecord, SubmissionSettlementObligation } from './submission-store.js';
11
+ import type { DispatchInput } from './dispatch.js';
12
+ export declare class InMemorySubmissionStore implements AgentSubmissionStore {
13
+ private nextSequence;
14
+ private readonly submissions;
15
+ private readonly dispatchReceipts;
16
+ private readonly attemptMarkers;
17
+ private readonly obligations;
18
+ getSubmission(submissionId: string): Promise<AgentSubmission | null>;
19
+ hasUnsettledSubmissions(): Promise<boolean>;
20
+ listRunnableSubmissions(): Promise<AgentSubmission[]>;
21
+ listUnreadySubmissions(): Promise<AgentSubmission[]>;
22
+ listRunningSubmissions(): Promise<AgentSubmission[]>;
23
+ listPendingSubmissionSettlements(): Promise<SubmissionSettlementObligation[]>;
24
+ replaceSubmissionAttempt(attempt: SubmissionAttemptRef, nextAttemptId: string, lease?: {
25
+ ownerId: string;
26
+ leaseExpiresAt: number;
27
+ }): Promise<AgentSubmission | null>;
28
+ admitDispatch(input: DispatchInput): Promise<AgentDispatchAdmission>;
29
+ admitDirect(input: AgentSubmissionInput): Promise<AgentSubmission>;
30
+ markSubmissionCanonicalReady(submissionId: string): Promise<AgentSubmission | null>;
31
+ claimSubmission(claim: SubmissionClaimRef): Promise<AgentSubmission | null>;
32
+ markSubmissionInputApplied(attempt: SubmissionAttemptRef, durability?: AgentSubmissionDurability): Promise<boolean>;
33
+ requestSubmissionRecovery(attempt: SubmissionAttemptRef): Promise<boolean>;
34
+ requestSessionAbort(storeSessionId: string): Promise<string[]>;
35
+ requeueSubmissionBeforeInputApplied(attempt: SubmissionAttemptRef): Promise<boolean>;
36
+ reserveSubmissionSettlement(attempt: SubmissionAttemptRef, settlement: {
37
+ recordId: string;
38
+ record: SubmissionSettledRecord;
39
+ }): Promise<SubmissionSettlementObligation | null>;
40
+ finalizeSubmissionSettlement(attempt: SubmissionAttemptRef, recordId: string): Promise<boolean>;
41
+ completeSubmission(attempt: SubmissionAttemptRef): Promise<boolean>;
42
+ failSubmission(attempt: SubmissionAttemptRef, error: unknown): Promise<boolean>;
43
+ insertAttemptMarker(attempt: SubmissionAttemptRef): Promise<void>;
44
+ deleteAttemptMarker(attempt: SubmissionAttemptRef): Promise<void>;
45
+ listAttemptMarkers(): Promise<AgentAttemptMarker[]>;
46
+ renewLeases(ownerId: string, submissionIds: string[]): Promise<void>;
47
+ listExpiredSubmissions(): Promise<AgentSubmission[]>;
48
+ private admitSubmission;
49
+ private ordered;
50
+ private hasEarlierUnsettled;
51
+ private ownedRunning;
52
+ }
53
+ //# sourceMappingURL=in-memory-submission-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"in-memory-submission-store.d.ts","sourceRoot":"","sources":["../src/in-memory-submission-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,340 @@
1
+ /**
2
+ * In-memory reference implementation of {@link AgentSubmissionStore}.
3
+ *
4
+ * Suitable for the inline runtime, dev, and tests. Single-threaded JS makes
5
+ * every compare-and-set trivially atomic, but the observable gating
6
+ * conditions — runnable-head FIFO per session, owner checks, first-terminal-
7
+ * wins, idempotent admission with payload-conflict detection — match the
8
+ * durable backends exactly so the contract suite passes unchanged.
9
+ */
10
+ import { admitSubmissionWithBackend, createDispatchAgentSubmissionInput, DURABILITY_DEFAULT_MAX_ATTEMPTS, DURABILITY_DEFAULT_TIMEOUT_MS, LEASE_DURATION_MS, } from './submission-store.js';
11
+ const UNSETTLED = ['queued', 'running', 'terminalizing'];
12
+ export class InMemorySubmissionStore {
13
+ nextSequence = 1;
14
+ submissions = new Map();
15
+ dispatchReceipts = new Map();
16
+ attemptMarkers = new Map();
17
+ obligations = new Map();
18
+ // ── Query ────────────────────────────────────────────────────────────
19
+ async getSubmission(submissionId) {
20
+ const row = this.submissions.get(submissionId);
21
+ return row ? parseStoredSubmission(row) : null;
22
+ }
23
+ async hasUnsettledSubmissions() {
24
+ for (const row of this.submissions.values()) {
25
+ if (UNSETTLED.includes(row.status))
26
+ return true;
27
+ }
28
+ return false;
29
+ }
30
+ async listRunnableSubmissions() {
31
+ return this.ordered()
32
+ .filter((row) => row.status === 'queued' &&
33
+ row.canonicalReadyAt !== null &&
34
+ !this.hasEarlierUnsettled(row))
35
+ .map(parseStoredSubmission);
36
+ }
37
+ async listUnreadySubmissions() {
38
+ return this.ordered()
39
+ .filter((row) => row.status === 'queued' && row.canonicalReadyAt === null)
40
+ .map(parseStoredSubmission);
41
+ }
42
+ async listRunningSubmissions() {
43
+ return this.ordered()
44
+ .filter((row) => row.status === 'running')
45
+ .map(parseStoredSubmission);
46
+ }
47
+ async listPendingSubmissionSettlements() {
48
+ return this.ordered()
49
+ .filter((row) => row.status === 'terminalizing')
50
+ .map((row) => {
51
+ const obligation = this.obligations.get(row.submissionId);
52
+ if (!obligation) {
53
+ throw new Error('[fabric-harness] Terminalizing submission is missing its settlement obligation.');
54
+ }
55
+ return parseObligation(obligation);
56
+ });
57
+ }
58
+ async replaceSubmissionAttempt(attempt, nextAttemptId, lease) {
59
+ const row = this.ownedRunning(attempt);
60
+ if (!row)
61
+ return null;
62
+ row.attemptId = nextAttemptId;
63
+ row.recoveryRequestedAt = undefined;
64
+ row.startedAt = Date.now();
65
+ row.attemptCount += 1;
66
+ if (lease) {
67
+ row.ownerId = lease.ownerId;
68
+ row.leaseExpiresAt = lease.leaseExpiresAt;
69
+ }
70
+ return parseStoredSubmission(row);
71
+ }
72
+ // ── Admission ────────────────────────────────────────────────────────
73
+ async admitDispatch(input) {
74
+ return this.admitSubmission(createDispatchAgentSubmissionInput(input));
75
+ }
76
+ async admitDirect(input) {
77
+ const admission = this.admitSubmission(input);
78
+ if (admission.kind !== 'submission') {
79
+ throw new Error('[fabric-harness] Internal direct admission returned an unexpected result.');
80
+ }
81
+ return admission.submission;
82
+ }
83
+ async markSubmissionCanonicalReady(submissionId) {
84
+ const row = this.submissions.get(submissionId);
85
+ if (!row || row.status !== 'queued')
86
+ return null;
87
+ row.canonicalReadyAt = row.canonicalReadyAt ?? Date.now();
88
+ return parseStoredSubmission(row);
89
+ }
90
+ // ── Submission lifecycle ─────────────────────────────────────────────
91
+ async claimSubmission(claim) {
92
+ const row = this.submissions.get(claim.submissionId);
93
+ if (!row ||
94
+ row.status !== 'queued' ||
95
+ row.canonicalReadyAt === null ||
96
+ this.hasEarlierUnsettled(row)) {
97
+ return null;
98
+ }
99
+ const now = Date.now();
100
+ row.status = 'running';
101
+ row.attemptId = claim.attemptId;
102
+ row.startedAt = now;
103
+ row.attemptCount += 1;
104
+ row.maxRetry = DURABILITY_DEFAULT_MAX_ATTEMPTS;
105
+ if (row.timeoutAt === 0)
106
+ row.timeoutAt = now + DURABILITY_DEFAULT_TIMEOUT_MS;
107
+ row.ownerId = claim.ownerId;
108
+ row.leaseExpiresAt = claim.leaseExpiresAt;
109
+ return parseStoredSubmission(row);
110
+ }
111
+ async markSubmissionInputApplied(attempt, durability) {
112
+ const row = this.ownedRunning(attempt);
113
+ if (!row)
114
+ return false;
115
+ if (row.inputAppliedAt === undefined) {
116
+ const now = Date.now();
117
+ row.inputAppliedAt = now;
118
+ row.maxRetry = durability?.maxRetry ?? DURABILITY_DEFAULT_MAX_ATTEMPTS;
119
+ row.timeoutAt = durability?.timeoutAt ?? now + DURABILITY_DEFAULT_TIMEOUT_MS;
120
+ }
121
+ return true;
122
+ }
123
+ async requestSubmissionRecovery(attempt) {
124
+ const row = this.ownedRunning(attempt);
125
+ if (!row)
126
+ return false;
127
+ row.recoveryRequestedAt = row.recoveryRequestedAt ?? Date.now();
128
+ return true;
129
+ }
130
+ async requestSessionAbort(storeSessionId) {
131
+ const now = Date.now();
132
+ const affected = [];
133
+ for (const row of this.ordered()) {
134
+ if (row.storeSessionId !== storeSessionId)
135
+ continue;
136
+ if (row.status !== 'queued' && row.status !== 'running')
137
+ continue;
138
+ row.abortRequestedAt = row.abortRequestedAt ?? now;
139
+ affected.push(row.submissionId);
140
+ }
141
+ return affected;
142
+ }
143
+ async requeueSubmissionBeforeInputApplied(attempt) {
144
+ const row = this.ownedRunning(attempt);
145
+ if (!row || row.inputAppliedAt !== undefined)
146
+ return false;
147
+ row.status = 'queued';
148
+ row.attemptId = undefined;
149
+ row.recoveryRequestedAt = undefined;
150
+ row.startedAt = undefined;
151
+ row.ownerId = undefined;
152
+ row.leaseExpiresAt = 0;
153
+ return true;
154
+ }
155
+ async reserveSubmissionSettlement(attempt, settlement) {
156
+ if (settlement.record.submissionId !== attempt.submissionId)
157
+ return null;
158
+ const recordJson = JSON.stringify(settlement.record);
159
+ const row = this.submissions.get(attempt.submissionId);
160
+ if (!row || row.kind !== 'direct')
161
+ return null;
162
+ if (row.status === 'running' && row.attemptId === attempt.attemptId) {
163
+ row.status = 'terminalizing';
164
+ const obligation = {
165
+ submissionId: row.submissionId,
166
+ storeSessionId: row.storeSessionId,
167
+ attemptId: attempt.attemptId,
168
+ recordId: settlement.recordId,
169
+ recordJson,
170
+ };
171
+ this.obligations.set(row.submissionId, obligation);
172
+ return parseObligation(obligation);
173
+ }
174
+ if (row.status === 'terminalizing' && row.attemptId === attempt.attemptId) {
175
+ const existing = this.obligations.get(row.submissionId);
176
+ if (existing &&
177
+ existing.attemptId === attempt.attemptId &&
178
+ existing.recordId === settlement.recordId &&
179
+ existing.recordJson === recordJson) {
180
+ return parseObligation(existing);
181
+ }
182
+ }
183
+ return null;
184
+ }
185
+ async finalizeSubmissionSettlement(attempt, recordId) {
186
+ const row = this.submissions.get(attempt.submissionId);
187
+ if (!row || row.status !== 'terminalizing' || row.attemptId !== attempt.attemptId)
188
+ return false;
189
+ const obligation = this.obligations.get(attempt.submissionId);
190
+ if (!obligation || obligation.recordId !== recordId)
191
+ return false;
192
+ row.status = 'settled';
193
+ row.settledAt = Date.now();
194
+ row.error = undefined;
195
+ this.obligations.delete(attempt.submissionId);
196
+ return true;
197
+ }
198
+ async completeSubmission(attempt) {
199
+ const row = this.ownedRunning(attempt);
200
+ if (!row)
201
+ return false;
202
+ row.status = 'settled';
203
+ row.settledAt = Date.now();
204
+ row.error = undefined;
205
+ return true;
206
+ }
207
+ async failSubmission(attempt, error) {
208
+ const row = this.ownedRunning(attempt);
209
+ if (!row)
210
+ return false;
211
+ row.status = 'settled';
212
+ row.settledAt = Date.now();
213
+ row.error = error instanceof Error ? error.message : String(error);
214
+ return true;
215
+ }
216
+ // ── Attempt markers ──────────────────────────────────────────────────
217
+ async insertAttemptMarker(attempt) {
218
+ const key = markerKey(attempt);
219
+ if (this.attemptMarkers.has(key))
220
+ return;
221
+ this.attemptMarkers.set(key, {
222
+ submissionId: attempt.submissionId,
223
+ attemptId: attempt.attemptId,
224
+ createdAt: Date.now(),
225
+ });
226
+ }
227
+ async deleteAttemptMarker(attempt) {
228
+ this.attemptMarkers.delete(markerKey(attempt));
229
+ }
230
+ async listAttemptMarkers() {
231
+ return [...this.attemptMarkers.values()];
232
+ }
233
+ // ── Lease management ─────────────────────────────────────────────────
234
+ async renewLeases(ownerId, submissionIds) {
235
+ if (submissionIds.length === 0)
236
+ return;
237
+ const leaseExpiresAt = Date.now() + LEASE_DURATION_MS;
238
+ for (const submissionId of submissionIds) {
239
+ const row = this.submissions.get(submissionId);
240
+ if (row && row.status === 'running' && row.ownerId === ownerId) {
241
+ row.leaseExpiresAt = leaseExpiresAt;
242
+ }
243
+ }
244
+ }
245
+ async listExpiredSubmissions() {
246
+ const now = Date.now();
247
+ return this.ordered()
248
+ .filter((row) => row.status === 'running' && row.leaseExpiresAt > 0 && row.leaseExpiresAt < now)
249
+ .map(parseStoredSubmission);
250
+ }
251
+ // ── Private ──────────────────────────────────────────────────────────
252
+ admitSubmission(input) {
253
+ const admission = admitSubmissionWithBackend(input, {
254
+ getDispatchReceipt: (submissionId) => this.dispatchReceipts.get(submissionId) ?? null,
255
+ insertIfAbsent: (row) => {
256
+ if (this.submissions.has(row.submissionId))
257
+ return;
258
+ this.submissions.set(row.submissionId, {
259
+ sequence: this.nextSequence++,
260
+ submissionId: row.submissionId,
261
+ storeSessionId: row.storeSessionId,
262
+ kind: row.kind,
263
+ payload: row.payload,
264
+ status: 'queued',
265
+ acceptedAt: row.acceptedAt,
266
+ canonicalReadyAt: null,
267
+ attemptCount: 0,
268
+ maxRetry: DURABILITY_DEFAULT_MAX_ATTEMPTS,
269
+ timeoutAt: 0,
270
+ leaseExpiresAt: 0,
271
+ });
272
+ },
273
+ getExisting: (submissionId) => this.submissions.get(submissionId),
274
+ parseSubmission: parseStoredSubmission,
275
+ });
276
+ // Unreachable: every backend callback above is synchronous, so the shared
277
+ // algorithm completes synchronously.
278
+ if (admission instanceof Promise) {
279
+ throw new Error('[fabric-harness] Internal in-memory admission backend must be synchronous.');
280
+ }
281
+ return admission;
282
+ }
283
+ ordered() {
284
+ return [...this.submissions.values()].sort((a, b) => a.sequence - b.sequence);
285
+ }
286
+ hasEarlierUnsettled(row) {
287
+ for (const candidate of this.submissions.values()) {
288
+ if (candidate.storeSessionId === row.storeSessionId &&
289
+ candidate.sequence < row.sequence &&
290
+ UNSETTLED.includes(candidate.status)) {
291
+ return true;
292
+ }
293
+ }
294
+ return false;
295
+ }
296
+ ownedRunning(attempt) {
297
+ const row = this.submissions.get(attempt.submissionId);
298
+ if (!row || row.status !== 'running' || row.attemptId !== attempt.attemptId)
299
+ return undefined;
300
+ return row;
301
+ }
302
+ }
303
+ function markerKey(attempt) {
304
+ return `${attempt.submissionId}${attempt.attemptId}`;
305
+ }
306
+ function parseObligation(obligation) {
307
+ return {
308
+ submissionId: obligation.submissionId,
309
+ storeSessionId: obligation.storeSessionId,
310
+ attemptId: obligation.attemptId,
311
+ recordId: obligation.recordId,
312
+ record: JSON.parse(obligation.recordJson),
313
+ };
314
+ }
315
+ function parseStoredSubmission(row) {
316
+ return {
317
+ sequence: row.sequence,
318
+ submissionId: row.submissionId,
319
+ storeSessionId: row.storeSessionId,
320
+ kind: row.kind,
321
+ input: JSON.parse(row.payload),
322
+ status: row.status,
323
+ acceptedAt: row.acceptedAt,
324
+ canonicalReadyAt: row.canonicalReadyAt,
325
+ ...(row.attemptId !== undefined ? { attemptId: row.attemptId } : {}),
326
+ ...(row.inputAppliedAt !== undefined ? { inputAppliedAt: row.inputAppliedAt } : {}),
327
+ ...(row.recoveryRequestedAt !== undefined
328
+ ? { recoveryRequestedAt: row.recoveryRequestedAt }
329
+ : {}),
330
+ ...(row.abortRequestedAt !== undefined ? { abortRequestedAt: row.abortRequestedAt } : {}),
331
+ ...(row.startedAt !== undefined ? { startedAt: row.startedAt } : {}),
332
+ ...(row.error !== undefined ? { error: row.error } : {}),
333
+ attemptCount: row.attemptCount,
334
+ maxRetry: row.maxRetry,
335
+ timeoutAt: row.timeoutAt,
336
+ ...(row.ownerId !== undefined ? { ownerId: row.ownerId } : {}),
337
+ leaseExpiresAt: row.leaseExpiresAt,
338
+ };
339
+ }
340
+ //# sourceMappingURL=in-memory-submission-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"in-memory-submission-store.js","sourceRoot":"","sources":["../src/in-memory-submission-store.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -13,10 +13,31 @@
13
13
  */
14
14
  export { init } from './agent.js';
15
15
  export { agentWithDefaults as agent, agentWithDefaults as job, getAgentDefinition } from './agent-definition.js';
16
- export { createAgent, getCreatedAgent, initializePersistentAgent, isCreatedAgent, parsePersistentSessionId, persistentConfigToAgentInit, persistentStoreSessionId, } from './persistent-agent.js';
16
+ export { createAgent, defineAgent, getCreatedAgent, initializePersistentAgent, isCreatedAgent, parsePersistentSessionId, persistentConfigToAgentInit, persistentStoreSessionId, } from './persistent-agent.js';
17
17
  export type { CreatedAgent, PersistentAgentConfig, PersistentAgentContext, PersistentSessionIdentity } from './persistent-agent.js';
18
18
  export { InMemoryDispatchQueue, configureDispatchRuntime, dispatch, enqueueDispatch, registerCreatedAgentName, resetDispatchRuntime, } from './dispatch.js';
19
19
  export type { AgentDispatchRequest, DispatchInput, DispatchProcessor, DispatchQueue, DispatchReceipt, NamedAgentDispatchRequest, } from './dispatch.js';
20
+ export { InvalidDeliveredMessageError, MAX_ATTACHMENT_DATA_LENGTH, deliveredSignalToEntryData, isDeliveredMessageShape, normalizeDeliveredMessage, parseDeliveredMessage, renderDeliveredMessage, } from './delivered-message.js';
21
+ export type { DeliveredAttachment, DeliveredMessage } from './delivered-message.js';
22
+ export { CONVERSATION_STREAM_DEFAULT_READ_LIMIT, CONVERSATION_STREAM_MAX_READ_LIMIT, ConversationStreamStoreError, InMemoryConversationStreamStore, StreamListenerRegistry, clampReadLimit, conversationStreamPath, formatStreamOffset, parseStreamOffset, } from './conversation-stream.js';
23
+ export type { ConversationProducerClaim, ConversationStreamAppendInput, ConversationStreamBatch, ConversationStreamIdentity, ConversationStreamMeta, ConversationStreamReadResult, ConversationStreamRecord, ConversationStreamStore, } from './conversation-stream.js';
24
+ export { ConversationProjector, withConversationProjection } from './conversation-projection.js';
25
+ export { DURABILITY_DEFAULT_MAX_ATTEMPTS, DURABILITY_DEFAULT_TIMEOUT_MS, LEASE_DURATION_MS, admitSubmissionWithBackend, createDirectAgentSubmissionInput, createDispatchAgentSubmissionInput, isSubmissionPayload, jsonDeepEqual, submissionStoreSessionId, } from './submission-store.js';
26
+ export type { AgentAttemptMarker, AgentDispatchAdmission, AgentDispatchReceipt, AgentSubmission, AgentSubmissionInput, AgentSubmissionStatus, AgentSubmissionStore, SubmissionAdmissionBackend, SubmissionAdmissionRow, SubmissionAttemptRef, SubmissionClaimRef, AgentSubmissionDurability, SubmissionInsertRow, SubmissionPayloadContext, SubmissionSettledRecord, SubmissionSettlementObligation, } from './submission-store.js';
27
+ export { InMemorySubmissionStore } from './in-memory-submission-store.js';
28
+ export { AttachmentStoreError, InMemoryAttachmentStore, attachmentDigest, createAttachmentRef, materializeMessageAttachments, messageHasDataAttachments, verifyAttachmentBytes, } from './attachment-store.js';
29
+ export type { AttachmentPutInput, AttachmentRef, AttachmentStore, StoredAttachment, } from './attachment-store.js';
30
+ export type { DeliveredAttachmentRef } from './delivered-message.js';
31
+ export { classifySubmissionState, findSubmissionInputIndex, hasSubmissionSettledEntry, submissionSettlementEntryId, } from './submission-state.js';
32
+ export type { SubmissionInspection } from './submission-state.js';
33
+ export { SubmissionAbortedError, SubmissionInterruptedError, SubmissionRetryExhaustedError, SubmissionTimeoutError, createSubmissionRunner, submissionSessionKey, } from './submission-runner.js';
34
+ export type { InterruptedToolCallRef, SubmissionExecuteOptions, SubmissionExecutor, SubmissionInterruption, SubmissionRunner, SubmissionRunnerOptions, SubmissionSettlement, } from './submission-runner.js';
35
+ export { currentSubmissionContext, runWithSubmissionContext } from './submission-context.js';
36
+ export type { SubmissionContext } from './submission-context.js';
37
+ export { combineSubmissionTelemetrySinks, emitSubmissionTelemetry } from './submission-telemetry.js';
38
+ export type { SubmissionTelemetryEvent, SubmissionTelemetrySink } from './submission-telemetry.js';
39
+ export { ActionError, actionAsTool, defineAction, isActionDefinition, runAction } from './action.js';
40
+ export type { ActionContext, ActionDefinition, ActionHost, ActionOptions } from './action.js';
20
41
  export { defineChannel, hmacSha256, verifyHmacSha256, bytesToHex, hexToBytes, conversationKey, parseConversationKey, readRequestBody, readJsonBody } from './channel.js';
21
42
  export type { Channel, ChannelRoute, ChannelContext, ChannelDispatch, ChannelDispatchRequest, ParsedConversationKey, RequestBody } from './channel.js';
22
43
  export { resolveRuntimeMode, isStatelessRuntime, isInMemoryStore } from './runtime-mode.js';
@@ -24,7 +45,7 @@ export { evaluateContextBudget, estimateModelMessagesTokens, estimateSessionEntr
24
45
  export { createFabricContext } from './context.js';
25
46
  export { FabricError, isFabricError, toFabricError } from './error.js';
26
47
  export { redactError, redactJson, redactText } from './redaction.js';
27
- export { DEFAULT_HEADLESS_PREAMBLE, SessionHistory, buildModelMessagesFromHistory } from './history.js';
48
+ export { DEFAULT_HEADLESS_PREAMBLE, SessionHistory, buildModelMessagesFromHistory, findTrailingDanglingToolCalls, findTrailingUnfinishedTasks } from './history.js';
28
49
  export { NativeLoopRuntime, defaultLoopRuntime } from './loop.js';
29
50
  export { InMemoryStreamChunkStore, StreamChunkWriter, reconstructInterruptedStream } from './stream-chunks.js';
30
51
  export { connectMcpServer, createMcpTools } from './mcp.js';
@@ -113,6 +134,6 @@ export { generateAffinityKey, isValidAffinityKey } from './session.js';
113
134
  export type { FabricSession, MountResult, SandboxFork } from './session.js';
114
135
  export { pruneSnapshots } from './sandbox.js';
115
136
  export type { DockerSandboxOptions, FileStat, LocalSandboxOptions, RemoteSandboxApi, RemoteSandboxOptions, SandboxAdapterDescriptor, SandboxCapabilities, SandboxEnv, SandboxExecOptions, SandboxFactory, SandboxFactoryOptions, SandboxSnapshot, SnapshotPruneOptions, SnapshotPruneResult, } from './sandbox.js';
116
- export type { ActorIdentity, AgentInit, ApprovalCallback, ApprovalDecision, ApprovalOptions, ApprovalRequest, ApprovalResponse, ApprovalState, ApprovalStateStatus, ApprovalUnavailableStrategy, ApprovalVote, ArtifactCreateOptions, ArtifactRef, AutonomyMode, AutonomyOptions, CheckpointCreateOptions, CheckpointRestoreOptions, CheckpointResult, CompactionOptions, CompactionResult, FabricActor, FabricAgent, FabricContext, FabricEvent, FabricEventCallback, FabricEventType, FabricRuntime, DurableSessionRuntime, DurableSessionRuntimeFactory, JsonObject, JsonPrimitive, JsonValue, CredentialMissingStrategy, JournalCallbacks, MissingInputStrategy, PromptOptions, ResultExtractionOptions, ResultValidator, SubmissionDurability, TurnJournalState, Role, SandboxBackend, SessionData, SessionEntry, SessionEntryType, SessionOptions, SessionStore, StreamChunkStore, ShellOptions, ShellResult, Skill, SkillOptions, TaskOptions, } from './types.js';
137
+ export type { ActorIdentity, AgentInit, ApprovalCallback, ApprovalDecision, ApprovalOptions, ApprovalRequest, ApprovalResponse, ApprovalState, ApprovalStateStatus, ApprovalUnavailableStrategy, ApprovalVote, ArtifactCreateOptions, ArtifactRef, AutonomyMode, AutonomyOptions, CheckpointCreateOptions, CheckpointRestoreOptions, CheckpointResult, CompactionOptions, CompactionResult, FabricActor, FabricPrincipal, FabricAgent, FabricContext, FabricEvent, FabricEventCallback, FabricEventType, FabricRuntime, DurableSessionRuntime, DurableSessionRuntimeFactory, JsonObject, JsonPrimitive, JsonValue, CredentialMissingStrategy, JournalCallbacks, MissingInputStrategy, PromptOptions, ResultExtractionOptions, ResultValidator, SubmissionDurability, TurnJournalState, Role, SandboxBackend, SessionData, SessionEntry, SessionEntryType, SessionOptions, SessionStore, StreamChunkStore, ShellOptions, ShellResult, Skill, SkillOptions, TaskOptions, } from './types.js';
117
138
  export type { ActivateSkillInput, BashInput, BuiltinFileTool, BuiltinTool, Command, CommandEnvValue, CommandToolInput, CommandToolOptions, EditInput, ExistsInput, GlobInput, GrepInput, GrepMatch, MkdirInput, ReadFileBufferInput, ReadFileInput, ReaddirInput, ResultOutcome, ResultToolBundle, RmInput, SecretRef, StatInput, ToolCall, ToolCallResult, ToolContext, ToolDef, ToolEffect, WriteFileInput, } from './tools.js';
118
139
  //# sourceMappingURL=index.d.ts.map