@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.
- package/dist/cognition/emergent/EffectsStore.d.ts +6 -1
- package/dist/cognition/emergent/EffectsStore.d.ts.map +1 -1
- package/dist/cognition/emergent/EffectsStore.js.map +1 -1
- package/dist/cognition/emergent/EmergentCapabilityEngine.d.ts +8 -0
- package/dist/cognition/emergent/EmergentCapabilityEngine.d.ts.map +1 -1
- package/dist/cognition/emergent/EmergentCapabilityEngine.js +84 -9
- package/dist/cognition/emergent/EmergentCapabilityEngine.js.map +1 -1
- package/dist/cognition/emergent/EmergentJudge.d.ts.map +1 -1
- package/dist/cognition/emergent/EmergentJudge.js +8 -1
- package/dist/cognition/emergent/EmergentJudge.js.map +1 -1
- package/dist/cognition/emergent/ForgeToolMetaTool.d.ts +2 -1
- package/dist/cognition/emergent/ForgeToolMetaTool.d.ts.map +1 -1
- package/dist/cognition/emergent/ForgeToolMetaTool.js +27 -4
- package/dist/cognition/emergent/ForgeToolMetaTool.js.map +1 -1
- package/dist/cognition/emergent/SandboxedToolForge.d.ts +7 -3
- package/dist/cognition/emergent/SandboxedToolForge.d.ts.map +1 -1
- package/dist/cognition/emergent/SandboxedToolForge.js +21 -8
- package/dist/cognition/emergent/SandboxedToolForge.js.map +1 -1
- package/dist/cognition/emergent/broker/CapabilityBroker.d.ts +56 -18
- package/dist/cognition/emergent/broker/CapabilityBroker.d.ts.map +1 -1
- package/dist/cognition/emergent/broker/CapabilityBroker.js +309 -47
- package/dist/cognition/emergent/broker/CapabilityBroker.js.map +1 -1
- package/dist/cognition/emergent/broker/dry-run.d.ts +39 -0
- package/dist/cognition/emergent/broker/dry-run.d.ts.map +1 -0
- package/dist/cognition/emergent/broker/dry-run.js +88 -0
- package/dist/cognition/emergent/broker/dry-run.js.map +1 -0
- package/dist/cognition/emergent/broker/fetch.d.ts +30 -7
- package/dist/cognition/emergent/broker/fetch.d.ts.map +1 -1
- package/dist/cognition/emergent/broker/fetch.js +69 -9
- package/dist/cognition/emergent/broker/fetch.js.map +1 -1
- package/dist/cognition/emergent/broker/fs-write.d.ts +73 -0
- package/dist/cognition/emergent/broker/fs-write.d.ts.map +1 -0
- package/dist/cognition/emergent/broker/fs-write.js +268 -0
- package/dist/cognition/emergent/broker/fs-write.js.map +1 -0
- package/dist/cognition/emergent/broker/protected.d.ts +19 -0
- package/dist/cognition/emergent/broker/protected.d.ts.map +1 -0
- package/dist/cognition/emergent/broker/protected.js +89 -0
- package/dist/cognition/emergent/broker/protected.js.map +1 -0
- package/dist/cognition/emergent/capabilities.d.ts +2 -0
- package/dist/cognition/emergent/capabilities.d.ts.map +1 -1
- package/dist/cognition/emergent/capabilities.js +12 -2
- package/dist/cognition/emergent/capabilities.js.map +1 -1
- package/dist/cognition/emergent/ceiling.d.ts +38 -3
- package/dist/cognition/emergent/ceiling.d.ts.map +1 -1
- package/dist/cognition/emergent/ceiling.js +119 -2
- package/dist/cognition/emergent/ceiling.js.map +1 -1
- package/dist/cognition/emergent/executor/QuickJSExecutor.d.ts +1 -1
- package/dist/cognition/emergent/executor/QuickJSExecutor.d.ts.map +1 -1
- package/dist/cognition/emergent/executor/QuickJSExecutor.js +45 -15
- package/dist/cognition/emergent/executor/QuickJSExecutor.js.map +1 -1
- package/dist/cognition/emergent/executor/guest-prelude.d.ts.map +1 -1
- package/dist/cognition/emergent/executor/guest-prelude.js +48 -17
- package/dist/cognition/emergent/executor/guest-prelude.js.map +1 -1
- package/dist/cognition/emergent/executor/guest-surface.d.ts.map +1 -1
- package/dist/cognition/emergent/executor/guest-surface.js +18 -5
- package/dist/cognition/emergent/executor/guest-surface.js.map +1 -1
- package/dist/cognition/emergent/persisted-source.d.ts.map +1 -1
- package/dist/cognition/emergent/persisted-source.js +7 -1
- package/dist/cognition/emergent/persisted-source.js.map +1 -1
- package/dist/cognition/emergent/types.d.ts +117 -6
- package/dist/cognition/emergent/types.d.ts.map +1 -1
- package/dist/cognition/emergent/types.js.map +1 -1
- package/dist/core/tools/ITool.d.ts +12 -2
- package/dist/core/tools/ITool.d.ts.map +1 -1
- package/dist/io/hearing/LiveKitTranscriptionOutput.d.ts +95 -0
- package/dist/io/hearing/LiveKitTranscriptionOutput.d.ts.map +1 -0
- package/dist/io/hearing/LiveKitTranscriptionOutput.js +108 -0
- package/dist/io/hearing/LiveKitTranscriptionOutput.js.map +1 -0
- package/dist/io/hearing/livekit.d.ts +15 -0
- package/dist/io/hearing/livekit.d.ts.map +1 -0
- package/dist/io/hearing/livekit.js +15 -0
- package/dist/io/hearing/livekit.js.map +1 -0
- package/dist/io/voice-pipeline/browser.d.ts +19 -0
- package/dist/io/voice-pipeline/browser.d.ts.map +1 -0
- package/dist/io/voice-pipeline/browser.js +20 -0
- package/dist/io/voice-pipeline/browser.js.map +1 -0
- package/dist/io/voice-pipeline/index.d.ts +1 -0
- package/dist/io/voice-pipeline/index.d.ts.map +1 -1
- package/dist/io/voice-pipeline/index.js +1 -0
- package/dist/io/voice-pipeline/index.js.map +1 -1
- package/dist/io/voice-pipeline/transcriptLedger.d.ts +139 -0
- package/dist/io/voice-pipeline/transcriptLedger.d.ts.map +1 -0
- package/dist/io/voice-pipeline/transcriptLedger.js +192 -0
- package/dist/io/voice-pipeline/transcriptLedger.js.map +1 -0
- package/dist/io/voice-pipeline/types.d.ts +27 -0
- package/dist/io/voice-pipeline/types.d.ts.map +1 -1
- 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.
|
|
6
|
-
*
|
|
7
|
-
* the
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
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 {
|
|
18
|
-
import {
|
|
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
|
-
|
|
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
|
-
|
|
68
|
-
|
|
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
|
|
76
|
-
if (grant.includes('fs.read') && readScope &&
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
return
|
|
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,
|
|
120
|
-
* not settled is listed `pending`, and its
|
|
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 = {
|
|
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
|
|
186
|
-
*
|
|
187
|
-
*
|
|
188
|
-
*
|
|
189
|
-
* one row naming `given`, the value the tool passed,
|
|
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:
|
|
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
|
-
/**
|
|
227
|
-
|
|
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, {
|
|
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
|
-
|
|
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:
|
|
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"}
|