@framers/agentos 0.13.3 → 0.13.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 (87) hide show
  1. package/dist/cognition/emergent/EffectsStore.d.ts +6 -1
  2. package/dist/cognition/emergent/EffectsStore.d.ts.map +1 -1
  3. package/dist/cognition/emergent/EffectsStore.js.map +1 -1
  4. package/dist/cognition/emergent/EmergentCapabilityEngine.d.ts +8 -0
  5. package/dist/cognition/emergent/EmergentCapabilityEngine.d.ts.map +1 -1
  6. package/dist/cognition/emergent/EmergentCapabilityEngine.js +84 -9
  7. package/dist/cognition/emergent/EmergentCapabilityEngine.js.map +1 -1
  8. package/dist/cognition/emergent/EmergentJudge.d.ts.map +1 -1
  9. package/dist/cognition/emergent/EmergentJudge.js +8 -1
  10. package/dist/cognition/emergent/EmergentJudge.js.map +1 -1
  11. package/dist/cognition/emergent/ForgeToolMetaTool.d.ts +2 -1
  12. package/dist/cognition/emergent/ForgeToolMetaTool.d.ts.map +1 -1
  13. package/dist/cognition/emergent/ForgeToolMetaTool.js +27 -4
  14. package/dist/cognition/emergent/ForgeToolMetaTool.js.map +1 -1
  15. package/dist/cognition/emergent/SandboxedToolForge.d.ts +7 -3
  16. package/dist/cognition/emergent/SandboxedToolForge.d.ts.map +1 -1
  17. package/dist/cognition/emergent/SandboxedToolForge.js +21 -8
  18. package/dist/cognition/emergent/SandboxedToolForge.js.map +1 -1
  19. package/dist/cognition/emergent/broker/CapabilityBroker.d.ts +56 -18
  20. package/dist/cognition/emergent/broker/CapabilityBroker.d.ts.map +1 -1
  21. package/dist/cognition/emergent/broker/CapabilityBroker.js +309 -47
  22. package/dist/cognition/emergent/broker/CapabilityBroker.js.map +1 -1
  23. package/dist/cognition/emergent/broker/dry-run.d.ts +39 -0
  24. package/dist/cognition/emergent/broker/dry-run.d.ts.map +1 -0
  25. package/dist/cognition/emergent/broker/dry-run.js +88 -0
  26. package/dist/cognition/emergent/broker/dry-run.js.map +1 -0
  27. package/dist/cognition/emergent/broker/fetch.d.ts +30 -7
  28. package/dist/cognition/emergent/broker/fetch.d.ts.map +1 -1
  29. package/dist/cognition/emergent/broker/fetch.js +69 -9
  30. package/dist/cognition/emergent/broker/fetch.js.map +1 -1
  31. package/dist/cognition/emergent/broker/fs-write.d.ts +73 -0
  32. package/dist/cognition/emergent/broker/fs-write.d.ts.map +1 -0
  33. package/dist/cognition/emergent/broker/fs-write.js +268 -0
  34. package/dist/cognition/emergent/broker/fs-write.js.map +1 -0
  35. package/dist/cognition/emergent/broker/protected.d.ts +19 -0
  36. package/dist/cognition/emergent/broker/protected.d.ts.map +1 -0
  37. package/dist/cognition/emergent/broker/protected.js +89 -0
  38. package/dist/cognition/emergent/broker/protected.js.map +1 -0
  39. package/dist/cognition/emergent/capabilities.d.ts +2 -0
  40. package/dist/cognition/emergent/capabilities.d.ts.map +1 -1
  41. package/dist/cognition/emergent/capabilities.js +12 -2
  42. package/dist/cognition/emergent/capabilities.js.map +1 -1
  43. package/dist/cognition/emergent/ceiling.d.ts +38 -3
  44. package/dist/cognition/emergent/ceiling.d.ts.map +1 -1
  45. package/dist/cognition/emergent/ceiling.js +119 -2
  46. package/dist/cognition/emergent/ceiling.js.map +1 -1
  47. package/dist/cognition/emergent/executor/QuickJSExecutor.d.ts +1 -1
  48. package/dist/cognition/emergent/executor/QuickJSExecutor.d.ts.map +1 -1
  49. package/dist/cognition/emergent/executor/QuickJSExecutor.js +45 -15
  50. package/dist/cognition/emergent/executor/QuickJSExecutor.js.map +1 -1
  51. package/dist/cognition/emergent/executor/guest-prelude.d.ts.map +1 -1
  52. package/dist/cognition/emergent/executor/guest-prelude.js +48 -17
  53. package/dist/cognition/emergent/executor/guest-prelude.js.map +1 -1
  54. package/dist/cognition/emergent/executor/guest-surface.d.ts.map +1 -1
  55. package/dist/cognition/emergent/executor/guest-surface.js +18 -5
  56. package/dist/cognition/emergent/executor/guest-surface.js.map +1 -1
  57. package/dist/cognition/emergent/persisted-source.d.ts.map +1 -1
  58. package/dist/cognition/emergent/persisted-source.js +7 -1
  59. package/dist/cognition/emergent/persisted-source.js.map +1 -1
  60. package/dist/cognition/emergent/types.d.ts +117 -6
  61. package/dist/cognition/emergent/types.d.ts.map +1 -1
  62. package/dist/cognition/emergent/types.js.map +1 -1
  63. package/dist/core/tools/ITool.d.ts +12 -2
  64. package/dist/core/tools/ITool.d.ts.map +1 -1
  65. package/dist/io/hearing/LiveKitTranscriptionOutput.d.ts +95 -0
  66. package/dist/io/hearing/LiveKitTranscriptionOutput.d.ts.map +1 -0
  67. package/dist/io/hearing/LiveKitTranscriptionOutput.js +108 -0
  68. package/dist/io/hearing/LiveKitTranscriptionOutput.js.map +1 -0
  69. package/dist/io/hearing/livekit.d.ts +15 -0
  70. package/dist/io/hearing/livekit.d.ts.map +1 -0
  71. package/dist/io/hearing/livekit.js +15 -0
  72. package/dist/io/hearing/livekit.js.map +1 -0
  73. package/dist/io/voice-pipeline/browser.d.ts +19 -0
  74. package/dist/io/voice-pipeline/browser.d.ts.map +1 -0
  75. package/dist/io/voice-pipeline/browser.js +20 -0
  76. package/dist/io/voice-pipeline/browser.js.map +1 -0
  77. package/dist/io/voice-pipeline/index.d.ts +1 -0
  78. package/dist/io/voice-pipeline/index.d.ts.map +1 -1
  79. package/dist/io/voice-pipeline/index.js +1 -0
  80. package/dist/io/voice-pipeline/index.js.map +1 -1
  81. package/dist/io/voice-pipeline/transcriptLedger.d.ts +139 -0
  82. package/dist/io/voice-pipeline/transcriptLedger.d.ts.map +1 -0
  83. package/dist/io/voice-pipeline/transcriptLedger.js +192 -0
  84. package/dist/io/voice-pipeline/transcriptLedger.js.map +1 -0
  85. package/dist/io/voice-pipeline/types.d.ts +27 -0
  86. package/dist/io/voice-pipeline/types.d.ts.map +1 -1
  87. package/package.json +11 -1
@@ -2,28 +2,56 @@
2
2
  * @fileoverview The host-side broker for code-forged tools under a ceiling.
3
3
  * It hands each run the functions the run's grant names, scoped by the
4
4
  * ceiling. Before every capability call it checks, in this order: the run is
5
- * live, the capability is in the grant, the target fits the scope. It then
6
- * writes the intent record, naming the target as checked (the URL it sends,
7
- * the path it reads), checks the run is still live, performs the call while
8
- * tracking it under the run's id, and writes the terminal record. When
9
- * the run ends, `endCall` waits up to {@link CALL_SETTLE_MS} for what is in
10
- * flight and returns the run's effects. On `node:vm` these checks are a
11
- * guardrail for code that acts through these functions; Node's documentation
12
- * says `node:vm` is not a security mechanism.
5
+ * live, the capability is in the grant, the target fits the scope. For an
6
+ * effect (a write, a delete, a state-changing request) it then checks the
7
+ * bounds, reserving the effect's share of the run's totals in the same
8
+ * synchronous step, and asks the host's `effectPolicy`. It then writes the
9
+ * intent record, naming the target as checked (the URL it sends, the path it
10
+ * reads or writes), checks the run is still live, performs the call while
11
+ * tracking it under the run's id, and writes the terminal record. When the
12
+ * run ends, `endCall` waits up to {@link CALL_SETTLE_MS} for what is in
13
+ * flight and returns the run's effects. In a forge test's run (a dry run)
14
+ * every check is made as in a real call and nothing is written, deleted or
15
+ * sent (dry-run.ts). On `node:vm` these checks are a guardrail for code that
16
+ * acts through these functions; Node's documentation says `node:vm` is not a
17
+ * security mechanism, and effects are granted only on an isolating executor.
13
18
  * @module @framers/agentos/emergent/broker/CapabilityBroker
14
19
  */
15
20
  import { createHash, createHmac, randomUUID } from 'node:crypto';
21
+ import { realpath } from 'node:fs/promises';
22
+ import * as path from 'node:path';
16
23
  import { recordedTarget } from '../EffectsStore.js';
17
- import { fetchTarget, prepareFetch, sendFetch } from './fetch.js';
18
- import { prepareRead, readPrepared, ReadRoots, ReadTooLarge } from './fs-read.js';
24
+ import { DryRunOverlay } from './dry-run.js';
25
+ import { fetchTarget, InFlightCut, prepareFetch, sendFetch, STATE_CHANGING } from './fetch.js';
26
+ import { prepareRead, readPrepared, ReadRoots, ReadTooLarge, withinRoots } from './fs-read.js';
27
+ import { checkDelete, checkWrite, EffectCut, EffectRoots, removeAt, writeAt, writeBytes } from './fs-write.js';
19
28
  import { CapabilityRefusal } from './refusal.js';
20
29
  /** How long a run's end waits for its aborted capability calls to settle. */
21
30
  export const CALL_SETTLE_MS = 1000;
31
+ /** How long `effectPolicy` may take; its silence past this refuses the effect. */
32
+ export const POLICY_TIMEOUT_MS = 1000;
33
+ /** A state-changing request that was sent and answered, whose answer passed `maxResponseBytes`. */
34
+ class AnsweredTooLarge extends CapabilityRefusal {
35
+ constructor(detail) {
36
+ super('response_too_large', detail);
37
+ }
38
+ }
22
39
  /** The terminal half for a call that threw. */
23
40
  function endOf(error) {
24
41
  if (error instanceof ReadTooLarge) {
25
42
  return { outcome: 'refused', code: error.code, bytes: error.bytesRead };
26
43
  }
44
+ if (error instanceof InFlightCut) {
45
+ // The request was sent: whether the server acted on it is unknown.
46
+ return { outcome: null, code: error.code };
47
+ }
48
+ if (error instanceof AnsweredTooLarge) {
49
+ // The request was made and answered; only the answer was refused.
50
+ return { outcome: 'ok', code: error.code };
51
+ }
52
+ if (error instanceof EffectCut) {
53
+ return { outcome: error.outcome, code: error.code };
54
+ }
27
55
  if (error instanceof CapabilityRefusal) {
28
56
  if (error.code === 'aborted' || error.code === 'timed_out') {
29
57
  return { outcome: error.code, code: error.code };
@@ -36,12 +64,18 @@ export class CapabilityBroker {
36
64
  /**
37
65
  * @param ceiling - The resolved ceiling the functions are scoped by.
38
66
  * @param store - Where effect records go; absent with `audit.store: 'none'`.
67
+ * @param options - The host's `effectPolicy`, and the protected paths for
68
+ * write and delete roots that did not exist when the ceiling was built.
39
69
  */
40
- constructor(ceiling, store) {
70
+ constructor(ceiling, store, options = {}) {
41
71
  this.ceiling = ceiling;
42
72
  this.store = store;
43
73
  this.runs = new Map();
74
+ const protectedReal = options.protectedReal ?? [];
44
75
  this.readRoots = ceiling['fs.read'] ? new ReadRoots(ceiling['fs.read'].roots) : undefined;
76
+ this.writeRoots = ceiling['fs.write'] ? new EffectRoots(ceiling['fs.write'].roots, protectedReal) : undefined;
77
+ this.deleteRoots = ceiling['fs.delete'] ? new EffectRoots(ceiling['fs.delete'].roots, protectedReal) : undefined;
78
+ this.policy = options.policy;
45
79
  }
46
80
  /**
47
81
  * The globals injected into one run's sandbox: a function for each
@@ -60,34 +94,136 @@ export class CapabilityBroker {
60
94
  const given = fetchTarget(input);
61
95
  return this.perform(run, grant, 'fetch', given ?? String(input), () => {
62
96
  const prepared = prepareFetch(given, init, fetchScope);
97
+ if (!STATE_CHANGING.has(prepared.method)) {
98
+ return {
99
+ // The first request's URL, as parsed: what was checked and sent.
100
+ target: prepared.url.href,
101
+ operation: async (signal) => {
102
+ const sent = await sendFetch(prepared, fetchScope, signal);
103
+ return { value: sent.response, bytes: sent.bytes };
104
+ },
105
+ };
106
+ }
107
+ const bodyBytes = prepared.bodyBytes ?? 0;
63
108
  return {
64
- // The first request's URL, as parsed: what was checked and sent.
65
- target: prepared.url.href,
109
+ target: `${prepared.method} ${prepared.url.href}`,
110
+ effect: { pending: { capability: 'fetch', target: prepared.url.href, method: prepared.method, bytes: bodyBytes } },
66
111
  operation: async (signal) => {
67
- const sent = await sendFetch(prepared, fetchScope, signal);
68
- return { value: sent.response, bytes: sent.bytes };
112
+ if (run.overlay) {
113
+ // A dry run sends nothing: the test case's answer, or a 204 saying so.
114
+ return { value: run.overlay.answer(prepared.method, prepared.url), bytes: bodyBytes, code: 'dry_run' };
115
+ }
116
+ try {
117
+ const sent = await sendFetch(prepared, fetchScope, signal);
118
+ return { value: sent.response, bytes: sent.bytes };
119
+ }
120
+ catch (error) {
121
+ if (error instanceof CapabilityRefusal && error.code === 'response_too_large') {
122
+ throw new AnsweredTooLarge(error.message);
123
+ }
124
+ throw error;
125
+ }
69
126
  },
70
127
  };
71
128
  });
72
129
  };
73
130
  }
131
+ const fsFunctions = {};
74
132
  const readScope = this.ceiling['fs.read'];
75
- const roots = this.readRoots;
76
- if (grant.includes('fs.read') && readScope && roots) {
77
- functions.fs = {
78
- readFile: (filePath) => this.perform(run, grant, 'fs.read', String(filePath), () => {
79
- const resolved = prepareRead(filePath, roots);
80
- return {
81
- // The path as resolved and checked against the roots (the read
82
- // follows its links, and checks the real path again).
83
- target: resolved,
84
- operation: async (signal) => {
85
- const read = await readPrepared(resolved, roots, readScope, signal);
86
- return { value: read.text, bytes: read.bytes };
133
+ const readRoots = this.readRoots;
134
+ if (grant.includes('fs.read') && readScope && readRoots) {
135
+ fsFunctions.readFile = (filePath) => this.perform(run, grant, 'fs.read', String(filePath), () => {
136
+ const resolved = prepareRead(filePath, readRoots);
137
+ return {
138
+ // The path as resolved and checked against the roots (the read
139
+ // follows its links, and checks the real path again).
140
+ target: resolved,
141
+ operation: async (signal) => {
142
+ const fromOverlay = run.overlay ? await this.readOverlay(run.overlay, resolved, readRoots, readScope) : undefined;
143
+ if (fromOverlay) {
144
+ return fromOverlay;
145
+ }
146
+ const read = await readPrepared(resolved, readRoots, readScope, signal);
147
+ return { value: read.text, bytes: read.bytes };
148
+ },
149
+ };
150
+ });
151
+ }
152
+ const writeScope = this.ceiling['fs.write'];
153
+ const writeRoots = this.writeRoots;
154
+ if (grant.includes('fs.write') && writeScope && writeRoots) {
155
+ fsFunctions.writeFile = (filePath, data) => this.perform(run, grant, 'fs.write', String(filePath), async () => {
156
+ // The effect's time bound starts when it is admitted, checks included.
157
+ const timer = AbortSignal.timeout(writeScope.timeoutMs);
158
+ const bytes = writeBytes(data);
159
+ const target = await checkWrite(filePath, writeRoots, writeScope.mode, run.overlay);
160
+ const size = bytes.byteLength;
161
+ return {
162
+ target,
163
+ effect: {
164
+ pending: { capability: 'fs.write', target, bytes: size },
165
+ reserve: () => {
166
+ if (size > writeScope.maxBytesPerFile) {
167
+ throw new CapabilityRefusal('file_too_large', `${size} bytes, more than ${writeScope.maxBytesPerFile}`);
168
+ }
169
+ if (run.written.files + 1 > writeScope.maxFilesPerCall) {
170
+ throw new CapabilityRefusal('call_quota_exceeded', `more than ${writeScope.maxFilesPerCall} files written in one call`);
171
+ }
172
+ if (run.written.bytes + size > writeScope.maxBytesPerCall) {
173
+ throw new CapabilityRefusal('call_quota_exceeded', `more than ${writeScope.maxBytesPerCall} bytes written in one call`);
174
+ }
175
+ run.written.files += 1;
176
+ run.written.bytes += size;
87
177
  },
88
- };
89
- }),
90
- };
178
+ release: () => {
179
+ run.written.files -= 1;
180
+ run.written.bytes -= size;
181
+ },
182
+ },
183
+ operation: async (signal) => {
184
+ if (run.overlay) {
185
+ await run.overlay.write(target, bytes);
186
+ return { value: undefined, bytes: size, code: 'dry_run' };
187
+ }
188
+ const done = await writeAt(target, bytes, writeScope.mode, run.call.id, signal, timer);
189
+ return { value: undefined, bytes: done.bytes };
190
+ },
191
+ };
192
+ });
193
+ }
194
+ const deleteScope = this.ceiling['fs.delete'];
195
+ const deleteRoots = this.deleteRoots;
196
+ if (grant.includes('fs.delete') && deleteScope && deleteRoots) {
197
+ fsFunctions.unlink = (filePath) => this.perform(run, grant, 'fs.delete', String(filePath), async () => {
198
+ const timer = AbortSignal.timeout(deleteScope.timeoutMs);
199
+ const target = await checkDelete(filePath, deleteRoots, run.overlay);
200
+ return {
201
+ target,
202
+ effect: {
203
+ pending: { capability: 'fs.delete', target },
204
+ reserve: () => {
205
+ if (run.deleted + 1 > deleteScope.maxFilesPerCall) {
206
+ throw new CapabilityRefusal('call_quota_exceeded', `more than ${deleteScope.maxFilesPerCall} files deleted in one call`);
207
+ }
208
+ run.deleted += 1;
209
+ },
210
+ release: () => {
211
+ run.deleted -= 1;
212
+ },
213
+ },
214
+ operation: async (signal) => {
215
+ if (run.overlay) {
216
+ run.overlay.remove(target);
217
+ return { value: undefined, bytes: 0, code: 'dry_run' };
218
+ }
219
+ const done = await removeAt(target, signal, timer);
220
+ return { value: undefined, bytes: done.bytes };
221
+ },
222
+ };
223
+ });
224
+ }
225
+ if (Object.keys(fsFunctions).length > 0) {
226
+ functions.fs = fsFunctions;
91
227
  }
92
228
  if (grant.includes('crypto') && this.ceiling.crypto) {
93
229
  // Synchronous and reaching nothing outside the process: counted per
@@ -116,8 +252,9 @@ export class CapabilityBroker {
116
252
  /**
117
253
  * Ends a run: refuses its capability calls from now on (the owner aborts
118
254
  * the run's signal too), waits up to `settleMs` for the calls in flight,
119
- * writes the crypto count, and returns the run's effects. A call that has
120
- * not settled is listed `pending`, and its record completes when it settles.
255
+ * writes the crypto count, removes a dry run's files, and returns the
256
+ * run's effects. A call that has not settled is listed `pending`, and its
257
+ * record completes when it settles.
121
258
  */
122
259
  async endCall(callId, settleMs = CALL_SETTLE_MS) {
123
260
  const run = this.runs.get(callId);
@@ -136,6 +273,11 @@ export class CapabilityBroker {
136
273
  ]);
137
274
  clearTimeout(timer);
138
275
  }
276
+ if (run.overlay) {
277
+ const overlay = run.overlay;
278
+ // A write still in flight lands in the directory first; remove it after that.
279
+ void Promise.allSettled([...run.inFlight]).then(() => overlay.dispose());
280
+ }
139
281
  if (run.cryptoUses > 0) {
140
282
  const effect = {
141
283
  kind: 'capability',
@@ -167,7 +309,16 @@ export class CapabilityBroker {
167
309
  ledgerFor(call) {
168
310
  let run = this.runs.get(call.id);
169
311
  if (!run) {
170
- run = { call, effects: [], inFlight: new Set(), cryptoUses: 0, ended: false };
312
+ run = {
313
+ call,
314
+ effects: [],
315
+ inFlight: new Set(),
316
+ cryptoUses: 0,
317
+ ended: false,
318
+ written: { files: 0, bytes: 0 },
319
+ deleted: 0,
320
+ ...(call.dryRun ? { overlay: new DryRunOverlay(call.dryRun.responses) } : {}),
321
+ };
171
322
  this.runs.set(call.id, run);
172
323
  }
173
324
  return run;
@@ -181,18 +332,92 @@ export class CapabilityBroker {
181
332
  throw new CapabilityRefusal('capability_not_granted', capability);
182
333
  }
183
334
  }
335
+ /** What a record or an effect list shows of a target: in full in a forge test's run, for the judge; otherwise as `audit.content` says. */
336
+ shownTarget(run, target) {
337
+ return run.call.dryRun ? target : recordedTarget(target, this.ceiling.audit.content);
338
+ }
339
+ /**
340
+ * A dry run's read of a path the run wrote or deleted: what the run left
341
+ * there, after the same checks as a real read. Undefined when the run did
342
+ * neither, and the read goes to the real tree.
343
+ */
344
+ async readOverlay(overlay, resolved, roots, scope) {
345
+ let parent;
346
+ try {
347
+ parent = await realpath(path.dirname(resolved));
348
+ }
349
+ catch {
350
+ return undefined;
351
+ }
352
+ const target = path.join(parent, path.basename(resolved));
353
+ const entry = overlay.look(target);
354
+ if (entry === undefined) {
355
+ return undefined;
356
+ }
357
+ if (!withinRoots(parent, await roots.real())) {
358
+ throw new CapabilityRefusal('path_not_allowed', `${resolved} resolves outside the roots`);
359
+ }
360
+ if (entry === 'absent') {
361
+ throw new CapabilityRefusal('no_such_file', resolved);
362
+ }
363
+ const data = (await overlay.read(target)) ?? Buffer.alloc(0);
364
+ if (data.byteLength > scope.maxBytesPerRead) {
365
+ throw new ReadTooLarge(data.byteLength, scope.maxBytesPerRead);
366
+ }
367
+ return { value: data.toString('utf-8'), bytes: data.byteLength };
368
+ }
369
+ /**
370
+ * The host's verdict on an effect: undefined to go on, or the reason it is
371
+ * refused. A throw, or no answer within {@link POLICY_TIMEOUT_MS}, refuses.
372
+ */
373
+ async askPolicy(run, effect) {
374
+ const policy = this.policy;
375
+ if (!policy) {
376
+ return undefined;
377
+ }
378
+ const pending = {
379
+ ...effect.pending,
380
+ toolId: run.call.toolId,
381
+ agentId: run.call.agentId,
382
+ callId: run.call.id,
383
+ dryRun: run.call.dryRun !== undefined,
384
+ };
385
+ let timer;
386
+ try {
387
+ const verdict = await Promise.race([
388
+ Promise.resolve().then(() => policy(pending)),
389
+ new Promise((resolve) => {
390
+ timer = setTimeout(() => resolve('silent'), POLICY_TIMEOUT_MS);
391
+ }),
392
+ ]);
393
+ if (verdict === 'silent') {
394
+ return `effectPolicy did not answer within ${POLICY_TIMEOUT_MS} ms`;
395
+ }
396
+ if (verdict !== null && typeof verdict === 'object' && 'deny' in verdict) {
397
+ return String(verdict.deny);
398
+ }
399
+ return undefined;
400
+ }
401
+ catch (error) {
402
+ return `effectPolicy threw: ${error instanceof Error ? error.message : String(error)}`;
403
+ }
404
+ finally {
405
+ clearTimeout(timer);
406
+ }
407
+ }
184
408
  /**
185
- * One capability call: the checks, then the recorded call, tracked in
186
- * flight from its intent write to its terminal write, so ending the run
187
- * waits for both. The records name the target the checks passed (the URL
188
- * sent, the path read); a call refused before they passed is recorded as
189
- * one row naming `given`, the value the tool passed, read once.
409
+ * One capability call: the scope checks, then for an effect the bounds and
410
+ * the policy, then the recorded call, tracked in flight from its intent
411
+ * write to its terminal write, so ending the run waits for both. The
412
+ * records name the target the checks passed; a call refused before they
413
+ * passed is recorded as one row naming `given`, the value the tool passed,
414
+ * read once.
190
415
  */
191
416
  async perform(run, grant, capability, given, prepare) {
192
417
  let prepared;
193
418
  try {
194
419
  this.admit(run, grant, capability);
195
- prepared = prepare();
420
+ prepared = await prepare();
196
421
  }
197
422
  catch (error) {
198
423
  if (error instanceof CapabilityRefusal) {
@@ -200,20 +425,46 @@ export class CapabilityBroker {
200
425
  }
201
426
  throw error;
202
427
  }
203
- const { target, operation } = prepared;
428
+ const { target, operation, effect: effectCheck } = prepared;
429
+ if (effectCheck) {
430
+ // The run is checked again after the scope's awaits, and the bounds
431
+ // are reserved in this synchronous step, so calls in flight together
432
+ // cannot pass a bound between them.
433
+ try {
434
+ this.admit(run, grant, capability);
435
+ effectCheck.reserve?.();
436
+ }
437
+ catch (error) {
438
+ if (error instanceof CapabilityRefusal) {
439
+ await this.recordRefusal(run, capability, target, error.code);
440
+ }
441
+ throw error;
442
+ }
443
+ const denied = await this.askPolicy(run, effectCheck);
444
+ const ended = run.ended || run.call.signal.aborted;
445
+ if (denied !== undefined || ended) {
446
+ effectCheck.release?.();
447
+ const refusal = denied !== undefined
448
+ ? new CapabilityRefusal('policy_denied', denied)
449
+ : new CapabilityRefusal('call_ended', capability);
450
+ await this.recordRefusal(run, capability, target, refusal.code);
451
+ throw refusal;
452
+ }
453
+ }
204
454
  const effect = {
205
455
  kind: 'capability',
206
456
  toolId: run.call.toolId,
207
457
  callId: run.call.id,
208
458
  capability,
209
- target: recordedTarget(target, this.ceiling.audit.content),
459
+ target: this.shownTarget(run, target),
210
460
  decision: 'allowed',
211
461
  decidedBy: 'ceiling',
212
462
  outcome: 'pending',
213
463
  record: this.store ? 'written' : 'none',
464
+ ...(effectCheck && run.overlay ? { dryRun: true } : {}),
214
465
  };
215
466
  run.effects.push(effect);
216
- const recorded = this.carryOut(run, effect, capability, target, operation);
467
+ const recorded = this.carryOut(run, effect, capability, target, operation, effectCheck?.release);
217
468
  const settled = recorded.then(() => undefined, () => undefined);
218
469
  run.inFlight.add(settled);
219
470
  try {
@@ -223,8 +474,12 @@ export class CapabilityBroker {
223
474
  run.inFlight.delete(settled);
224
475
  }
225
476
  }
226
- /** The intent record, the run checked again, the call, and its terminal record. */
227
- async carryOut(run, effect, capability, target, operation) {
477
+ /**
478
+ * The intent record, the run checked again, the call, and its terminal
479
+ * record. An effect that never started returns its reserved share
480
+ * (`release`); one that ran, or was cut, keeps it.
481
+ */
482
+ async carryOut(run, effect, capability, target, operation, release) {
228
483
  let rowId;
229
484
  if (this.store) {
230
485
  try {
@@ -238,11 +493,13 @@ export class CapabilityBroker {
238
493
  code: 'audit_unavailable',
239
494
  record: 'none',
240
495
  });
496
+ release?.();
241
497
  throw new CapabilityRefusal('audit_unavailable', `${capability}: its effect record could not be written`);
242
498
  }
243
499
  }
244
500
  // The run may have ended while its intent was written.
245
501
  if (run.ended || run.call.signal.aborted) {
502
+ release?.();
246
503
  await this.finish(effect, rowId, { outcome: 'aborted', code: 'call_ended' });
247
504
  throw new CapabilityRefusal('call_ended', capability);
248
505
  }
@@ -254,11 +511,16 @@ export class CapabilityBroker {
254
511
  await this.finish(effect, rowId, endOf(error));
255
512
  throw error;
256
513
  }
257
- await this.finish(effect, rowId, { outcome: 'ok', bytes: result.bytes });
514
+ await this.finish(effect, rowId, {
515
+ outcome: 'ok',
516
+ bytes: result.bytes,
517
+ ...(result.code !== undefined ? { code: result.code } : {}),
518
+ });
258
519
  return result.value;
259
520
  }
260
521
  async finish(effect, rowId, end) {
261
- effect.outcome = end.outcome;
522
+ // A stored outcome left empty is the store's unknown.
523
+ effect.outcome = end.outcome ?? 'unknown';
262
524
  if (end.code !== undefined) {
263
525
  effect.code = end.code;
264
526
  }
@@ -280,7 +542,7 @@ export class CapabilityBroker {
280
542
  toolId: run.call.toolId,
281
543
  callId: run.call.id,
282
544
  capability,
283
- target: recordedTarget(target, this.ceiling.audit.content),
545
+ target: this.shownTarget(run, target),
284
546
  decision: 'refused',
285
547
  decidedBy: code,
286
548
  outcome: 'refused',
@@ -1 +1 @@
1
- {"version":3,"file":"CapabilityBroker.js","sourceRoot":"","sources":["../../../../src/cognition/emergent/broker/CapabilityBroker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CapabilityBroker.js","sourceRoot":"","sources":["../../../../src/cognition/emergent/broker/CapabilityBroker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * @fileoverview A forge test's view of the files it touched. In a dry run
3
+ * every check is made as in a real call, but a write lands in a temporary
4
+ * directory made for the run, a delete marks its target gone for the run,
5
+ * and every check that asks whether a path exists, or what it is, asks this
6
+ * overlay first and the real tree second. A state-changing request is never
7
+ * sent: it takes the first unused answer the test case gave for its method
8
+ * and URL, or a `204` saying it was not sent.
9
+ * @module @framers/agentos/emergent/broker/dry-run
10
+ */
11
+ import type { ForgeTestResponse, HttpMethod } from '../types.js';
12
+ /** The answers one forge test case may give its state-changing requests. */
13
+ export declare const MAX_TEST_RESPONSES = 16;
14
+ /** The header a state-changing request answered by a dry run carries when the test case gave no answer for it. */
15
+ export declare const NOT_SENT_HEADER = "x-agentos-forge-test";
16
+ /** What the overlay knows of a path: written by the run, deleted by it, or nothing (ask the real tree). */
17
+ export type OverlayEntry = 'file' | 'absent' | undefined;
18
+ export declare class DryRunOverlay {
19
+ private readonly responses;
20
+ private dir;
21
+ private readonly written;
22
+ private readonly deleted;
23
+ private readonly used;
24
+ private counter;
25
+ constructor(responses: readonly ForgeTestResponse[]);
26
+ /** What the run did to `target` (a real path), if anything. */
27
+ look(target: string): OverlayEntry;
28
+ /** A write: the data goes to the run's own directory; the target reads as that file for the rest of the run. */
29
+ write(target: string, data: Uint8Array): Promise<void>;
30
+ /** A delete: the target reads as absent for the rest of the run. */
31
+ remove(target: string): void;
32
+ /** The bytes the run wrote at `target`, or undefined when it wrote none there. */
33
+ read(target: string): Promise<Buffer | undefined>;
34
+ /** The answer for a state-changing request, which is not sent. */
35
+ answer(method: HttpMethod, url: URL): Response;
36
+ /** Removes the run's directory. */
37
+ dispose(): Promise<void>;
38
+ }
39
+ //# sourceMappingURL=dry-run.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dry-run.d.ts","sourceRoot":"","sources":["../../../../src/cognition/emergent/broker/dry-run.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,OAAO,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEjE,4EAA4E;AAC5E,eAAO,MAAM,kBAAkB,KAAK,CAAC;AAErC,kHAAkH;AAClH,eAAO,MAAM,eAAe,yBAAyB,CAAC;AAEtD,2GAA2G;AAC3G,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEzD,qBAAa,aAAa;IAOZ,OAAO,CAAC,QAAQ,CAAC,SAAS;IANtC,OAAO,CAAC,GAAG,CAA8B;IACzC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA6B;IACrD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAqB;IAC1C,OAAO,CAAC,OAAO,CAAK;gBAES,SAAS,EAAE,SAAS,iBAAiB,EAAE;IAEpE,+DAA+D;IAC/D,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY;IAOlC,gHAAgH;IAC1G,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAU5D,oEAAoE;IACpE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAK5B,kFAAkF;IAC5E,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAKvD,kEAAkE;IAClE,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,GAAG,QAAQ;IAyB9C,mCAAmC;IAC7B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAO/B"}