@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,587 @@
1
+ import { parseAgentSseStream, } from '@agentplat/streaming';
2
+ import { assertContextAllowedByPolicyV1, resolveControlBoundaryV1, } from './boundary.js';
3
+ import { canonicalizeControlJsonV1, digestControlJsonV1, utf8ByteLength, } from './canonical.js';
4
+ import { validateControlScopeV1 } from './scopes.js';
5
+ import { assertDigest, assertExactKeys, assertOneOf, assertString, deepFreeze as freezeControlValue, } from './validation.js';
6
+ const MAX_RENDERED_BYTES = 1_048_576;
7
+ const MAX_DEFINITION_CONFIG_BYTES = 65_536;
8
+ export function renderControlledAgentRequestV1(controlled, resolveEntries) {
9
+ assertControlledAgentRequest(controlled);
10
+ const allIds = [
11
+ ...controlled.agentDefinition.instructionContextEntryIds,
12
+ ...controlled.contextEntryIds,
13
+ ];
14
+ if (new Set(allIds).size !== allIds.length)
15
+ throw new Error('state_conflict');
16
+ const resolved = resolveEntries(allIds);
17
+ if (resolved.length !== allIds.length)
18
+ throw new Error('context_zone_invalid');
19
+ const byId = new Map(resolved.map((entry) => [entry.contextEntryId, entry]));
20
+ const instructionEntries = controlled.agentDefinition.instructionContextEntryIds.map((id) => requireEntry(byId, id, controlled));
21
+ if (instructionEntries.some((entry) => !['policy', 'objective', 'local_trusted'].includes(entry.zone))) {
22
+ throw new Error('context_promotion_denied');
23
+ }
24
+ const dataEntries = controlled.contextEntryIds.map((id) => requireEntry(byId, id, controlled));
25
+ if (dataEntries.some((entry) => ['policy', 'objective', 'local_trusted'].includes(entry.zone))) {
26
+ throw new Error('context_zone_invalid');
27
+ }
28
+ const trustedContext = tiered(instructionEntries, [
29
+ 'policy',
30
+ 'objective',
31
+ 'local_trusted',
32
+ ]).map((entry) => ({
33
+ contextEntryId: entry.contextEntryId,
34
+ zone: entry.zone,
35
+ sourceId: entry.sourceId,
36
+ sourceVersion: entry.sourceVersion,
37
+ contentDigest: entry.contentDigest,
38
+ content: entry.content,
39
+ }));
40
+ const inputItems = [
41
+ {
42
+ schemaVersion: 1,
43
+ kind: 'agentplat.control.input',
44
+ content: controlled.input,
45
+ },
46
+ ...tiered(dataEntries, [
47
+ 'user_untrusted',
48
+ 'peer_untrusted',
49
+ 'tool_untrusted',
50
+ 'retrieval_untrusted',
51
+ 'provider_untrusted',
52
+ 'assessor_untrusted',
53
+ ]).map((entry) => ({
54
+ schemaVersion: 1,
55
+ kind: 'agentplat.control.context',
56
+ zone: entry.zone,
57
+ sourceKind: entry.sourceKind,
58
+ sourceId: entry.sourceId,
59
+ sourceVersion: entry.sourceVersion,
60
+ content: entry.content,
61
+ contentDigest: entry.contentDigest,
62
+ provenanceDigest: entry.provenanceDigest,
63
+ createdAtLogicalMs: entry.createdAtLogicalMs,
64
+ })),
65
+ ];
66
+ const definition = controlled.agentDefinition;
67
+ const agent = {
68
+ id: definition.agentId,
69
+ tenantId: controlled.tenantId,
70
+ name: definition.name,
71
+ platform: definition.platform,
72
+ ...(definition.description === null
73
+ ? {}
74
+ : { description: definition.description }),
75
+ ...(definition.modelName === null
76
+ ? {}
77
+ : { modelName: definition.modelName }),
78
+ ...(definition.config === null
79
+ ? {}
80
+ : { config: cloneJson(definition.config) }),
81
+ instructions: canonicalizeControlJsonV1({
82
+ schemaVersion: 1,
83
+ trustedContext,
84
+ }),
85
+ };
86
+ const input = { input: inputItems, mode: 'invoke' };
87
+ const digestValue = cloneJson({ agent, input });
88
+ if (utf8ByteLength(canonicalizeControlJsonV1(digestValue)) > MAX_RENDERED_BYTES) {
89
+ throw new Error('context_limit_exceeded');
90
+ }
91
+ return Object.freeze({
92
+ schemaVersion: 1,
93
+ agent: deepFreeze(agent),
94
+ input: deepFreeze(input),
95
+ providerRequestDigest: digestControlJsonV1('provider-request', digestValue),
96
+ contextEntries: Object.freeze([...instructionEntries, ...dataEntries]),
97
+ });
98
+ }
99
+ export class ControlledAgentExecutorV1 {
100
+ #options;
101
+ constructor(options) {
102
+ if (options.outputRisk === 'high' && options.mode !== 'buffered')
103
+ throw new Error('release_mode_incompatible');
104
+ assertDigest(options.assessor.assessorBindingDigest, 'assessorBindingDigest');
105
+ this.#options = Object.freeze({
106
+ provider: Object.freeze({
107
+ run: options.provider.run.bind(options.provider),
108
+ ...(options.provider.stream
109
+ ? { stream: options.provider.stream.bind(options.provider) }
110
+ : {}),
111
+ }),
112
+ contextEntries: options.contextEntries,
113
+ assessor: Object.freeze({
114
+ assessorId: options.assessor.assessorId,
115
+ assessorVersion: options.assessor.assessorVersion,
116
+ assessorBindingDigest: options.assessor.assessorBindingDigest,
117
+ assess: options.assessor.assess.bind(options.assessor),
118
+ }),
119
+ controlBoundary: options.controlBoundary,
120
+ mode: options.mode,
121
+ outputRisk: options.outputRisk,
122
+ });
123
+ }
124
+ async run(request, context) {
125
+ const boundary = this.#resolveBoundary(request);
126
+ const rendered = renderControlledAgentRequestV1(request, this.#options.contextEntries);
127
+ assertContextAllowedByPolicyV1(boundary.policy, rendered.contextEntries);
128
+ await this.#preRun(request.runId, rendered.providerRequestDigest, boundary.policy);
129
+ const result = await this.#options.provider.run(rendered.agent, rendered.input, context);
130
+ const output = result.output ?? null;
131
+ const outputBytes = output === null ? 0 : utf8ByteLength(output);
132
+ if (outputBytes > boundary.policy.limits.maxBufferedOutputBytes)
133
+ throw new Error('release_buffer_exceeded');
134
+ const digest = output === null ? null : digestControlJsonV1('assessment-target', output);
135
+ if (output === null)
136
+ return terminalResult(request, 'failed', null, null, 0, 'assessment_indeterminate');
137
+ const assessment = await this.#assess({
138
+ runId: request.runId,
139
+ checkpoint: 'post_run',
140
+ targetDigest: digest,
141
+ content: output,
142
+ sequence: null,
143
+ }, boundary.policy);
144
+ if (assessment.disposition !== 'allow' &&
145
+ this.#options.mode !== 'observe') {
146
+ return terminalResult(request, terminalDisposition(assessment.disposition), null, digest, 0, assessment.reasonCode);
147
+ }
148
+ return terminalResult(request, 'completed', output, digest, outputBytes, null);
149
+ }
150
+ async *stream(request, context) {
151
+ if (!this.#options.provider.stream)
152
+ throw new Error('release_mode_incompatible');
153
+ const boundary = this.#resolveBoundary(request);
154
+ const rendered = renderControlledAgentRequestV1(request, this.#options.contextEntries);
155
+ assertContextAllowedByPolicyV1(boundary.policy, rendered.contextEntries);
156
+ await this.#preRun(request.runId, rendered.providerRequestDigest, boundary.policy);
157
+ const generation = 1;
158
+ yield {
159
+ type: 'control_started',
160
+ runId: request.runId,
161
+ payload: {
162
+ schemaVersion: 1,
163
+ generation,
164
+ policyId: request.policyId,
165
+ policyVersion: request.policyVersion,
166
+ },
167
+ };
168
+ let streamId = `stream:${request.runId}`;
169
+ let sequence = 0;
170
+ let releasedBytes = 0;
171
+ let text = '';
172
+ let completedText;
173
+ let providerTerminal = false;
174
+ const pending = [];
175
+ try {
176
+ for await (const event of this.#options.provider.stream(rendered.agent, rendered.input, context)) {
177
+ if (providerTerminal)
178
+ throw new Error('stream_terminal_invalid');
179
+ if (event.type === 'started')
180
+ continue;
181
+ if (event.type === 'token') {
182
+ const content = event.content;
183
+ const bytes = utf8ByteLength(content);
184
+ if (bytes < 1 ||
185
+ bytes > boundary.policy.limits.maxOutputChunkBytes ||
186
+ sequence >= boundary.policy.limits.maxOutputChunksPerRun)
187
+ throw new Error('release_buffer_exceeded');
188
+ text += content;
189
+ if (this.#options.mode === 'buffered' &&
190
+ utf8ByteLength(text) > boundary.policy.limits.maxBufferedOutputBytes)
191
+ throw new Error('release_buffer_exceeded');
192
+ if (this.#options.mode === 'incremental' &&
193
+ bytes > boundary.policy.limits.maxPendingWindowBytes)
194
+ throw new Error('release_buffer_exceeded');
195
+ const digest = digestControlJsonV1('assessment-target', content);
196
+ const current = sequence++;
197
+ if (this.#options.mode === 'buffered') {
198
+ pending.push({ content, sequence: current, digest });
199
+ }
200
+ else {
201
+ const assessment = await this.#assess({
202
+ runId: request.runId,
203
+ checkpoint: 'stream',
204
+ targetDigest: digestControlJsonV1('stream-window', {
205
+ streamId,
206
+ sequence: current,
207
+ contentDigest: digest,
208
+ }),
209
+ content,
210
+ sequence: current,
211
+ }, boundary.policy);
212
+ if (assessment.disposition !== 'allow' &&
213
+ this.#options.mode !== 'observe') {
214
+ yield completedEvent(request.runId, generation, terminalDisposition(assessment.disposition), releasedBytes, digest);
215
+ return;
216
+ }
217
+ releasedBytes += bytes;
218
+ yield releasedEvent(request.runId, generation, streamId, current, releasedBytes, content, digest);
219
+ }
220
+ continue;
221
+ }
222
+ if (event.type === 'tool_call') {
223
+ const actionDigest = digestControlJsonV1('action', cloneJson(event.payload ?? {}));
224
+ yield {
225
+ type: 'control_action_withheld',
226
+ runId: request.runId,
227
+ payload: {
228
+ schemaVersion: 1,
229
+ generation,
230
+ actionDigest,
231
+ reasonCode: 'assessment_required',
232
+ },
233
+ };
234
+ continue;
235
+ }
236
+ if (event.type === 'tool_result')
237
+ continue;
238
+ if (event.type === 'completed') {
239
+ providerTerminal = true;
240
+ completedText = event.content;
241
+ continue;
242
+ }
243
+ if (event.type === 'failed') {
244
+ providerTerminal = true;
245
+ throw new Error('assessment_indeterminate');
246
+ }
247
+ }
248
+ if (completedText === undefined)
249
+ throw new Error('stream_terminal_missing');
250
+ if (text && completedText !== text)
251
+ throw new Error('stream_content_mismatch');
252
+ const finalText = completedText;
253
+ if (utf8ByteLength(finalText) >
254
+ boundary.policy.limits.maxBufferedOutputBytes)
255
+ throw new Error('release_buffer_exceeded');
256
+ const outputDigest = digestControlJsonV1('assessment-target', finalText);
257
+ const assessment = await this.#assess({
258
+ runId: request.runId,
259
+ checkpoint: 'post_run',
260
+ targetDigest: outputDigest,
261
+ content: finalText,
262
+ sequence: null,
263
+ }, boundary.policy);
264
+ if (assessment.disposition !== 'allow' &&
265
+ this.#options.mode !== 'observe') {
266
+ yield completedEvent(request.runId, generation, terminalDisposition(assessment.disposition), releasedBytes, outputDigest);
267
+ return;
268
+ }
269
+ if (this.#options.mode === 'buffered') {
270
+ for (const chunk of pending) {
271
+ releasedBytes += utf8ByteLength(chunk.content);
272
+ yield releasedEvent(request.runId, generation, streamId, chunk.sequence, releasedBytes, chunk.content, chunk.digest);
273
+ }
274
+ }
275
+ else if (sequence === 0 && finalText) {
276
+ releasedBytes = utf8ByteLength(finalText);
277
+ yield releasedEvent(request.runId, generation, streamId, 0, releasedBytes, finalText, outputDigest);
278
+ }
279
+ yield completedEvent(request.runId, generation, 'completed', releasedBytes, outputDigest);
280
+ }
281
+ catch (error) {
282
+ yield {
283
+ type: 'control_failed',
284
+ runId: request.runId,
285
+ payload: {
286
+ schemaVersion: 1,
287
+ generation,
288
+ reasonCode: error instanceof Error ? error.message : 'assessment_indeterminate',
289
+ },
290
+ };
291
+ }
292
+ }
293
+ async #preRun(runId, digest, policy) {
294
+ const assessment = await this.#assess({
295
+ runId,
296
+ checkpoint: 'pre_run',
297
+ targetDigest: digest,
298
+ content: null,
299
+ sequence: null,
300
+ }, policy);
301
+ if (assessment.disposition !== 'allow' && this.#options.mode !== 'observe')
302
+ throw new Error(assessment.reasonCode);
303
+ }
304
+ async #assess(request, policy) {
305
+ const binding = policy.assessmentBindings.find((candidate) => candidate.checkpoint === request.checkpoint);
306
+ if (!binding ||
307
+ binding.assessorId !== this.#options.assessor.assessorId ||
308
+ binding.assessorVersion !== this.#options.assessor.assessorVersion ||
309
+ binding.assessorBindingDigest !==
310
+ this.#options.assessor.assessorBindingDigest)
311
+ throw new Error('assessment_assessor_mismatch');
312
+ const result = await this.#options.assessor.assess(request);
313
+ assertExactKeys(result, ['disposition', 'reasonCode'], 'runtime assessment');
314
+ assertOneOf(result.disposition, ['allow', 'deny', 'abstain', 'escalate'], 'assessment disposition');
315
+ assertString(result.reasonCode, 'assessment reasonCode');
316
+ return freezeControlValue({ ...result });
317
+ }
318
+ #resolveBoundary(request) {
319
+ return resolveControlBoundaryV1(this.#options.controlBoundary, {
320
+ policyId: request.policyId,
321
+ policyVersion: request.policyVersion,
322
+ capabilityHandleId: request.capabilityHandleId,
323
+ expectedMode: this.#options.mode,
324
+ expectedOutputRisk: this.#options.outputRisk,
325
+ });
326
+ }
327
+ }
328
+ export function validateControlledAgentRunEventV1(value) {
329
+ const event = closedRecord(value, ['type', 'runId', 'content', 'payload'], ['type', 'runId', 'payload']);
330
+ if (typeof event.type !== 'string' || typeof event.runId !== 'string')
331
+ throw new TypeError('Invalid controlled event');
332
+ const payload = closedRecord(event.payload, payloadKeys(event.type), payloadKeys(event.type));
333
+ if (payload.schemaVersion !== 1 || !positiveInteger(payload.generation))
334
+ throw new TypeError('Invalid controlled payload');
335
+ if (event.type === 'control_output_released') {
336
+ if (typeof event.content !== 'string' ||
337
+ !nonNegativeInteger(payload.sequence) ||
338
+ !positiveInteger(payload.throughByteExclusive) ||
339
+ typeof payload.streamId !== 'string' ||
340
+ typeof payload.contentDigest !== 'string')
341
+ throw new TypeError('Invalid release event');
342
+ }
343
+ else {
344
+ if ('content' in event)
345
+ throw new TypeError('Unexpected controlled event content');
346
+ if (event.type === 'control_started' &&
347
+ (typeof payload.policyId !== 'string' ||
348
+ !positiveInteger(payload.policyVersion)))
349
+ throw new TypeError('Invalid controlled start');
350
+ if (event.type === 'control_action_withheld' &&
351
+ (typeof payload.actionDigest !== 'string' ||
352
+ typeof payload.reasonCode !== 'string'))
353
+ throw new TypeError('Invalid controlled withholding');
354
+ if (event.type === 'control_completed' &&
355
+ (!['completed', 'denied', 'abstained', 'escalated'].includes(payload.status) ||
356
+ !nonNegativeInteger(payload.releasedBytes) ||
357
+ typeof payload.outputDigest !== 'string'))
358
+ throw new TypeError('Invalid controlled completion');
359
+ if (event.type === 'control_failed' &&
360
+ typeof payload.reasonCode !== 'string')
361
+ throw new TypeError('Invalid controlled failure');
362
+ }
363
+ if (![
364
+ 'control_started',
365
+ 'control_output_released',
366
+ 'control_action_withheld',
367
+ 'control_completed',
368
+ 'control_failed',
369
+ ].includes(event.type))
370
+ throw new TypeError('Unknown controlled event type');
371
+ }
372
+ export function createControlledAgentSseValidatorV1() {
373
+ let expectedSequence = 1;
374
+ let runId;
375
+ let generation;
376
+ let releasedSequence = -1;
377
+ let releasedBytes = 0;
378
+ let releasedContent = '';
379
+ let started = false;
380
+ let terminal = false;
381
+ return Object.freeze({
382
+ validate(envelope) {
383
+ if (terminal)
384
+ throw new TypeError('Controlled event follows terminal');
385
+ if (envelope.sequence !== expectedSequence++)
386
+ throw new TypeError('Non-contiguous controlled SSE sequence');
387
+ const event = {
388
+ type: envelope.type,
389
+ ...('runId' in envelope ? { runId: envelope.runId } : {}),
390
+ ...('content' in envelope ? { content: envelope.content } : {}),
391
+ ...('payload' in envelope ? { payload: envelope.payload } : {}),
392
+ };
393
+ validateControlledAgentRunEventV1(event);
394
+ const payload = event.payload;
395
+ if (!started) {
396
+ if (event.type !== 'control_started')
397
+ throw new TypeError('Controlled SSE must start with control_started');
398
+ started = true;
399
+ }
400
+ else if (event.type === 'control_started') {
401
+ throw new TypeError('Duplicate controlled SSE start');
402
+ }
403
+ runId ??= event.runId;
404
+ generation ??= payload.generation;
405
+ if (event.runId !== runId || payload.generation !== generation)
406
+ throw new TypeError('Cross-run controlled SSE event');
407
+ if (event.type === 'control_output_released') {
408
+ const released = event.payload;
409
+ if (released.sequence !== releasedSequence + 1 ||
410
+ released.throughByteExclusive !==
411
+ releasedBytes + utf8ByteLength(event.content) ||
412
+ released.contentDigest !==
413
+ digestControlJsonV1('assessment-target', event.content))
414
+ throw new TypeError('Invalid controlled release head');
415
+ releasedSequence = released.sequence;
416
+ releasedBytes = released.throughByteExclusive;
417
+ releasedContent += event.content;
418
+ }
419
+ if (event.type === 'control_completed') {
420
+ if (event.payload.releasedBytes !== releasedBytes)
421
+ throw new TypeError('Controlled completion release mismatch');
422
+ if (event.payload.status === 'completed' &&
423
+ event.payload.outputDigest !==
424
+ digestControlJsonV1('assessment-target', releasedContent))
425
+ throw new TypeError('Controlled completion digest mismatch');
426
+ }
427
+ terminal =
428
+ event.type === 'control_completed' || event.type === 'control_failed';
429
+ },
430
+ finish() {
431
+ if (!terminal)
432
+ throw new TypeError('Controlled SSE ended without one terminal event');
433
+ },
434
+ });
435
+ }
436
+ export async function* consumeControlledAgentSseV1(readable, options = {}) {
437
+ const validator = createControlledAgentSseValidatorV1();
438
+ let complete = false;
439
+ try {
440
+ for await (const envelope of parseAgentSseStream(readable, {
441
+ signal: options.signal,
442
+ validate: validator.validate,
443
+ })) {
444
+ yield envelope;
445
+ }
446
+ complete = true;
447
+ }
448
+ finally {
449
+ if (complete)
450
+ validator.finish();
451
+ }
452
+ }
453
+ function assertControlledAgentRequest(request) {
454
+ if (request.schemaVersion !== 1 ||
455
+ request.agentDefinition.schemaVersion !== 1)
456
+ throw new TypeError('assessment_invalid');
457
+ if (request.scope !== null)
458
+ validateControlScopeV1(request.scope);
459
+ if (!positiveInteger(request.policyVersion) ||
460
+ request.contextEntryIds.length > 256 ||
461
+ request.agentDefinition.instructionContextEntryIds.length > 64)
462
+ throw new TypeError('context_limit_exceeded');
463
+ if (utf8ByteLength(request.agentDefinition.name) < 1 ||
464
+ utf8ByteLength(request.agentDefinition.name) > 256)
465
+ throw new TypeError('context_limit_exceeded');
466
+ if (request.agentDefinition.config &&
467
+ utf8ByteLength(canonicalizeControlJsonV1(request.agentDefinition.config)) >
468
+ MAX_DEFINITION_CONFIG_BYTES)
469
+ throw new TypeError('context_limit_exceeded');
470
+ }
471
+ function requireEntry(entries, id, request) {
472
+ const entry = entries.get(id);
473
+ if (!entry ||
474
+ entry.runId !== request.runId ||
475
+ entry.tenantId !== request.tenantId)
476
+ throw new Error('context_zone_invalid');
477
+ return entry;
478
+ }
479
+ function tiered(entries, zones) {
480
+ return zones.flatMap((zone) => entries.filter((entry) => entry.zone === zone));
481
+ }
482
+ function terminalResult(request, status, output, digest, releasedBytes, reason) {
483
+ return Object.freeze({
484
+ schemaVersion: 1,
485
+ runId: request.runId,
486
+ tenantId: request.tenantId,
487
+ generation: 1,
488
+ status,
489
+ output,
490
+ outputDigest: digest,
491
+ releasedBytes,
492
+ terminalReasonCode: reason,
493
+ diagnostics: Object.freeze([]),
494
+ });
495
+ }
496
+ function releasedEvent(runId, generation, streamId, sequence, throughByteExclusive, content, contentDigest) {
497
+ return {
498
+ type: 'control_output_released',
499
+ runId,
500
+ content,
501
+ payload: {
502
+ schemaVersion: 1,
503
+ generation,
504
+ streamId,
505
+ sequence,
506
+ throughByteExclusive,
507
+ contentDigest,
508
+ },
509
+ };
510
+ }
511
+ function completedEvent(runId, generation, status, releasedBytes, outputDigest) {
512
+ return {
513
+ type: 'control_completed',
514
+ runId,
515
+ payload: {
516
+ schemaVersion: 1,
517
+ generation,
518
+ status,
519
+ releasedBytes,
520
+ outputDigest,
521
+ },
522
+ };
523
+ }
524
+ function payloadKeys(type) {
525
+ switch (type) {
526
+ case 'control_started':
527
+ return ['schemaVersion', 'generation', 'policyId', 'policyVersion'];
528
+ case 'control_output_released':
529
+ return [
530
+ 'schemaVersion',
531
+ 'generation',
532
+ 'streamId',
533
+ 'sequence',
534
+ 'throughByteExclusive',
535
+ 'contentDigest',
536
+ ];
537
+ case 'control_action_withheld':
538
+ return ['schemaVersion', 'generation', 'actionDigest', 'reasonCode'];
539
+ case 'control_completed':
540
+ return [
541
+ 'schemaVersion',
542
+ 'generation',
543
+ 'status',
544
+ 'releasedBytes',
545
+ 'outputDigest',
546
+ ];
547
+ case 'control_failed':
548
+ return ['schemaVersion', 'generation', 'reasonCode'];
549
+ default:
550
+ throw new TypeError('Unknown controlled event type');
551
+ }
552
+ }
553
+ function closedRecord(value, allowed, required) {
554
+ if (!value ||
555
+ typeof value !== 'object' ||
556
+ Array.isArray(value) ||
557
+ Object.getPrototypeOf(value) !== Object.prototype)
558
+ throw new TypeError('Expected closed object');
559
+ const keys = Object.keys(value);
560
+ if (keys.some((key) => !allowed.includes(key)) ||
561
+ required.some((key) => !Object.hasOwn(value, key)))
562
+ throw new TypeError('Unexpected or missing object field');
563
+ return value;
564
+ }
565
+ function positiveInteger(value) {
566
+ return Number.isSafeInteger(value) && value > 0;
567
+ }
568
+ function nonNegativeInteger(value) {
569
+ return Number.isSafeInteger(value) && value >= 0;
570
+ }
571
+ function cloneJson(value) {
572
+ return JSON.parse(JSON.stringify(value));
573
+ }
574
+ function deepFreeze(value) {
575
+ if (value && typeof value === 'object' && !Object.isFrozen(value)) {
576
+ Object.freeze(value);
577
+ for (const child of Object.values(value))
578
+ deepFreeze(child);
579
+ }
580
+ return value;
581
+ }
582
+ function terminalDisposition(disposition) {
583
+ if (disposition === 'deny' || disposition === 'allow')
584
+ return 'denied';
585
+ return disposition === 'abstain' ? 'abstained' : 'escalated';
586
+ }
587
+ //# sourceMappingURL=runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { ControlScopeV1 } from './types.js';
2
+ export declare function validateControlScopeV1(value: unknown): ControlScopeV1;
3
+ //# sourceMappingURL=scopes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scopes.d.ts","sourceRoot":"","sources":["../src/scopes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AA6CjD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,cAAc,CA8CrE"}