@agentplat/inference-control 0.3.0-alpha.3

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 (83) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +101 -0
  3. package/dist/assessments.d.ts +5 -0
  4. package/dist/assessments.d.ts.map +1 -0
  5. package/dist/assessments.js +216 -0
  6. package/dist/assessments.js.map +1 -0
  7. package/dist/boundary.d.ts +24 -0
  8. package/dist/boundary.d.ts.map +1 -0
  9. package/dist/boundary.js +46 -0
  10. package/dist/boundary.js.map +1 -0
  11. package/dist/canonical.d.ts +6 -0
  12. package/dist/canonical.d.ts.map +1 -0
  13. package/dist/canonical.js +74 -0
  14. package/dist/canonical.js.map +1 -0
  15. package/dist/capabilities.d.ts +43 -0
  16. package/dist/capabilities.d.ts.map +1 -0
  17. package/dist/capabilities.js +304 -0
  18. package/dist/capabilities.js.map +1 -0
  19. package/dist/context.d.ts +7 -0
  20. package/dist/context.d.ts.map +1 -0
  21. package/dist/context.js +191 -0
  22. package/dist/context.js.map +1 -0
  23. package/dist/index.d.ts +14 -0
  24. package/dist/index.d.ts.map +1 -0
  25. package/dist/index.js +14 -0
  26. package/dist/index.js.map +1 -0
  27. package/dist/messages.d.ts +124 -0
  28. package/dist/messages.d.ts.map +1 -0
  29. package/dist/messages.js +475 -0
  30. package/dist/messages.js.map +1 -0
  31. package/dist/model.d.ts +104 -0
  32. package/dist/model.d.ts.map +1 -0
  33. package/dist/model.js +437 -0
  34. package/dist/model.js.map +1 -0
  35. package/dist/policy.d.ts +11 -0
  36. package/dist/policy.d.ts.map +1 -0
  37. package/dist/policy.js +338 -0
  38. package/dist/policy.js.map +1 -0
  39. package/dist/reducer.d.ts +193 -0
  40. package/dist/reducer.d.ts.map +1 -0
  41. package/dist/reducer.js +1341 -0
  42. package/dist/reducer.js.map +1 -0
  43. package/dist/runtime.d.ts +132 -0
  44. package/dist/runtime.d.ts.map +1 -0
  45. package/dist/runtime.js +587 -0
  46. package/dist/runtime.js.map +1 -0
  47. package/dist/scopes.d.ts +3 -0
  48. package/dist/scopes.d.ts.map +1 -0
  49. package/dist/scopes.js +83 -0
  50. package/dist/scopes.js.map +1 -0
  51. package/dist/sha256.d.ts +2 -0
  52. package/dist/sha256.d.ts.map +1 -0
  53. package/dist/sha256.js +72 -0
  54. package/dist/sha256.js.map +1 -0
  55. package/dist/state-records.d.ts +8 -0
  56. package/dist/state-records.d.ts.map +1 -0
  57. package/dist/state-records.js +204 -0
  58. package/dist/state-records.js.map +1 -0
  59. package/dist/state.d.ts +19 -0
  60. package/dist/state.d.ts.map +1 -0
  61. package/dist/state.js +689 -0
  62. package/dist/state.js.map +1 -0
  63. package/dist/streams.d.ts +5 -0
  64. package/dist/streams.d.ts.map +1 -0
  65. package/dist/streams.js +93 -0
  66. package/dist/streams.js.map +1 -0
  67. package/dist/telemetry.d.ts +12 -0
  68. package/dist/telemetry.d.ts.map +1 -0
  69. package/dist/telemetry.js +20 -0
  70. package/dist/telemetry.js.map +1 -0
  71. package/dist/tools.d.ts +221 -0
  72. package/dist/tools.d.ts.map +1 -0
  73. package/dist/tools.js +755 -0
  74. package/dist/tools.js.map +1 -0
  75. package/dist/types.d.ts +474 -0
  76. package/dist/types.d.ts.map +1 -0
  77. package/dist/types.js +43 -0
  78. package/dist/types.js.map +1 -0
  79. package/dist/validation.d.ts +23 -0
  80. package/dist/validation.d.ts.map +1 -0
  81. package/dist/validation.js +154 -0
  82. package/dist/validation.js.map +1 -0
  83. package/package.json +56 -0
@@ -0,0 +1,475 @@
1
+ import { boundedCanonicalControlJsonV1, controlDigest, isActionScopeV1, normalizeAuthorityResultV1, scopeDigest, } from './tools.js';
2
+ export const MAX_OUTBOUND_MESSAGE_BYTES_V1 = 65_536;
3
+ export function outboundMessageDigest(message) {
4
+ return controlDigest('message', {
5
+ schemaVersion: message.schemaVersion,
6
+ messageId: message.messageId,
7
+ runId: message.runId,
8
+ tenantId: message.tenantId,
9
+ channel: message.channel,
10
+ recipient: message.recipient,
11
+ mediaType: message.mediaType,
12
+ content: message.content,
13
+ scope: message.scope,
14
+ idempotencyKey: message.idempotencyKey,
15
+ });
16
+ }
17
+ function recordKey(scope, idempotency) {
18
+ return `${scope.length}:${scope}${idempotency.length}:${idempotency}`;
19
+ }
20
+ function freezeAttempt(value) {
21
+ return Object.freeze({
22
+ ...value,
23
+ reservation: value.reservation
24
+ ? Object.freeze({ ...value.reservation })
25
+ : null,
26
+ });
27
+ }
28
+ const messageReserveCapability = Symbol('message-ledger-reserve-capability');
29
+ const messageOutcomeCapability = Symbol('message-ledger-outcome-capability');
30
+ const messageLookupCapability = Symbol('message-ledger-lookup-capability');
31
+ const messageAdvanceCapability = Symbol('message-ledger-advance-capability');
32
+ /** Local-only message-attempt store. A reserved snapshot is never replayable. */
33
+ export class LocalMessageAttemptLedger {
34
+ gatewayId;
35
+ attempts = new Map();
36
+ idempotency = new Map();
37
+ highWater = 0;
38
+ constructor(gatewayId) {
39
+ this.gatewayId = gatewayId;
40
+ }
41
+ prepare(attempt) {
42
+ if (attempt.schemaVersion !== 1 ||
43
+ !Number.isSafeInteger(attempt.expiresAtLogicalMs) ||
44
+ attempt.expiresAtLogicalMs < 0 ||
45
+ attempt.status !== 'prepared' ||
46
+ attempt.reservation !== null ||
47
+ attempt.reservedAtLogicalMs !== null)
48
+ throw new TypeError('Invalid message attempt');
49
+ const sameId = this.attempts.get(attempt.messageAttemptId);
50
+ if (sameId) {
51
+ if (controlDigest('grant', sameId) !==
52
+ controlDigest('grant', attempt))
53
+ throw new Error('state_conflict');
54
+ return sameId;
55
+ }
56
+ const previous = this.idempotency.get(recordKey(attempt.scopeDigest, attempt.idempotencyKey));
57
+ if (previous) {
58
+ if (previous.messageDigest !== attempt.messageDigest)
59
+ throw new Error('message_idempotency_conflict');
60
+ return previous;
61
+ }
62
+ const frozen = freezeAttempt(attempt);
63
+ this.attempts.set(frozen.messageAttemptId, frozen);
64
+ this.idempotency.set(recordKey(frozen.scopeDigest, frozen.idempotencyKey), frozen);
65
+ return frozen;
66
+ }
67
+ [messageReserveCapability](id, time, authority) {
68
+ this.time(time);
69
+ const attempt = this.require(id);
70
+ if (attempt.status !== 'prepared')
71
+ throw new Error('message_consumed');
72
+ if (time >= attempt.expiresAtLogicalMs)
73
+ return this.replace({
74
+ ...attempt,
75
+ generation: attempt.generation + 1,
76
+ status: 'expired',
77
+ });
78
+ assertCurrentMessageAuthority(attempt.scopeDigest, authority);
79
+ const reservation = Object.freeze({
80
+ schemaVersion: 1,
81
+ reservationId: `${id}:reservation:${attempt.generation + 1}`,
82
+ messageDispatchAttemptId: `${id}:dispatch:${attempt.generation + 1}`,
83
+ reservedByGatewayId: this.gatewayId,
84
+ reservedStateGeneration: attempt.generation + 1,
85
+ authorityGeneration: messageAuthorityGeneration(authority),
86
+ fencingToken: messageFencingToken(authority),
87
+ reservedAtLogicalMs: time,
88
+ });
89
+ return this.replace({
90
+ ...attempt,
91
+ generation: attempt.generation + 1,
92
+ status: 'reserved',
93
+ reservation,
94
+ reservedAtLogicalMs: time,
95
+ });
96
+ }
97
+ [messageOutcomeCapability](id, reservationId, dispatchId, status) {
98
+ const attempt = this.require(id);
99
+ if (attempt.status !== 'reserved' ||
100
+ attempt.reservation?.reservationId !== reservationId ||
101
+ attempt.reservation.messageDispatchAttemptId !== dispatchId)
102
+ throw new Error('state_conflict');
103
+ return this.replace({
104
+ ...attempt,
105
+ generation: attempt.generation + 1,
106
+ status,
107
+ });
108
+ }
109
+ [messageLookupCapability](messageId, messageDigest, scope, idempotency) {
110
+ const attempt = this.idempotency.get(recordKey(scope, idempotency));
111
+ return attempt?.messageId === messageId &&
112
+ attempt.messageDigest === messageDigest
113
+ ? attempt
114
+ : undefined;
115
+ }
116
+ [messageAdvanceCapability](id, time) {
117
+ this.time(time);
118
+ const attempt = this.require(id);
119
+ if (attempt.status !== 'prepared')
120
+ return attempt;
121
+ if (time < attempt.expiresAtLogicalMs)
122
+ return attempt;
123
+ return this.replace({
124
+ ...attempt,
125
+ generation: attempt.generation + 1,
126
+ status: 'expired',
127
+ });
128
+ }
129
+ get(id) {
130
+ return this.attempts.get(id);
131
+ }
132
+ snapshot() {
133
+ return Object.freeze({
134
+ schemaVersion: 1,
135
+ highWaterLogicalMs: this.highWater,
136
+ attempts: Object.freeze([...this.attempts.values()].map(freezeAttempt)),
137
+ });
138
+ }
139
+ restore(snapshot) {
140
+ if (!snapshot ||
141
+ !isPlainRecord(snapshot) ||
142
+ snapshot.schemaVersion !== 1 ||
143
+ !isPlainArray(snapshot.attempts) ||
144
+ !Number.isSafeInteger(snapshot.highWaterLogicalMs) ||
145
+ snapshot.highWaterLogicalMs < 0 ||
146
+ snapshot.highWaterLogicalMs < this.highWater)
147
+ throw new TypeError('Invalid message attempt snapshot');
148
+ const attempts = new Map();
149
+ const idempotency = new Map();
150
+ for (const original of snapshot.attempts) {
151
+ assertMessageAttemptSnapshot(original, snapshot.highWaterLogicalMs);
152
+ const value = original.status === 'reserved'
153
+ ? {
154
+ ...original,
155
+ generation: original.generation + 1,
156
+ status: 'indeterminate',
157
+ }
158
+ : original;
159
+ const frozen = freezeAttempt(value);
160
+ if (attempts.has(frozen.messageAttemptId))
161
+ throw new Error('state_conflict');
162
+ const key = recordKey(frozen.scopeDigest, frozen.idempotencyKey);
163
+ const previous = idempotency.get(key);
164
+ if (previous && previous.messageDigest !== frozen.messageDigest)
165
+ throw new Error('message_idempotency_conflict');
166
+ if (previous)
167
+ throw new Error('state_conflict');
168
+ attempts.set(frozen.messageAttemptId, frozen);
169
+ idempotency.set(key, frozen);
170
+ }
171
+ this.attempts.clear();
172
+ this.idempotency.clear();
173
+ for (const [id, attempt] of attempts)
174
+ this.attempts.set(id, attempt);
175
+ for (const [key, attempt] of idempotency)
176
+ this.idempotency.set(key, attempt);
177
+ this.highWater = snapshot.highWaterLogicalMs;
178
+ }
179
+ replace(attempt) {
180
+ const frozen = freezeAttempt(attempt);
181
+ this.attempts.set(frozen.messageAttemptId, frozen);
182
+ this.idempotency.set(recordKey(frozen.scopeDigest, frozen.idempotencyKey), frozen);
183
+ return frozen;
184
+ }
185
+ require(id) {
186
+ const value = this.attempts.get(id);
187
+ if (!value)
188
+ throw new Error('message_missing');
189
+ return value;
190
+ }
191
+ time(time) {
192
+ if (!Number.isSafeInteger(time) || time < this.highWater)
193
+ throw new Error('logical_time_rollback');
194
+ this.highWater = time;
195
+ }
196
+ }
197
+ function reserveMessageForGateway(ledger, id, time, authority) {
198
+ return ledger[messageReserveCapability](id, time, authority);
199
+ }
200
+ function settleMessageForGateway(ledger, id, reservationId, dispatchId, status) {
201
+ return ledger[messageOutcomeCapability](id, reservationId, dispatchId, status);
202
+ }
203
+ function lookupMessageForGateway(ledger, messageId, messageDigest, scope, idempotency) {
204
+ return ledger[messageLookupCapability](messageId, messageDigest, scope, idempotency);
205
+ }
206
+ function advanceMessageForGateway(ledger, id, time) {
207
+ return ledger[messageAdvanceCapability](id, time);
208
+ }
209
+ function assertMessageAttemptSnapshot(attempt, highWater) {
210
+ if (!isPlainRecord(attempt) ||
211
+ attempt.schemaVersion !== 1 ||
212
+ !nonEmptyString(attempt.messageAttemptId) ||
213
+ !nonEmptyString(attempt.messageId) ||
214
+ !nonEmptyString(attempt.scopeDigest) ||
215
+ !nonEmptyString(attempt.idempotencyKey) ||
216
+ !isDigest(attempt.messageDigest) ||
217
+ !isDigest(attempt.dispatcherDigest) ||
218
+ !positiveInteger(attempt.generation) ||
219
+ !Number.isSafeInteger(attempt.expiresAtLogicalMs) ||
220
+ attempt.expiresAtLogicalMs < 0 ||
221
+ !isMessageAttemptStatus(attempt.status))
222
+ throw new TypeError('Invalid message attempt snapshot');
223
+ if (attempt.status === 'prepared' || attempt.status === 'expired') {
224
+ if (attempt.reservation !== null || attempt.reservedAtLogicalMs !== null)
225
+ throw new TypeError('Invalid message attempt snapshot');
226
+ }
227
+ else if (!isMessageReservation(attempt.reservation, attempt, highWater) ||
228
+ attempt.reservedAtLogicalMs !== attempt.reservation.reservedAtLogicalMs) {
229
+ throw new TypeError('Invalid message attempt snapshot');
230
+ }
231
+ }
232
+ function isMessageReservation(value, attempt, highWater) {
233
+ return Boolean(value &&
234
+ isPlainRecord(value) &&
235
+ value.schemaVersion === 1 &&
236
+ nonEmptyString(value.reservationId) &&
237
+ nonEmptyString(value.messageDispatchAttemptId) &&
238
+ nonEmptyString(value.reservedByGatewayId) &&
239
+ positiveInteger(value.reservedStateGeneration) &&
240
+ value.reservedStateGeneration <= attempt.generation &&
241
+ Number.isSafeInteger(value.reservedAtLogicalMs) &&
242
+ value.reservedAtLogicalMs >= 0 &&
243
+ value.reservedAtLogicalMs <= highWater &&
244
+ (value.authorityGeneration === null ||
245
+ (Number.isSafeInteger(value.authorityGeneration) &&
246
+ value.authorityGeneration >= 0)) &&
247
+ (value.fencingToken === null || nonEmptyString(value.fencingToken)));
248
+ }
249
+ function assertCurrentMessageAuthority(expectedScopeDigest, authority) {
250
+ if (authority.status !== 'current' ||
251
+ !authority.scope ||
252
+ !isActionScopeV1(authority.scope) ||
253
+ scopeDigest(authority.scope) !== expectedScopeDigest)
254
+ throw new Error('grant_scope_mismatch');
255
+ if (authority.scope.kind === 'coordinated') {
256
+ if (authority.authorityGeneration !== authority.scope.authorityGeneration ||
257
+ authority.fencingToken !== authority.scope.fencingToken)
258
+ throw new Error('grant_fence_stale');
259
+ return;
260
+ }
261
+ if ((authority.authorityGeneration != null) !==
262
+ (authority.fencingToken != null) ||
263
+ (authority.authorityGeneration != null &&
264
+ (!Number.isSafeInteger(authority.authorityGeneration) ||
265
+ authority.authorityGeneration < 0)) ||
266
+ (authority.fencingToken != null && !nonEmptyString(authority.fencingToken)))
267
+ throw new Error('grant_fence_stale');
268
+ }
269
+ function messageAuthorityGeneration(authority) {
270
+ if (authority.status !== 'current')
271
+ return null;
272
+ return authority.scope?.kind === 'coordinated'
273
+ ? authority.scope.authorityGeneration
274
+ : (authority.authorityGeneration ?? null);
275
+ }
276
+ function messageFencingToken(authority) {
277
+ if (authority.status !== 'current')
278
+ return null;
279
+ return authority.scope?.kind === 'coordinated'
280
+ ? authority.scope.fencingToken
281
+ : (authority.fencingToken ?? null);
282
+ }
283
+ function messageAuthorityMatchesReservation(scope, expectedScopeDigest, authority, reservation) {
284
+ try {
285
+ assertCurrentMessageAuthority(expectedScopeDigest, authority);
286
+ return (scopeDigest(scope) === expectedScopeDigest &&
287
+ messageAuthorityGeneration(authority) ===
288
+ reservation.authorityGeneration &&
289
+ messageFencingToken(authority) === reservation.fencingToken);
290
+ }
291
+ catch {
292
+ return false;
293
+ }
294
+ }
295
+ function freezeMessage(message, maximumBytes) {
296
+ return deepFreeze(JSON.parse(boundedCanonicalControlJsonV1(message, maximumBytes, 'message_not_permitted')));
297
+ }
298
+ function isPlainRecord(value) {
299
+ if (!value || typeof value !== 'object' || Array.isArray(value))
300
+ return false;
301
+ const prototype = Object.getPrototypeOf(value);
302
+ return ((prototype === Object.prototype || prototype === null) &&
303
+ Object.values(Object.getOwnPropertyDescriptors(value)).every((descriptor) => 'value' in descriptor));
304
+ }
305
+ function isPlainArray(value) {
306
+ return (Array.isArray(value) &&
307
+ Object.getPrototypeOf(value) === Array.prototype &&
308
+ Object.values(Object.getOwnPropertyDescriptors(value)).every((descriptor) => 'value' in descriptor));
309
+ }
310
+ function hasExactKeys(value, expected) {
311
+ const actual = Object.getOwnPropertyNames(value).sort();
312
+ const sorted = [...expected].sort();
313
+ return (Object.getOwnPropertySymbols(value).length === 0 &&
314
+ actual.length === sorted.length &&
315
+ actual.every((key, index) => key === sorted[index]));
316
+ }
317
+ function nonEmptyString(value) {
318
+ return typeof value === 'string' && value.length > 0;
319
+ }
320
+ function positiveInteger(value) {
321
+ return Number.isSafeInteger(value) && value > 0;
322
+ }
323
+ function isDigest(value) {
324
+ return typeof value === 'string' && /^sha256:[0-9a-f]{64}$/.test(value);
325
+ }
326
+ function isMessageAttemptStatus(value) {
327
+ return (value === 'prepared' ||
328
+ value === 'reserved' ||
329
+ value === 'sent' ||
330
+ value === 'failed' ||
331
+ value === 'indeterminate' ||
332
+ value === 'expired');
333
+ }
334
+ function deepFreeze(value) {
335
+ if (value && typeof value === 'object' && !Object.isFrozen(value)) {
336
+ Object.freeze(value);
337
+ for (const child of Object.values(value))
338
+ deepFreeze(child);
339
+ }
340
+ return value;
341
+ }
342
+ export class OutboundMessageGateway {
343
+ ledger;
344
+ dispatcher;
345
+ authorityResolver;
346
+ assessmentResolver;
347
+ allowedChannels;
348
+ maxOutboundMessageBytes;
349
+ constructor(ledger, dispatcher, authorityResolver, assessmentResolver, allowedChannels, limits = {}) {
350
+ this.ledger = ledger;
351
+ if (!nonEmptyString(authorityResolver.resolverId) ||
352
+ !positiveInteger(authorityResolver.resolverVersion))
353
+ throw new Error('dependency_rebind_failed');
354
+ const maxOutboundMessageBytes = limits.maxOutboundMessageBytes ?? MAX_OUTBOUND_MESSAGE_BYTES_V1;
355
+ if (!Number.isSafeInteger(maxOutboundMessageBytes) ||
356
+ maxOutboundMessageBytes < 1 ||
357
+ maxOutboundMessageBytes > MAX_OUTBOUND_MESSAGE_BYTES_V1)
358
+ throw new Error('dependency_rebind_failed');
359
+ this.maxOutboundMessageBytes = maxOutboundMessageBytes;
360
+ this.dispatcher = Object.freeze({
361
+ dispatcherId: dispatcher.dispatcherId,
362
+ dispatcherVersion: dispatcher.dispatcherVersion,
363
+ dispatcherDigest: dispatcher.dispatcherDigest,
364
+ fencingMode: dispatcher.fencingMode,
365
+ send: dispatcher.send.bind(dispatcher),
366
+ });
367
+ this.authorityResolver = Object.freeze({
368
+ resolverId: authorityResolver.resolverId,
369
+ resolverVersion: authorityResolver.resolverVersion,
370
+ resolve: authorityResolver.resolve.bind(authorityResolver),
371
+ });
372
+ this.assessmentResolver = Object.freeze({
373
+ assessorId: assessmentResolver.assessorId,
374
+ assessorVersion: assessmentResolver.assessorVersion,
375
+ consumeCurrent: assessmentResolver.consumeCurrent.bind(assessmentResolver),
376
+ });
377
+ this.allowedChannels = Object.freeze([...allowedChannels]);
378
+ }
379
+ async send(input) {
380
+ if (!isPlainRecord(input) ||
381
+ !hasExactKeys(input, ['schemaVersion', 'message', 'logicalTimeMs']) ||
382
+ input.schemaVersion !== 1 ||
383
+ !isPlainRecord(input.message) ||
384
+ !hasExactKeys(input.message, [
385
+ 'schemaVersion',
386
+ 'messageId',
387
+ 'runId',
388
+ 'tenantId',
389
+ 'channel',
390
+ 'recipient',
391
+ 'mediaType',
392
+ 'content',
393
+ 'scope',
394
+ 'idempotencyKey',
395
+ 'messageDigest',
396
+ ]))
397
+ throw new Error('message_not_permitted');
398
+ const message = freezeMessage(input.message, this.maxOutboundMessageBytes);
399
+ if (!isActionScopeV1(message.scope))
400
+ throw new Error('message_not_permitted');
401
+ const { messageDigest: _claimedDigest, ...unsignedMessage } = message;
402
+ const messageDigest = outboundMessageDigest(unsignedMessage);
403
+ const currentScopeDigest = scopeDigest(message.scope);
404
+ const attempt = lookupMessageForGateway(this.ledger, message.messageId, messageDigest, currentScopeDigest, message.idempotencyKey);
405
+ if (message.schemaVersion !== 1 ||
406
+ messageDigest !== message.messageDigest ||
407
+ !attempt ||
408
+ messageDigest !== attempt.messageDigest ||
409
+ attempt.messageId !== message.messageId ||
410
+ attempt.scopeDigest !== currentScopeDigest ||
411
+ attempt.idempotencyKey !== message.idempotencyKey ||
412
+ message.tenantId !== message.scope.tenantId ||
413
+ message.runId !== message.scope.runId ||
414
+ !this.allowedChannels.includes(message.channel))
415
+ throw new Error('message_not_permitted');
416
+ const current = advanceMessageForGateway(this.ledger, attempt.messageAttemptId, input.logicalTimeMs);
417
+ if (current.status !== 'prepared')
418
+ throw new Error('message_indeterminate');
419
+ if (attempt.dispatcherDigest !== this.dispatcher.dispatcherDigest ||
420
+ attempt.dispatcherId !== this.dispatcher.dispatcherId ||
421
+ attempt.dispatcherVersion !== this.dispatcher.dispatcherVersion)
422
+ throw new Error('dependency_rebind_failed');
423
+ if (message.scope.kind === 'coordinated' &&
424
+ this.dispatcher.fencingMode !== 'downstream_atomic')
425
+ throw new Error('dependency_rebind_failed');
426
+ if (!(await this.assessmentResolver.consumeCurrent(message, attempt, input.logicalTimeMs)))
427
+ throw new Error('assessment_required');
428
+ const first = normalizeAuthorityResultV1(this.authorityResolver, message.scope, messageDigest, await this.authorityResolver.resolve(message.scope, messageDigest, input.logicalTimeMs));
429
+ const reserved = reserveMessageForGateway(this.ledger, attempt.messageAttemptId, input.logicalTimeMs, first);
430
+ const reservation = reserved.reservation;
431
+ try {
432
+ const second = normalizeAuthorityResultV1(this.authorityResolver, message.scope, messageDigest, await this.authorityResolver.resolve(message.scope, messageDigest, input.logicalTimeMs));
433
+ if (!messageAuthorityMatchesReservation(message.scope, reserved.scopeDigest, second, reservation)) {
434
+ settleMessageForGateway(this.ledger, reserved.messageAttemptId, reservation.reservationId, reservation.messageDispatchAttemptId, 'failed');
435
+ throw new Error('grant_fence_stale');
436
+ }
437
+ let assessmentStillCurrent = false;
438
+ try {
439
+ assessmentStillCurrent = await this.assessmentResolver.consumeCurrent(message, attempt, input.logicalTimeMs);
440
+ }
441
+ catch {
442
+ assessmentStillCurrent = false;
443
+ }
444
+ if (!assessmentStillCurrent) {
445
+ settleMessageForGateway(this.ledger, reserved.messageAttemptId, reservation.reservationId, reservation.messageDispatchAttemptId, 'failed');
446
+ throw new Error('assessment_required');
447
+ }
448
+ const permit = Object.freeze({
449
+ schemaVersion: 1,
450
+ messageAttemptId: reserved.messageAttemptId,
451
+ reservationId: reservation.reservationId,
452
+ messageDispatchAttemptId: reservation.messageDispatchAttemptId,
453
+ gatewayId: this.ledger.gatewayId,
454
+ scopeDigest: reserved.scopeDigest,
455
+ messageDigest,
456
+ idempotencyKey: reserved.idempotencyKey,
457
+ authorityGeneration: reservation.authorityGeneration,
458
+ fencingToken: reservation.fencingToken,
459
+ });
460
+ const result = await this.dispatcher.send({
461
+ message,
462
+ permit,
463
+ });
464
+ settleMessageForGateway(this.ledger, reserved.messageAttemptId, reservation.reservationId, reservation.messageDispatchAttemptId, result.ok ? 'sent' : 'failed');
465
+ return result;
466
+ }
467
+ catch (error) {
468
+ const current = this.ledger.get(reserved.messageAttemptId);
469
+ if (current?.status === 'reserved')
470
+ settleMessageForGateway(this.ledger, reserved.messageAttemptId, reservation.reservationId, reservation.messageDispatchAttemptId, 'indeterminate');
471
+ throw error;
472
+ }
473
+ }
474
+ }
475
+ //# sourceMappingURL=messages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.js","sourceRoot":"","sources":["../src/messages.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,6BAA6B,EAC7B,aAAa,EACb,eAAe,EACf,0BAA0B,EAC1B,WAAW,GAMZ,MAAM,YAAY,CAAC;AAEpB,MAAM,CAAC,MAAM,6BAA6B,GAAG,MAAM,CAAC;AAiFpD,MAAM,UAAU,qBAAqB,CACnC,OAA+C;IAE/C,OAAO,aAAa,CAAC,SAAS,EAAE;QAC9B,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,KAAK,EAAE,OAAO,CAAC,KAA+B;QAC9C,cAAc,EAAE,OAAO,CAAC,cAAc;KACvC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,SAAS,CAAC,KAAa,EAAE,WAAmB;IACnD,OAAO,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,GAAG,WAAW,CAAC,MAAM,IAAI,WAAW,EAAE,CAAC;AACxE,CAAC;AACD,SAAS,aAAa,CAAC,KAA6B;IAClD,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,GAAG,KAAK;QACR,WAAW,EAAE,KAAK,CAAC,WAAW;YAC5B,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;YACzC,CAAC,CAAC,IAAI;KACT,CAAC,CAAC;AACL,CAAC;AAED,MAAM,wBAAwB,GAAG,MAAM,CAAC,mCAAmC,CAAC,CAAC;AAC7E,MAAM,wBAAwB,GAAG,MAAM,CAAC,mCAAmC,CAAC,CAAC;AAC7E,MAAM,uBAAuB,GAAG,MAAM,CAAC,kCAAkC,CAAC,CAAC;AAC3E,MAAM,wBAAwB,GAAG,MAAM,CAAC,mCAAmC,CAAC,CAAC;AAE7E,iFAAiF;AACjF,MAAM,OAAO,yBAAyB;IAIf;IAHJ,QAAQ,GAAG,IAAI,GAAG,EAAkC,CAAC;IACrD,WAAW,GAAG,IAAI,GAAG,EAAkC,CAAC;IACjE,SAAS,GAAG,CAAC,CAAC;IACtB,YAAqB,SAAiB;QAAjB,cAAS,GAAT,SAAS,CAAQ;IAAG,CAAC;IAC1C,OAAO,CAAC,OAA+B;QACrC,IACE,OAAO,CAAC,aAAa,KAAK,CAAC;YAC3B,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,kBAAkB,CAAC;YACjD,OAAO,CAAC,kBAAkB,GAAG,CAAC;YAC9B,OAAO,CAAC,MAAM,KAAK,UAAU;YAC7B,OAAO,CAAC,WAAW,KAAK,IAAI;YAC5B,OAAO,CAAC,mBAAmB,KAAK,IAAI;YAEpC,MAAM,IAAI,SAAS,CAAC,yBAAyB,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;QAC3D,IAAI,MAAM,EAAE,CAAC;YACX,IACE,aAAa,CAAC,OAAO,EAAE,MAAgC,CAAC;gBACxD,aAAa,CAAC,OAAO,EAAE,OAAiC,CAAC;gBAEzD,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;YACpC,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CACnC,SAAS,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,cAAc,CAAC,CACvD,CAAC;QACF,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,QAAQ,CAAC,aAAa,KAAK,OAAO,CAAC,aAAa;gBAClD,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;YAClD,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;QACtC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;QACnD,IAAI,CAAC,WAAW,CAAC,GAAG,CAClB,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,cAAc,CAAC,EACpD,MAAM,CACP,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,CAAC,wBAAwB,CAAC,CACxB,EAAU,EACV,IAAY,EACZ,SAA0B;QAE1B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACjC,IAAI,OAAO,CAAC,MAAM,KAAK,UAAU;YAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;QACvE,IAAI,IAAI,IAAI,OAAO,CAAC,kBAAkB;YACpC,OAAO,IAAI,CAAC,OAAO,CAAC;gBAClB,GAAG,OAAO;gBACV,UAAU,EAAE,OAAO,CAAC,UAAU,GAAG,CAAC;gBAClC,MAAM,EAAE,SAAS;aAClB,CAAC,CAAC;QACL,6BAA6B,CAAC,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QAC9D,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC;YAChC,aAAa,EAAE,CAAU;YACzB,aAAa,EAAE,GAAG,EAAE,gBAAgB,OAAO,CAAC,UAAU,GAAG,CAAC,EAAE;YAC5D,wBAAwB,EAAE,GAAG,EAAE,aAAa,OAAO,CAAC,UAAU,GAAG,CAAC,EAAE;YACpE,mBAAmB,EAAE,IAAI,CAAC,SAAS;YACnC,uBAAuB,EAAE,OAAO,CAAC,UAAU,GAAG,CAAC;YAC/C,mBAAmB,EAAE,0BAA0B,CAAC,SAAS,CAAC;YAC1D,YAAY,EAAE,mBAAmB,CAAC,SAAS,CAAC;YAC5C,mBAAmB,EAAE,IAAI;SAC1B,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,OAAO,CAAC;YAClB,GAAG,OAAO;YACV,UAAU,EAAE,OAAO,CAAC,UAAU,GAAG,CAAC;YAClC,MAAM,EAAE,UAAU;YAClB,WAAW;YACX,mBAAmB,EAAE,IAAI;SAC1B,CAAC,CAAC;IACL,CAAC;IACD,CAAC,wBAAwB,CAAC,CACxB,EAAU,EACV,aAAqB,EACrB,UAAkB,EAClB,MAA0E;QAE1E,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACjC,IACE,OAAO,CAAC,MAAM,KAAK,UAAU;YAC7B,OAAO,CAAC,WAAW,EAAE,aAAa,KAAK,aAAa;YACpD,OAAO,CAAC,WAAW,CAAC,wBAAwB,KAAK,UAAU;YAE3D,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;QACpC,OAAO,IAAI,CAAC,OAAO,CAAC;YAClB,GAAG,OAAO;YACV,UAAU,EAAE,OAAO,CAAC,UAAU,GAAG,CAAC;YAClC,MAAM;SACP,CAAC,CAAC;IACL,CAAC;IACD,CAAC,uBAAuB,CAAC,CACvB,SAAiB,EACjB,aAAqB,EACrB,KAAa,EACb,WAAmB;QAEnB,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC;QACpE,OAAO,OAAO,EAAE,SAAS,KAAK,SAAS;YACrC,OAAO,CAAC,aAAa,KAAK,aAAa;YACvC,CAAC,CAAC,OAAO;YACT,CAAC,CAAC,SAAS,CAAC;IAChB,CAAC;IACD,CAAC,wBAAwB,CAAC,CAAC,EAAU,EAAE,IAAY;QACjD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACjC,IAAI,OAAO,CAAC,MAAM,KAAK,UAAU;YAAE,OAAO,OAAO,CAAC;QAClD,IAAI,IAAI,GAAG,OAAO,CAAC,kBAAkB;YAAE,OAAO,OAAO,CAAC;QACtD,OAAO,IAAI,CAAC,OAAO,CAAC;YAClB,GAAG,OAAO;YACV,UAAU,EAAE,OAAO,CAAC,UAAU,GAAG,CAAC;YAClC,MAAM,EAAE,SAAS;SAClB,CAAC,CAAC;IACL,CAAC;IACD,GAAG,CAAC,EAAU;QACZ,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC/B,CAAC;IACD,QAAQ;QACN,OAAO,MAAM,CAAC,MAAM,CAAC;YACnB,aAAa,EAAE,CAAC;YAChB,kBAAkB,EAAE,IAAI,CAAC,SAAS;YAClC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;SACxE,CAAC,CAAC;IACL,CAAC;IACD,OAAO,CAAC,QAAsC;QAC5C,IACE,CAAC,QAAQ;YACT,CAAC,aAAa,CAAC,QAAQ,CAAC;YACxB,QAAQ,CAAC,aAAa,KAAK,CAAC;YAC5B,CAAC,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAChC,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,kBAAkB,CAAC;YAClD,QAAQ,CAAC,kBAAkB,GAAG,CAAC;YAC/B,QAAQ,CAAC,kBAAkB,GAAG,IAAI,CAAC,SAAS;YAE5C,MAAM,IAAI,SAAS,CAAC,kCAAkC,CAAC,CAAC;QAC1D,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkC,CAAC;QAC3D,MAAM,WAAW,GAAG,IAAI,GAAG,EAAkC,CAAC;QAC9D,KAAK,MAAM,QAAQ,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACzC,4BAA4B,CAAC,QAAQ,EAAE,QAAQ,CAAC,kBAAkB,CAAC,CAAC;YACpE,MAAM,KAAK,GACT,QAAQ,CAAC,MAAM,KAAK,UAAU;gBAC5B,CAAC,CAAC;oBACE,GAAG,QAAQ;oBACX,UAAU,EAAE,QAAQ,CAAC,UAAU,GAAG,CAAC;oBACnC,MAAM,EAAE,eAAwB;iBACjC;gBACH,CAAC,CAAC,QAAQ,CAAC;YACf,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;YACpC,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,gBAAgB,CAAC;gBACvC,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;YACpC,MAAM,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC;YACjE,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACtC,IAAI,QAAQ,IAAI,QAAQ,CAAC,aAAa,KAAK,MAAM,CAAC,aAAa;gBAC7D,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;YAClD,IAAI,QAAQ;gBAAE,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;YAChD,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;YAC9C,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAC/B,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;QACzB,KAAK,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,QAAQ;YAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QACrE,KAAK,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,WAAW;YACtC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACrC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,kBAAkB,CAAC;IAC/C,CAAC;IACO,OAAO,CAAC,OAA+B;QAC7C,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;QACtC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;QACnD,IAAI,CAAC,WAAW,CAAC,GAAG,CAClB,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,cAAc,CAAC,EACpD,MAAM,CACP,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC;IACO,OAAO,CAAC,EAAU;QACxB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACpC,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAC/C,OAAO,KAAK,CAAC;IACf,CAAC;IACO,IAAI,CAAC,IAAY;QACvB,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS;YACtD,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC3C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACxB,CAAC;CACF;AAQD,SAAS,wBAAwB,CAC/B,MAAiC,EACjC,EAAU,EACV,IAAY,EACZ,SAA0B;IAE1B,OAAO,MAAM,CAAC,wBAAwB,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;AAC/D,CAAC;AACD,SAAS,uBAAuB,CAC9B,MAAiC,EACjC,EAAU,EACV,aAAqB,EACrB,UAAkB,EAClB,MAA0E;IAE1E,OAAO,MAAM,CAAC,wBAAwB,CAAC,CACrC,EAAE,EACF,aAAa,EACb,UAAU,EACV,MAAM,CACP,CAAC;AACJ,CAAC;AACD,SAAS,uBAAuB,CAC9B,MAAiC,EACjC,SAAiB,EACjB,aAAqB,EACrB,KAAa,EACb,WAAmB;IAEnB,OAAO,MAAM,CAAC,uBAAuB,CAAC,CACpC,SAAS,EACT,aAAa,EACb,KAAK,EACL,WAAW,CACZ,CAAC;AACJ,CAAC;AACD,SAAS,wBAAwB,CAC/B,MAAiC,EACjC,EAAU,EACV,IAAY;IAEZ,OAAO,MAAM,CAAC,wBAAwB,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AACpD,CAAC;AAED,SAAS,4BAA4B,CACnC,OAA+B,EAC/B,SAAiB;IAEjB,IACE,CAAC,aAAa,CAAC,OAAO,CAAC;QACvB,OAAO,CAAC,aAAa,KAAK,CAAC;QAC3B,CAAC,cAAc,CAAC,OAAO,CAAC,gBAAgB,CAAC;QACzC,CAAC,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC;QAClC,CAAC,cAAc,CAAC,OAAO,CAAC,WAAW,CAAC;QACpC,CAAC,cAAc,CAAC,OAAO,CAAC,cAAc,CAAC;QACvC,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC;QAChC,CAAC,QAAQ,CAAC,OAAO,CAAC,gBAAgB,CAAC;QACnC,CAAC,eAAe,CAAC,OAAO,CAAC,UAAU,CAAC;QACpC,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,kBAAkB,CAAC;QACjD,OAAO,CAAC,kBAAkB,GAAG,CAAC;QAC9B,CAAC,sBAAsB,CAAC,OAAO,CAAC,MAAM,CAAC;QAEvC,MAAM,IAAI,SAAS,CAAC,kCAAkC,CAAC,CAAC;IAC1D,IAAI,OAAO,CAAC,MAAM,KAAK,UAAU,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAClE,IAAI,OAAO,CAAC,WAAW,KAAK,IAAI,IAAI,OAAO,CAAC,mBAAmB,KAAK,IAAI;YACtE,MAAM,IAAI,SAAS,CAAC,kCAAkC,CAAC,CAAC;IAC5D,CAAC;SAAM,IACL,CAAC,oBAAoB,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,EAAE,SAAS,CAAC;QAC9D,OAAO,CAAC,mBAAmB,KAAK,OAAO,CAAC,WAAW,CAAC,mBAAmB,EACvE,CAAC;QACD,MAAM,IAAI,SAAS,CAAC,kCAAkC,CAAC,CAAC;IAC1D,CAAC;AACH,CAAC;AACD,SAAS,oBAAoB,CAC3B,KAAgC,EAChC,OAA+B,EAC/B,SAAiB;IAEjB,OAAO,OAAO,CACZ,KAAK;QACL,aAAa,CAAC,KAAK,CAAC;QACpB,KAAK,CAAC,aAAa,KAAK,CAAC;QACzB,cAAc,CAAC,KAAK,CAAC,aAAa,CAAC;QACnC,cAAc,CAAC,KAAK,CAAC,wBAAwB,CAAC;QAC9C,cAAc,CAAC,KAAK,CAAC,mBAAmB,CAAC;QACzC,eAAe,CAAC,KAAK,CAAC,uBAAuB,CAAC;QAC9C,KAAK,CAAC,uBAAuB,IAAI,OAAO,CAAC,UAAU;QACnD,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,mBAAmB,CAAC;QAC/C,KAAK,CAAC,mBAAmB,IAAI,CAAC;QAC9B,KAAK,CAAC,mBAAmB,IAAI,SAAS;QACtC,CAAC,KAAK,CAAC,mBAAmB,KAAK,IAAI;YACjC,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,mBAAmB,CAAC;gBAC9C,KAAK,CAAC,mBAAmB,IAAI,CAAC,CAAC,CAAC;QACpC,CAAC,KAAK,CAAC,YAAY,KAAK,IAAI,IAAI,cAAc,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CACpE,CAAC;AACJ,CAAC;AACD,SAAS,6BAA6B,CACpC,mBAA2B,EAC3B,SAA0B;IAE1B,IACE,SAAS,CAAC,MAAM,KAAK,SAAS;QAC9B,CAAC,SAAS,CAAC,KAAK;QAChB,CAAC,eAAe,CAAC,SAAS,CAAC,KAAK,CAAC;QACjC,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,mBAAmB;QAEpD,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAC1C,IAAI,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;QAC3C,IACE,SAAS,CAAC,mBAAmB,KAAK,SAAS,CAAC,KAAK,CAAC,mBAAmB;YACrE,SAAS,CAAC,YAAY,KAAK,SAAS,CAAC,KAAK,CAAC,YAAY;YAEvD,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACvC,OAAO;IACT,CAAC;IACD,IACE,CAAC,SAAS,CAAC,mBAAmB,IAAI,IAAI,CAAC;QACrC,CAAC,SAAS,CAAC,YAAY,IAAI,IAAI,CAAC;QAClC,CAAC,SAAS,CAAC,mBAAmB,IAAI,IAAI;YACpC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,mBAAmB,CAAC;gBACnD,SAAS,CAAC,mBAAmB,GAAG,CAAC,CAAC,CAAC;QACvC,CAAC,SAAS,CAAC,YAAY,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QAE3E,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;AACzC,CAAC;AACD,SAAS,0BAA0B,CAAC,SAA0B;IAC5D,IAAI,SAAS,CAAC,MAAM,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAChD,OAAO,SAAS,CAAC,KAAK,EAAE,IAAI,KAAK,aAAa;QAC5C,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,mBAAmB;QACrC,CAAC,CAAC,CAAC,SAAS,CAAC,mBAAmB,IAAI,IAAI,CAAC,CAAC;AAC9C,CAAC;AACD,SAAS,mBAAmB,CAAC,SAA0B;IACrD,IAAI,SAAS,CAAC,MAAM,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAChD,OAAO,SAAS,CAAC,KAAK,EAAE,IAAI,KAAK,aAAa;QAC5C,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,YAAY;QAC9B,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,IAAI,IAAI,CAAC,CAAC;AACvC,CAAC;AACD,SAAS,kCAAkC,CACzC,KAAkB,EAClB,mBAA2B,EAC3B,SAA0B,EAC1B,WAA+B;IAE/B,IAAI,CAAC;QACH,6BAA6B,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAC;QAC9D,OAAO,CACL,WAAW,CAAC,KAAK,CAAC,KAAK,mBAAmB;YAC1C,0BAA0B,CAAC,SAAS,CAAC;gBACnC,WAAW,CAAC,mBAAmB;YACjC,mBAAmB,CAAC,SAAS,CAAC,KAAK,WAAW,CAAC,YAAY,CAC5D,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AACD,SAAS,aAAa,CACpB,OAAwB,EACxB,YAAoB;IAEpB,OAAO,UAAU,CACf,IAAI,CAAC,KAAK,CACR,6BAA6B,CAC3B,OAAO,EACP,YAAY,EACZ,uBAAuB,CACxB,CACiB,CACrB,CAAC;AACJ,CAAC;AACD,SAAS,aAAa,CAAC,KAAc;IACnC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC9E,MAAM,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IAC/C,OAAO,CACL,CAAC,SAAS,KAAK,MAAM,CAAC,SAAS,IAAI,SAAS,KAAK,IAAI,CAAC;QACtD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAC1D,CAAC,UAAU,EAAE,EAAE,CAAC,OAAO,IAAI,UAAU,CACtC,CACF,CAAC;AACJ,CAAC;AACD,SAAS,YAAY,CAAC,KAAc;IAClC,OAAO,CACL,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACpB,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,SAAS;QAChD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAC1D,CAAC,UAAU,EAAE,EAAE,CAAC,OAAO,IAAI,UAAU,CACtC,CACF,CAAC;AACJ,CAAC;AACD,SAAS,YAAY,CACnB,KAA8B,EAC9B,QAA2B;IAE3B,MAAM,MAAM,GAAG,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;IACxD,MAAM,MAAM,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;IACpC,OAAO,CACL,MAAM,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC;QAChD,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM;QAC/B,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC,CACpD,CAAC;AACJ,CAAC;AACD,SAAS,cAAc,CAAC,KAAc;IACpC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AACvD,CAAC;AACD,SAAS,eAAe,CAAC,KAAc;IACrC,OAAO,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAK,KAAgB,GAAG,CAAC,CAAC;AAC9D,CAAC;AACD,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1E,CAAC;AACD,SAAS,sBAAsB,CAAC,KAAc;IAC5C,OAAO,CACL,KAAK,KAAK,UAAU;QACpB,KAAK,KAAK,UAAU;QACpB,KAAK,KAAK,MAAM;QAChB,KAAK,KAAK,QAAQ;QAClB,KAAK,KAAK,eAAe;QACzB,KAAK,KAAK,SAAS,CACpB,CAAC;AACJ,CAAC;AACD,SAAS,UAAU,CAAI,KAAQ;IAC7B,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAClE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACrB,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,KAAgC,CAAC;YACjE,UAAU,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,OAAO,sBAAsB;IAOtB;IANF,UAAU,CAA4B;IACtC,iBAAiB,CAA0B;IAC3C,kBAAkB,CAA4B;IAC9C,eAAe,CAAoB;IACnC,uBAAuB,CAAS;IACzC,YACW,MAAiC,EAC1C,UAAqC,EACrC,iBAA0C,EAC1C,kBAA6C,EAC7C,eAAkC,EAClC,SAAyC,EAAE;QALlC,WAAM,GAAN,MAAM,CAA2B;QAO1C,IACE,CAAC,cAAc,CAAC,iBAAiB,CAAC,UAAU,CAAC;YAC7C,CAAC,eAAe,CAAC,iBAAiB,CAAC,eAAe,CAAC;YAEnD,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC9C,MAAM,uBAAuB,GAC3B,MAAM,CAAC,uBAAuB,IAAI,6BAA6B,CAAC;QAClE,IACE,CAAC,MAAM,CAAC,aAAa,CAAC,uBAAuB,CAAC;YAC9C,uBAAuB,GAAG,CAAC;YAC3B,uBAAuB,GAAG,6BAA6B;YAEvD,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC9C,IAAI,CAAC,uBAAuB,GAAG,uBAAuB,CAAC;QACvD,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC;YAC9B,YAAY,EAAE,UAAU,CAAC,YAAY;YACrC,iBAAiB,EAAE,UAAU,CAAC,iBAAiB;YAC/C,gBAAgB,EAAE,UAAU,CAAC,gBAAgB;YAC7C,WAAW,EAAE,UAAU,CAAC,WAAW;YACnC,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;SACvC,CAAC,CAAC;QACH,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,MAAM,CAAC;YACrC,UAAU,EAAE,iBAAiB,CAAC,UAAU;YACxC,eAAe,EAAE,iBAAiB,CAAC,eAAe;YAClD,OAAO,EAAE,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC;SAC3D,CAAC,CAAC;QACH,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC,MAAM,CAAC;YACtC,UAAU,EAAE,kBAAkB,CAAC,UAAU;YACzC,eAAe,EAAE,kBAAkB,CAAC,eAAe;YACnD,cAAc,EACZ,kBAAkB,CAAC,cAAc,CAAC,IAAI,CAAC,kBAAkB,CAAC;SAC7D,CAAC,CAAC;QACH,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC;IAC7D,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,KAIV;QACC,IACE,CAAC,aAAa,CAAC,KAAK,CAAC;YACrB,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,eAAe,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;YACnE,KAAK,CAAC,aAAa,KAAK,CAAC;YACzB,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC;YAC7B,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,EAAE;gBAC3B,eAAe;gBACf,WAAW;gBACX,OAAO;gBACP,UAAU;gBACV,SAAS;gBACT,WAAW;gBACX,WAAW;gBACX,SAAS;gBACT,OAAO;gBACP,gBAAgB;gBAChB,eAAe;aAChB,CAAC;YAEF,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC3C,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAC3E,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC3C,MAAM,EAAE,aAAa,EAAE,cAAc,EAAE,GAAG,eAAe,EAAE,GAAG,OAAO,CAAC;QACtE,MAAM,aAAa,GAAG,qBAAqB,CAAC,eAAe,CAAC,CAAC;QAC7D,MAAM,kBAAkB,GAAG,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACtD,MAAM,OAAO,GAAG,uBAAuB,CACrC,IAAI,CAAC,MAAM,EACX,OAAO,CAAC,SAAS,EACjB,aAAa,EACb,kBAAkB,EAClB,OAAO,CAAC,cAAc,CACvB,CAAC;QACF,IACE,OAAO,CAAC,aAAa,KAAK,CAAC;YAC3B,aAAa,KAAK,OAAO,CAAC,aAAa;YACvC,CAAC,OAAO;YACR,aAAa,KAAK,OAAO,CAAC,aAAa;YACvC,OAAO,CAAC,SAAS,KAAK,OAAO,CAAC,SAAS;YACvC,OAAO,CAAC,WAAW,KAAK,kBAAkB;YAC1C,OAAO,CAAC,cAAc,KAAK,OAAO,CAAC,cAAc;YACjD,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,KAAK,CAAC,QAAQ;YAC3C,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,CAAC,KAAK;YACrC,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC;YAE/C,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC3C,MAAM,OAAO,GAAG,wBAAwB,CACtC,IAAI,CAAC,MAAM,EACX,OAAO,CAAC,gBAAgB,EACxB,KAAK,CAAC,aAAa,CACpB,CAAC;QACF,IAAI,OAAO,CAAC,MAAM,KAAK,UAAU;YAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC5E,IACE,OAAO,CAAC,gBAAgB,KAAK,IAAI,CAAC,UAAU,CAAC,gBAAgB;YAC7D,OAAO,CAAC,YAAY,KAAK,IAAI,CAAC,UAAU,CAAC,YAAY;YACrD,OAAO,CAAC,iBAAiB,KAAK,IAAI,CAAC,UAAU,CAAC,iBAAiB;YAE/D,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC9C,IACE,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,aAAa;YACpC,IAAI,CAAC,UAAU,CAAC,WAAW,KAAK,mBAAmB;YAEnD,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC9C,IACE,CAAC,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAC5C,OAAO,EACP,OAAO,EACP,KAAK,CAAC,aAAa,CACpB,CAAC;YAEF,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;QACzC,MAAM,KAAK,GAAG,0BAA0B,CACtC,IAAI,CAAC,iBAAiB,EACtB,OAAO,CAAC,KAAK,EACb,aAAa,EACb,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAClC,OAAO,CAAC,KAAK,EACb,aAAa,EACb,KAAK,CAAC,aAAa,CACpB,CACF,CAAC;QACF,MAAM,QAAQ,GAAG,wBAAwB,CACvC,IAAI,CAAC,MAAM,EACX,OAAO,CAAC,gBAAgB,EACxB,KAAK,CAAC,aAAa,EACnB,KAAK,CACN,CAAC;QACF,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAY,CAAC;QAC1C,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,0BAA0B,CACvC,IAAI,CAAC,iBAAiB,EACtB,OAAO,CAAC,KAAK,EACb,aAAa,EACb,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAClC,OAAO,CAAC,KAAK,EACb,aAAa,EACb,KAAK,CAAC,aAAa,CACpB,CACF,CAAC;YACF,IACE,CAAC,kCAAkC,CACjC,OAAO,CAAC,KAAK,EACb,QAAQ,CAAC,WAAW,EACpB,MAAM,EACN,WAAW,CACZ,EACD,CAAC;gBACD,uBAAuB,CACrB,IAAI,CAAC,MAAM,EACX,QAAQ,CAAC,gBAAgB,EACzB,WAAW,CAAC,aAAa,EACzB,WAAW,CAAC,wBAAwB,EACpC,QAAQ,CACT,CAAC;gBACF,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;YACvC,CAAC;YACD,IAAI,sBAAsB,GAAG,KAAK,CAAC;YACnC,IAAI,CAAC;gBACH,sBAAsB,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,cAAc,CACnE,OAAO,EACP,OAAO,EACP,KAAK,CAAC,aAAa,CACpB,CAAC;YACJ,CAAC;YAAC,MAAM,CAAC;gBACP,sBAAsB,GAAG,KAAK,CAAC;YACjC,CAAC;YACD,IAAI,CAAC,sBAAsB,EAAE,CAAC;gBAC5B,uBAAuB,CACrB,IAAI,CAAC,MAAM,EACX,QAAQ,CAAC,gBAAgB,EACzB,WAAW,CAAC,aAAa,EACzB,WAAW,CAAC,wBAAwB,EACpC,QAAQ,CACT,CAAC;gBACF,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;YACzC,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;gBAC3B,aAAa,EAAE,CAAU;gBACzB,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB;gBAC3C,aAAa,EAAE,WAAW,CAAC,aAAa;gBACxC,wBAAwB,EAAE,WAAW,CAAC,wBAAwB;gBAC9D,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;gBAChC,WAAW,EAAE,QAAQ,CAAC,WAAW;gBACjC,aAAa;gBACb,cAAc,EAAE,QAAQ,CAAC,cAAc;gBACvC,mBAAmB,EAAE,WAAW,CAAC,mBAAmB;gBACpD,YAAY,EAAE,WAAW,CAAC,YAAY;aACvC,CAAC,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;gBACxC,OAAO;gBACP,MAAM;aACP,CAAC,CAAC;YACH,uBAAuB,CACrB,IAAI,CAAC,MAAM,EACX,QAAQ,CAAC,gBAAgB,EACzB,WAAW,CAAC,aAAa,EACzB,WAAW,CAAC,wBAAwB,EACpC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAC9B,CAAC;YACF,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;YAC3D,IAAI,OAAO,EAAE,MAAM,KAAK,UAAU;gBAChC,uBAAuB,CACrB,IAAI,CAAC,MAAM,EACX,QAAQ,CAAC,gBAAgB,EACzB,WAAW,CAAC,aAAa,EACzB,WAAW,CAAC,wBAAwB,EACpC,eAAe,CAChB,CAAC;YACJ,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,104 @@
1
+ import type { TenantContext } from '@agentplat/core';
2
+ import type { ModelAdapter, ModelExecutionContext, ModelRequest, ModelResult, ModelStreamEvent, ModelToolDefinition } from '@agentplat/model';
3
+ import { type InferenceControlBoundaryV1 } from './boundary.js';
4
+ import type { ContextEntryV1, ControlScopeV1 } from './types.js';
5
+ export interface ControlledModelOptionsV1 {
6
+ readonly temperature: number | null;
7
+ readonly maxOutputTokens: number | null;
8
+ readonly stop: readonly string[];
9
+ readonly responseFormat: 'text' | 'json' | null;
10
+ }
11
+ export interface ControlledModelRequestV1 {
12
+ readonly schemaVersion: 1;
13
+ readonly runId: string;
14
+ readonly tenantId: string;
15
+ readonly policyId: string;
16
+ readonly policyVersion: number;
17
+ readonly capabilityHandleId: string;
18
+ readonly contextEntryIds: readonly string[];
19
+ readonly model: string | null;
20
+ readonly tools: readonly ModelToolDefinition[];
21
+ readonly options: ControlledModelOptionsV1 | null;
22
+ readonly scope: ControlScopeV1 | null;
23
+ }
24
+ export interface RenderedControlledModelRequestV1 {
25
+ readonly schemaVersion: 1;
26
+ readonly request: ModelRequest;
27
+ readonly providerRequestDigest: string;
28
+ readonly contextEntries: readonly ContextEntryV1[];
29
+ }
30
+ export interface ControlledModelAssessmentRequestV1 {
31
+ readonly schemaVersion: 1;
32
+ readonly runId: string;
33
+ readonly checkpoint: 'pre_run' | 'stream' | 'post_run';
34
+ readonly targetKind: 'provider_request' | 'stream_window' | 'final_output';
35
+ readonly targetDigest: string;
36
+ readonly content: string | null;
37
+ readonly sequence: number | null;
38
+ readonly fromByte: number | null;
39
+ readonly throughByteExclusive: number | null;
40
+ }
41
+ export interface ControlledModelAssessmentResultV1 {
42
+ readonly disposition: 'allow' | 'deny' | 'abstain' | 'escalate';
43
+ readonly reasonCode: string;
44
+ }
45
+ export interface ControlledModelAssessorV1 {
46
+ readonly assessorId: string;
47
+ readonly assessorVersion: number;
48
+ readonly assessorBindingDigest: string;
49
+ assess(request: ControlledModelAssessmentRequestV1): Promise<ControlledModelAssessmentResultV1>;
50
+ }
51
+ export interface ControlledModelExecutorOptionsV1 {
52
+ readonly adapter: ModelAdapter;
53
+ readonly controlBoundary: InferenceControlBoundaryV1;
54
+ readonly contextEntries: (ids: readonly string[]) => readonly ContextEntryV1[];
55
+ readonly assessor: ControlledModelAssessorV1;
56
+ readonly mode: 'observe' | 'buffered' | 'incremental';
57
+ readonly outputRisk: 'low' | 'moderate' | 'high';
58
+ }
59
+ export interface ControlledModelResultV1 {
60
+ readonly schemaVersion: 1;
61
+ readonly runId: string;
62
+ readonly status: 'completed' | 'denied' | 'abstained' | 'escalated';
63
+ readonly output: string | null;
64
+ readonly outputDigest: string | null;
65
+ readonly releasedBytes: number;
66
+ readonly providerResult: ModelResult | null;
67
+ }
68
+ export type ControlledModelStreamEventV1 = {
69
+ readonly type: 'control_started';
70
+ readonly runId: string;
71
+ readonly providerRequestDigest: string;
72
+ } | {
73
+ readonly type: 'control_output_released';
74
+ readonly runId: string;
75
+ readonly streamId: string;
76
+ readonly sequence: number;
77
+ readonly throughByteExclusive: number;
78
+ readonly content: string;
79
+ readonly contentDigest: string;
80
+ } | {
81
+ readonly type: 'control_tool_withheld';
82
+ readonly runId: string;
83
+ readonly callId: string;
84
+ readonly toolName: string;
85
+ } | {
86
+ readonly type: 'control_completed';
87
+ readonly runId: string;
88
+ readonly status: ControlledModelResultV1['status'];
89
+ readonly releasedBytes: number;
90
+ readonly outputDigest: string | null;
91
+ } | {
92
+ readonly type: 'control_failed';
93
+ readonly runId: string;
94
+ readonly reasonCode: string;
95
+ };
96
+ export declare function renderControlledModelRequestV1(controlled: ControlledModelRequestV1, resolveEntries: (ids: readonly string[]) => readonly ContextEntryV1[]): RenderedControlledModelRequestV1;
97
+ export declare class ControlledModelExecutorV1 {
98
+ #private;
99
+ constructor(options: ControlledModelExecutorOptionsV1);
100
+ generate(controlled: ControlledModelRequestV1, context: ModelExecutionContext): Promise<ControlledModelResultV1>;
101
+ stream(controlled: ControlledModelRequestV1, context: ModelExecutionContext): AsyncIterable<ControlledModelStreamEventV1>;
102
+ }
103
+ export type { ModelExecutionContext, ModelStreamEvent, TenantContext };
104
+ //# sourceMappingURL=model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"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"}