agentenkit 0.7.0 → 0.10.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/dist/adapters/mcp.js +1 -1
- package/dist/adapters/mcp.js.map +1 -1
- package/dist/core/builtin/index.js +1 -1
- package/dist/core/builtin/index.js.map +1 -1
- package/dist/core/builtin/run.d.ts +2 -0
- package/dist/core/builtin/run.d.ts.map +1 -1
- package/dist/core/builtin/run.js.map +1 -1
- package/dist/core/builtin/sandbox-tools.d.ts.map +1 -1
- package/dist/core/builtin/sandbox-tools.js +57 -31
- package/dist/core/builtin/sandbox-tools.js.map +1 -1
- package/dist/core/builtin/sandbox.d.ts +28 -2
- package/dist/core/builtin/sandbox.d.ts.map +1 -1
- package/dist/core/builtin/sandbox.js +103 -8
- package/dist/core/builtin/sandbox.js.map +1 -1
- package/dist/core/builtin/web.d.ts +6 -0
- package/dist/core/builtin/web.d.ts.map +1 -1
- package/dist/core/builtin/web.js +58 -6
- package/dist/core/builtin/web.js.map +1 -1
- package/dist/core/cache.d.ts.map +1 -1
- package/dist/core/cache.js +3 -6
- package/dist/core/cache.js.map +1 -1
- package/dist/core/context.d.ts +18 -0
- package/dist/core/context.d.ts.map +1 -1
- package/dist/core/context.js +132 -47
- package/dist/core/context.js.map +1 -1
- package/dist/core/engine.d.ts.map +1 -1
- package/dist/core/engine.js +92 -48
- package/dist/core/engine.js.map +1 -1
- package/dist/core/hitl.d.ts.map +1 -1
- package/dist/core/hitl.js +5 -1
- package/dist/core/hitl.js.map +1 -1
- package/dist/core/loop.d.ts +15 -5
- package/dist/core/loop.d.ts.map +1 -1
- package/dist/core/loop.js +51 -46
- package/dist/core/loop.js.map +1 -1
- package/dist/core/sdk.d.ts +71 -0
- package/dist/core/sdk.d.ts.map +1 -0
- package/dist/core/sdk.js +281 -0
- package/dist/core/sdk.js.map +1 -0
- package/dist/core/settle.d.ts.map +1 -1
- package/dist/core/settle.js +13 -1
- package/dist/core/settle.js.map +1 -1
- package/dist/core/stream.d.ts +4 -4
- package/dist/core/stream.d.ts.map +1 -1
- package/dist/core/stream.js +14 -7
- package/dist/core/stream.js.map +1 -1
- package/dist/core/subagent.d.ts +255 -20
- package/dist/core/subagent.d.ts.map +1 -1
- package/dist/core/subagent.js +1 -1
- package/dist/core/subagent.js.map +1 -1
- package/dist/core/tools.d.ts +7 -9
- package/dist/core/tools.d.ts.map +1 -1
- package/dist/core/tools.js +7 -4
- package/dist/core/tools.js.map +1 -1
- package/dist/core/types.d.ts +21 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js +9 -0
- package/dist/core/types.js.map +1 -1
- package/dist/core/usage.d.ts +14 -4
- package/dist/core/usage.d.ts.map +1 -1
- package/dist/core/usage.js +31 -4
- package/dist/core/usage.js.map +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/ports/runtime.d.ts +23 -2
- package/dist/ports/runtime.d.ts.map +1 -1
- package/dist/ports/sandbox.d.ts +10 -0
- package/dist/ports/sandbox.d.ts.map +1 -1
- package/dist/ports/sandbox.js.map +1 -1
- package/dist/ports/tools.d.ts +22 -2
- package/dist/ports/tools.d.ts.map +1 -1
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +19 -1
- package/dist/runtime.js.map +1 -1
- package/package.json +7 -4
package/dist/core/context.js
CHANGED
|
@@ -59,7 +59,7 @@ export async function compactContext(deps, threadId, model, opts = {}) {
|
|
|
59
59
|
// into — and then fed back through — the parent's prompt (§2.7)
|
|
60
60
|
const history = promptHistory(await deps.storage.messages.list(threadId, { agentId: null }));
|
|
61
61
|
const total = history.reduce((sum, m) => sum + estimateTokens(m.content), 0);
|
|
62
|
-
if (total <= budget * deps.config.compactionTrigger)
|
|
62
|
+
if (!opts.force && total <= budget * deps.config.compactionTrigger)
|
|
63
63
|
return history;
|
|
64
64
|
// Keep the most recent tail verbatim ...
|
|
65
65
|
let tailStart = history.length;
|
|
@@ -75,6 +75,11 @@ export async function compactContext(deps, threadId, model, opts = {}) {
|
|
|
75
75
|
// tool result whose call went into the summary, which no provider accepts.
|
|
76
76
|
// The first user turn inside the budget, or failing that the last one before.
|
|
77
77
|
tailStart = userTurnAtOrAfter(history, tailStart);
|
|
78
|
+
if (opts.force) {
|
|
79
|
+
// Forced (a refusal, or asked for): the tail share is what proved too
|
|
80
|
+
// much, so only the latest user turn stays verbatim.
|
|
81
|
+
tailStart = userTurnAtOrAfter(history, history.length);
|
|
82
|
+
}
|
|
78
83
|
const older = history.slice(0, tailStart);
|
|
79
84
|
const tail = history.slice(tailStart);
|
|
80
85
|
const coversUpTo = [...older].reverse().find((m) => !summaryOf(m))?.id;
|
|
@@ -84,56 +89,14 @@ export async function compactContext(deps, threadId, model, opts = {}) {
|
|
|
84
89
|
warnOverBudget(deps, threadId, total, budget);
|
|
85
90
|
return history;
|
|
86
91
|
}
|
|
87
|
-
// ... and summarize everything before it with a cheap model
|
|
88
|
-
//
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
// inside compaction, on a run that never mentioned this model, so the bare
|
|
92
|
-
// "Unknown model" says nothing about where it came from.
|
|
93
|
-
const compactionModel = deps.config.compactionModel;
|
|
94
|
-
let compactor;
|
|
95
|
-
try {
|
|
96
|
-
compactor = deps.resolveModel(compactionModel);
|
|
97
|
-
}
|
|
98
|
-
catch (err) {
|
|
99
|
-
throw new Error(`compactionModel ${JSON.stringify(compactionModel)} could not be resolved: ` +
|
|
100
|
-
`${err instanceof Error ? err.message : String(err)}`);
|
|
101
|
-
}
|
|
102
|
-
const { text, usage, ...rest } = await generateText({
|
|
103
|
-
model: compactor.instance(),
|
|
104
|
-
prompt: 'Summarize the following conversation history into a dense context brief ' +
|
|
105
|
-
'(decisions, open threads, key facts) for an AI agent:\n\n' +
|
|
106
|
-
older.map((m) => `${m.role}: ${JSON.stringify(m.content)}`).join('\n'),
|
|
107
|
-
...(opts.abortSignal ? { abortSignal: opts.abortSignal } : {}),
|
|
108
|
-
});
|
|
92
|
+
// ... and summarize everything before it with a cheap model: the last
|
|
93
|
+
// summary and the turns since, never the whole history again.
|
|
94
|
+
const lines = older.map((m) => `${m.role}: ${JSON.stringify(m.content)}\n`);
|
|
95
|
+
const text = await summarizeLines(deps, threadId, opts, lines);
|
|
109
96
|
const summary = await deps.storage.messages.append(threadId, {
|
|
110
97
|
role: 'system',
|
|
111
98
|
content: { type: 'CONTEXT_SUMMARY', text, coversUpTo },
|
|
112
99
|
});
|
|
113
|
-
// Compaction is a model call the platform made on its own account (§2.6),
|
|
114
|
-
// so it gets its own priced row like any other (§4). Kind 'compaction' keeps
|
|
115
|
-
// it separable: nobody asked for this call, and it is worth being able to
|
|
116
|
-
// see what the platform's own housekeeping costs. It is billed to the run it
|
|
117
|
-
// served, so it is on that run's bill and under its cap.
|
|
118
|
-
//
|
|
119
|
-
// The cache hit is reported in provider metadata, never in `usage` —
|
|
120
|
-
// attributing without it books every cached prompt at the full input price.
|
|
121
|
-
const meta = rest.providerMetadata ?? rest.experimental_providerMetadata;
|
|
122
|
-
const usageRow = {
|
|
123
|
-
...(opts.runId ? { runId: opts.runId } : {}),
|
|
124
|
-
agentId: null,
|
|
125
|
-
kind: 'compaction',
|
|
126
|
-
step: 0,
|
|
127
|
-
model: compactionModel,
|
|
128
|
-
modelId: wireId(compactor, compactionModel),
|
|
129
|
-
outcome: 'finished',
|
|
130
|
-
providerMetadata: providerMeta(meta, rest.response),
|
|
131
|
-
...fillTokens(usage, meta),
|
|
132
|
-
};
|
|
133
|
-
if (opts.ledger)
|
|
134
|
-
await opts.ledger.record(deps, threadId, usageRow);
|
|
135
|
-
else
|
|
136
|
-
await recordCall(deps, threadId, usageRow);
|
|
137
100
|
await publish(deps, threadId, 'CONTEXT_COMPACTED', { summarizedMessages: older.length });
|
|
138
101
|
const out = [summary, ...tail];
|
|
139
102
|
// Still over the window: a tail turn alone is larger than it. The next run
|
|
@@ -164,4 +127,126 @@ function warnOverBudget(deps, threadId, used, budget) {
|
|
|
164
127
|
threadId, estimatedTokens: used, budgetTokens: budget,
|
|
165
128
|
});
|
|
166
129
|
}
|
|
130
|
+
/** The "prompt too long" refusals providers send. Not "too many tokens":
|
|
131
|
+
* that is also how a throttle is worded (Bedrock). */
|
|
132
|
+
const CONTEXT_OVERFLOW = /prompt is too long|context[_ ]length[_ ]exceeded|maximum context length|exceeds the context window|input is too long/i;
|
|
133
|
+
/** Whether a model call was refused because the prompt did not fit the
|
|
134
|
+
* model's context window. A rate limit (429) never is, whatever its
|
|
135
|
+
* wording: compacting would not help it. */
|
|
136
|
+
export function isContextOverflow(err) {
|
|
137
|
+
if (err === undefined || err === null)
|
|
138
|
+
return false;
|
|
139
|
+
const e = err;
|
|
140
|
+
if (e.statusCode === 429 || e.lastError?.statusCode === 429)
|
|
141
|
+
return false;
|
|
142
|
+
return CONTEXT_OVERFLOW.test(err instanceof Error ? err.message : String(err));
|
|
143
|
+
}
|
|
144
|
+
const SUMMARY_PROMPT = 'Summarize the following conversation history into a dense context brief ' +
|
|
145
|
+
'(decisions, open threads, key facts) for an AI agent:\n\n';
|
|
146
|
+
const MERGE_PROMPT = 'These are summaries of consecutive parts of one conversation, oldest first. ' +
|
|
147
|
+
'Merge them into one dense context brief (decisions, open threads, key facts) for an AI agent, ' +
|
|
148
|
+
'keeping later decisions over earlier ones:\n\n';
|
|
149
|
+
/** The token estimate of one line of text, counted as the Go runtime counts
|
|
150
|
+
* it: about four characters (UTF-16 units) a token. */
|
|
151
|
+
const lineTokens = (line) => Math.ceil(line.length / 4);
|
|
152
|
+
/** How much history one summary call carries: half the compaction model's
|
|
153
|
+
* own window, leaving room for its answer and for the estimate being rough.
|
|
154
|
+
* The history can be larger than the summarizer's window, and a call past it
|
|
155
|
+
* would be refused. */
|
|
156
|
+
export function summaryChunkTokens(deps) {
|
|
157
|
+
return Math.max(Math.floor(contextBudget(deps, deps.config.compactionModel) / 2), 1_000);
|
|
158
|
+
}
|
|
159
|
+
/** Summarizes the lines in as many calls as fit the compaction model, then
|
|
160
|
+
* merges the partial summaries the same way until one is left. */
|
|
161
|
+
async function summarizeLines(deps, threadId, opts, lines) {
|
|
162
|
+
const limit = summaryChunkTokens(deps);
|
|
163
|
+
let prompt = SUMMARY_PROMPT;
|
|
164
|
+
for (;;) {
|
|
165
|
+
const parts = [];
|
|
166
|
+
for (const chunk of chunkLines(lines, limit)) {
|
|
167
|
+
parts.push(await summaryCall(deps, threadId, opts, prompt + chunk));
|
|
168
|
+
}
|
|
169
|
+
if (parts.length === 1)
|
|
170
|
+
return parts[0];
|
|
171
|
+
// A third of a chunk per part fits at least two per merge call, so every
|
|
172
|
+
// round at least halves the parts and the loop ends.
|
|
173
|
+
lines = parts.map((part, i) => trimMiddle(`Part ${i + 1}:\n${part}\n\n`, Math.floor(limit / 3)));
|
|
174
|
+
prompt = MERGE_PROMPT;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
/** Packs lines in order into chunks of at most `limit` tokens. A line larger
|
|
178
|
+
* than a chunk keeps its start and end; its middle goes. */
|
|
179
|
+
export function chunkLines(lines, limit) {
|
|
180
|
+
const chunks = [];
|
|
181
|
+
let current = '';
|
|
182
|
+
let used = 0;
|
|
183
|
+
for (const raw of lines) {
|
|
184
|
+
const line = trimMiddle(raw, limit);
|
|
185
|
+
const t = lineTokens(line);
|
|
186
|
+
if (used > 0 && used + t > limit) {
|
|
187
|
+
chunks.push(current);
|
|
188
|
+
current = '';
|
|
189
|
+
used = 0;
|
|
190
|
+
}
|
|
191
|
+
current += line;
|
|
192
|
+
used += t;
|
|
193
|
+
}
|
|
194
|
+
if (used > 0 || chunks.length === 0)
|
|
195
|
+
chunks.push(current);
|
|
196
|
+
return chunks;
|
|
197
|
+
}
|
|
198
|
+
/** Cuts a line past `limit` tokens down to its start and end. */
|
|
199
|
+
export function trimMiddle(line, limit) {
|
|
200
|
+
if (lineTokens(line) <= limit)
|
|
201
|
+
return line;
|
|
202
|
+
const chars = Array.from(line);
|
|
203
|
+
const keep = Math.floor((limit * 4) / 2); // about four characters a token
|
|
204
|
+
if (keep * 2 >= chars.length)
|
|
205
|
+
return line;
|
|
206
|
+
return chars.slice(0, keep).join('') + '\n[... cut ...]\n' + chars.slice(chars.length - keep).join('');
|
|
207
|
+
}
|
|
208
|
+
/** One summary call, recorded on its own priced row. */
|
|
209
|
+
async function summaryCall(deps, threadId, opts, prompt) {
|
|
210
|
+
// The compaction model is named in config so a registry that has never
|
|
211
|
+
// heard of 'gpt-4o-mini' can point this at its own (§2.6). Naming the key in
|
|
212
|
+
// the error matters: resolveModel throws from deep inside compaction, on a
|
|
213
|
+
// run that never mentioned this model, so the bare "Unknown model" says
|
|
214
|
+
// nothing about where it came from.
|
|
215
|
+
const compactionModel = deps.config.compactionModel;
|
|
216
|
+
let compactor;
|
|
217
|
+
try {
|
|
218
|
+
compactor = deps.resolveModel(compactionModel);
|
|
219
|
+
}
|
|
220
|
+
catch (err) {
|
|
221
|
+
throw new Error(`compactionModel ${JSON.stringify(compactionModel)} could not be resolved: ` +
|
|
222
|
+
`${err instanceof Error ? err.message : String(err)}`);
|
|
223
|
+
}
|
|
224
|
+
const { text, finalStep } = await generateText({
|
|
225
|
+
model: compactor.instance(),
|
|
226
|
+
prompt,
|
|
227
|
+
...(opts.abortSignal ? { abortSignal: opts.abortSignal } : {}),
|
|
228
|
+
});
|
|
229
|
+
// Compaction is a model call the platform made on its own account (§2.6),
|
|
230
|
+
// so it gets its own priced row like any other (§4). Kind 'compaction' keeps
|
|
231
|
+
// it separable: nobody asked for this call, and it is worth being able to
|
|
232
|
+
// see what the platform's own housekeeping costs. It is billed to the run it
|
|
233
|
+
// served, so it is on that run's bill and under its cap.
|
|
234
|
+
const meta = finalStep.providerMetadata;
|
|
235
|
+
const usageRow = {
|
|
236
|
+
...(opts.runId ? { runId: opts.runId } : {}),
|
|
237
|
+
agentId: null,
|
|
238
|
+
kind: 'compaction',
|
|
239
|
+
step: 0,
|
|
240
|
+
model: compactionModel,
|
|
241
|
+
modelId: wireId(compactor, compactionModel),
|
|
242
|
+
outcome: 'finished',
|
|
243
|
+
providerMetadata: providerMeta(meta, finalStep.response),
|
|
244
|
+
...fillTokens(finalStep.usage, meta),
|
|
245
|
+
};
|
|
246
|
+
if (opts.ledger)
|
|
247
|
+
await opts.ledger.record(deps, threadId, usageRow);
|
|
248
|
+
else
|
|
249
|
+
await recordCall(deps, threadId, usageRow);
|
|
250
|
+
return text;
|
|
251
|
+
}
|
|
167
252
|
//# sourceMappingURL=context.js.map
|
package/dist/core/context.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/core/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAGlC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAkB,MAAM,YAAY,CAAC;AAClF,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAEzD,yDAAyD;AACzD,MAAM,CAAC,MAAM,qBAAqB,GAAG,OAAO,CAAC;AAE7C,MAAM,sBAAsB,GAA2B;IACrD,QAAQ,EAAE,OAAO;IACjB,aAAa,EAAE,OAAO;IACtB,mBAAmB,EAAE,OAAO;IAC5B,gBAAgB,EAAE,SAAS;CAC5B,CAAC;AAEF;;yDAEyD;AACzD,MAAM,UAAU,aAAa,CAAC,IAAkB,EAAE,KAAa;IAC7D,IAAI,QAA4B,CAAC;IACjC,IAAI,CAAC;QACH,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC;IACpD,CAAC;IAAC,MAAM,CAAC;QACP,0DAA0D;IAC5D,CAAC;IACD,MAAM,MAAM,GACV,QAAQ;QACR,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,KAAK,CAAC;QAClC,sBAAsB,CAAC,KAAK,CAAC;QAC7B,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC;IACnC,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;AAC5D,CAAC;AAED;;;iCAGiC;AACjC,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,OAAgB,EAAE,EAAE,CACjD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAEhD;kDACkD;AAClD,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,IAAkB,EAClB,QAAgB,EAChB,KAAa;IAEb,MAAM,YAAY,GAAG,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,0BAA0B,CAAC;IACzF,yEAAyE;IACzE,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAC7F,OAAO;QACL,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC1E,YAAY;QACZ,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC;QACzE,QAAQ,EAAE,OAAO,CAAC,MAAM;KACzB,CAAC;AACJ,CAAC;
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/core/context.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/core/engine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiB,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,eAAe,EAAqC,MAAM,YAAY,CAAC;AAG9G,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAInD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAelD,OAAO,EAAgB,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/core/engine.ts"],"names":[],"mappings":"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"}
|
package/dist/core/engine.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { wireId } from './types.js';
|
|
2
|
-
import { compactContext } from './context.js';
|
|
2
|
+
import { compactContext, isContextOverflow } from './context.js';
|
|
3
3
|
import { markPromptCaching } from './cache.js';
|
|
4
4
|
import { promptMessages, repairDanglingToolCalls } from './messages.js';
|
|
5
5
|
import { mergeProviderOptions } from './types.js';
|
|
@@ -9,6 +9,7 @@ import { closeNested, nestedRawTools, RunSlots, runNestedAgent, spawnSubagentToo
|
|
|
9
9
|
import { attemptsKey, COUNTER_TTL_SECONDS, counterScope, redriveKey, runIdKey } from './keys.js';
|
|
10
10
|
import { withRunState } from './state.js';
|
|
11
11
|
import { TOOL_RUN, withToolRun } from './builtin/run.js';
|
|
12
|
+
import { callWithSandboxHook, releaseRunSandbox } from './builtin/sandbox.js';
|
|
12
13
|
import { isPermanentError } from './permanent.js';
|
|
13
14
|
import { runLoop, seedRunLedger } from './loop.js';
|
|
14
15
|
import { enqueueJob, Lease, parseLockValue, runLockKey, RunLockLostError } from './lease.js';
|
|
@@ -80,7 +81,9 @@ async function settleVerdict(deps, threadId, pending, target, signal, state, too
|
|
|
80
81
|
return { result: JSON.parse(done), expired: false }; // it already ran
|
|
81
82
|
let result;
|
|
82
83
|
try {
|
|
83
|
-
|
|
84
|
+
// The approved call is a sandbox call like a live one: the hook runs
|
|
85
|
+
// after it the same way.
|
|
86
|
+
result = await callWithSandboxHook(toolRun, pending.toolName, pending.toolCallId, () => false, (run) => target.execute(pending.arguments, {
|
|
84
87
|
toolCallId: pending.toolCallId,
|
|
85
88
|
abortSignal: signal,
|
|
86
89
|
// The resumed tool gets the same context a live one does (§2.10).
|
|
@@ -91,8 +94,8 @@ async function settleVerdict(deps, threadId, pending, target, signal, state, too
|
|
|
91
94
|
approval: { payload: answer.payload },
|
|
92
95
|
threadId,
|
|
93
96
|
runId: toolRun.runId,
|
|
94
|
-
[TOOL_RUN]: toolRun,
|
|
95
|
-
});
|
|
97
|
+
[TOOL_RUN]: run ?? toolRun,
|
|
98
|
+
}));
|
|
96
99
|
}
|
|
97
100
|
catch (err) {
|
|
98
101
|
result = { error: err instanceof Error ? err.message : String(err) };
|
|
@@ -273,6 +276,9 @@ export async function closeIfOpen(deps, runId, stopReason) {
|
|
|
273
276
|
* to be dropped entirely, so an operator could see that something failed but
|
|
274
277
|
* never what. */
|
|
275
278
|
async function failRun(deps, agent, threadId, runId, error) {
|
|
279
|
+
// A run that fails is done with its sandbox. Only one this run made is
|
|
280
|
+
// ended, so a newer run that got the thread keeps its own.
|
|
281
|
+
await releaseRunSandbox(deps, threadId, runId, false);
|
|
276
282
|
// A failed run still spent money on the steps it did make (§4), so it
|
|
277
283
|
// settles like any other end. Settled even with no hook, so the late sweep
|
|
278
284
|
// does not keep coming back to it.
|
|
@@ -629,6 +635,7 @@ export async function execute(deps, agent, input) {
|
|
|
629
635
|
// Still parked, or parked again one level down while unwinding: the
|
|
630
636
|
// new park's step is saved by now, so it is written here.
|
|
631
637
|
await commitParks(deps, parks);
|
|
638
|
+
await releaseRunSandbox(deps, threadId, runId, true);
|
|
632
639
|
segEnd = { type: 'RUN_FINISHED', status: 'parked' };
|
|
633
640
|
return 'executed';
|
|
634
641
|
}
|
|
@@ -650,52 +657,85 @@ export async function execute(deps, agent, input) {
|
|
|
650
657
|
};
|
|
651
658
|
}
|
|
652
659
|
else {
|
|
653
|
-
// Durable compaction pass — history always fits the model budget (§2.6);
|
|
654
|
-
// the budget uses the resolved model's contextWindow (§3.3)
|
|
655
|
-
const history = await compactContext(deps, threadId, input.model, {
|
|
656
|
-
runId,
|
|
657
|
-
abortSignal: abort.signal,
|
|
658
|
-
ledger,
|
|
659
|
-
});
|
|
660
660
|
const model = deps.resolveModel(input.model);
|
|
661
|
-
//
|
|
662
|
-
//
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
661
|
+
// Compacts (§2.6; the budget uses the resolved model's contextWindow,
|
|
662
|
+
// §3.3) and runs the loop. `force` compacts whatever the estimate
|
|
663
|
+
// says; `steps` is how many steps are left.
|
|
664
|
+
const progress = { steps: 0 };
|
|
665
|
+
const compactAndRun = async (force, steps) => {
|
|
666
|
+
const history = await compactContext(deps, threadId, input.model, {
|
|
667
|
+
runId,
|
|
668
|
+
abortSignal: abort.signal,
|
|
669
|
+
ledger,
|
|
670
|
+
force,
|
|
671
|
+
});
|
|
672
|
+
// Prompt caching (§2.6): stamp the stable prefix once — appended step
|
|
673
|
+
// messages extend the prompt without invalidating the breakpoints.
|
|
674
|
+
let messages = repairDanglingToolCalls(promptMessages(history));
|
|
675
|
+
if (deps.config.promptCaching) {
|
|
676
|
+
messages = markPromptCaching(messages);
|
|
677
|
+
}
|
|
678
|
+
progress.steps = 0;
|
|
679
|
+
return runLoop(deps, agent, threadId, {
|
|
680
|
+
agentId: null, // the main agent's stream (§2.7)
|
|
681
|
+
runId,
|
|
682
|
+
kind: agent.kind,
|
|
683
|
+
model: model.instance(),
|
|
684
|
+
messages,
|
|
685
|
+
tools,
|
|
686
|
+
maxSteps: steps,
|
|
687
|
+
abortSignal: abort.signal,
|
|
688
|
+
providerOptions,
|
|
689
|
+
tokenBudget,
|
|
690
|
+
systemFn: userArgs.systemFn,
|
|
691
|
+
prepareStep: userArgs.prepareStep,
|
|
692
|
+
state: input.state ?? {},
|
|
693
|
+
costBudgetMicros: costBudget,
|
|
694
|
+
billingRunId: runId,
|
|
695
|
+
modelKey: input.model,
|
|
696
|
+
modelId: wireId(model, input.model),
|
|
697
|
+
agentName: agent.name,
|
|
698
|
+
cacheSystemPrompt: deps.config.promptCaching,
|
|
699
|
+
fenced: () => lease.lost,
|
|
700
|
+
commitParks: () => commitParks(deps, parks),
|
|
701
|
+
// One canonical path for every client: durable log + live Pub/Sub
|
|
702
|
+
// (§2.1, §2.2), with token deltas merged (see ChunkBatcher).
|
|
703
|
+
publishChunk: async (chunk) => {
|
|
704
|
+
await publish(deps, threadId, 'CHUNK', chunk);
|
|
705
|
+
},
|
|
706
|
+
toolErrors,
|
|
707
|
+
onChunk: async (chunk) => {
|
|
708
|
+
userArgs.onChunk?.({ chunk }); // the user callback sees every raw chunk
|
|
709
|
+
},
|
|
710
|
+
progress,
|
|
711
|
+
}, ledger);
|
|
712
|
+
};
|
|
713
|
+
try {
|
|
714
|
+
loop = await compactAndRun(false, maxSteps);
|
|
715
|
+
}
|
|
716
|
+
catch (err) {
|
|
717
|
+
// The provider refused the prompt as too long: the estimate missed.
|
|
718
|
+
// Compact now and go on from the steps already saved, once.
|
|
719
|
+
if (!isContextOverflow(err) || lease.lost || abort.signal.aborted)
|
|
720
|
+
throw err;
|
|
721
|
+
(deps.log ?? console).warn?.('prompt too long for the model; compacting and retrying', {
|
|
722
|
+
threadId, runId, err: err instanceof Error ? err.message : String(err),
|
|
723
|
+
});
|
|
724
|
+
const done = progress.steps;
|
|
725
|
+
const spent = progress.attribution;
|
|
726
|
+
const retried = await compactAndRun(true, Math.max(1, maxSteps - done));
|
|
727
|
+
// The segment is both tries: their steps and their tokens.
|
|
728
|
+
loop = {
|
|
729
|
+
...retried,
|
|
730
|
+
steps: retried.steps + done,
|
|
731
|
+
attribution: {
|
|
732
|
+
inputTokens: retried.attribution.inputTokens + (spent?.inputTokens ?? 0),
|
|
733
|
+
cachedInputTokens: retried.attribution.cachedInputTokens + (spent?.cachedInputTokens ?? 0),
|
|
734
|
+
outputTokens: retried.attribution.outputTokens + (spent?.outputTokens ?? 0),
|
|
735
|
+
totalTokens: retried.attribution.totalTokens + (spent?.totalTokens ?? 0),
|
|
736
|
+
},
|
|
737
|
+
};
|
|
666
738
|
}
|
|
667
|
-
loop = await runLoop(deps, agent, threadId, {
|
|
668
|
-
agentId: null, // the main agent's stream (§2.7)
|
|
669
|
-
runId,
|
|
670
|
-
kind: agent.kind,
|
|
671
|
-
model: model.instance(),
|
|
672
|
-
messages,
|
|
673
|
-
tools,
|
|
674
|
-
maxSteps,
|
|
675
|
-
abortSignal: abort.signal,
|
|
676
|
-
providerOptions,
|
|
677
|
-
tokenBudget,
|
|
678
|
-
systemFn: userArgs.systemFn,
|
|
679
|
-
prepareStep: userArgs.prepareStep,
|
|
680
|
-
state: input.state ?? {},
|
|
681
|
-
costBudgetMicros: costBudget,
|
|
682
|
-
billingRunId: runId,
|
|
683
|
-
modelKey: input.model,
|
|
684
|
-
modelId: wireId(model, input.model),
|
|
685
|
-
agentName: agent.name,
|
|
686
|
-
cacheSystemPrompt: deps.config.promptCaching,
|
|
687
|
-
fenced: () => lease.lost,
|
|
688
|
-
commitParks: () => commitParks(deps, parks),
|
|
689
|
-
// One canonical path for every client: durable log + live Pub/Sub
|
|
690
|
-
// (§2.1, §2.2), with token deltas merged (see ChunkBatcher).
|
|
691
|
-
publishChunk: async (chunk) => {
|
|
692
|
-
await publish(deps, threadId, 'CHUNK', chunk);
|
|
693
|
-
},
|
|
694
|
-
toolErrors,
|
|
695
|
-
onChunk: async (chunk) => {
|
|
696
|
-
userArgs.onChunk?.({ chunk }); // the user callback sees every raw chunk
|
|
697
|
-
},
|
|
698
|
-
}, ledger);
|
|
699
739
|
// A lost lock aborts the run the way a stop does, but it is not a stop:
|
|
700
740
|
// another worker may own the thread now, so nothing below may write.
|
|
701
741
|
if (lease.lost)
|
|
@@ -723,6 +763,8 @@ export async function execute(deps, agent, input) {
|
|
|
723
763
|
.increment(runId, deltasOf(loop.steps, attribution))
|
|
724
764
|
.catch(() => undefined); // operational history must not fail a parked run
|
|
725
765
|
}
|
|
766
|
+
// A park can wait for hours; a run's sandbox is not held for it.
|
|
767
|
+
await releaseRunSandbox(deps, threadId, runId, true);
|
|
726
768
|
segEnd = { type: 'RUN_FINISHED', status: 'parked' };
|
|
727
769
|
return 'executed';
|
|
728
770
|
}
|
|
@@ -760,6 +802,7 @@ export async function execute(deps, agent, input) {
|
|
|
760
802
|
cancelled: state === 'CANCELLED', ...(error ? { error } : {}),
|
|
761
803
|
tokensUsed, attribution, steps: loop.steps,
|
|
762
804
|
usage: bill.usage, ...(bill.error !== undefined ? { usageError: bill.error } : {}),
|
|
805
|
+
...(input.state ? { runState: input.state } : {}),
|
|
763
806
|
});
|
|
764
807
|
const settled = await settleRun(deps, agent, info());
|
|
765
808
|
if (settled.error !== undefined && state !== 'CANCELLED') {
|
|
@@ -776,6 +819,7 @@ export async function execute(deps, agent, input) {
|
|
|
776
819
|
steps: loop.steps,
|
|
777
820
|
...(error ? { error } : {}),
|
|
778
821
|
});
|
|
822
|
+
await releaseRunSandbox(deps, threadId, runId, false);
|
|
779
823
|
segEnd = state === 'FAILED'
|
|
780
824
|
? { type: 'RUN_ERROR', status: 'error', error: error ?? 'the run failed' }
|
|
781
825
|
: {
|