@rarebit-one/harness-kernel 0.9.0 → 0.11.0-next.0
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/README.md +174 -6
- package/dist/agent.d.ts +80 -8
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +225 -25
- package/dist/agent.js.map +1 -1
- package/dist/engines/acp.d.ts +10 -0
- package/dist/engines/acp.d.ts.map +1 -1
- package/dist/engines/acp.js +8 -1
- package/dist/engines/acp.js.map +1 -1
- package/dist/engines/acpDriver.d.ts +2 -0
- package/dist/engines/acpDriver.d.ts.map +1 -1
- package/dist/engines/acpDriver.js +6 -1
- package/dist/engines/acpDriver.js.map +1 -1
- package/dist/engines/claudeCode.d.ts +6 -4
- package/dist/engines/claudeCode.d.ts.map +1 -1
- package/dist/engines/claudeCode.js +8 -5
- package/dist/engines/claudeCode.js.map +1 -1
- package/dist/engines/claudeCodeDriver.d.ts +8 -0
- package/dist/engines/claudeCodeDriver.d.ts.map +1 -1
- package/dist/engines/claudeCodeDriver.js +14 -1
- package/dist/engines/claudeCodeDriver.js.map +1 -1
- package/dist/engines/codex.d.ts.map +1 -1
- package/dist/engines/codex.js +2 -1
- package/dist/engines/codex.js.map +1 -1
- package/dist/engines/codexDriver.d.ts +2 -0
- package/dist/engines/codexDriver.d.ts.map +1 -1
- package/dist/engines/codexDriver.js +15 -9
- package/dist/engines/codexDriver.js.map +1 -1
- package/dist/engines/isolation.d.ts +45 -0
- package/dist/engines/isolation.d.ts.map +1 -0
- package/dist/engines/isolation.js +119 -0
- package/dist/engines/isolation.js.map +1 -0
- package/dist/engines/native.d.ts +5 -0
- package/dist/engines/native.d.ts.map +1 -1
- package/dist/engines/native.js +28 -10
- package/dist/engines/native.js.map +1 -1
- package/dist/engines/types.d.ts +28 -0
- package/dist/engines/types.d.ts.map +1 -1
- package/dist/events.d.ts +20 -0
- package/dist/events.d.ts.map +1 -1
- package/dist/events.js.map +1 -1
- package/dist/index.d.ts +17 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -4
- package/dist/index.js.map +1 -1
- package/dist/loop.d.ts +58 -11
- package/dist/loop.d.ts.map +1 -1
- package/dist/loop.js +7 -5
- package/dist/loop.js.map +1 -1
- package/dist/models/chat.d.ts +2 -1
- package/dist/models/chat.d.ts.map +1 -1
- package/dist/models/chat.js +20 -4
- package/dist/models/chat.js.map +1 -1
- package/dist/models/types.d.ts +16 -0
- package/dist/models/types.d.ts.map +1 -1
- package/dist/models/types.js.map +1 -1
- package/dist/private.d.ts.map +1 -1
- package/dist/private.js +21 -0
- package/dist/private.js.map +1 -1
- package/dist/providers/anthropic.d.ts +27 -3
- package/dist/providers/anthropic.d.ts.map +1 -1
- package/dist/providers/anthropic.js +95 -29
- package/dist/providers/anthropic.js.map +1 -1
- package/dist/providers/index.d.ts +42 -6
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js +132 -48
- package/dist/providers/index.js.map +1 -1
- package/dist/providers/mock.d.ts +6 -3
- package/dist/providers/mock.d.ts.map +1 -1
- package/dist/providers/mock.js +8 -3
- package/dist/providers/mock.js.map +1 -1
- package/dist/providers/openai.d.ts +51 -7
- package/dist/providers/openai.d.ts.map +1 -1
- package/dist/providers/openai.js +128 -30
- package/dist/providers/openai.js.map +1 -1
- package/dist/providers/options.d.ts +162 -0
- package/dist/providers/options.d.ts.map +1 -0
- package/dist/providers/options.js +67 -0
- package/dist/providers/options.js.map +1 -0
- package/dist/providers/scripted.d.ts +49 -0
- package/dist/providers/scripted.d.ts.map +1 -0
- package/dist/providers/scripted.js +90 -0
- package/dist/providers/scripted.js.map +1 -0
- package/dist/providers/types.d.ts +34 -0
- package/dist/providers/types.d.ts.map +1 -1
- package/dist/tools/metadata.d.ts +24 -0
- package/dist/tools/metadata.d.ts.map +1 -1
- package/dist/tools/metadata.js +8 -0
- package/dist/tools/metadata.js.map +1 -1
- package/dist/tools/registry.d.ts +10 -3
- package/dist/tools/registry.d.ts.map +1 -1
- package/dist/tools/registry.js +9 -4
- package/dist/tools/registry.js.map +1 -1
- package/dist/tools/terminal.d.ts +33 -0
- package/dist/tools/terminal.d.ts.map +1 -0
- package/dist/tools/terminal.js +32 -0
- package/dist/tools/terminal.js.map +1 -0
- package/package.json +5 -4
package/dist/agent.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { runEventEmitter, } from "./events.js";
|
|
2
2
|
import { nativeLoop, runWithEvents, } from "./loop.js";
|
|
3
|
-
import { asChatModel } from "./models/chat.js";
|
|
3
|
+
import { asChatModel, chatRequest } from "./models/chat.js";
|
|
4
4
|
import { deadlineSignal, isAbortError } from "./signals.js";
|
|
5
5
|
import { executeTool } from "./tools/registry.js";
|
|
6
|
-
import { toToolSpecs } from "./tools/metadata.js";
|
|
6
|
+
import { toToolSpecs, toolDispatch } from "./tools/metadata.js";
|
|
7
7
|
const DEFAULT_MAX_STEPS = 12;
|
|
8
8
|
const FALLBACK_MAX_DURATION_MS = 10 * 60 * 1000;
|
|
9
9
|
/** Resolve the wall-clock run budget from env, falling back to 10 minutes. */
|
|
@@ -18,7 +18,7 @@ const FALLBACK_MAX_TOOL_RESULT_BYTES = 64 * 1024;
|
|
|
18
18
|
* One place, deliberately. A {@link Loop} is handed numbers rather than
|
|
19
19
|
* optionals, so if each caller resolved its own defaults a second loop
|
|
20
20
|
* implementation could silently run to a different ceiling than the one the
|
|
21
|
-
* kernel ships. `runAgent` and `NativeEngine`
|
|
21
|
+
* kernel ships. `runAgent`, `runConversation` and `NativeEngine` all come here.
|
|
22
22
|
*/
|
|
23
23
|
export function resolveLoopLimits(limits) {
|
|
24
24
|
return {
|
|
@@ -77,48 +77,162 @@ function detach(input) {
|
|
|
77
77
|
return { ...input };
|
|
78
78
|
}
|
|
79
79
|
}
|
|
80
|
+
/**
|
|
81
|
+
* The result a tool call gets when the run stopped before it could start. A
|
|
82
|
+
* stopped run must still return a transcript with every call answered: a
|
|
83
|
+
* consumer that stores `messages` and resumes the conversation sends it back
|
|
84
|
+
* to a provider, and every provider rejects a tool call with no result.
|
|
85
|
+
*/
|
|
86
|
+
function notRun(callId) {
|
|
87
|
+
return {
|
|
88
|
+
toolCallId: callId,
|
|
89
|
+
content: "not run: the run was stopped before this tool call",
|
|
90
|
+
isError: true,
|
|
91
|
+
};
|
|
92
|
+
}
|
|
80
93
|
function truncate(text, max = maxToolResultBytes()) {
|
|
81
94
|
return text.length <= max
|
|
82
95
|
? text
|
|
83
96
|
: `${text.slice(0, max)}\n…[truncated ${text.length - max} bytes]`;
|
|
84
97
|
}
|
|
98
|
+
/**
|
|
99
|
+
* Add one call's usage to the running total. Only token usage is summed: a
|
|
100
|
+
* unit-billed kind (`units`) has no place in a chat loop's total, and a call
|
|
101
|
+
* that reported nothing leaves the total as it was rather than zeroing it.
|
|
102
|
+
*/
|
|
103
|
+
function addUsage(total, next) {
|
|
104
|
+
if (!next || "units" in next)
|
|
105
|
+
return total;
|
|
106
|
+
const sum = { ...(total ?? {}) };
|
|
107
|
+
for (const key of [
|
|
108
|
+
"inputTokens",
|
|
109
|
+
"outputTokens",
|
|
110
|
+
"totalTokens",
|
|
111
|
+
"cacheReadTokens",
|
|
112
|
+
"cacheWriteTokens",
|
|
113
|
+
"reasoningTokens",
|
|
114
|
+
]) {
|
|
115
|
+
const n = next[key];
|
|
116
|
+
if (typeof n === "number")
|
|
117
|
+
sum[key] = (sum[key] ?? 0) + n;
|
|
118
|
+
}
|
|
119
|
+
// Cost is summed by amount. Every reporter bills in USD today, and the type
|
|
120
|
+
// admits nothing else, so there is no mixed-currency case to guard.
|
|
121
|
+
if (next.reportedCost) {
|
|
122
|
+
sum.reportedCost = {
|
|
123
|
+
amount: (sum.reportedCost?.amount ?? 0) + next.reportedCost.amount,
|
|
124
|
+
currency: next.reportedCost.currency,
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
return sum;
|
|
128
|
+
}
|
|
129
|
+
/** The seed a loop can continue: non-empty, and not waiting on the caller. */
|
|
130
|
+
function assertSeed(messages) {
|
|
131
|
+
const last = messages[messages.length - 1];
|
|
132
|
+
if (!last) {
|
|
133
|
+
throw new Error("conversation seed is empty: the loop needs at least one user message to answer");
|
|
134
|
+
}
|
|
135
|
+
if (last.role === "assistant") {
|
|
136
|
+
throw new Error("conversation seed ends with an assistant message, so the model has nothing to answer: " +
|
|
137
|
+
"end it with a user message, or with the tool results the model is waiting for");
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
/** The finer reason a custom loop's bare outcome implies, when it reported none. */
|
|
141
|
+
function stopReasonFor(outcome) {
|
|
142
|
+
return outcome === "completed" ? "end_turn" : outcome;
|
|
143
|
+
}
|
|
85
144
|
/**
|
|
86
145
|
* Drives a provider-agnostic tool-use loop: the model converses, the runner
|
|
87
146
|
* executes any requested tools in the sandbox, feeds the results back, and
|
|
88
147
|
* repeats until the model stops calling tools (or the step budget is hit). The
|
|
89
148
|
* model orchestrates; deterministic work happens in the tools.
|
|
149
|
+
*
|
|
150
|
+
* This is the single-shot form: one user prompt in, the final prose out. It is
|
|
151
|
+
* {@link runConversation} with a one-message seed, kept because most callers
|
|
152
|
+
* want exactly that and nothing more.
|
|
90
153
|
*/
|
|
91
154
|
export async function runAgent(options) {
|
|
155
|
+
const { userPrompt, ...rest } = options;
|
|
156
|
+
const result = await runConversation({
|
|
157
|
+
...rest,
|
|
158
|
+
messages: [{ role: "user", text: userPrompt }],
|
|
159
|
+
});
|
|
160
|
+
return result.text;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Run the tool-use loop over a conversation: the stored history plus the new
|
|
164
|
+
* user turn in, the whole transcript out, with the structured answer when a
|
|
165
|
+
* terminal tool gave one.
|
|
166
|
+
*
|
|
167
|
+
* The kernel stores nothing between calls. A conversational application keeps
|
|
168
|
+
* `result.messages` wherever it keeps its state and seeds the next call with
|
|
169
|
+
* it; what the kernel owes it is a faithful transcript, a summed bill, the
|
|
170
|
+
* reason the run stopped, and the name of what served it.
|
|
171
|
+
*/
|
|
172
|
+
export async function runConversation(options) {
|
|
92
173
|
// A `Provider` is adapted onto the model seam; a `ChatModel` passes straight
|
|
93
174
|
// through. Either way the loop talks to one interface, so a
|
|
94
175
|
// middleware-wrapped or registry-resolved model drives it identically.
|
|
95
176
|
const log = options.log ?? (() => { });
|
|
177
|
+
const model = asChatModel(options.provider);
|
|
178
|
+
// Recorded before the caller's sink sees each event, so a sink that throws
|
|
179
|
+
// (which the emitter absorbs) still leaves the recording complete.
|
|
180
|
+
const events = [];
|
|
181
|
+
const sink = (event) => {
|
|
182
|
+
events.push(event);
|
|
183
|
+
options.emit?.(event);
|
|
184
|
+
};
|
|
96
185
|
const result = await runWithEvents(nativeLoop, {
|
|
97
|
-
model
|
|
186
|
+
model,
|
|
98
187
|
system: options.system,
|
|
99
|
-
|
|
188
|
+
messages: options.messages,
|
|
100
189
|
tools: options.tools,
|
|
101
190
|
limits: resolveLoopLimits(options),
|
|
191
|
+
...(options.providerOptions ? { providerOptions: options.providerOptions } : {}),
|
|
102
192
|
}, {
|
|
103
193
|
log,
|
|
104
|
-
events: runEventEmitter(
|
|
194
|
+
events: runEventEmitter(sink, log),
|
|
105
195
|
...(options.signal ? { signal: options.signal } : {}),
|
|
106
196
|
...(options.runId !== undefined ? { runId: options.runId } : {}),
|
|
107
197
|
});
|
|
108
|
-
return
|
|
198
|
+
return {
|
|
199
|
+
text: result.text,
|
|
200
|
+
// A custom loop that reports no transcript still must not hand the caller
|
|
201
|
+
// its own seed array back: the doc promises a new one.
|
|
202
|
+
messages: result.messages ?? [...options.messages],
|
|
203
|
+
events,
|
|
204
|
+
steps: result.steps,
|
|
205
|
+
outcome: result.outcome,
|
|
206
|
+
stopReason: result.stopReason ?? stopReasonFor(result.outcome),
|
|
207
|
+
provider: result.provider ?? model.id,
|
|
208
|
+
responseIds: result.responseIds ?? [],
|
|
209
|
+
...(result.model !== undefined ? { model: result.model } : {}),
|
|
210
|
+
...(result.upstream !== undefined ? { upstream: result.upstream } : {}),
|
|
211
|
+
...(result.usage ? { usage: result.usage } : {}),
|
|
212
|
+
...(result.terminal ? { terminal: result.terminal } : {}),
|
|
213
|
+
};
|
|
109
214
|
}
|
|
110
215
|
/**
|
|
111
216
|
* The native tool-use loop, as a {@link Loop}.
|
|
112
217
|
*
|
|
113
218
|
* Exported for `loop.ts` to wrap; applications reach it through `nativeLoop`
|
|
114
219
|
* rather than calling this directly. It is the whole of the kernel's control
|
|
115
|
-
* flow, and the only place any of it lives — `runAgent
|
|
116
|
-
* come here, so
|
|
220
|
+
* flow, and the only place any of it lives — `runAgent`, `runConversation` and
|
|
221
|
+
* `nativeLoop` all come here, so they cannot drift.
|
|
117
222
|
*/
|
|
118
223
|
export async function runNativeLoop(req, loopCtx) {
|
|
119
|
-
const { model, system,
|
|
224
|
+
const { model, system, tools, providerOptions } = req;
|
|
120
225
|
const { maxSteps, maxDurationMs } = req.limits;
|
|
121
226
|
const log = loopCtx.log;
|
|
227
|
+
// Both checks come before the first model call: a bad seed or a tool this
|
|
228
|
+
// loop cannot dispatch is a configuration error, and the cheapest failure is
|
|
229
|
+
// the one that spends no tokens.
|
|
230
|
+
assertSeed(req.messages);
|
|
231
|
+
const external = tools.filter((t) => toolDispatch(t) === "external").map((t) => t.spec.name);
|
|
232
|
+
if (external.length > 0) {
|
|
233
|
+
throw new Error(`tool(s) ${external.join(", ")} declare dispatch "external", which needs a loop that can ` +
|
|
234
|
+
"suspend on a pending call and resume with its result; the native loop cannot yet");
|
|
235
|
+
}
|
|
122
236
|
// One signal for the whole run: the caller's cancel merged with the run's own
|
|
123
237
|
// deadline. It reaches every model call (through `InvokeContext.signal`, down
|
|
124
238
|
// to the provider's HTTP request) and every tool (through `ToolContext`), so
|
|
@@ -131,7 +245,12 @@ export async function runNativeLoop(req, loopCtx) {
|
|
|
131
245
|
const events = loopCtx.events;
|
|
132
246
|
const byName = new Map(tools.map((t) => [t.spec.name, t]));
|
|
133
247
|
const specs = toToolSpecs(tools);
|
|
134
|
-
|
|
248
|
+
// The seed is the caller's. It is copied so the loop's appends never reach
|
|
249
|
+
// the array it was handed: a service that kept the seed for its own records
|
|
250
|
+
// must not find it grown.
|
|
251
|
+
const messages = [...req.messages];
|
|
252
|
+
const request = (toolSpecs) => chatRequest(system, messages, toolSpecs, undefined, providerOptions);
|
|
253
|
+
const provider = model.id;
|
|
135
254
|
const deadlineAt = Date.now() + maxDurationMs;
|
|
136
255
|
let finalText = "";
|
|
137
256
|
let lastAssistantText = "";
|
|
@@ -139,6 +258,26 @@ export async function runNativeLoop(req, loopCtx) {
|
|
|
139
258
|
let timedOut = false;
|
|
140
259
|
let stepsTaken = 0;
|
|
141
260
|
let step = 0;
|
|
261
|
+
let usage;
|
|
262
|
+
let servedModel;
|
|
263
|
+
let servedUpstream;
|
|
264
|
+
let terminal;
|
|
265
|
+
const responseIds = [];
|
|
266
|
+
/** Everything a result carries besides the three the caller decides per path. */
|
|
267
|
+
const result = (text, outcome, stopReason) => ({
|
|
268
|
+
text,
|
|
269
|
+
steps: stepsTaken,
|
|
270
|
+
outcome,
|
|
271
|
+
stopReason,
|
|
272
|
+
messages,
|
|
273
|
+
provider,
|
|
274
|
+
responseIds,
|
|
275
|
+
...(servedModel !== undefined ? { model: servedModel } : {}),
|
|
276
|
+
...(servedUpstream !== undefined ? { upstream: servedUpstream } : {}),
|
|
277
|
+
...(usage ? { usage } : {}),
|
|
278
|
+
// Only a run that ended BECAUSE of the terminal call reports it.
|
|
279
|
+
...(terminal && stopReason === "terminal_tool" ? { terminal } : {}),
|
|
280
|
+
});
|
|
142
281
|
/**
|
|
143
282
|
* The run was stopped mid-flight. `signal.reason` says by whom: the deadline
|
|
144
283
|
* signal's own reason means the budget ran out (`timed_out`); anything else
|
|
@@ -152,12 +291,12 @@ export async function runNativeLoop(req, loopCtx) {
|
|
|
152
291
|
log(`reached run time budget (${maxDurationMs}ms) during step ${step}; in-flight work aborted`);
|
|
153
292
|
events.emit({ type: "run.budget_exhausted", kind: "duration", step });
|
|
154
293
|
const text = `${accumulated}\n\n[run stopped: wall-clock budget of ${maxDurationMs}ms exceeded]`;
|
|
155
|
-
return
|
|
294
|
+
return result(text, "timed_out", "timed_out");
|
|
156
295
|
}
|
|
157
296
|
const why = describeReason(signal.reason);
|
|
158
297
|
log(`run canceled during step ${step}${why ? `: ${why}` : ""}`);
|
|
159
298
|
const text = `${accumulated}\n\n[run stopped: canceled${why ? ` (${why})` : ""}]`;
|
|
160
|
-
return
|
|
299
|
+
return result(text, "canceled", "canceled");
|
|
161
300
|
};
|
|
162
301
|
try {
|
|
163
302
|
for (; step < maxSteps; step += 1) {
|
|
@@ -172,34 +311,57 @@ export async function runNativeLoop(req, loopCtx) {
|
|
|
172
311
|
break;
|
|
173
312
|
}
|
|
174
313
|
signal.throwIfAborted();
|
|
175
|
-
const turnResult = await model.invoke(
|
|
314
|
+
const turnResult = await model.invoke(request(specs), ctx);
|
|
176
315
|
const turn = turnResult.value;
|
|
177
316
|
stepsTaken = step + 1;
|
|
178
|
-
|
|
317
|
+
// The transcript keeps a detached copy of each call: a tool is handed its
|
|
318
|
+
// own copy below, so an executor that mutates its input can rewrite
|
|
319
|
+
// neither what the model said nor what is replayed on the next request.
|
|
320
|
+
const calls = turn.toolCalls.map((c) => ({ ...c, input: detach(c.input) }));
|
|
321
|
+
messages.push({ role: "assistant", text: turn.text, toolCalls: calls });
|
|
179
322
|
if (turn.text)
|
|
180
323
|
lastAssistantText = turn.text;
|
|
324
|
+
usage = addUsage(usage, turnResult.usage);
|
|
325
|
+
// Both describe the LAST response, so a response that names neither
|
|
326
|
+
// clears an earlier value rather than letting it stand in an audit.
|
|
327
|
+
servedModel = turn.model;
|
|
328
|
+
servedUpstream = turn.upstream;
|
|
329
|
+
if (turn.responseId)
|
|
330
|
+
responseIds.push(turn.responseId);
|
|
181
331
|
events.emit({
|
|
182
332
|
type: "model.turn",
|
|
183
333
|
step,
|
|
184
334
|
text: turn.text,
|
|
185
335
|
toolCalls: turn.toolCalls.map((c) => ({ id: c.id, name: c.name })),
|
|
186
336
|
...(turnResult.usage ? { usage: turnResult.usage } : {}),
|
|
337
|
+
...(turn.model ? { model: turn.model } : {}),
|
|
338
|
+
...(turn.responseId ? { responseId: turn.responseId } : {}),
|
|
339
|
+
...(turn.upstream ? { upstream: turn.upstream } : {}),
|
|
187
340
|
});
|
|
188
341
|
// A model that ignored its signal can still answer after the stop. The
|
|
189
342
|
// turn happened, so it is recorded above and its prose is kept, but the
|
|
190
343
|
// outcome is the stop's — `canceled` or `timed_out`, never `completed` —
|
|
191
|
-
// and none of the tools it asked for run.
|
|
192
|
-
|
|
344
|
+
// and none of the tools it asked for run. Each call it asked for still
|
|
345
|
+
// gets a result, so the transcript it leaves behind can be resumed.
|
|
346
|
+
if (signal.aborted) {
|
|
347
|
+
if (calls.length > 0) {
|
|
348
|
+
messages.push({ role: "tool", results: calls.map((c) => notRun(c.id)) });
|
|
349
|
+
}
|
|
193
350
|
return stopped();
|
|
194
|
-
|
|
351
|
+
}
|
|
352
|
+
if (calls.length === 0) {
|
|
195
353
|
finalText = turn.text;
|
|
196
354
|
break;
|
|
197
355
|
}
|
|
198
356
|
const results = [];
|
|
199
|
-
for (const call of
|
|
357
|
+
for (const call of calls) {
|
|
200
358
|
// Never START a tool once the run is stopping: a side effect begun
|
|
201
|
-
// after a cancel is the one thing a cancel must prevent.
|
|
202
|
-
|
|
359
|
+
// after a cancel is the one thing a cancel must prevent. The call is
|
|
360
|
+
// answered as not run rather than skipped, so the turn still closes.
|
|
361
|
+
if (signal.aborted) {
|
|
362
|
+
results.push(notRun(call.id));
|
|
363
|
+
continue;
|
|
364
|
+
}
|
|
203
365
|
const tool = byName.get(call.name);
|
|
204
366
|
if (!tool) {
|
|
205
367
|
results.push({
|
|
@@ -233,7 +395,8 @@ export async function runNativeLoop(req, loopCtx) {
|
|
|
233
395
|
// Uses the tool's structured executor when it has one, so a typed
|
|
234
396
|
// payload survives alongside the string the model sees. Tools without
|
|
235
397
|
// one take the original string path unchanged.
|
|
236
|
-
|
|
398
|
+
// The tool gets its own copy; `call.input` stays the model's words.
|
|
399
|
+
const output = await executeTool(tool, detach(call.input), {
|
|
237
400
|
signal,
|
|
238
401
|
callId: call.id,
|
|
239
402
|
...(loopCtx.runId !== undefined ? { runId: loopCtx.runId } : {}),
|
|
@@ -255,6 +418,13 @@ export async function runNativeLoop(req, loopCtx) {
|
|
|
255
418
|
bytes: Buffer.byteLength(output.content, "utf8"),
|
|
256
419
|
...undoFields(tool.meta),
|
|
257
420
|
});
|
|
421
|
+
// A terminal tool that returned is the run's answer. Its executor
|
|
422
|
+
// ran like any other (a throw above is an ordinary tool error the
|
|
423
|
+
// model gets to correct), and the rest of this turn's calls still
|
|
424
|
+
// get their results so the transcript stays whole.
|
|
425
|
+
if (!terminal && toolDispatch(tool) === "terminal") {
|
|
426
|
+
terminal = { callId: call.id, name: call.name, input: call.input, output };
|
|
427
|
+
}
|
|
258
428
|
}
|
|
259
429
|
catch (err) {
|
|
260
430
|
const message = err instanceof Error ? err.message : String(err);
|
|
@@ -275,6 +445,19 @@ export async function runNativeLoop(req, loopCtx) {
|
|
|
275
445
|
}
|
|
276
446
|
}
|
|
277
447
|
messages.push({ role: "tool", results });
|
|
448
|
+
// A tool that ignored its signal can still return after the stop. Its
|
|
449
|
+
// result is kept (the transcript stays whole), but the outcome is the
|
|
450
|
+
// stop's — a terminal call that landed after a cancel is not an answer
|
|
451
|
+
// the caller asked for, so it is not reported as one.
|
|
452
|
+
if (signal.aborted)
|
|
453
|
+
return stopped();
|
|
454
|
+
// Checked before the step budget, so an answer given on the last allowed
|
|
455
|
+
// step is still `completed` rather than `steps_exhausted`.
|
|
456
|
+
if (terminal) {
|
|
457
|
+
log(`terminal tool ${terminal.name} answered; ending the run`);
|
|
458
|
+
finalText = turn.text;
|
|
459
|
+
break;
|
|
460
|
+
}
|
|
278
461
|
if (step === maxSteps - 1) {
|
|
279
462
|
exhausted = true;
|
|
280
463
|
events.emit({ type: "run.budget_exhausted", kind: "steps", step });
|
|
@@ -290,12 +473,17 @@ export async function runNativeLoop(req, loopCtx) {
|
|
|
290
473
|
return stopped();
|
|
291
474
|
throw err;
|
|
292
475
|
}
|
|
476
|
+
// A terminal tool answered: the prose is whatever the turn said (often
|
|
477
|
+
// nothing), and the structured answer rides on `terminal`. No placeholder
|
|
478
|
+
// text — an empty string is the honest value here.
|
|
479
|
+
if (terminal)
|
|
480
|
+
return result(finalText, "completed", "terminal_tool");
|
|
293
481
|
// Ran out of time mid-loop: don't spend more of the (already-blown) budget on
|
|
294
482
|
// a summary call — just return whatever prose we accumulated, clearly noted.
|
|
295
483
|
if (!finalText && timedOut) {
|
|
296
484
|
const accumulated = lastAssistantText || "(no output before time budget exhausted)";
|
|
297
485
|
const text = `${accumulated}\n\n[run stopped: wall-clock budget of ${maxDurationMs}ms exceeded]`;
|
|
298
|
-
return
|
|
486
|
+
return result(text, "timed_out", "timed_out");
|
|
299
487
|
}
|
|
300
488
|
// Hit the step budget mid-tool-use: ask once more with no tools so the model
|
|
301
489
|
// can summarize, falling back to its last prose rather than losing the work.
|
|
@@ -306,8 +494,13 @@ export async function runNativeLoop(req, loopCtx) {
|
|
|
306
494
|
if (signal.aborted)
|
|
307
495
|
return stopped();
|
|
308
496
|
try {
|
|
309
|
-
const summaryResult = await model.invoke(
|
|
497
|
+
const summaryResult = await model.invoke(request([]), ctx);
|
|
310
498
|
const summary = summaryResult.value;
|
|
499
|
+
usage = addUsage(usage, summaryResult.usage);
|
|
500
|
+
servedModel = summary.model;
|
|
501
|
+
servedUpstream = summary.upstream;
|
|
502
|
+
if (summary.responseId)
|
|
503
|
+
responseIds.push(summary.responseId);
|
|
311
504
|
// Emitted like any other turn: `run.finished.text` can come from this
|
|
312
505
|
// call, and a terminal event whose text traces back to no turn in the
|
|
313
506
|
// transcript would break the stream's one promise.
|
|
@@ -317,7 +510,13 @@ export async function runNativeLoop(req, loopCtx) {
|
|
|
317
510
|
text: summary.text,
|
|
318
511
|
toolCalls: [],
|
|
319
512
|
...(summaryResult.usage ? { usage: summaryResult.usage } : {}),
|
|
513
|
+
...(summary.model ? { model: summary.model } : {}),
|
|
514
|
+
...(summary.responseId ? { responseId: summary.responseId } : {}),
|
|
515
|
+
...(summary.upstream ? { upstream: summary.upstream } : {}),
|
|
320
516
|
});
|
|
517
|
+
// The summary is part of the conversation too: a caller that stores
|
|
518
|
+
// `messages` and resumes later should see what the model last said.
|
|
519
|
+
messages.push({ role: "assistant", text: summary.text, toolCalls: [] });
|
|
321
520
|
finalText = summary.text || lastAssistantText;
|
|
322
521
|
// Same rule as a turn: a summary that arrives after the stop is kept,
|
|
323
522
|
// but the run still ends with the stop's outcome.
|
|
@@ -347,9 +546,10 @@ export async function runNativeLoop(req, loopCtx) {
|
|
|
347
546
|
// `steps_exhausted`, because the distinction is exactly what a consumer needs
|
|
348
547
|
// to know about the trustworthiness of the answer.
|
|
349
548
|
const outcome = timedOut ? "timed_out" : exhausted ? "steps_exhausted" : "completed";
|
|
549
|
+
const stopReason = timedOut ? "timed_out" : exhausted ? "steps_exhausted" : "end_turn";
|
|
350
550
|
// `runWithEvents` builds the terminal event from exactly this result, so the
|
|
351
551
|
// return value and the stream cannot disagree — there is one source now, not
|
|
352
552
|
// two that happen to be written from the same variables.
|
|
353
|
-
return
|
|
553
|
+
return result(text, outcome, stopReason);
|
|
354
554
|
}
|
|
355
555
|
//# sourceMappingURL=agent.js.map
|
package/dist/agent.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,GAMhB,MAAM,aAAa,CAAA;AACpB,OAAO,EACL,UAAU,EACV,aAAa,GAKd,MAAM,WAAW,CAAA;AAClB,OAAO,EAAE,WAAW,EAAE,WAAW,EAAkB,MAAM,kBAAkB,CAAA;AAC3E,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAI3D,OAAO,EAAE,WAAW,EAAa,MAAM,qBAAqB,CAAA;AAC5D,OAAO,EAAE,WAAW,EAAE,YAAY,EAAqB,MAAM,qBAAqB,CAAA;AAiGlF,MAAM,iBAAiB,GAAG,EAAE,CAAA;AAC5B,MAAM,wBAAwB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAA;AAE/C,8EAA8E;AAC9E,SAAS,oBAAoB;IAC3B,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAA;IACrD,OAAO,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,wBAAwB,CAAA;AACzE,CAAC;AACD,MAAM,8BAA8B,GAAG,EAAE,GAAG,IAAI,CAAA;AAEhD;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAGjC;IACC,OAAO;QACL,QAAQ,EAAE,MAAM,EAAE,QAAQ,IAAI,iBAAiB;QAC/C,aAAa,EAAE,MAAM,EAAE,aAAa,IAAI,oBAAoB,EAAE;KAC/D,CAAA;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB;IAChC,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAA;IAC5D,OAAO,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,8BAA8B,CAAA;AAC3F,CAAC;AAED;;;;;;GAMG;AACH,SAAS,UAAU,CACjB,IAAmB;IAInB,OAAO;QACL,GAAG,CAAC,IAAI,EAAE,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1E,GAAG,CAAC,IAAI,EAAE,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChF,GAAG,CAAC,IAAI,EAAE,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/F,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC/D,CAAA;AACH,CAAC;AAED,6EAA6E;AAC7E,SAAS,cAAc,CAAC,MAAe;IACrC,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAA;IAC7C,0EAA0E;IAC1E,IAAI,MAAM,YAAY,KAAK,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY;QAAE,OAAO,MAAM,CAAC,OAAO,CAAA;IAClF,OAAO,EAAE,CAAA;AACX,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,MAAM,CAAC,KAA8B;IAC5C,IAAI,CAAC;QACH,OAAO,eAAe,CAAC,KAAK,CAAC,CAAA;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,GAAG,KAAK,EAAE,CAAA;IACrB,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAS,MAAM,CAAC,MAAc;IAC5B,OAAO;QACL,UAAU,EAAE,MAAM;QAClB,OAAO,EAAE,oDAAoD;QAC7D,OAAO,EAAE,IAAI;KACd,CAAA;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,IAAY,EAAE,GAAG,GAAG,kBAAkB,EAAE;IACxD,OAAO,IAAI,CAAC,MAAM,IAAI,GAAG;QACvB,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,iBAAiB,IAAI,CAAC,MAAM,GAAG,GAAG,SAAS,CAAA;AACtE,CAAC;AAED;;;;GAIG;AACH,SAAS,QAAQ,CAAC,KAA6B,EAAE,IAAuB;IACtE,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,IAAI;QAAE,OAAO,KAAK,CAAA;IAC1C,MAAM,GAAG,GAAe,EAAE,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAAA;IAC5C,KAAK,MAAM,GAAG,IAAI;QAChB,aAAa;QACb,cAAc;QACd,aAAa;QACb,iBAAiB;QACjB,kBAAkB;QAClB,iBAAiB;KACT,EAAE,CAAC;QACX,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAA;QACnB,IAAI,OAAO,CAAC,KAAK,QAAQ;YAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;IAC3D,CAAC;IACD,4EAA4E;IAC5E,oEAAoE;IACpE,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,GAAG,CAAC,YAAY,GAAG;YACjB,MAAM,EAAE,CAAC,GAAG,CAAC,YAAY,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM;YAClE,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ;SACrC,CAAA;IACH,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,8EAA8E;AAC9E,SAAS,UAAU,CAAC,QAAwB;IAC1C,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IAC1C,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CACb,gFAAgF,CACjF,CAAA;IACH,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CACb,wFAAwF;YACtF,+EAA+E,CAClF,CAAA;IACH,CAAC;AACH,CAAC;AAED,oFAAoF;AACpF,SAAS,aAAa,CAAC,OAAmB;IACxC,OAAO,OAAO,KAAK,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAA;AACvD,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,OAAwB;IACrD,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,CAAA;IACvC,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC;QACnC,GAAG,IAAI;QACP,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;KAC/C,CAAC,CAAA;IACF,OAAO,MAAM,CAAC,IAAI,CAAA;AACpB,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,OAA+B;IAE/B,6EAA6E;IAC7E,4DAA4D;IAC5D,uEAAuE;IACvE,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;IACrC,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;IAC3C,2EAA2E;IAC3E,mEAAmE;IACnE,MAAM,MAAM,GAAe,EAAE,CAAA;IAC7B,MAAM,IAAI,GAAiB,CAAC,KAAK,EAAE,EAAE;QACnC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAClB,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAA;IACvB,CAAC,CAAA;IACD,MAAM,MAAM,GAAG,MAAM,aAAa,CAChC,UAAU,EACV;QACE,KAAK;QACL,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,iBAAiB,CAAC,OAAO,CAAC;QAClC,GAAG,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACjF,EACD;QACE,GAAG;QACH,MAAM,EAAE,eAAe,CAAC,IAAI,EAAE,GAAG,CAAC;QAClC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrD,GAAG,CAAC,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACjE,CACF,CAAA;IACD,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,0EAA0E;QAC1E,uDAAuD;QACvD,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC;QAClD,MAAM;QACN,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC;QAC9D,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,KAAK,CAAC,EAAE;QACrC,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,EAAE;QACrC,GAAG,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9D,GAAG,CAAC,MAAM,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChD,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC1D,CAAA;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,GAAgB,EAAE,OAAoB;IACxE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,GAAG,GAAG,CAAA;IACrD,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,GAAG,CAAC,MAAM,CAAA;IAC9C,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAA;IAEvB,0EAA0E;IAC1E,6EAA6E;IAC7E,iCAAiC;IACjC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IACxB,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC5F,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CACb,WAAW,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,4DAA4D;YACxF,kFAAkF,CACrF,CAAA;IACH,CAAC;IAED,8EAA8E;IAC9E,8EAA8E;IAC9E,6EAA6E;IAC7E,8EAA8E;IAC9E,MAAM,QAAQ,GAAG,cAAc,CAAC,aAAa,CAAC,CAAA;IAC9C,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAA;IACtF,MAAM,GAAG,GAAkB,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,aAAa,EAAE,EAAE,CAAA;IACrE,8EAA8E;IAC9E,uDAAuD;IACvD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAA;IAE7B,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;IAC1D,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,CAAA;IAChC,2EAA2E;IAC3E,4EAA4E;IAC5E,0BAA0B;IAC1B,MAAM,QAAQ,GAAmB,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAA;IAClD,MAAM,OAAO,GAAG,CAAC,SAAqB,EAAE,EAAE,CACxC,WAAW,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,eAAe,CAAC,CAAA;IACtE,MAAM,QAAQ,GAAG,KAAK,CAAC,EAAE,CAAA;IAEzB,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,aAAa,CAAA;IAC7C,IAAI,SAAS,GAAG,EAAE,CAAA;IAClB,IAAI,iBAAiB,GAAG,EAAE,CAAA;IAC1B,IAAI,SAAS,GAAG,KAAK,CAAA;IACrB,IAAI,QAAQ,GAAG,KAAK,CAAA;IACpB,IAAI,UAAU,GAAG,CAAC,CAAA;IAClB,IAAI,IAAI,GAAG,CAAC,CAAA;IACZ,IAAI,KAA6B,CAAA;IACjC,IAAI,WAA+B,CAAA;IACnC,IAAI,cAAkC,CAAA;IACtC,IAAI,QAAkC,CAAA;IACtC,MAAM,WAAW,GAAa,EAAE,CAAA;IAEhC,iFAAiF;IACjF,MAAM,MAAM,GAAG,CAAC,IAAY,EAAE,OAAmB,EAAE,UAAsB,EAAc,EAAE,CAAC,CAAC;QACzF,IAAI;QACJ,KAAK,EAAE,UAAU;QACjB,OAAO;QACP,UAAU;QACV,QAAQ;QACR,QAAQ;QACR,WAAW;QACX,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5D,GAAG,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3B,iEAAiE;QACjE,GAAG,CAAC,QAAQ,IAAI,UAAU,KAAK,eAAe,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACpE,CAAC,CAAA;IAEF;;;;;;OAMG;IACH,MAAM,OAAO,GAAG,GAAe,EAAE;QAC/B,MAAM,WAAW,GAAG,iBAAiB,IAAI,wCAAwC,CAAA;QACjF,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,EAAE,CAAC;YACtC,GAAG,CACD,4BAA4B,aAAa,mBAAmB,IAAI,0BAA0B,CAC3F,CAAA;YACD,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAA;YACrE,MAAM,IAAI,GAAG,GAAG,WAAW,0CAA0C,aAAa,cAAc,CAAA;YAChG,OAAO,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,WAAW,CAAC,CAAA;QAC/C,CAAC;QACD,MAAM,GAAG,GAAG,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QACzC,GAAG,CAAC,4BAA4B,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;QAC/D,MAAM,IAAI,GAAG,GAAG,WAAW,6BAA6B,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAA;QACjF,OAAO,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,CAAC,CAAA;IAC7C,CAAC,CAAA;IAED,IAAI,CAAC;QACH,OAAO,IAAI,GAAG,QAAQ,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC;YAClC,qEAAqE;YACrE,qEAAqE;YACrE,sEAAsE;YACtE,gDAAgD;YAChD,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,UAAU,EAAE,CAAC;gBAC7B,QAAQ,GAAG,IAAI,CAAA;gBACf,GAAG,CAAC,4BAA4B,aAAa,aAAa,IAAI,UAAU,CAAC,CAAA;gBACzE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAA;gBACrE,MAAK;YACP,CAAC;YACD,MAAM,CAAC,cAAc,EAAE,CAAA;YACvB,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAA;YAC1D,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAA;YAC7B,UAAU,GAAG,IAAI,GAAG,CAAC,CAAA;YACrB,0EAA0E;YAC1E,oEAAoE;YACpE,wEAAwE;YACxE,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAA;YAC3E,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAA;YACvE,IAAI,IAAI,CAAC,IAAI;gBAAE,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAA;YAC5C,KAAK,GAAG,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,CAAA;YACzC,oEAAoE;YACpE,oEAAoE;YACpE,WAAW,GAAG,IAAI,CAAC,KAAK,CAAA;YACxB,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAA;YAC9B,IAAI,IAAI,CAAC,UAAU;gBAAE,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;YACtD,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,YAAY;gBAClB,IAAI;gBACJ,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;gBAClE,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACxD,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC5C,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC3D,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACtD,CAAC,CAAA;YACF,uEAAuE;YACvE,wEAAwE;YACxE,yEAAyE;YACzE,uEAAuE;YACvE,oEAAoE;YACpE,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACrB,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAA;gBAC1E,CAAC;gBACD,OAAO,OAAO,EAAE,CAAA;YAClB,CAAC;YAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvB,SAAS,GAAG,IAAI,CAAC,IAAI,CAAA;gBACrB,MAAK;YACP,CAAC;YAED,MAAM,OAAO,GAAiB,EAAE,CAAA;YAChC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,mEAAmE;gBACnE,qEAAqE;gBACrE,qEAAqE;gBACrE,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;oBACnB,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;oBAC7B,SAAQ;gBACV,CAAC;gBACD,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBAClC,IAAI,CAAC,IAAI,EAAE,CAAC;oBACV,OAAO,CAAC,IAAI,CAAC;wBACX,UAAU,EAAE,IAAI,CAAC,EAAE;wBACnB,OAAO,EAAE,iBAAiB,IAAI,CAAC,IAAI,EAAE;wBACrC,OAAO,EAAE,IAAI;qBACd,CAAC,CAAA;oBACF,GAAG,CAAC,QAAQ,IAAI,CAAC,IAAI,YAAY,CAAC,CAAA;oBAClC,MAAM,CAAC,IAAI,CAAC;wBACV,IAAI,EAAE,aAAa;wBACnB,IAAI;wBACJ,MAAM,EAAE,IAAI,CAAC,EAAE;wBACf,IAAI,EAAE,IAAI,CAAC,IAAI;wBACf,MAAM,EAAE,cAAc;wBACtB,KAAK,EAAE,iBAAiB,IAAI,CAAC,IAAI,EAAE;qBACpC,CAAC,CAAA;oBACF,SAAQ;gBACV,CAAC;gBACD,sEAAsE;gBACtE,qEAAqE;gBACrE,yDAAyD;gBACzD,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,aAAa;oBACnB,IAAI;oBACJ,MAAM,EAAE,IAAI,CAAC,EAAE;oBACf,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;oBACzB,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;iBACzB,CAAC,CAAA;gBACF,IAAI,CAAC;oBACH,kEAAkE;oBAClE,sEAAsE;oBACtE,+CAA+C;oBAC/C,oEAAoE;oBACpE,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;wBACzD,MAAM;wBACN,MAAM,EAAE,IAAI,CAAC,EAAE;wBACf,GAAG,CAAC,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBACjE,CAAC,CAAA;oBACF,OAAO,CAAC,IAAI,CAAC;wBACX,UAAU,EAAE,IAAI,CAAC,EAAE;wBACnB,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC;wBACjC,GAAG,CAAC,MAAM,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBAC9E,CAAC,CAAA;oBACF,GAAG,CAAC,QAAQ,IAAI,CAAC,IAAI,QAAQ,MAAM,CAAC,OAAO,CAAC,MAAM,SAAS,CAAC,CAAA;oBAC5D,sEAAsE;oBACtE,oEAAoE;oBACpE,iEAAiE;oBACjE,MAAM,CAAC,IAAI,CAAC;wBACV,IAAI,EAAE,gBAAgB;wBACtB,IAAI;wBACJ,MAAM,EAAE,IAAI,CAAC,EAAE;wBACf,IAAI,EAAE,IAAI,CAAC,IAAI;wBACf,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC;wBAChD,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;qBACzB,CAAC,CAAA;oBACF,kEAAkE;oBAClE,kEAAkE;oBAClE,kEAAkE;oBAClE,mDAAmD;oBACnD,IAAI,CAAC,QAAQ,IAAI,YAAY,CAAC,IAAI,CAAC,KAAK,UAAU,EAAE,CAAC;wBACnD,QAAQ,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,CAAA;oBAC5E,CAAC;gBACH,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;oBAChE,OAAO,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;oBACtE,GAAG,CAAC,QAAQ,IAAI,CAAC,IAAI,WAAW,OAAO,EAAE,CAAC,CAAA;oBAC1C,sEAAsE;oBACtE,mEAAmE;oBACnE,MAAM,CAAC,IAAI,CAAC;wBACV,IAAI,EAAE,aAAa;wBACnB,IAAI;wBACJ,MAAM,EAAE,IAAI,CAAC,EAAE;wBACf,IAAI,EAAE,IAAI,CAAC,IAAI;wBACf,6DAA6D;wBAC7D,yEAAyE;wBACzE,MAAM,EAAE,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO;wBACvD,KAAK,EAAE,OAAO;qBACf,CAAC,CAAA;gBACJ,CAAC;YACH,CAAC;YACD,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAA;YAExC,sEAAsE;YACtE,sEAAsE;YACtE,uEAAuE;YACvE,sDAAsD;YACtD,IAAI,MAAM,CAAC,OAAO;gBAAE,OAAO,OAAO,EAAE,CAAA;YAEpC,yEAAyE;YACzE,2DAA2D;YAC3D,IAAI,QAAQ,EAAE,CAAC;gBACb,GAAG,CAAC,iBAAiB,QAAQ,CAAC,IAAI,2BAA2B,CAAC,CAAA;gBAC9D,SAAS,GAAG,IAAI,CAAC,IAAI,CAAA;gBACrB,MAAK;YACP,CAAC;YAED,IAAI,IAAI,KAAK,QAAQ,GAAG,CAAC,EAAE,CAAC;gBAC1B,SAAS,GAAG,IAAI,CAAA;gBAChB,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;YACpE,CAAC;QACH,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,sEAAsE;QACtE,sEAAsE;QACtE,qEAAqE;QACrE,2CAA2C;QAC3C,IAAI,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC;YAAE,OAAO,OAAO,EAAE,CAAA;QAC/C,MAAM,GAAG,CAAA;IACX,CAAC;IAED,uEAAuE;IACvE,0EAA0E;IAC1E,mDAAmD;IACnD,IAAI,QAAQ;QAAE,OAAO,MAAM,CAAC,SAAS,EAAE,WAAW,EAAE,eAAe,CAAC,CAAA;IAEpE,8EAA8E;IAC9E,6EAA6E;IAC7E,IAAI,CAAC,SAAS,IAAI,QAAQ,EAAE,CAAC;QAC3B,MAAM,WAAW,GAAG,iBAAiB,IAAI,0CAA0C,CAAA;QACnF,MAAM,IAAI,GAAG,GAAG,WAAW,0CAA0C,aAAa,cAAc,CAAA;QAChG,OAAO,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,WAAW,CAAC,CAAA;IAC/C,CAAC;IAED,6EAA6E;IAC7E,6EAA6E;IAC7E,IAAI,CAAC,SAAS,IAAI,SAAS,EAAE,CAAC;QAC5B,GAAG,CAAC,sBAAsB,QAAQ,+BAA+B,CAAC,CAAA;QAClE,0EAA0E;QAC1E,iDAAiD;QACjD,IAAI,MAAM,CAAC,OAAO;YAAE,OAAO,OAAO,EAAE,CAAA;QACpC,IAAI,CAAC;YACH,MAAM,aAAa,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAA;YAC1D,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,CAAA;YACnC,KAAK,GAAG,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,CAAA;YAC5C,WAAW,GAAG,OAAO,CAAC,KAAK,CAAA;YAC3B,cAAc,GAAG,OAAO,CAAC,QAAQ,CAAA;YACjC,IAAI,OAAO,CAAC,UAAU;gBAAE,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;YAC5D,sEAAsE;YACtE,sEAAsE;YACtE,mDAAmD;YACnD,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,YAAY;gBAClB,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,SAAS,EAAE,EAAE;gBACb,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC9D,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAClD,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACjE,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC5D,CAAC,CAAA;YACF,oEAAoE;YACpE,oEAAoE;YACpE,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAA;YACvE,SAAS,GAAG,OAAO,CAAC,IAAI,IAAI,iBAAiB,CAAA;YAC7C,sEAAsE;YACtE,kDAAkD;YAClD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,IAAI,OAAO,CAAC,IAAI;oBAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAA;gBAClD,OAAO,OAAO,EAAE,CAAA;YAClB,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,wEAAwE;YACxE,0CAA0C;YAC1C,IAAI,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC;gBAAE,OAAO,OAAO,EAAE,CAAA;YAC/C,MAAM,KAAK,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YAC9D,GAAG,CAAC,yBAAyB,KAAK,EAAE,CAAC,CAAA;YACrC,+DAA+D;YAC/D,oEAAoE;YACpE,4CAA4C;YAC5C,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAA;YACrF,SAAS,GAAG,iBAAiB,CAAA;QAC/B,CAAC;IACH,CAAC;IAED,MAAM,IAAI,GAAG,SAAS,IAAI,aAAa,CAAA;IACvC,6EAA6E;IAC7E,qEAAqE;IACrE,8EAA8E;IAC9E,mDAAmD;IACnD,MAAM,OAAO,GAAe,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,WAAW,CAAA;IAChG,MAAM,UAAU,GAAe,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,UAAU,CAAA;IAClG,6EAA6E;IAC7E,6EAA6E;IAC7E,yDAAyD;IACzD,OAAO,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC,CAAA;AAC1C,CAAC"}
|
package/dist/engines/acp.d.ts
CHANGED
|
@@ -25,6 +25,13 @@ export interface AcpAgentSpec {
|
|
|
25
25
|
args(spec: RunSpec): string[];
|
|
26
26
|
/** Extra process env — e.g. the provider credentials the agent reads for itself. */
|
|
27
27
|
env(spec: RunSpec): Record<string, string>;
|
|
28
|
+
/**
|
|
29
|
+
* Prefixes of host env vars the agent may inherit (its own configuration).
|
|
30
|
+
* Credential-looking names under them are still dropped, but that filter is
|
|
31
|
+
* best effort (see `childEnv`), so keep each prefix as narrow as the agent's
|
|
32
|
+
* own settings.
|
|
33
|
+
*/
|
|
34
|
+
readonly inheritEnvPrefixes?: readonly string[];
|
|
28
35
|
}
|
|
29
36
|
/**
|
|
30
37
|
* Driver-neutral options the engine derives from a {@link RunSpec} and hands to
|
|
@@ -34,7 +41,10 @@ export interface AcpAgentSpec {
|
|
|
34
41
|
export interface AcpOptions {
|
|
35
42
|
command: string;
|
|
36
43
|
args: string[];
|
|
44
|
+
/** Env the agent gets on top of the allowlisted host env (see `childEnv`). */
|
|
37
45
|
env: Record<string, string>;
|
|
46
|
+
/** Prefixes of host env vars the agent may inherit; from {@link AcpAgentSpec}. */
|
|
47
|
+
inheritEnvPrefixes?: readonly string[];
|
|
38
48
|
/** The prepared sandbox working tree — the agent's cwd and ACP `session/new` cwd. */
|
|
39
49
|
cwd: string;
|
|
40
50
|
/** The run's MCP servers (connectors + the capability server) for `session/new`. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acp.d.ts","sourceRoot":"","sources":["../../src/engines/acp.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"acp.d.ts","sourceRoot":"","sources":["../../src/engines/acp.ts"],"names":[],"mappings":"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"}
|
package/dist/engines/acp.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { refusePrivateRun } from "../private.js";
|
|
2
|
+
import { refuseUnisolated } from "./isolation.js";
|
|
2
3
|
import { mkdtemp, rm, stat } from "node:fs/promises";
|
|
3
4
|
import { tmpdir } from "node:os";
|
|
4
5
|
import path from "node:path";
|
|
@@ -54,7 +55,7 @@ export class AcpEngine {
|
|
|
54
55
|
reason: `${this.name} engine requires the ephemeral runner profile (per-run container isolation)`,
|
|
55
56
|
};
|
|
56
57
|
}
|
|
57
|
-
return { ok: true };
|
|
58
|
+
return refuseUnisolated(this.name, spec) ?? { ok: true };
|
|
58
59
|
}
|
|
59
60
|
async run(spec, ctx) {
|
|
60
61
|
// Emissions land OUTSIDE the sandbox so the bookkeeping file is never captured
|
|
@@ -82,6 +83,9 @@ export class AcpEngine {
|
|
|
82
83
|
// The capability env also rides on the process env so the stdio capability
|
|
83
84
|
// server inherits it regardless of how the agent forwards `session/new` env.
|
|
84
85
|
env: { ...this.agent.env(spec), ...capabilityEnv },
|
|
86
|
+
...(this.agent.inheritEnvPrefixes
|
|
87
|
+
? { inheritEnvPrefixes: this.agent.inheritEnvPrefixes }
|
|
88
|
+
: {}),
|
|
85
89
|
cwd: spec.workdir,
|
|
86
90
|
mcpServers: toAcpMcpServers(servers),
|
|
87
91
|
prompt: buildPrompt(spec),
|
|
@@ -208,6 +212,9 @@ export const EVE_AGENT = {
|
|
|
208
212
|
enableEnv: "RUNNER_ENABLE_EVE",
|
|
209
213
|
command: "eve",
|
|
210
214
|
args: () => ["acp"],
|
|
215
|
+
// Provider settings a BYO key does not cover (a base URL, an org id) and
|
|
216
|
+
// eve's own configuration.
|
|
217
|
+
inheritEnvPrefixes: ["ANTHROPIC_", "OPENAI_", "OPENROUTER_", "EVE_"],
|
|
211
218
|
env: (spec) => {
|
|
212
219
|
const env = {};
|
|
213
220
|
const creds = spec.provider.credentials;
|
package/dist/engines/acp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acp.js","sourceRoot":"","sources":["../../src/engines/acp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAChD,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAChC,OAAO,IAAI,MAAM,WAAW,CAAA;AAK5B,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAA;AAC3D,OAAO,EAAE,gBAAgB,EAA8B,MAAM,mBAAmB,CAAA;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAEjD,MAAM,YAAY,GAAG,IAAI,CAAA;
|
|
1
|
+
{"version":3,"file":"acp.js","sourceRoot":"","sources":["../../src/engines/acp.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,8 @@ import type { AcpClientEvents, AcpOptions, AcpOutcome } from "./acp.js";
|
|
|
6
6
|
* `end_turn` must not relabel a finished run as canceled or timed out.
|
|
7
7
|
*/
|
|
8
8
|
export declare function promptOutcome(stopReason: string, stoppedBy: StoppedBy | undefined): AcpOutcome;
|
|
9
|
+
/** The agent process environment: an allowlist, never the host's whole one (see `childEnv`). */
|
|
10
|
+
export declare function acpEnv(opts: Pick<AcpOptions, "env" | "inheritEnvPrefixes">, env?: NodeJS.ProcessEnv): Record<string, string>;
|
|
9
11
|
/**
|
|
10
12
|
* The default ACP driver: the single integration boundary to an ACP agent
|
|
11
13
|
* subprocess, mirroring `defaultCodexDriver`'s injectable shape. It spawns the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acpDriver.d.ts","sourceRoot":"","sources":["../../src/engines/acpDriver.ts"],"names":[],"mappings":"AAQA,OAAO,EAAW,KAAK,SAAS,EAAE,MAAM,eAAe,CAAA;AACvD,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"acpDriver.d.ts","sourceRoot":"","sources":["../../src/engines/acpDriver.ts"],"names":[],"mappings":"AAQA,OAAO,EAAW,KAAK,SAAS,EAAE,MAAM,eAAe,CAAA;AACvD,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAGvE;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,GAAG,SAAS,GAAG,UAAU,CAE9F;AAKD,gGAAgG;AAChG,wBAAgB,MAAM,CACpB,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,KAAK,GAAG,oBAAoB,CAAC,EACpD,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAExB;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,UAAU,CAAC,CA6GrB"}
|
|
@@ -2,6 +2,7 @@ import { spawn } from "node:child_process";
|
|
|
2
2
|
import { Readable, Writable } from "node:stream";
|
|
3
3
|
import { ClientSideConnection, ndJsonStream, PROTOCOL_VERSION, } from "@zed-industries/agent-client-protocol";
|
|
4
4
|
import { runStop } from "../signals.js";
|
|
5
|
+
import { childEnv } from "./isolation.js";
|
|
5
6
|
/**
|
|
6
7
|
* The outcome of a prompt turn that returned. A stop is credited only when the
|
|
7
8
|
* agent actually answered `cancelled`: a stop that lands just after a clean
|
|
@@ -12,6 +13,10 @@ export function promptOutcome(stopReason, stoppedBy) {
|
|
|
12
13
|
}
|
|
13
14
|
/** How long an agent gets to honour `session/cancel` before it is killed. */
|
|
14
15
|
const DEFAULT_CANCEL_GRACE_MS = 5_000;
|
|
16
|
+
/** The agent process environment: an allowlist, never the host's whole one (see `childEnv`). */
|
|
17
|
+
export function acpEnv(opts, env = process.env) {
|
|
18
|
+
return childEnv(opts.inheritEnvPrefixes ?? [], opts.env, env);
|
|
19
|
+
}
|
|
15
20
|
/**
|
|
16
21
|
* The default ACP driver: the single integration boundary to an ACP agent
|
|
17
22
|
* subprocess, mirroring `defaultCodexDriver`'s injectable shape. It spawns the
|
|
@@ -38,7 +43,7 @@ const DEFAULT_CANCEL_GRACE_MS = 5_000;
|
|
|
38
43
|
export async function defaultAcpDriver(opts, events) {
|
|
39
44
|
const child = spawn(opts.command, opts.args, {
|
|
40
45
|
cwd: opts.cwd,
|
|
41
|
-
env:
|
|
46
|
+
env: acpEnv(opts),
|
|
42
47
|
stdio: ["pipe", "pipe", "pipe"],
|
|
43
48
|
});
|
|
44
49
|
let stderr = "";
|