@agentplat/runtime 0.3.0-beta.2 → 0.3.0-beta.4

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 (42) hide show
  1. package/README.md +63 -0
  2. package/dist/adapter-bridge.d.ts +14 -0
  3. package/dist/adapter-bridge.d.ts.map +1 -0
  4. package/dist/adapter-bridge.js +267 -0
  5. package/dist/adapter-bridge.js.map +1 -0
  6. package/dist/adapter-contracts.d.ts +351 -0
  7. package/dist/adapter-contracts.d.ts.map +1 -0
  8. package/dist/adapter-contracts.js +2 -0
  9. package/dist/adapter-contracts.js.map +1 -0
  10. package/dist/adapter-errors.d.ts +6 -0
  11. package/dist/adapter-errors.d.ts.map +1 -0
  12. package/dist/adapter-errors.js +9 -0
  13. package/dist/adapter-errors.js.map +1 -0
  14. package/dist/adapter-registry.d.ts +25 -0
  15. package/dist/adapter-registry.d.ts.map +1 -0
  16. package/dist/adapter-registry.js +116 -0
  17. package/dist/adapter-registry.js.map +1 -0
  18. package/dist/adapter-runtime.d.ts +41 -0
  19. package/dist/adapter-runtime.d.ts.map +1 -0
  20. package/dist/adapter-runtime.js +591 -0
  21. package/dist/adapter-runtime.js.map +1 -0
  22. package/dist/adapter-store.d.ts +9 -0
  23. package/dist/adapter-store.d.ts.map +1 -0
  24. package/dist/adapter-store.js +26 -0
  25. package/dist/adapter-store.js.map +1 -0
  26. package/dist/adapter-validation.d.ts +39 -0
  27. package/dist/adapter-validation.d.ts.map +1 -0
  28. package/dist/adapter-validation.js +853 -0
  29. package/dist/adapter-validation.js.map +1 -0
  30. package/dist/adapter.d.ts +9 -0
  31. package/dist/adapter.d.ts.map +1 -0
  32. package/dist/adapter.js +9 -0
  33. package/dist/adapter.js.map +1 -0
  34. package/dist/cognitive-adapter.d.ts +259 -0
  35. package/dist/cognitive-adapter.d.ts.map +1 -0
  36. package/dist/cognitive-adapter.js +813 -0
  37. package/dist/cognitive-adapter.js.map +1 -0
  38. package/dist/index.d.ts +1 -0
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +1 -0
  41. package/dist/index.js.map +1 -1
  42. package/package.json +13 -5
@@ -0,0 +1,591 @@
1
+ import { PortableAgentErrorV1 } from "./adapter-errors.js";
2
+ import { InMemoryPortableAgentStateStoreV1 } from "./adapter-store.js";
3
+ import { assertStoredPortableSessionV1, cloneAndFreeze, identifier, jsonByteLength, normalizeAdapterRequirementsV1, normalizeCheckpointV1, normalizeCheckpointTransferV1, normalizeControlDecisionV1, normalizeJson, normalizeMetadata, normalizeRoleBindingV1, normalizeStepRequestV1, normalizeStepResultV1, } from "./adapter-validation.js";
4
+ const DEFAULT_MAXIMUM_SNAPSHOT_BYTES = 16 * 1_024 * 1_024;
5
+ /**
6
+ * Stateful, provider-neutral execution boundary for heterogeneous local agents.
7
+ * Outputs and action proposals remain withheld until fail-closed controls allow
8
+ * every applicable release point.
9
+ */
10
+ export class PortableAgentSessionRuntimeV1 {
11
+ registry;
12
+ control;
13
+ stateStore;
14
+ maximumSessionSnapshotBytes;
15
+ clock;
16
+ active = new Map();
17
+ constructor(options) {
18
+ if (!options || typeof options !== "object") {
19
+ throw validation("portable agent runtime options are required");
20
+ }
21
+ if (!options.registry ||
22
+ typeof options.registry.resolve !== "function" ||
23
+ typeof options.registry.negotiate !== "function") {
24
+ throw validation("portable agent adapter registry is required");
25
+ }
26
+ if (!options.control || typeof options.control.evaluate !== "function") {
27
+ throw validation("portable agent control is required");
28
+ }
29
+ identifier(options.control.controlId, "control.controlId");
30
+ identifier(options.control.implementationId, "control.implementationId");
31
+ if (!Number.isSafeInteger(options.control.controlVersion) ||
32
+ options.control.controlVersion < 1) {
33
+ throw validation("control.controlVersion must be a positive integer");
34
+ }
35
+ const maximum = options.maximumSessionSnapshotBytes ?? DEFAULT_MAXIMUM_SNAPSHOT_BYTES;
36
+ if (!Number.isSafeInteger(maximum) ||
37
+ maximum < 1_048_576 ||
38
+ maximum > 67_108_864) {
39
+ throw validation("maximumSessionSnapshotBytes must be from 1048576 through 67108864");
40
+ }
41
+ this.registry = options.registry;
42
+ this.control = options.control;
43
+ this.stateStore =
44
+ options.stateStore ?? new InMemoryPortableAgentStateStoreV1();
45
+ this.maximumSessionSnapshotBytes = maximum;
46
+ this.clock = options.clock ?? (() => new Date());
47
+ }
48
+ async createSession(input) {
49
+ if (!input || typeof input !== "object") {
50
+ throw validation("portable agent session input is required");
51
+ }
52
+ const sessionId = identifier(input.sessionId, "sessionId");
53
+ const tenantId = identifier(input.tenant?.tenantId, "tenant.tenantId");
54
+ const agentId = identifier(input.agentId, "agentId");
55
+ const adapterId = identifier(input.adapterId, "adapterId");
56
+ const adapterVersion = boundedText(input.adapterVersion, "adapterVersion", 128);
57
+ const role = normalizeRoleBindingV1(input.role);
58
+ if (role.roleRevision !== 1 || role.predecessorRoleBindingId !== null) {
59
+ throw validation("a new session must start with role revision 1");
60
+ }
61
+ const requirements = normalizeAdapterRequirementsV1(input.requirements);
62
+ const bound = this.registry.resolve({ adapterId, adapterVersion });
63
+ if (!bound) {
64
+ throw new PortableAgentErrorV1("NOT_FOUND", `adapter "${adapterId}" version "${adapterVersion}" is not registered`);
65
+ }
66
+ const negotiation = this.registry.negotiate(bound.manifest, requirements);
67
+ if (!negotiation.accepted) {
68
+ throw new PortableAgentErrorV1("ADAPTER_INCOMPATIBLE", `adapter is missing required capabilities: ${negotiation.missing.join(", ")}`);
69
+ }
70
+ const now = this.now();
71
+ const snapshot = {
72
+ schemaVersion: 1,
73
+ sessionId,
74
+ tenantId,
75
+ agentId,
76
+ objectiveId: role.objectiveId,
77
+ manifest: bound.manifest,
78
+ controlBinding: this.controlBinding(),
79
+ role,
80
+ status: "active",
81
+ revision: 0,
82
+ nextStepSequence: 1,
83
+ stepRecords: [],
84
+ checkpoint: null,
85
+ metadata: normalizeMetadata(input.metadata ?? {}, "session.metadata"),
86
+ createdAt: now,
87
+ updatedAt: now,
88
+ closedAt: null,
89
+ };
90
+ const normalized = this.assertSnapshotSize(snapshot);
91
+ await this.stateStore.save(normalized, null);
92
+ return cloneAndFreeze(normalized);
93
+ }
94
+ async getSession(sessionIdInput) {
95
+ const sessionId = identifier(sessionIdInput, "sessionId");
96
+ const snapshot = await this.stateStore.load(sessionId);
97
+ if (snapshot === undefined)
98
+ return undefined;
99
+ return this.assertBoundSnapshot(snapshot, sessionId).snapshot;
100
+ }
101
+ async exportCheckpoint(sessionIdInput, options = {}) {
102
+ const sessionId = identifier(sessionIdInput, "sessionId");
103
+ return this.exclusive(sessionId, async (operationSignal) => {
104
+ const { snapshot, adapter } = await this.loadBound(sessionId);
105
+ if (!snapshot.checkpoint) {
106
+ throw new PortableAgentErrorV1("STATE_INVALID", "session has no checkpoint to export");
107
+ }
108
+ if (!adapter.exportCheckpoint || !adapter.importCheckpoint) {
109
+ throw new PortableAgentErrorV1("ADAPTER_INCOMPATIBLE", "session adapter does not support checkpoint transfer");
110
+ }
111
+ const exported = await adapter.exportCheckpoint({
112
+ schemaVersion: 1,
113
+ tenantId: snapshot.tenantId,
114
+ objectiveId: snapshot.objectiveId,
115
+ sessionId,
116
+ agentId: snapshot.agentId,
117
+ role: snapshot.role,
118
+ checkpoint: snapshot.checkpoint,
119
+ }, this.adapterContext(snapshot, combineSignals(operationSignal, options.signal), options));
120
+ if (!exported ||
121
+ typeof exported !== "object" ||
122
+ Array.isArray(exported) ||
123
+ Object.keys(exported).sort().join(",") !==
124
+ "contentClass,schemaVersion,state" ||
125
+ exported.schemaVersion !== 1 ||
126
+ exported.contentClass !== "portable_application_state") {
127
+ throw new PortableAgentErrorV1("STATE_INVALID", "adapter returned an invalid checkpoint transfer");
128
+ }
129
+ return normalizeCheckpointTransferV1({
130
+ schemaVersion: 1,
131
+ contentClass: "portable_application_state",
132
+ tenantId: snapshot.tenantId,
133
+ objectiveId: snapshot.objectiveId,
134
+ sourceSessionId: sessionId,
135
+ sourceAgentId: snapshot.agentId,
136
+ sourceSessionRevision: snapshot.revision,
137
+ roleBindingId: snapshot.role.roleBindingId,
138
+ adapterId: snapshot.manifest.adapterId,
139
+ adapterVersion: snapshot.manifest.adapterVersion,
140
+ implementationId: snapshot.manifest.implementationId,
141
+ checkpoint: snapshot.checkpoint,
142
+ state: normalizeJson(exported.state, "exported checkpoint state"),
143
+ exportedAt: this.now(),
144
+ }, { maximumStateBytes: this.maximumSessionSnapshotBytes });
145
+ });
146
+ }
147
+ async importCheckpoint(sessionIdInput, transferInput, expectedRevision, options = {}) {
148
+ const sessionId = identifier(sessionIdInput, "sessionId");
149
+ const transfer = normalizeCheckpointTransferV1(transferInput, {
150
+ maximumStateBytes: this.maximumSessionSnapshotBytes,
151
+ });
152
+ return this.exclusive(sessionId, async (operationSignal) => {
153
+ const { snapshot, adapter } = await this.loadBound(sessionId);
154
+ if (snapshot.tenantId !== transfer.tenantId ||
155
+ snapshot.objectiveId !== transfer.objectiveId ||
156
+ snapshot.manifest.adapterId !== transfer.adapterId ||
157
+ snapshot.manifest.adapterVersion !== transfer.adapterVersion ||
158
+ snapshot.manifest.implementationId !== transfer.implementationId) {
159
+ throw new PortableAgentErrorV1("ADAPTER_INCOMPATIBLE", "checkpoint transfer does not match the target session");
160
+ }
161
+ // A successfully imported transfer is safe to retry even when the caller
162
+ // still holds the revision that preceded the first import.
163
+ if (snapshot.checkpoint?.stateDigest === transfer.checkpoint.stateDigest &&
164
+ snapshot.checkpoint.adapterId === transfer.adapterId &&
165
+ snapshot.checkpoint.adapterVersion === transfer.adapterVersion &&
166
+ snapshot.checkpoint.implementationId === transfer.implementationId) {
167
+ return snapshot;
168
+ }
169
+ this.requireRevision(snapshot, expectedRevision);
170
+ if (!adapter.importCheckpoint || !adapter.restore) {
171
+ throw new PortableAgentErrorV1("ADAPTER_INCOMPATIBLE", "target adapter cannot import and restore checkpoints");
172
+ }
173
+ if (snapshot.status !== "active" && snapshot.status !== "paused") {
174
+ throw new PortableAgentErrorV1("SESSION_NOT_ACTIVE", "target session cannot import a checkpoint");
175
+ }
176
+ if (snapshot.checkpoint) {
177
+ throw new PortableAgentErrorV1("STATE_CONFLICT", "target session already contains another checkpoint");
178
+ }
179
+ if (snapshot.nextStepSequence !== 1 ||
180
+ snapshot.stepRecords.length !== 0) {
181
+ throw new PortableAgentErrorV1("STATE_CONFLICT", "checkpoint handoff requires an unused target session");
182
+ }
183
+ const imported = normalizeCheckpointV1(await adapter.importCheckpoint({
184
+ schemaVersion: 1,
185
+ tenantId: snapshot.tenantId,
186
+ objectiveId: snapshot.objectiveId,
187
+ targetSessionId: sessionId,
188
+ targetAgentId: snapshot.agentId,
189
+ targetRole: snapshot.role,
190
+ transfer,
191
+ }, this.adapterContext(snapshot, combineSignals(operationSignal, options.signal), options)), {
192
+ sessionId,
193
+ manifest: snapshot.manifest,
194
+ maximumSequence: 0,
195
+ });
196
+ if (imported.stateDigest !== transfer.checkpoint.stateDigest) {
197
+ throw new PortableAgentErrorV1("STATE_INVALID", "imported checkpoint digest does not match the transfer");
198
+ }
199
+ return this.commit(snapshot, {
200
+ checkpoint: imported,
201
+ status: "paused",
202
+ });
203
+ });
204
+ }
205
+ async updateRole(sessionIdInput, roleInput, expectedRevision) {
206
+ const sessionId = identifier(sessionIdInput, "sessionId");
207
+ return this.exclusive(sessionId, async () => {
208
+ const { snapshot } = await this.loadBound(sessionId);
209
+ this.requireRevision(snapshot, expectedRevision);
210
+ if (snapshot.status !== "active" && snapshot.status !== "paused") {
211
+ throw new PortableAgentErrorV1("SESSION_NOT_ACTIVE", `session "${sessionId}" cannot accept a new role`);
212
+ }
213
+ const role = normalizeRoleBindingV1(roleInput);
214
+ if (role.objectiveId !== snapshot.objectiveId ||
215
+ role.roleRevision !== snapshot.role.roleRevision + 1 ||
216
+ role.predecessorRoleBindingId !== snapshot.role.roleBindingId) {
217
+ throw validation("role update does not extend the current role binding");
218
+ }
219
+ return this.commit(snapshot, { role });
220
+ });
221
+ }
222
+ async step(sessionIdInput, requestInput, options = {}) {
223
+ const sessionId = identifier(sessionIdInput, "sessionId");
224
+ return this.exclusive(sessionId, async (operationSignal) => {
225
+ const { snapshot, adapter } = await this.loadBound(sessionId);
226
+ const request = normalizeStepRequestV1(requestInput, snapshot.manifest);
227
+ const existing = snapshot.stepRecords.find(({ stepId }) => stepId === request.stepId);
228
+ if (existing) {
229
+ if (!sameJson(existing.request, request)) {
230
+ throw new PortableAgentErrorV1("CONFLICT", `step "${request.stepId}" was already used with different input`);
231
+ }
232
+ return Object.freeze({
233
+ session: cloneAndFreeze(snapshot),
234
+ record: cloneAndFreeze(existing),
235
+ });
236
+ }
237
+ this.requireRevision(snapshot, request.expectedSessionRevision);
238
+ if (snapshot.status !== "active") {
239
+ throw new PortableAgentErrorV1("SESSION_NOT_ACTIVE", `session "${sessionId}" is not active`);
240
+ }
241
+ if (snapshot.nextStepSequence > snapshot.manifest.maximumStepsPerSession) {
242
+ throw validation("session step limit has been reached");
243
+ }
244
+ if (request.logicalTimeMs < snapshot.role.validFromLogicalMs ||
245
+ request.logicalTimeMs >= snapshot.role.validUntilLogicalMs) {
246
+ throw validation("the current role is not valid at the step logical time");
247
+ }
248
+ const signal = combineSignals(operationSignal, options.signal);
249
+ const startedAt = this.now();
250
+ const result = await this.executeStep(snapshot, adapter, request, signal, options);
251
+ const completedAt = this.now();
252
+ const record = cloneAndFreeze({
253
+ schemaVersion: 1,
254
+ stepId: request.stepId,
255
+ stepSequence: snapshot.nextStepSequence,
256
+ roleBindingId: snapshot.role.roleBindingId,
257
+ roleRevision: snapshot.role.roleRevision,
258
+ interactionMode: request.interactionMode,
259
+ status: result.status,
260
+ request,
261
+ result,
262
+ startedAt,
263
+ completedAt,
264
+ });
265
+ const session = await this.commit(snapshot, {
266
+ status: result.status === "paused" ? "paused" : "active",
267
+ nextStepSequence: snapshot.nextStepSequence + 1,
268
+ stepRecords: [...snapshot.stepRecords, record],
269
+ checkpoint: result.checkpoint ?? snapshot.checkpoint,
270
+ });
271
+ return Object.freeze({ session, record });
272
+ });
273
+ }
274
+ async pause(sessionIdInput, options = {}) {
275
+ const sessionId = identifier(sessionIdInput, "sessionId");
276
+ const running = this.active.get(sessionId);
277
+ if (running) {
278
+ running.controller.abort("session_paused");
279
+ await running.completed;
280
+ }
281
+ return this.exclusive(sessionId, async (operationSignal) => {
282
+ const { snapshot, adapter } = await this.loadBound(sessionId);
283
+ if (snapshot.status === "paused")
284
+ return snapshot;
285
+ if (snapshot.status !== "active") {
286
+ throw new PortableAgentErrorV1("SESSION_NOT_ACTIVE", `session "${sessionId}" cannot be paused`);
287
+ }
288
+ let checkpoint = snapshot.checkpoint;
289
+ if (snapshot.manifest.supportsCheckpoint) {
290
+ checkpoint = await this.createCheckpoint(snapshot, adapter, combineSignals(operationSignal, options.signal), options);
291
+ }
292
+ return this.commit(snapshot, { status: "paused", checkpoint });
293
+ });
294
+ }
295
+ async resume(sessionIdInput, options = {}) {
296
+ const sessionId = identifier(sessionIdInput, "sessionId");
297
+ return this.exclusive(sessionId, async (operationSignal) => {
298
+ const { snapshot, adapter } = await this.loadBound(sessionId);
299
+ if (snapshot.status !== "paused") {
300
+ throw new PortableAgentErrorV1("SESSION_NOT_ACTIVE", `session "${sessionId}" is not paused`);
301
+ }
302
+ if (snapshot.checkpoint !== null) {
303
+ if (!snapshot.manifest.supportsRestore || !adapter.restore) {
304
+ throw new PortableAgentErrorV1("STATE_INVALID", "session checkpoint cannot be restored by its bound adapter");
305
+ }
306
+ await adapter.restore({
307
+ schemaVersion: 1,
308
+ sessionId,
309
+ tenantId: snapshot.tenantId,
310
+ agentId: snapshot.agentId,
311
+ checkpoint: snapshot.checkpoint,
312
+ }, this.adapterContext(snapshot, combineSignals(operationSignal, options.signal), options));
313
+ }
314
+ return this.commit(snapshot, { status: "active" });
315
+ });
316
+ }
317
+ async close(sessionIdInput) {
318
+ const sessionId = identifier(sessionIdInput, "sessionId");
319
+ const running = this.active.get(sessionId);
320
+ if (running) {
321
+ running.controller.abort("session_closed");
322
+ await running.completed;
323
+ }
324
+ return this.exclusive(sessionId, async () => {
325
+ const { snapshot } = await this.loadBound(sessionId);
326
+ if (snapshot.status === "closed")
327
+ return snapshot;
328
+ return this.commit(snapshot, { status: "closed", closedAt: this.now() });
329
+ });
330
+ }
331
+ async executeStep(snapshot, adapter, request, signal, options) {
332
+ const preStep = await this.evaluateControl("pre_step", 0, snapshot, request, null, null);
333
+ if (preStep.disposition !== "allow") {
334
+ return this.refusedResult(snapshot, request, preStep.reasonCode);
335
+ }
336
+ if (signal.aborted) {
337
+ return this.pausedResult(snapshot, request, "execution_aborted");
338
+ }
339
+ let result;
340
+ try {
341
+ result = normalizeStepResultV1(await adapter.step({
342
+ schemaVersion: 1,
343
+ sessionId: snapshot.sessionId,
344
+ tenantId: snapshot.tenantId,
345
+ agentId: snapshot.agentId,
346
+ stepSequence: snapshot.nextStepSequence,
347
+ role: snapshot.role,
348
+ request,
349
+ previousCheckpoint: snapshot.checkpoint,
350
+ }, this.adapterContext(snapshot, signal, options, request.stepId)), {
351
+ sessionId: snapshot.sessionId,
352
+ stepId: request.stepId,
353
+ stepSequence: snapshot.nextStepSequence,
354
+ manifest: snapshot.manifest,
355
+ });
356
+ }
357
+ catch {
358
+ return signal.aborted
359
+ ? this.pausedResult(snapshot, request, "execution_aborted")
360
+ : this.failedResult(snapshot, request, "adapter_error");
361
+ }
362
+ if (result.status !== "completed") {
363
+ return cloneAndFreeze({ ...result, outputs: [], actionProposals: [] });
364
+ }
365
+ for (const [outputIndex, output] of result.outputs.entries()) {
366
+ const decision = await this.evaluateControl("post_output", outputIndex, snapshot, request, output, null);
367
+ if (decision.disposition !== "allow") {
368
+ return this.refusedResult(snapshot, request, decision.reasonCode);
369
+ }
370
+ }
371
+ for (const [actionIndex, action] of result.actionProposals.entries()) {
372
+ const decision = await this.evaluateControl("pre_action", actionIndex, snapshot, request, null, action);
373
+ if (decision.disposition !== "allow") {
374
+ return this.refusedResult(snapshot, request, decision.reasonCode);
375
+ }
376
+ }
377
+ return result;
378
+ }
379
+ async evaluateControl(checkpoint, checkpointItemIndex, snapshot, request, output, actionProposal) {
380
+ try {
381
+ return normalizeControlDecisionV1(await this.control.evaluate({
382
+ schemaVersion: 1,
383
+ checkpoint,
384
+ stepSequence: snapshot.nextStepSequence,
385
+ checkpointItemIndex,
386
+ manifest: snapshot.manifest,
387
+ sessionId: snapshot.sessionId,
388
+ tenantId: snapshot.tenantId,
389
+ agentId: snapshot.agentId,
390
+ role: snapshot.role,
391
+ request,
392
+ output,
393
+ actionProposal,
394
+ }));
395
+ }
396
+ catch {
397
+ return Object.freeze({
398
+ disposition: "deny",
399
+ reasonCode: "control_unavailable",
400
+ });
401
+ }
402
+ }
403
+ refusedResult(snapshot, request, reasonCode) {
404
+ return cloneAndFreeze({
405
+ schemaVersion: 1,
406
+ sessionId: snapshot.sessionId,
407
+ stepId: request.stepId,
408
+ stepSequence: snapshot.nextStepSequence,
409
+ status: "refused",
410
+ outputs: [],
411
+ actionProposals: [],
412
+ checkpoint: null,
413
+ reasonCode: boundedText(reasonCode, "control reasonCode", 256),
414
+ metadata: {},
415
+ });
416
+ }
417
+ pausedResult(snapshot, request, reasonCode) {
418
+ return cloneAndFreeze({
419
+ schemaVersion: 1,
420
+ sessionId: snapshot.sessionId,
421
+ stepId: request.stepId,
422
+ stepSequence: snapshot.nextStepSequence,
423
+ status: "paused",
424
+ outputs: [],
425
+ actionProposals: [],
426
+ checkpoint: null,
427
+ reasonCode,
428
+ metadata: {},
429
+ });
430
+ }
431
+ failedResult(snapshot, request, reasonCode) {
432
+ return cloneAndFreeze({
433
+ schemaVersion: 1,
434
+ sessionId: snapshot.sessionId,
435
+ stepId: request.stepId,
436
+ stepSequence: snapshot.nextStepSequence,
437
+ status: "failed",
438
+ outputs: [],
439
+ actionProposals: [],
440
+ checkpoint: null,
441
+ reasonCode,
442
+ metadata: {},
443
+ });
444
+ }
445
+ async createCheckpoint(snapshot, adapter, signal, options) {
446
+ if (!adapter.checkpoint) {
447
+ throw new PortableAgentErrorV1("STATE_INVALID", "adapter checkpoint implementation is missing");
448
+ }
449
+ return normalizeCheckpointV1(await adapter.checkpoint({
450
+ schemaVersion: 1,
451
+ sessionId: snapshot.sessionId,
452
+ tenantId: snapshot.tenantId,
453
+ agentId: snapshot.agentId,
454
+ throughStepSequence: snapshot.nextStepSequence - 1,
455
+ previousCheckpoint: snapshot.checkpoint,
456
+ }, this.adapterContext(snapshot, signal, options)), {
457
+ sessionId: snapshot.sessionId,
458
+ manifest: snapshot.manifest,
459
+ maximumSequence: snapshot.nextStepSequence - 1,
460
+ });
461
+ }
462
+ adapterContext(snapshot, signal, options, stepId) {
463
+ const tenant = options.tenant === undefined
464
+ ? { tenantId: snapshot.tenantId }
465
+ : cloneAndFreeze(options.tenant);
466
+ if (tenant.tenantId !== snapshot.tenantId) {
467
+ throw validation("step tenant context does not match the session");
468
+ }
469
+ return Object.freeze({
470
+ tenant,
471
+ agentId: snapshot.agentId,
472
+ sessionId: snapshot.sessionId,
473
+ ...(stepId === undefined ? {} : { stepId }),
474
+ signal,
475
+ ...(options.credentials === undefined
476
+ ? {}
477
+ : { credentials: Object.freeze({ ...options.credentials }) }),
478
+ ...(options.metadata === undefined
479
+ ? {}
480
+ : { metadata: normalizeMetadata(options.metadata, "step.metadata") }),
481
+ });
482
+ }
483
+ async loadBound(sessionId) {
484
+ const snapshot = await this.stateStore.load(sessionId);
485
+ if (!snapshot) {
486
+ throw new PortableAgentErrorV1("NOT_FOUND", `session "${sessionId}" was not found`);
487
+ }
488
+ return this.assertBoundSnapshot(snapshot, sessionId);
489
+ }
490
+ assertBoundSnapshot(snapshotInput, sessionId) {
491
+ const registered = this.registry.resolve({
492
+ adapterId: snapshotInput.manifest.adapterId,
493
+ adapterVersion: snapshotInput.manifest.adapterVersion,
494
+ });
495
+ if (!registered) {
496
+ throw new PortableAgentErrorV1("STATE_INVALID", "session adapter is no longer registered");
497
+ }
498
+ const snapshot = assertStoredPortableSessionV1(snapshotInput, {
499
+ sessionId,
500
+ control: this.controlBinding(),
501
+ manifest: registered.manifest,
502
+ });
503
+ return { snapshot, adapter: registered.adapter };
504
+ }
505
+ async commit(snapshot, changes) {
506
+ const updated = this.assertSnapshotSize({
507
+ ...snapshot,
508
+ ...changes,
509
+ schemaVersion: 1,
510
+ sessionId: snapshot.sessionId,
511
+ revision: snapshot.revision + 1,
512
+ updatedAt: this.now(),
513
+ });
514
+ await this.stateStore.save(updated, snapshot.revision);
515
+ return cloneAndFreeze(updated);
516
+ }
517
+ assertSnapshotSize(snapshot) {
518
+ const normalized = assertStoredPortableSessionV1(snapshot, {
519
+ sessionId: snapshot.sessionId,
520
+ control: this.controlBinding(),
521
+ manifest: snapshot.manifest,
522
+ });
523
+ if (jsonByteLength(normalizeJson(normalized, "session snapshot")) > this.maximumSessionSnapshotBytes) {
524
+ throw validation("session snapshot exceeds its byte limit");
525
+ }
526
+ return normalized;
527
+ }
528
+ requireRevision(snapshot, expectedRevision) {
529
+ if (!Number.isSafeInteger(expectedRevision) ||
530
+ expectedRevision < 0 ||
531
+ snapshot.revision !== expectedRevision) {
532
+ throw new PortableAgentErrorV1("STATE_CONFLICT", `session "${snapshot.sessionId}" revision conflict`);
533
+ }
534
+ }
535
+ controlBinding() {
536
+ return Object.freeze({
537
+ controlId: this.control.controlId,
538
+ controlVersion: this.control.controlVersion,
539
+ implementationId: this.control.implementationId,
540
+ });
541
+ }
542
+ now() {
543
+ const value = this.clock();
544
+ if (!(value instanceof Date) || !Number.isFinite(value.valueOf())) {
545
+ throw validation("clock must return a valid Date");
546
+ }
547
+ return value.toISOString();
548
+ }
549
+ async exclusive(sessionId, operation) {
550
+ if (this.active.has(sessionId)) {
551
+ throw new PortableAgentErrorV1("SESSION_ACTIVE", `session "${sessionId}" already has an active operation`);
552
+ }
553
+ const controller = new AbortController();
554
+ let complete;
555
+ const completed = new Promise((resolve) => {
556
+ complete = resolve;
557
+ });
558
+ const active = { controller, completed, complete };
559
+ this.active.set(sessionId, active);
560
+ try {
561
+ return await operation(controller.signal);
562
+ }
563
+ finally {
564
+ if (this.active.get(sessionId) === active)
565
+ this.active.delete(sessionId);
566
+ complete();
567
+ }
568
+ }
569
+ }
570
+ function combineSignals(operationSignal, callerSignal) {
571
+ return callerSignal === undefined
572
+ ? operationSignal
573
+ : AbortSignal.any([operationSignal, callerSignal]);
574
+ }
575
+ function sameJson(left, right) {
576
+ return JSON.stringify(left) === JSON.stringify(right);
577
+ }
578
+ function boundedText(input, label, maximum) {
579
+ if (typeof input !== "string" ||
580
+ input.length === 0 ||
581
+ input.length > maximum ||
582
+ input.trim() !== input ||
583
+ /[\u0000-\u001f\u007f]/u.test(input)) {
584
+ throw validation(`${label} must be bounded text`);
585
+ }
586
+ return input;
587
+ }
588
+ function validation(message) {
589
+ return new PortableAgentErrorV1("VALIDATION_ERROR", message);
590
+ }
591
+ //# sourceMappingURL=adapter-runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter-runtime.js","sourceRoot":"","sources":["../src/adapter-runtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { AgentPlatID } from "@agentplat/core";
2
+ import type { PortableAgentSessionSnapshotV1, PortableAgentStateStoreV1 } from "./adapter-contracts.js";
3
+ /** Revision-checked, process-local session store for prototypes and tests. */
4
+ export declare class InMemoryPortableAgentStateStoreV1 implements PortableAgentStateStoreV1 {
5
+ private readonly sessions;
6
+ load(sessionId: AgentPlatID): Promise<PortableAgentSessionSnapshotV1 | undefined>;
7
+ save(snapshotInput: PortableAgentSessionSnapshotV1, expectedRevision: number | null): Promise<void>;
8
+ }
9
+ //# sourceMappingURL=adapter-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter-store.d.ts","sourceRoot":"","sources":["../src/adapter-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEnD,OAAO,KAAK,EACV,8BAA8B,EAC9B,yBAAyB,EAC1B,MAAM,wBAAwB,CAAC;AAOhC,8EAA8E;AAC9E,qBAAa,iCAAkC,YAAW,yBAAyB;IACjF,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAGrB;IAEE,IAAI,CACR,SAAS,EAAE,WAAW,GACrB,OAAO,CAAC,8BAA8B,GAAG,SAAS,CAAC;IAKhD,IAAI,CACR,aAAa,EAAE,8BAA8B,EAC7C,gBAAgB,EAAE,MAAM,GAAG,IAAI,GAC9B,OAAO,CAAC,IAAI,CAAC;CAsBjB"}