@superdurable/dex-agents 0.4.0 → 0.5.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 +506 -52
- package/dist/src/agent-context-compaction.d.ts +1 -1
- package/dist/src/agent-framework-runner.d.ts +122 -11
- package/dist/src/agent-framework-runner.js +4 -0
- package/dist/src/agent-framework-runner.js.map +1 -1
- package/dist/src/agent-local-directory-media-store.d.ts +111 -0
- package/dist/src/agent-local-directory-media-store.js +417 -0
- package/dist/src/agent-local-directory-media-store.js.map +1 -0
- package/dist/src/agent-media.d.ts +279 -0
- package/dist/src/agent-media.js +457 -0
- package/dist/src/agent-media.js.map +1 -0
- package/dist/src/agent-session-codecs.d.ts +3 -1
- package/dist/src/agent-session-codecs.js +45 -4
- package/dist/src/agent-session-codecs.js.map +1 -1
- package/dist/src/agent-session-failure.d.ts +4 -2
- package/dist/src/agent-session-failure.js +6 -2
- package/dist/src/agent-session-failure.js.map +1 -1
- package/dist/src/agent-session-flow-graph.d.ts +46 -0
- package/dist/src/agent-session-flow-graph.js +51 -0
- package/dist/src/agent-session-flow-graph.js.map +1 -1
- package/dist/src/agent-session-flow.d.ts +5 -3
- package/dist/src/agent-session-flow.js +10 -1
- package/dist/src/agent-session-flow.js.map +1 -1
- package/dist/src/agent-session-start.d.ts +1 -1
- package/dist/src/agent-session-start.js +2 -2
- package/dist/src/agent-session-start.js.map +1 -1
- package/dist/src/agent-session-steps.d.ts +2 -0
- package/dist/src/agent-session-steps.js +52 -3
- package/dist/src/agent-session-steps.js.map +1 -1
- package/dist/src/agent-session-tracer.js +1 -1
- package/dist/src/agent-session-tracer.js.map +1 -1
- package/dist/src/agent-session-transitions.d.ts +2 -0
- package/dist/src/agent-session-transitions.js +21 -1
- package/dist/src/agent-session-transitions.js.map +1 -1
- package/dist/src/agent-session-values.d.ts +76 -1
- package/dist/src/agent-session-values.js.map +1 -1
- package/dist/src/agent-session-wait-steps.js +14 -2
- package/dist/src/agent-session-wait-steps.js.map +1 -1
- package/dist/src/ai-sdk/ai-sdk-model-client.d.ts +15 -3
- package/dist/src/ai-sdk/ai-sdk-model-client.js +36 -7
- package/dist/src/ai-sdk/ai-sdk-model-client.js.map +1 -1
- package/dist/src/ai-sdk/index.d.ts +1 -1
- package/dist/src/ai-sdk/index.js +1 -1
- package/dist/src/ai-sdk/index.js.map +1 -1
- package/dist/src/{stepwise → builtin-loop}/agent-definition.d.ts +120 -5
- package/dist/src/builtin-loop/agent-definition.js.map +1 -0
- package/dist/src/builtin-loop/builtin-agent-session-flow.d.ts +69 -0
- package/dist/src/{stepwise/stepwise-agent-session-flow.js → builtin-loop/builtin-agent-session-flow.js} +15 -9
- package/dist/src/builtin-loop/builtin-agent-session-flow.js.map +1 -0
- package/dist/src/{stepwise/stepwise-agent-runner.d.ts → builtin-loop/builtin-loop-agent-runner.d.ts} +72 -14
- package/dist/src/{stepwise/stepwise-agent-runner.js → builtin-loop/builtin-loop-agent-runner.js} +284 -41
- package/dist/src/builtin-loop/builtin-loop-agent-runner.js.map +1 -0
- package/dist/src/{stepwise/stepwise-input-items.d.ts → builtin-loop/builtin-loop-input-items.d.ts} +7 -3
- package/dist/src/{stepwise/stepwise-input-items.js → builtin-loop/builtin-loop-input-items.js} +57 -10
- package/dist/src/builtin-loop/builtin-loop-input-items.js.map +1 -0
- package/dist/src/builtin-loop/function-tool.d.ts +282 -0
- package/dist/src/{stepwise → builtin-loop}/function-tool.js +63 -3
- package/dist/src/builtin-loop/function-tool.js.map +1 -0
- package/dist/src/builtin-loop/index.d.ts +8 -0
- package/dist/src/builtin-loop/index.js +13 -0
- package/dist/src/builtin-loop/index.js.map +1 -0
- package/dist/src/builtin-loop/json-schema-validation.js.map +1 -0
- package/dist/src/{stepwise → builtin-loop}/model-client.d.ts +36 -7
- package/dist/src/builtin-loop/model-client.js.map +1 -0
- package/dist/src/{stepwise → builtin-loop}/scripted-model-client.d.ts +8 -5
- package/dist/src/{stepwise → builtin-loop}/scripted-model-client.js +8 -5
- package/dist/src/builtin-loop/scripted-model-client.js.map +1 -0
- package/dist/src/{stepwise → builtin-loop}/tool-source.d.ts +2 -2
- package/dist/src/builtin-loop/tool-source.js.map +1 -0
- package/dist/src/connectors/connector-input-schema.js +1 -1
- package/dist/src/connectors/connector-input-schema.js.map +1 -1
- package/dist/src/connectors/connector-step-context.d.ts +19 -2
- package/dist/src/connectors/connector-step-context.js +61 -5
- package/dist/src/connectors/connector-step-context.js.map +1 -1
- package/dist/src/connectors/connector-tool-source.d.ts +61 -13
- package/dist/src/connectors/connector-tool-source.js +111 -24
- package/dist/src/connectors/connector-tool-source.js.map +1 -1
- package/dist/src/index.d.ts +6 -4
- package/dist/src/index.js +3 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/mcp/index.d.ts +1 -0
- package/dist/src/mcp/index.js +1 -0
- package/dist/src/mcp/index.js.map +1 -1
- package/dist/src/mcp/mcp-dex-conventions.d.ts +57 -0
- package/dist/src/mcp/mcp-dex-conventions.js +90 -0
- package/dist/src/mcp/mcp-dex-conventions.js.map +1 -0
- package/dist/src/mcp/mcp-image-content.d.ts +20 -0
- package/dist/src/mcp/mcp-image-content.js +82 -0
- package/dist/src/mcp/mcp-image-content.js.map +1 -0
- package/dist/src/mcp/mcp-tool-source.d.ts +178 -17
- package/dist/src/mcp/mcp-tool-source.js +237 -34
- package/dist/src/mcp/mcp-tool-source.js.map +1 -1
- package/dist/src/s3/index.d.ts +1 -0
- package/dist/src/s3/index.js +9 -0
- package/dist/src/s3/index.js.map +1 -0
- package/dist/src/s3/s3-media-store.d.ts +138 -0
- package/dist/src/s3/s3-media-store.js +255 -0
- package/dist/src/s3/s3-media-store.js.map +1 -0
- package/dist/src/stepwise/index.d.ts +41 -8
- package/dist/src/stepwise/index.js +35 -5
- package/dist/src/stepwise/index.js.map +1 -1
- package/dist/src/testing/agent-session-test-client.d.ts +6 -3
- package/dist/src/testing/agent-session-test-client.js +10 -3
- package/dist/src/testing/agent-session-test-client.js.map +1 -1
- package/dist/src/testing/scripted-model-client.d.ts +1 -1
- package/dist/src/testing/scripted-model-client.js +2 -2
- package/dist/src/testing/scripted-model-client.js.map +1 -1
- package/dist/src/tool-source-router.d.ts +3 -3
- package/dist/src/tool-source-router.js +2 -2
- package/dist/src/ui-stream/agent-event-json.d.ts +2 -1
- package/dist/src/ui-stream/agent-event-json.js +3 -1
- package/dist/src/ui-stream/agent-event-json.js.map +1 -1
- package/dist/src/ui-stream/agent-ui-messages.d.ts +11 -3
- package/dist/src/ui-stream/agent-ui-messages.js +29 -5
- package/dist/src/ui-stream/agent-ui-messages.js.map +1 -1
- package/package.json +16 -3
- package/dist/src/stepwise/agent-definition.js.map +0 -1
- package/dist/src/stepwise/function-tool.d.ts +0 -130
- package/dist/src/stepwise/function-tool.js.map +0 -1
- package/dist/src/stepwise/json-schema-validation.js.map +0 -1
- package/dist/src/stepwise/model-client.js.map +0 -1
- package/dist/src/stepwise/scripted-model-client.js.map +0 -1
- package/dist/src/stepwise/stepwise-agent-runner.js.map +0 -1
- package/dist/src/stepwise/stepwise-agent-session-flow.d.ts +0 -35
- package/dist/src/stepwise/stepwise-agent-session-flow.js.map +0 -1
- package/dist/src/stepwise/stepwise-input-items.js.map +0 -1
- package/dist/src/stepwise/tool-source.js.map +0 -1
- /package/dist/src/{stepwise → builtin-loop}/agent-definition.js +0 -0
- /package/dist/src/{stepwise → builtin-loop}/json-schema-validation.d.ts +0 -0
- /package/dist/src/{stepwise → builtin-loop}/json-schema-validation.js +0 -0
- /package/dist/src/{stepwise → builtin-loop}/model-client.js +0 -0
- /package/dist/src/{stepwise → builtin-loop}/tool-source.js +0 -0
package/dist/src/{stepwise/stepwise-agent-runner.js → builtin-loop/builtin-loop-agent-runner.js}
RENAMED
|
@@ -9,10 +9,12 @@ import { builtInToolDefinitions } from "../agent-built-in-tools.js";
|
|
|
9
9
|
import { buildContextSummaryNote, buildContextSummaryOmissionNote, contextSummaryInstructions, contextSummaryRequest, } from "../agent-context-compaction.js";
|
|
10
10
|
export { buildContextSummaryNote, buildContextSummaryOmissionNote, contextSummaryInstructions, contextSummaryNoteHeader, contextSummaryRequest, } from "../agent-context-compaction.js";
|
|
11
11
|
import { ToolExecutionError, } from "../agent-framework-runner.js";
|
|
12
|
+
import { loadImages } from "../agent-media.js";
|
|
12
13
|
import { buildPlanNote } from "../agent-plans.js";
|
|
13
|
-
import { describeToolCallOutcome, } from "../agent-session-values.js";
|
|
14
|
+
import { describeToolCallOutcome, emptyAgentUsage, } from "../agent-session-values.js";
|
|
15
|
+
import { isFunctionToolResult } from "./function-tool.js";
|
|
14
16
|
import { findJsonSchemaViolation, serializeJsonWithSpacedSeparators } from "./json-schema-validation.js";
|
|
15
|
-
import { pairToolCallsWithResults, readStoredModelInputItem,
|
|
17
|
+
import { pairToolCallsWithResults, readStoredModelInputItem, toBuiltinLoopFrameworkMessage, } from "./builtin-loop-input-items.js";
|
|
16
18
|
import { ToolSourceRouter, defaultToolSourceListingTimeoutMs, readToolSourceEnvelope as readRouterToolSourceEnvelope, writeToolSourceEnvelope as writeRouterToolSourceEnvelope, } from "../tool-source-router.js";
|
|
17
19
|
export { defaultToolSourceListingTimeoutMs } from "../tool-source-router.js";
|
|
18
20
|
// The runner's envelope around a source's toolSourceReference: the building source's name.
|
|
@@ -20,19 +22,34 @@ const toolSourceNameKey = "stepwise_tool_source";
|
|
|
20
22
|
// An unlisted name never reaches a source, so it fails without asking anyone to approve it.
|
|
21
23
|
const unlistedSourceToolPolicy = { effect: "unclassified", requiresApproval: false };
|
|
22
24
|
export const defaultMaxModelCallsPerTurn = 100;
|
|
25
|
+
/**
|
|
26
|
+
* How many {@link ContinueTurn} results of {@link AgentDefinition.decideTurnContinuation} may follow answers without
|
|
27
|
+
* tool calls in a row. A model response with tool calls resets the count.
|
|
28
|
+
* @since 0.5.0
|
|
29
|
+
*/
|
|
30
|
+
export const maxConsecutiveTurnContinuations = 8;
|
|
23
31
|
/** Result of a tool call the model made after the turn's model call limit; the same text as the Python core. */
|
|
24
32
|
export function buildToolCallLimitReachedResult(maxModelCallsPerTurn) {
|
|
25
33
|
return `The tool call was not run: this turn reached its limit of ${maxModelCallsPerTurn} model calls.`;
|
|
26
34
|
}
|
|
35
|
+
/**
|
|
36
|
+
* The `lastTurnError` of a turn whose `decideTurnContinuation` returned a {@link ContinueTurn} once too often in a
|
|
37
|
+
* row; the same text as the Python core.
|
|
38
|
+
* @param limit - {@link maxConsecutiveTurnContinuations}.
|
|
39
|
+
* @returns The error text.
|
|
40
|
+
*/
|
|
41
|
+
export function buildTurnContinuationLimitError(limit) {
|
|
42
|
+
return `the turn reached its limit of ${limit} consecutive continuations without a tool call`;
|
|
43
|
+
}
|
|
27
44
|
// The summary is not the assistant's answer, so its live text goes nowhere.
|
|
28
45
|
const discardedModelOutput = {
|
|
29
46
|
writeTextDelta: () => undefined,
|
|
30
47
|
writeReasoningDelta: () => undefined,
|
|
31
48
|
};
|
|
32
49
|
/**
|
|
33
|
-
* The {@link AgentFrameworkRunner} of the built-in
|
|
50
|
+
* The {@link AgentFrameworkRunner} of the built-in agent loop.
|
|
34
51
|
*
|
|
35
|
-
* {@link
|
|
52
|
+
* {@link createBuiltinAgentSessionFlow} creates one; construct it directly only to pass it to
|
|
36
53
|
* `createAgentSessionFlow` with options of your own. Each `RunModel` makes at most one model call
|
|
37
54
|
* through {@link AgentDefinition.model}, from committed state only: the stored messages, the results
|
|
38
55
|
* of the previous model response from the turn's final records, and the instructions. The runner
|
|
@@ -44,13 +61,27 @@ const discardedModelOutput = {
|
|
|
44
61
|
* tasks. Its {@link cancelToolTask} passes a task that `cancel_turn` abandoned to that source's optional
|
|
45
62
|
* `cancelToolTask`.
|
|
46
63
|
*
|
|
64
|
+
* With a media store, the runner shows images to the model. It then has `buildUserMessageWithImages` of
|
|
65
|
+
* {@link AgentFrameworkRunner}, as an own property, so `send_user_message` accepts images: the stored `user_text` item keeps their references after the text. A tool
|
|
66
|
+
* result item keeps the references of `AgentToolCall.images`. Before each model call, the runner reads the bytes of
|
|
67
|
+
* every image in the request with `loadImages` and passes them in `ModelRequest.imageBytes`; the model client
|
|
68
|
+
* converts each image to the provider's image part. A failed read fails that `RunModel` attempt, which retries. The
|
|
69
|
+
* model call that writes a context summary sees the text of the items only. Without a store the session refuses
|
|
70
|
+
* user images, and a tool source result's images are stored but not shown to the model. A function tool's images fail
|
|
71
|
+
* the call instead, without a retry. The class declares neither member, so a subclass may still define its own
|
|
72
|
+
* `buildUserMessageWithImages` or `mediaStore`; a subclass method stays in use with a store.
|
|
73
|
+
*
|
|
47
74
|
* @example
|
|
48
75
|
* ```ts
|
|
49
|
-
* const runner = new
|
|
76
|
+
* const runner = new BuiltinLoopAgentRunner(definition);
|
|
50
77
|
* const flow = createAgentSessionFlow(runner, "SupportAgent", { builtInTools: ["ask_user"] });
|
|
51
78
|
* ```
|
|
79
|
+
*
|
|
80
|
+
* It replaces `StepwiseAgentRunner`, which `@superdurable/dex-agents/stepwise` keeps as a deprecated alias.
|
|
81
|
+
*
|
|
82
|
+
* @since 0.5.0
|
|
52
83
|
*/
|
|
53
|
-
export class
|
|
84
|
+
export class BuiltinLoopAgentRunner {
|
|
54
85
|
/** The agent definition, frozen at construction. */
|
|
55
86
|
definition;
|
|
56
87
|
/** The runner honors {@link AgentTurnContext.interactionMode}, so plan mode can be enabled. */
|
|
@@ -58,16 +89,27 @@ export class StepwiseAgentRunner {
|
|
|
58
89
|
functionToolsByName;
|
|
59
90
|
toolSources;
|
|
60
91
|
maxModelCallsPerTurn;
|
|
92
|
+
// An ES private field, so it never collides with a subclass member.
|
|
93
|
+
#mediaStore;
|
|
61
94
|
/**
|
|
62
95
|
* Creates the runner and checks the definition.
|
|
63
96
|
* @param definition - The agent definition.
|
|
64
|
-
* @
|
|
65
|
-
*
|
|
97
|
+
* @param mediaStore - The store that holds the session's images, such as `S3MediaStore`. With it, the runner
|
|
98
|
+
* accepts user messages with images and shows them and tool result images to the model, reading the bytes for
|
|
99
|
+
* each model call; stored messages hold only references. It also gets an own `buildUserMessageWithImages`, which
|
|
100
|
+
* stores user text and its images as one `user_text` item that holds the references, not the bytes, unless a
|
|
101
|
+
* subclass defines its own `buildUserMessageWithImages`, which then stays in use. Use the store
|
|
102
|
+
* the clients and tools upload to. Omit it to refuse user images and show tool result images to the model as text
|
|
103
|
+
* only. Since 0.5.0.
|
|
104
|
+
*
|
|
105
|
+
* Changed in 0.5.0: takes `mediaStore`.
|
|
106
|
+
* @throws {TypeError} When the name, instructions, model, tools, or `decideTurnContinuation` are invalid, two tools
|
|
107
|
+
* share a name, a function tool uses the name of an enabled built-in tool, `planModeEnabled` is set without
|
|
66
108
|
* `write_todos`, `planningToolChoice` is neither `auto` nor `required`, or a tool source lacks a
|
|
67
109
|
* {@link ToolSource} method.
|
|
68
110
|
* @throws {RangeError} When `maxModelCallsPerTurn` is not a positive integer.
|
|
69
111
|
*/
|
|
70
|
-
constructor(definition) {
|
|
112
|
+
constructor(definition, mediaStore = undefined) {
|
|
71
113
|
if (typeof definition?.name !== "string" || definition.name.trim() === "") {
|
|
72
114
|
throw new TypeError("AgentDefinition.name must be a non-blank string");
|
|
73
115
|
}
|
|
@@ -80,6 +122,9 @@ export class StepwiseAgentRunner {
|
|
|
80
122
|
if (definition.resolveModel !== undefined && typeof definition.resolveModel !== "function") {
|
|
81
123
|
throw new TypeError("AgentDefinition.resolveModel must be a function");
|
|
82
124
|
}
|
|
125
|
+
if (definition.decideTurnContinuation !== undefined && typeof definition.decideTurnContinuation !== "function") {
|
|
126
|
+
throw new TypeError("AgentDefinition.decideTurnContinuation must be a function");
|
|
127
|
+
}
|
|
83
128
|
const enabledBuiltInTools = new Set(definition.builtInTools ?? []);
|
|
84
129
|
const functionToolsByName = new Map();
|
|
85
130
|
for (const tool of definition.tools ?? []) {
|
|
@@ -120,6 +165,13 @@ export class StepwiseAgentRunner {
|
|
|
120
165
|
this.functionToolsByName = functionToolsByName;
|
|
121
166
|
this.toolSources = toolSources;
|
|
122
167
|
this.maxModelCallsPerTurn = maxModelCallsPerTurn;
|
|
168
|
+
this.#mediaStore = mediaStore;
|
|
169
|
+
if (mediaStore !== undefined) {
|
|
170
|
+
// The session accepts images only from a runner with this method; the class leaves it undeclared for subclasses.
|
|
171
|
+
const runner = this;
|
|
172
|
+
// A subclass's own method is already on the prototype chain, and it stays in use.
|
|
173
|
+
runner.buildUserMessageWithImages ??= (text, images) => toBuiltinLoopFrameworkMessage({ type: "user_text", text, images: [...images] });
|
|
174
|
+
}
|
|
123
175
|
}
|
|
124
176
|
/**
|
|
125
177
|
* Converts user text into a stored `user_text` item.
|
|
@@ -127,33 +179,76 @@ export class StepwiseAgentRunner {
|
|
|
127
179
|
* @returns The message with role `user`.
|
|
128
180
|
*/
|
|
129
181
|
buildUserMessage(text) {
|
|
130
|
-
return
|
|
182
|
+
return toBuiltinLoopFrameworkMessage({ type: "user_text", text });
|
|
131
183
|
}
|
|
132
184
|
/**
|
|
133
185
|
* Makes the turn's next model call.
|
|
134
186
|
* @param turn - The turn context.
|
|
135
187
|
* @returns {@link TurnCompleted} with the results and final answer not stored yet, or
|
|
136
|
-
* {@link ToolCallsRequested} with the previous results, this response, and its tool calls.
|
|
188
|
+
* {@link ToolCallsRequested} with the previous results, this response, and its tool calls. When
|
|
189
|
+
* {@link AgentDefinition.decideTurnContinuation} returns `"end"` after tool calls, a {@link TurnCompleted} with only
|
|
190
|
+
* the results and zero usage, without a model call. When it continues after tool calls, its message follows the
|
|
191
|
+
* results in the request and in the stored messages. When it continues after an answer, a {@link TurnContinued}
|
|
192
|
+
* with the previous results, this response, and the message as user text, or a {@link TurnCompleted} with
|
|
193
|
+
* {@link TurnCompleted.turnError} once {@link maxConsecutiveTurnContinuations} is exceeded.
|
|
137
194
|
* @throws {TypeError} When a function tool uses the name of an enabled built-in tool, or a tool source lists a
|
|
138
195
|
* name that repeats a function tool, an enabled built-in tool, or another source's tool. No model request is
|
|
139
|
-
* made.
|
|
140
|
-
* @throws Any error of the model call
|
|
196
|
+
* made. Also when `decideTurnContinuation` returns another value.
|
|
197
|
+
* @throws Any error of the model call, of the media store, of a tool source's `listTools`, or of
|
|
198
|
+
* `decideTurnContinuation`, which retries the `RunModel` attempt.
|
|
141
199
|
*/
|
|
142
200
|
async runModelStep(turn) {
|
|
143
201
|
this.requireNoBuiltInToolNameClash(turn);
|
|
144
|
-
const
|
|
202
|
+
const runState = readBuiltinLoopRunState(turn.frameworkRunState);
|
|
203
|
+
const modelCallCount = runState.modelCalls;
|
|
145
204
|
const unstoredToolResults = buildUnstoredToolResults(turn);
|
|
205
|
+
const unstoredItems = [...unstoredToolResults];
|
|
206
|
+
if (unstoredToolResults.length > 0 && this.definition.decideTurnContinuation !== undefined) {
|
|
207
|
+
const decision = await this.decideTurnContinuation(turn, readLatestModelOutput(turn), unstoredToolResults);
|
|
208
|
+
if (decision === "end") {
|
|
209
|
+
return {
|
|
210
|
+
kind: "completed",
|
|
211
|
+
newMessages: unstoredToolResults.map(toBuiltinLoopFrameworkMessage),
|
|
212
|
+
usage: emptyAgentUsage(),
|
|
213
|
+
};
|
|
214
|
+
}
|
|
215
|
+
if (decision !== "default") {
|
|
216
|
+
unstoredItems.push({ type: "user_text", text: decision.message });
|
|
217
|
+
}
|
|
218
|
+
}
|
|
146
219
|
const isToolBudgetSpent = modelCallCount >= this.maxModelCallsPerTurn;
|
|
147
220
|
const sourceTools = isToolBudgetSpent || turn.interactionMode === "planning"
|
|
148
221
|
? new Map()
|
|
149
222
|
: await this.toolSources.listSourceTools(turn.enabledBuiltInTools ?? new Set());
|
|
150
|
-
const request = await this.buildModelRequest(turn,
|
|
151
|
-
const response = await this.resolveModel(turn.sessionSettings).callModel(request, turn.events);
|
|
223
|
+
const request = await this.buildModelRequest(turn, unstoredItems, modelCallCount, isToolBudgetSpent, sourceTools);
|
|
224
|
+
const response = await this.resolveModel(turn.sessionSettings).callModel(await this.addImageBytes(request), turn.events);
|
|
152
225
|
requireModelResponse(response);
|
|
153
226
|
const usage = { ...response.usage, modelCalls: 1 };
|
|
154
|
-
const newMessages = [...
|
|
227
|
+
const newMessages = [...unstoredItems, ...response.outputItems].map(toBuiltinLoopFrameworkMessage);
|
|
155
228
|
if (response.toolCalls.length === 0) {
|
|
156
|
-
|
|
229
|
+
const decision = await this.decideTurnContinuation(turn, response.outputItems, []);
|
|
230
|
+
if (decision === "end" || decision === "default") {
|
|
231
|
+
return { kind: "completed", newMessages, usage };
|
|
232
|
+
}
|
|
233
|
+
const consecutiveContinuations = runState.consecutiveContinuations + 1;
|
|
234
|
+
if (consecutiveContinuations > maxConsecutiveTurnContinuations) {
|
|
235
|
+
return {
|
|
236
|
+
kind: "completed",
|
|
237
|
+
newMessages,
|
|
238
|
+
usage,
|
|
239
|
+
turnError: buildTurnContinuationLimitError(maxConsecutiveTurnContinuations),
|
|
240
|
+
};
|
|
241
|
+
}
|
|
242
|
+
return {
|
|
243
|
+
kind: "turn_continued",
|
|
244
|
+
frameworkRunState: serializeJsonWithSpacedSeparators({
|
|
245
|
+
model_calls: modelCallCount + 1,
|
|
246
|
+
consecutive_continuations: consecutiveContinuations,
|
|
247
|
+
}),
|
|
248
|
+
// The message makes the next request end with user text, as every provider requires.
|
|
249
|
+
newMessages: [...newMessages, toBuiltinLoopFrameworkMessage({ type: "user_text", text: decision.message })],
|
|
250
|
+
usage,
|
|
251
|
+
};
|
|
157
252
|
}
|
|
158
253
|
if (isToolBudgetSpent) {
|
|
159
254
|
// The model asked for tools although none were offered; end the turn so it cannot loop.
|
|
@@ -165,7 +260,7 @@ export class StepwiseAgentRunner {
|
|
|
165
260
|
}));
|
|
166
261
|
return {
|
|
167
262
|
kind: "completed",
|
|
168
|
-
newMessages: [...newMessages, ...notRunResults.map(
|
|
263
|
+
newMessages: [...newMessages, ...notRunResults.map(toBuiltinLoopFrameworkMessage)],
|
|
169
264
|
usage,
|
|
170
265
|
};
|
|
171
266
|
}
|
|
@@ -189,14 +284,22 @@ export class StepwiseAgentRunner {
|
|
|
189
284
|
};
|
|
190
285
|
}
|
|
191
286
|
/**
|
|
192
|
-
* Runs one function tool call after
|
|
287
|
+
* Runs one function tool call after converting its arguments with the tool's `prepareArguments`, when it has
|
|
288
|
+
* one, and checking them against the tool's schema, or passes a call that a
|
|
193
289
|
* tool source built in `runModelStep` to that source, with the source's own `toolSourceReference` and without a
|
|
194
290
|
* listing. Any other name is an unknown tool and never reaches a source.
|
|
291
|
+
* A function tool's {@link ToolCallContext.mediaStore} is this runner's store.
|
|
292
|
+
*
|
|
293
|
+
* Changed in 0.5.0: a function tool receives the media store and may return a {@link FunctionToolResult} with
|
|
294
|
+
* images.
|
|
195
295
|
* @param call - The deferred call.
|
|
196
|
-
* @returns The output: a `string` result unchanged,
|
|
197
|
-
* {@link ToolInputRequested}; or a source's outcome, such as
|
|
296
|
+
* @returns The output: a `string` result unchanged, a {@link FunctionToolResult} as its output and images, any
|
|
297
|
+
* other result as JSON; the tool's {@link ToolInputRequested}; or a source's outcome, such as
|
|
298
|
+
* {@link ToolTaskStarted}.
|
|
198
299
|
* @throws {ToolExecutionError} For an unknown tool, arguments that are not a JSON object or break the
|
|
199
|
-
* schema, or a
|
|
300
|
+
* schema, a non-cancellation error or a thenable result of the tool's `prepareArguments`, a
|
|
301
|
+
* `ToolExecutionError` from the tool or its source, or a function tool that returned images while this runner has
|
|
302
|
+
* no media store.
|
|
200
303
|
* @throws {RangeError} When a source built the call but the definition no longer has it, so the effect decides
|
|
201
304
|
* the outcome.
|
|
202
305
|
* @throws Any other error of the tool source.
|
|
@@ -210,7 +313,7 @@ export class StepwiseAgentRunner {
|
|
|
210
313
|
}
|
|
211
314
|
return this.toolSources.executeDeferredToolCall(call);
|
|
212
315
|
}
|
|
213
|
-
const toolArguments =
|
|
316
|
+
const toolArguments = prepareToolArguments(tool, toolCall.arguments, call.cancellationSignal);
|
|
214
317
|
const violation = findJsonSchemaViolation(toolArguments, tool.parameters, "arguments");
|
|
215
318
|
if (violation !== undefined) {
|
|
216
319
|
throw new ToolExecutionError(`invalid arguments for ${tool.name}: ${violation}`);
|
|
@@ -221,12 +324,14 @@ export class StepwiseAgentRunner {
|
|
|
221
324
|
toolCallId: toolCall.toolCallId,
|
|
222
325
|
idempotencyKey: call.idempotencyKey,
|
|
223
326
|
attempt: call.attempt,
|
|
327
|
+
effect: toolCall.effect,
|
|
224
328
|
events: call.events,
|
|
225
329
|
cancellationSignal: call.cancellationSignal,
|
|
226
330
|
deadline: call.deadline,
|
|
227
331
|
inputAnswers: call.inputAnswers ?? [],
|
|
228
332
|
inputContinuation: toolCall.inputContinuation ?? null,
|
|
229
333
|
heartbeat: () => call.heartbeat(),
|
|
334
|
+
...(this.#mediaStore === undefined ? {} : { mediaStore: this.#mediaStore }),
|
|
230
335
|
};
|
|
231
336
|
const result = await tool.execute(toolArguments, context);
|
|
232
337
|
if (typeof result === "string") {
|
|
@@ -235,8 +340,20 @@ export class StepwiseAgentRunner {
|
|
|
235
340
|
if (result?.kind === "tool_input_requested") {
|
|
236
341
|
return result;
|
|
237
342
|
}
|
|
343
|
+
if (isFunctionToolResult(result)) {
|
|
344
|
+
return this.toToolExecutionResult(tool.name, result);
|
|
345
|
+
}
|
|
238
346
|
return { output: serializeJsonWithSpacedSeparators(result === undefined ? null : result) };
|
|
239
347
|
}
|
|
348
|
+
toToolExecutionResult(toolName, result) {
|
|
349
|
+
if (result.images === undefined || result.images.length === 0) {
|
|
350
|
+
return { output: result.output };
|
|
351
|
+
}
|
|
352
|
+
if (this.#mediaStore === undefined) {
|
|
353
|
+
throw new ToolExecutionError(`function tool ${toolName} returned images, but the runner has no media store`);
|
|
354
|
+
}
|
|
355
|
+
return { output: result.output, images: result.images };
|
|
356
|
+
}
|
|
240
357
|
/**
|
|
241
358
|
* Polls a tool source's task once, through the source that built the call.
|
|
242
359
|
* @param poll - The call's record from `PollToolTask`.
|
|
@@ -281,7 +398,7 @@ export class StepwiseAgentRunner {
|
|
|
281
398
|
* @returns One `tool_result` message per unstored result, in deferral order.
|
|
282
399
|
*/
|
|
283
400
|
buildUnfinishedTurnMessages(turn) {
|
|
284
|
-
return buildUnstoredToolResults(turn).map(
|
|
401
|
+
return buildUnstoredToolResults(turn).map(toBuiltinLoopFrameworkMessage);
|
|
285
402
|
}
|
|
286
403
|
/**
|
|
287
404
|
* Estimates the model input of the next `runModelStep` with the model client.
|
|
@@ -291,10 +408,10 @@ export class StepwiseAgentRunner {
|
|
|
291
408
|
* when it has one, else from the runner's last listing, as in the Python core.
|
|
292
409
|
*/
|
|
293
410
|
async estimateInputTokens(turn) {
|
|
294
|
-
const modelCallCount =
|
|
411
|
+
const modelCallCount = readBuiltinLoopRunState(turn.frameworkRunState).modelCalls;
|
|
295
412
|
const isToolBudgetSpent = modelCallCount >= this.maxModelCallsPerTurn;
|
|
296
413
|
const request = await this.buildModelRequest(turn, buildUnstoredToolResults(turn), modelCallCount, isToolBudgetSpent, this.toolSources.readCachedSourceTools());
|
|
297
|
-
return this.resolveModel(turn.sessionSettings).estimateInputTokens(request);
|
|
414
|
+
return this.resolveModel(turn.sessionSettings).estimateInputTokens(this.keepShownImagesOnly(request));
|
|
298
415
|
}
|
|
299
416
|
/**
|
|
300
417
|
* Chooses the last message to summarize, at a boundary between model responses.
|
|
@@ -352,7 +469,11 @@ export class StepwiseAgentRunner {
|
|
|
352
469
|
request.inputTokenBudget - (this.definition.modelSettings?.maxOutputTokens ?? 0);
|
|
353
470
|
if (budget !== undefined) {
|
|
354
471
|
// Estimate by parts, then leave out the oldest items up to the first cut that fits.
|
|
355
|
-
const itemTokens = rangeItems.map((item) => model.estimateInputTokens({
|
|
472
|
+
const itemTokens = rangeItems.map((item) => model.estimateInputTokens({
|
|
473
|
+
...this.buildSummaryRequest(request, [], 0),
|
|
474
|
+
instructions: "",
|
|
475
|
+
inputItems: stripImages([item]),
|
|
476
|
+
}));
|
|
356
477
|
let tokens = model.estimateInputTokens(this.buildSummaryRequest(request, [], rangeItems.length)) +
|
|
357
478
|
itemTokens.reduce((total, itemToken) => total + itemToken, 0);
|
|
358
479
|
// A cut never splits a model response or separates a tool call from its result.
|
|
@@ -379,7 +500,8 @@ export class StepwiseAgentRunner {
|
|
|
379
500
|
if (omittedCount > 0) {
|
|
380
501
|
items.push({ type: "user_text", text: buildContextSummaryOmissionNote(omittedCount) });
|
|
381
502
|
}
|
|
382
|
-
|
|
503
|
+
// The summary call reads no image bytes, so it sees each item's text only.
|
|
504
|
+
items.push(...stripImages(rangeItems), { type: "user_text", text: contextSummaryRequest });
|
|
383
505
|
return {
|
|
384
506
|
instructions: contextSummaryInstructions,
|
|
385
507
|
inputItems: pairToolCallsWithResults(items),
|
|
@@ -395,7 +517,7 @@ export class StepwiseAgentRunner {
|
|
|
395
517
|
cancellationSignal: request.cancellationSignal,
|
|
396
518
|
};
|
|
397
519
|
}
|
|
398
|
-
async buildModelRequest(turn,
|
|
520
|
+
async buildModelRequest(turn, unstoredItems, modelCallCount, isToolBudgetSpent, sourceTools) {
|
|
399
521
|
const contextSummary = turn.contextSummary ?? null;
|
|
400
522
|
const summaryItems = contextSummary === null ? [] : [{ type: "user_text", text: buildContextSummaryNote(contextSummary) }];
|
|
401
523
|
let toolChoice = isToolBudgetSpent ? "none" : "auto";
|
|
@@ -408,7 +530,7 @@ export class StepwiseAgentRunner {
|
|
|
408
530
|
inputItems: pairToolCallsWithResults([
|
|
409
531
|
...summaryItems,
|
|
410
532
|
...readStoredInputItemsWithPlanNote(turn),
|
|
411
|
-
...
|
|
533
|
+
...unstoredItems,
|
|
412
534
|
]),
|
|
413
535
|
tools: isToolBudgetSpent ? [] : this.listOfferedTools(turn, sourceTools),
|
|
414
536
|
toolChoice,
|
|
@@ -423,7 +545,7 @@ export class StepwiseAgentRunner {
|
|
|
423
545
|
}
|
|
424
546
|
return this.resolveModel(turn.sessionSettings).estimateInputTokens({
|
|
425
547
|
instructions: "",
|
|
426
|
-
inputItems: items,
|
|
548
|
+
inputItems: this.#mediaStore === undefined ? stripImages(items) : items,
|
|
427
549
|
tools: [],
|
|
428
550
|
toolChoice: "none",
|
|
429
551
|
settings: this.definition.modelSettings ?? {},
|
|
@@ -431,6 +553,21 @@ export class StepwiseAgentRunner {
|
|
|
431
553
|
cancellationSignal: turn.cancellationSignal,
|
|
432
554
|
});
|
|
433
555
|
}
|
|
556
|
+
/** Returns the request with the bytes of its images, read from the store right now. */
|
|
557
|
+
async addImageBytes(request) {
|
|
558
|
+
if (this.#mediaStore === undefined) {
|
|
559
|
+
return this.keepShownImagesOnly(request);
|
|
560
|
+
}
|
|
561
|
+
const references = request.inputItems.flatMap((item) => item.type === "model_output" ? [] : (item.images ?? []));
|
|
562
|
+
if (references.length === 0) {
|
|
563
|
+
return request;
|
|
564
|
+
}
|
|
565
|
+
return { ...request, imageBytes: await loadImages(this.#mediaStore, references) };
|
|
566
|
+
}
|
|
567
|
+
keepShownImagesOnly(request) {
|
|
568
|
+
// Without a store the model sees no image, such as a tool source's.
|
|
569
|
+
return this.#mediaStore === undefined ? { ...request, inputItems: stripImages(request.inputItems) } : request;
|
|
570
|
+
}
|
|
434
571
|
/** A built-in enabled only in the session options must not share a function tool's name. */
|
|
435
572
|
requireNoBuiltInToolNameClash(turn) {
|
|
436
573
|
for (const builtInTool of turn.enabledBuiltInTools ?? []) {
|
|
@@ -514,6 +651,43 @@ export class StepwiseAgentRunner {
|
|
|
514
651
|
}
|
|
515
652
|
return resolved;
|
|
516
653
|
}
|
|
654
|
+
/** Returns the hook's decision for one iteration, or `"default"` without a hook. */
|
|
655
|
+
async decideTurnContinuation(turn, modelOutput, toolResults) {
|
|
656
|
+
const decide = this.definition.decideTurnContinuation;
|
|
657
|
+
if (decide === undefined) {
|
|
658
|
+
return "default";
|
|
659
|
+
}
|
|
660
|
+
const decision = await decide({
|
|
661
|
+
flowId: turn.flowId,
|
|
662
|
+
turnId: turn.turnId,
|
|
663
|
+
sessionSettings: turn.sessionSettings ?? {},
|
|
664
|
+
modelOutput,
|
|
665
|
+
toolResults,
|
|
666
|
+
});
|
|
667
|
+
if (decision === "end" || decision === "default") {
|
|
668
|
+
return decision;
|
|
669
|
+
}
|
|
670
|
+
const continuation = decision;
|
|
671
|
+
if (typeof continuation === "object" &&
|
|
672
|
+
continuation !== null &&
|
|
673
|
+
continuation.action === "continue" &&
|
|
674
|
+
typeof continuation.message === "string" &&
|
|
675
|
+
continuation.message.trim() !== "") {
|
|
676
|
+
return { action: "continue", message: continuation.message };
|
|
677
|
+
}
|
|
678
|
+
throw new TypeError(`decideTurnContinuation of agent ${this.definition.name} must return "end", "default", or ` +
|
|
679
|
+
`{ action: "continue", message } with a non-blank message, not ${describeTurnContinuation(decision)}`);
|
|
680
|
+
}
|
|
681
|
+
}
|
|
682
|
+
/** Names an invalid hook result without its message text, which may hold application data. */
|
|
683
|
+
function describeTurnContinuation(decision) {
|
|
684
|
+
if (typeof decision === "string") {
|
|
685
|
+
return JSON.stringify(decision);
|
|
686
|
+
}
|
|
687
|
+
if (typeof decision === "object" && decision !== null) {
|
|
688
|
+
return `an object with action ${JSON.stringify(decision.action) ?? "undefined"}`;
|
|
689
|
+
}
|
|
690
|
+
return String(decision);
|
|
517
691
|
}
|
|
518
692
|
/** A planning turn without a draft drafts one first; feedback on a draft may only answer. */
|
|
519
693
|
function mustWritePlanFirst(turn, modelCallCount) {
|
|
@@ -553,31 +727,100 @@ function buildUnstoredToolResults(turn) {
|
|
|
553
727
|
toolCallId: record.toolCallId,
|
|
554
728
|
toolName: record.toolName,
|
|
555
729
|
output: describeToolCallOutcome(record),
|
|
730
|
+
...((record.images ?? []).length === 0 ? {} : { images: record.images }),
|
|
556
731
|
}));
|
|
557
732
|
}
|
|
558
|
-
function
|
|
733
|
+
function stripImages(items) {
|
|
734
|
+
return items.map((item) => {
|
|
735
|
+
if (item.type === "model_output" || (item.images ?? []).length === 0) {
|
|
736
|
+
return item;
|
|
737
|
+
}
|
|
738
|
+
const { images: _images, ...withoutImages } = item;
|
|
739
|
+
return withoutImages;
|
|
740
|
+
});
|
|
741
|
+
}
|
|
742
|
+
function prepareToolArguments(tool, argumentsText, cancellationSignal) {
|
|
559
743
|
let parsed;
|
|
560
744
|
try {
|
|
561
745
|
parsed = JSON.parse(argumentsText === "" ? "{}" : argumentsText);
|
|
562
746
|
}
|
|
563
747
|
catch {
|
|
564
748
|
// A fixed text, because the two cores' JSON parsers word their errors differently.
|
|
565
|
-
throw new ToolExecutionError(`invalid arguments for ${
|
|
749
|
+
throw new ToolExecutionError(`invalid arguments for ${tool.name}: arguments are not valid JSON`);
|
|
750
|
+
}
|
|
751
|
+
if (tool.prepareArguments !== undefined) {
|
|
752
|
+
try {
|
|
753
|
+
parsed = tool.prepareArguments(parsed);
|
|
754
|
+
}
|
|
755
|
+
catch (error) {
|
|
756
|
+
if (isCancellation(error, cancellationSignal)) {
|
|
757
|
+
throw error;
|
|
758
|
+
}
|
|
759
|
+
// Any other error, so a failed conversion never retries or records outcome_unknown.
|
|
760
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
761
|
+
throw new ToolExecutionError(`invalid arguments for ${tool.name}: ${message}`);
|
|
762
|
+
}
|
|
763
|
+
if (isThenable(parsed)) {
|
|
764
|
+
if (parsed instanceof Promise) {
|
|
765
|
+
observePromiseRejection(parsed);
|
|
766
|
+
}
|
|
767
|
+
throw new ToolExecutionError(`invalid arguments for ${tool.name}: argument conversion must be synchronous`);
|
|
768
|
+
}
|
|
566
769
|
}
|
|
567
770
|
if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) {
|
|
568
|
-
throw new ToolExecutionError(`invalid arguments for ${
|
|
771
|
+
throw new ToolExecutionError(`invalid arguments for ${tool.name}: expected a JSON object`);
|
|
569
772
|
}
|
|
570
773
|
return parsed;
|
|
571
774
|
}
|
|
572
|
-
|
|
775
|
+
/** Reads `then` without calling it; a throwing `then` getter counts as a thenable, so it is refused too. */
|
|
776
|
+
function isThenable(value) {
|
|
777
|
+
if ((typeof value !== "object" || value === null) && typeof value !== "function") {
|
|
778
|
+
return false;
|
|
779
|
+
}
|
|
780
|
+
try {
|
|
781
|
+
return typeof value.then === "function";
|
|
782
|
+
}
|
|
783
|
+
catch {
|
|
784
|
+
return true;
|
|
785
|
+
}
|
|
786
|
+
}
|
|
787
|
+
/** Observes a refused Promise's rejection through the native `then`, so a subclass's own `then` never runs. */
|
|
788
|
+
function observePromiseRejection(promise) {
|
|
789
|
+
try {
|
|
790
|
+
void Promise.prototype.then.call(promise, undefined, () => undefined);
|
|
791
|
+
}
|
|
792
|
+
catch {
|
|
793
|
+
// A subclass constructor may throw; the result is refused either way.
|
|
794
|
+
}
|
|
795
|
+
}
|
|
796
|
+
function isCancellation(error, cancellationSignal) {
|
|
797
|
+
if (cancellationSignal.aborted && error === cancellationSignal.reason) {
|
|
798
|
+
return true;
|
|
799
|
+
}
|
|
800
|
+
return error?.name === "AbortError";
|
|
801
|
+
}
|
|
802
|
+
function readBuiltinLoopRunState(frameworkRunState) {
|
|
573
803
|
if (frameworkRunState === null) {
|
|
574
|
-
return 0;
|
|
804
|
+
return { modelCalls: 0, consecutiveContinuations: 0 };
|
|
575
805
|
}
|
|
576
806
|
const parsed = JSON.parse(frameworkRunState);
|
|
577
|
-
|
|
578
|
-
|
|
807
|
+
const consecutiveContinuations = parsed.consecutive_continuations ?? 0;
|
|
808
|
+
if (typeof parsed.model_calls !== "number" ||
|
|
809
|
+
!Number.isSafeInteger(parsed.model_calls) ||
|
|
810
|
+
typeof consecutiveContinuations !== "number" ||
|
|
811
|
+
!Number.isSafeInteger(consecutiveContinuations)) {
|
|
812
|
+
throw new TypeError("FrameworkRunState is not a built-in loop run state");
|
|
813
|
+
}
|
|
814
|
+
return { modelCalls: parsed.model_calls, consecutiveContinuations };
|
|
815
|
+
}
|
|
816
|
+
/** The output items of the turn's latest model response: the turn's trailing stored `model_output` items. */
|
|
817
|
+
function readLatestModelOutput(turn) {
|
|
818
|
+
const items = turn.messages.filter((message) => message.turnId === turn.turnId).map(readStoredModelInputItem);
|
|
819
|
+
let start = items.length;
|
|
820
|
+
while (start > 0 && items[start - 1]?.type === "model_output") {
|
|
821
|
+
start -= 1;
|
|
579
822
|
}
|
|
580
|
-
return
|
|
823
|
+
return items.slice(start);
|
|
581
824
|
}
|
|
582
825
|
function requireModelResponse(response) {
|
|
583
826
|
if (!Array.isArray(response?.outputItems) ||
|
|
@@ -638,4 +881,4 @@ export function writeToolSourceEnvelope(sourceName, reference) {
|
|
|
638
881
|
export function readToolSourceEnvelope(toolSourceReference) {
|
|
639
882
|
return readRouterToolSourceEnvelope(toolSourceNameKey, toolSourceReference);
|
|
640
883
|
}
|
|
641
|
-
//# sourceMappingURL=
|
|
884
|
+
//# sourceMappingURL=builtin-loop-agent-runner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builtin-loop-agent-runner.js","sourceRoot":"","sources":["../../../src/builtin-loop/builtin-loop-agent-runner.ts"],"names":[],"mappings":"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"}
|
package/dist/src/{stepwise/stepwise-input-items.d.ts → builtin-loop/builtin-loop-input-items.d.ts}
RENAMED
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import { type AgentMessage, type FrameworkMessage } from "../agent-session-values.js";
|
|
2
2
|
import type { ModelInputItem } from "./model-client.js";
|
|
3
|
-
/**
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
/**
|
|
4
|
+
* Returns the session message that stores one item; `frameworkItem` is the item's compact snake_case JSON. A user
|
|
5
|
+
* text or tool result item with images adds an `images` list of references; a tool result message also shows them
|
|
6
|
+
* in `images`.
|
|
7
|
+
*/
|
|
8
|
+
export declare function toBuiltinLoopFrameworkMessage(item: ModelInputItem): FrameworkMessage;
|
|
9
|
+
/** Reads the built-in loop item stored in one session message. */
|
|
6
10
|
export declare function readStoredModelInputItem(message: AgentMessage): ModelInputItem;
|
|
7
11
|
/**
|
|
8
12
|
* Returns the items with exactly one result after every tool call. A call without a result, such as one
|