@openai/agents-core 0.3.6 → 0.3.8
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/errors.d.ts +40 -0
- package/dist/errors.js +38 -1
- package/dist/errors.js.map +1 -1
- package/dist/errors.mjs +34 -0
- package/dist/errors.mjs.map +1 -1
- package/dist/index.d.ts +6 -2
- package/dist/index.js +13 -2
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +3 -1
- package/dist/index.mjs.map +1 -1
- package/dist/metadata.js +2 -2
- package/dist/metadata.mjs +2 -2
- package/dist/result.d.ts +17 -0
- package/dist/result.js +71 -24
- package/dist/result.js.map +1 -1
- package/dist/result.mjs +69 -22
- package/dist/result.mjs.map +1 -1
- package/dist/run.d.ts +14 -47
- package/dist/run.js +421 -994
- package/dist/run.js.map +1 -1
- package/dist/run.mjs +405 -978
- package/dist/run.mjs.map +1 -1
- package/dist/runState.d.ts +1286 -172
- package/dist/runState.js +146 -16
- package/dist/runState.js.map +1 -1
- package/dist/runState.mjs +142 -12
- package/dist/runState.mjs.map +1 -1
- package/dist/runner/constants.d.ts +1 -0
- package/dist/runner/constants.js +6 -0
- package/dist/runner/constants.js.map +1 -0
- package/dist/runner/constants.mjs +3 -0
- package/dist/runner/constants.mjs.map +1 -0
- package/dist/runner/conversation.d.ts +85 -0
- package/dist/runner/conversation.js +275 -0
- package/dist/runner/conversation.js.map +1 -0
- package/dist/runner/conversation.mjs +269 -0
- package/dist/runner/conversation.mjs.map +1 -0
- package/dist/runner/guardrails.d.ts +23 -0
- package/dist/runner/guardrails.js +174 -0
- package/dist/runner/guardrails.js.map +1 -0
- package/dist/runner/guardrails.mjs +166 -0
- package/dist/runner/guardrails.mjs.map +1 -0
- package/dist/runner/items.d.ts +18 -0
- package/dist/runner/items.js +89 -0
- package/dist/runner/items.js.map +1 -0
- package/dist/runner/items.mjs +79 -0
- package/dist/runner/items.mjs.map +1 -0
- package/dist/runner/mcpApprovals.d.ts +25 -0
- package/dist/runner/mcpApprovals.js +66 -0
- package/dist/runner/mcpApprovals.js.map +1 -0
- package/dist/runner/mcpApprovals.mjs +63 -0
- package/dist/runner/mcpApprovals.mjs.map +1 -0
- package/dist/runner/modelOutputs.d.ts +10 -0
- package/dist/runner/modelOutputs.js +206 -0
- package/dist/runner/modelOutputs.js.map +1 -0
- package/dist/runner/modelOutputs.mjs +203 -0
- package/dist/runner/modelOutputs.mjs.map +1 -0
- package/dist/runner/modelPreparation.d.ts +8 -0
- package/dist/runner/modelPreparation.js +41 -0
- package/dist/runner/modelPreparation.js.map +1 -0
- package/dist/runner/modelPreparation.mjs +38 -0
- package/dist/runner/modelPreparation.mjs.map +1 -0
- package/dist/runner/modelSettings.d.ts +20 -0
- package/dist/runner/modelSettings.js +97 -0
- package/dist/runner/modelSettings.js.map +1 -0
- package/dist/runner/modelSettings.mjs +92 -0
- package/dist/runner/modelSettings.mjs.map +1 -0
- package/dist/runner/runLoop.d.ts +32 -0
- package/dist/runner/runLoop.js +62 -0
- package/dist/runner/runLoop.js.map +1 -0
- package/dist/runner/runLoop.mjs +57 -0
- package/dist/runner/runLoop.mjs.map +1 -0
- package/dist/runner/sessionPersistence.d.ts +26 -0
- package/dist/runner/sessionPersistence.js +441 -0
- package/dist/runner/sessionPersistence.js.map +1 -0
- package/dist/runner/sessionPersistence.mjs +431 -0
- package/dist/runner/sessionPersistence.mjs.map +1 -0
- package/dist/runner/steps.d.ts +48 -0
- package/dist/runner/steps.js +40 -0
- package/dist/runner/steps.js.map +1 -0
- package/dist/runner/steps.mjs +36 -0
- package/dist/runner/steps.mjs.map +1 -0
- package/dist/runner/streaming.d.ts +9 -0
- package/dist/runner/streaming.js +74 -0
- package/dist/runner/streaming.js.map +1 -0
- package/dist/runner/streaming.mjs +65 -0
- package/dist/runner/streaming.mjs.map +1 -0
- package/dist/runner/toolExecution.d.ts +15 -0
- package/dist/runner/toolExecution.js +997 -0
- package/dist/runner/toolExecution.js.map +1 -0
- package/dist/runner/toolExecution.mjs +984 -0
- package/dist/runner/toolExecution.mjs.map +1 -0
- package/dist/runner/toolUseTracker.d.ts +9 -0
- package/dist/runner/toolUseTracker.js +34 -0
- package/dist/runner/toolUseTracker.js.map +1 -0
- package/dist/runner/toolUseTracker.mjs +30 -0
- package/dist/runner/toolUseTracker.mjs.map +1 -0
- package/dist/runner/tracing.d.ts +23 -0
- package/dist/runner/tracing.js +45 -0
- package/dist/runner/tracing.js.map +1 -0
- package/dist/runner/tracing.mjs +41 -0
- package/dist/runner/tracing.mjs.map +1 -0
- package/dist/runner/turnPreparation.d.ts +30 -0
- package/dist/runner/turnPreparation.js +80 -0
- package/dist/runner/turnPreparation.js.map +1 -0
- package/dist/runner/turnPreparation.mjs +74 -0
- package/dist/runner/turnPreparation.mjs.map +1 -0
- package/dist/runner/turnResolution.d.ts +3 -0
- package/dist/runner/turnResolution.js +531 -0
- package/dist/runner/turnResolution.js.map +1 -0
- package/dist/runner/turnResolution.mjs +526 -0
- package/dist/runner/turnResolution.mjs.map +1 -0
- package/dist/runner/types.d.ts +66 -0
- package/dist/runner/types.js +3 -0
- package/dist/runner/types.js.map +1 -0
- package/dist/runner/types.mjs +2 -0
- package/dist/runner/types.mjs.map +1 -0
- package/dist/shims/mcp-server/node.js +76 -30
- package/dist/shims/mcp-server/node.js.map +1 -1
- package/dist/shims/mcp-server/node.mjs +76 -30
- package/dist/shims/mcp-server/node.mjs.map +1 -1
- package/dist/tool.d.ts +28 -2
- package/dist/tool.js +7 -1
- package/dist/tool.js.map +1 -1
- package/dist/tool.mjs +8 -2
- package/dist/tool.mjs.map +1 -1
- package/dist/toolGuardrail.d.ts +101 -0
- package/dist/toolGuardrail.js +58 -0
- package/dist/toolGuardrail.js.map +1 -0
- package/dist/toolGuardrail.mjs +51 -0
- package/dist/toolGuardrail.mjs.map +1 -0
- package/dist/tracing/config.d.ts +3 -0
- package/dist/tracing/config.js +3 -0
- package/dist/tracing/config.js.map +1 -0
- package/dist/tracing/config.mjs +2 -0
- package/dist/tracing/config.mjs.map +1 -0
- package/dist/tracing/context.d.ts +2 -0
- package/dist/tracing/context.js +95 -24
- package/dist/tracing/context.js.map +1 -1
- package/dist/tracing/context.mjs +95 -24
- package/dist/tracing/context.mjs.map +1 -1
- package/dist/tracing/createSpans.d.ts +11 -11
- package/dist/tracing/index.d.ts +2 -0
- package/dist/tracing/index.js.map +1 -1
- package/dist/tracing/index.mjs.map +1 -1
- package/dist/tracing/provider.js +54 -4
- package/dist/tracing/provider.js.map +1 -1
- package/dist/tracing/provider.mjs +54 -4
- package/dist/tracing/provider.mjs.map +1 -1
- package/dist/tracing/spans.d.ts +2 -0
- package/dist/tracing/spans.js +6 -0
- package/dist/tracing/spans.js.map +1 -1
- package/dist/tracing/spans.mjs +6 -0
- package/dist/tracing/spans.mjs.map +1 -1
- package/dist/tracing/traces.d.ts +11 -1
- package/dist/tracing/traces.js +15 -2
- package/dist/tracing/traces.js.map +1 -1
- package/dist/tracing/traces.mjs +15 -2
- package/dist/tracing/traces.mjs.map +1 -1
- package/dist/types/protocol.d.ts +11 -0
- package/dist/types/protocol.js +1 -0
- package/dist/types/protocol.js.map +1 -1
- package/dist/types/protocol.mjs +1 -0
- package/dist/types/protocol.mjs.map +1 -1
- package/dist/utils/binary.d.ts +6 -0
- package/dist/utils/binary.js +53 -0
- package/dist/utils/binary.js.map +1 -0
- package/dist/utils/binary.mjs +49 -0
- package/dist/utils/binary.mjs.map +1 -0
- package/dist/utils/toolGuardrails.d.ts +24 -0
- package/dist/utils/toolGuardrails.js +58 -0
- package/dist/utils/toolGuardrails.js.map +1 -0
- package/dist/utils/toolGuardrails.mjs +54 -0
- package/dist/utils/toolGuardrails.mjs.map +1 -0
- package/package.json +4 -3
- package/dist/runImplementation.d.ts +0 -161
- package/dist/runImplementation.js +0 -2054
- package/dist/runImplementation.js.map +0 -1
- package/dist/runImplementation.mjs +0 -2028
- package/dist/runImplementation.mjs.map +0 -1
|
@@ -0,0 +1,526 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { ModelBehaviorError } from "../errors.mjs";
|
|
3
|
+
import { RunMessageOutputItem, RunToolApprovalItem } from "../items.mjs";
|
|
4
|
+
import { getLastTextFromOutputMessage } from "../utils/messages.mjs";
|
|
5
|
+
import { getSchemaAndParserFromInputType } from "../utils/tools.mjs";
|
|
6
|
+
import { safeExecute } from "../utils/safeExecute.mjs";
|
|
7
|
+
import { addErrorToCurrentSpan } from "../tracing/context.mjs";
|
|
8
|
+
import { SingleStepResult, nextStepSchema } from "./steps.mjs";
|
|
9
|
+
import { checkForFinalOutputFromTools, executeApplyPatchOperations, executeComputerActions, executeFunctionToolCalls, executeHandoffCalls, executeShellActions, collectInterruptions, } from "./toolExecution.mjs";
|
|
10
|
+
import { handleHostedMcpApprovals } from "./mcpApprovals.mjs";
|
|
11
|
+
const APPROVAL_ITEM_TYPES = [
|
|
12
|
+
'function_call',
|
|
13
|
+
'hosted_tool_call',
|
|
14
|
+
'shell_call',
|
|
15
|
+
'apply_patch_call',
|
|
16
|
+
];
|
|
17
|
+
function isHostedMcpApprovalItem(item) {
|
|
18
|
+
return (item.rawItem.type === 'hosted_tool_call' &&
|
|
19
|
+
item.rawItem.providerData?.type === 'mcp_approval_request');
|
|
20
|
+
}
|
|
21
|
+
function resolveApprovalState(item, state) {
|
|
22
|
+
if (isHostedMcpApprovalItem(item)) {
|
|
23
|
+
return 'pending';
|
|
24
|
+
}
|
|
25
|
+
const rawItem = item.rawItem;
|
|
26
|
+
const toolName = item.toolName ??
|
|
27
|
+
('name' in rawItem && typeof rawItem.name === 'string'
|
|
28
|
+
? rawItem.name
|
|
29
|
+
: undefined);
|
|
30
|
+
const callId = 'callId' in rawItem && typeof rawItem.callId === 'string'
|
|
31
|
+
? rawItem.callId
|
|
32
|
+
: 'id' in rawItem && typeof rawItem.id === 'string'
|
|
33
|
+
? rawItem.id
|
|
34
|
+
: undefined;
|
|
35
|
+
if (!toolName || !callId) {
|
|
36
|
+
return 'pending';
|
|
37
|
+
}
|
|
38
|
+
const approval = state._context.isToolApproved({ toolName, callId });
|
|
39
|
+
if (approval === true) {
|
|
40
|
+
return 'approved';
|
|
41
|
+
}
|
|
42
|
+
if (approval === false) {
|
|
43
|
+
return 'rejected';
|
|
44
|
+
}
|
|
45
|
+
return 'pending';
|
|
46
|
+
}
|
|
47
|
+
function isApprovalItemLike(value) {
|
|
48
|
+
if (!value || typeof value !== 'object') {
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
if (!('rawItem' in value)) {
|
|
52
|
+
return false;
|
|
53
|
+
}
|
|
54
|
+
const rawItem = value.rawItem;
|
|
55
|
+
if (!rawItem || typeof rawItem !== 'object') {
|
|
56
|
+
return false;
|
|
57
|
+
}
|
|
58
|
+
const itemType = rawItem.type;
|
|
59
|
+
return APPROVAL_ITEM_TYPES.includes(itemType);
|
|
60
|
+
}
|
|
61
|
+
function getApprovalIdentity(approval) {
|
|
62
|
+
const rawItem = approval.rawItem;
|
|
63
|
+
if (!rawItem) {
|
|
64
|
+
return undefined;
|
|
65
|
+
}
|
|
66
|
+
if (rawItem.type === 'function_call' && rawItem.callId) {
|
|
67
|
+
return `function_call:${rawItem.callId}`;
|
|
68
|
+
}
|
|
69
|
+
if ('callId' in rawItem && rawItem.callId) {
|
|
70
|
+
return `${rawItem.type}:${rawItem.callId}`;
|
|
71
|
+
}
|
|
72
|
+
const id = 'id' in rawItem ? rawItem.id : undefined;
|
|
73
|
+
if (id) {
|
|
74
|
+
return `${rawItem.type}:${id}`;
|
|
75
|
+
}
|
|
76
|
+
const providerData = typeof rawItem.providerData === 'object' && rawItem.providerData
|
|
77
|
+
? rawItem.providerData
|
|
78
|
+
: undefined;
|
|
79
|
+
if (providerData?.id) {
|
|
80
|
+
return `${rawItem.type}:provider:${providerData.id}`;
|
|
81
|
+
}
|
|
82
|
+
const agentName = 'agent' in approval && approval.agent ? approval.agent.name : '';
|
|
83
|
+
try {
|
|
84
|
+
return `${agentName}:${rawItem.type}:${JSON.stringify(rawItem)}`;
|
|
85
|
+
}
|
|
86
|
+
catch {
|
|
87
|
+
return `${agentName}:${rawItem.type}`;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
function buildAppendContext(existingItems) {
|
|
91
|
+
const seenItems = new Set(existingItems);
|
|
92
|
+
const seenApprovalIdentities = new Set();
|
|
93
|
+
for (const item of existingItems) {
|
|
94
|
+
if (item instanceof RunToolApprovalItem) {
|
|
95
|
+
const identity = getApprovalIdentity(item);
|
|
96
|
+
if (identity) {
|
|
97
|
+
seenApprovalIdentities.add(identity);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
return { seenItems, seenApprovalIdentities };
|
|
102
|
+
}
|
|
103
|
+
function appendRunItemIfNew(item, target, context) {
|
|
104
|
+
if (context.seenItems.has(item)) {
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
if (item instanceof RunToolApprovalItem) {
|
|
108
|
+
const identity = getApprovalIdentity(item);
|
|
109
|
+
if (identity) {
|
|
110
|
+
if (context.seenApprovalIdentities.has(identity)) {
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
context.seenApprovalIdentities.add(identity);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
context.seenItems.add(item);
|
|
117
|
+
target.push(item);
|
|
118
|
+
}
|
|
119
|
+
function buildApprovedCallIdSet(items, type) {
|
|
120
|
+
const callIds = new Set();
|
|
121
|
+
for (const item of items) {
|
|
122
|
+
if (!(item instanceof RunToolApprovalItem)) {
|
|
123
|
+
continue;
|
|
124
|
+
}
|
|
125
|
+
const rawItem = item.rawItem;
|
|
126
|
+
if (!rawItem || rawItem.type !== type) {
|
|
127
|
+
continue;
|
|
128
|
+
}
|
|
129
|
+
if ('callId' in rawItem && rawItem.callId) {
|
|
130
|
+
callIds.add(rawItem.callId);
|
|
131
|
+
}
|
|
132
|
+
else if ('id' in rawItem && rawItem.id) {
|
|
133
|
+
callIds.add(rawItem.id);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
return callIds;
|
|
137
|
+
}
|
|
138
|
+
function collectCompletedCallIds(items, type) {
|
|
139
|
+
const completed = new Set();
|
|
140
|
+
for (const item of items) {
|
|
141
|
+
const rawItem = item.rawItem;
|
|
142
|
+
if (!rawItem || typeof rawItem !== 'object') {
|
|
143
|
+
continue;
|
|
144
|
+
}
|
|
145
|
+
if (rawItem.type !== type) {
|
|
146
|
+
continue;
|
|
147
|
+
}
|
|
148
|
+
const callId = rawItem.callId;
|
|
149
|
+
if (typeof callId === 'string') {
|
|
150
|
+
completed.add(callId);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
return completed;
|
|
154
|
+
}
|
|
155
|
+
function filterActionsByApproval(preStepItems, actions, type) {
|
|
156
|
+
const allowedCallIds = buildApprovedCallIdSet(preStepItems, type);
|
|
157
|
+
if (allowedCallIds.size === 0) {
|
|
158
|
+
return [];
|
|
159
|
+
}
|
|
160
|
+
return actions.filter((action) => typeof action.toolCall.callId === 'string' &&
|
|
161
|
+
allowedCallIds.has(action.toolCall.callId));
|
|
162
|
+
}
|
|
163
|
+
function filterPendingActions(actions, options) {
|
|
164
|
+
return actions.filter((action) => {
|
|
165
|
+
const callId = action.toolCall.callId;
|
|
166
|
+
const hasCallId = typeof callId === 'string';
|
|
167
|
+
if (options.allowedCallIds && options.allowedCallIds.size > 0) {
|
|
168
|
+
if (!hasCallId || !options.allowedCallIds.has(callId)) {
|
|
169
|
+
return false;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
if (hasCallId && options.completedCallIds.has(callId)) {
|
|
173
|
+
return false;
|
|
174
|
+
}
|
|
175
|
+
return true;
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
function truncateForDeveloper(message, maxLength = 160) {
|
|
179
|
+
const trimmed = message.trim();
|
|
180
|
+
if (!trimmed) {
|
|
181
|
+
return 'Schema validation failed.';
|
|
182
|
+
}
|
|
183
|
+
if (trimmed.length <= maxLength) {
|
|
184
|
+
return trimmed;
|
|
185
|
+
}
|
|
186
|
+
return `${trimmed.slice(0, maxLength - 3)}...`;
|
|
187
|
+
}
|
|
188
|
+
function formatFinalOutputTypeError(error) {
|
|
189
|
+
// Surface structured output validation hints without echoing potentially large or sensitive payloads.
|
|
190
|
+
try {
|
|
191
|
+
if (error instanceof z.ZodError) {
|
|
192
|
+
const issue = error.issues[0];
|
|
193
|
+
if (issue) {
|
|
194
|
+
const issuePathParts = Array.isArray(issue.path) ? issue.path : [];
|
|
195
|
+
const issuePath = issuePathParts.length > 0
|
|
196
|
+
? issuePathParts.map((part) => String(part)).join('.')
|
|
197
|
+
: '(root)';
|
|
198
|
+
const message = truncateForDeveloper(issue.message ?? '');
|
|
199
|
+
return `Invalid output type: final assistant output failed schema validation at "${issuePath}" (${message}).`;
|
|
200
|
+
}
|
|
201
|
+
return 'Invalid output type: final assistant output failed schema validation.';
|
|
202
|
+
}
|
|
203
|
+
if (error instanceof Error && error.message) {
|
|
204
|
+
return `Invalid output type: ${truncateForDeveloper(error.message)}`;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
catch {
|
|
208
|
+
// Swallow formatting errors so we can return a generic message below.
|
|
209
|
+
}
|
|
210
|
+
return 'Invalid output type: final assistant output did not match the expected schema.';
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* @internal
|
|
214
|
+
* Continues a turn that was previously interrupted waiting for tool approval. Executes the now
|
|
215
|
+
* approved tools and returns the resulting step transition.
|
|
216
|
+
*/
|
|
217
|
+
export async function resolveInterruptedTurn(agent, originalInput, originalPreStepItems, newResponse, processedResponse, runner, state) {
|
|
218
|
+
// call_ids for function tools
|
|
219
|
+
const functionCallIds = originalPreStepItems
|
|
220
|
+
.filter((item) => item instanceof RunToolApprovalItem &&
|
|
221
|
+
'callId' in item.rawItem &&
|
|
222
|
+
item.rawItem.type === 'function_call')
|
|
223
|
+
.map((item) => item.rawItem.callId);
|
|
224
|
+
const completedFunctionCallIds = collectCompletedCallIds(originalPreStepItems, 'function_call_result');
|
|
225
|
+
const completedShellCallIds = collectCompletedCallIds(originalPreStepItems, 'shell_call_output');
|
|
226
|
+
const completedApplyPatchCallIds = collectCompletedCallIds(originalPreStepItems, 'apply_patch_call_output');
|
|
227
|
+
// We already persisted the turn once when the approval interrupt was raised, so the
|
|
228
|
+
// counter reflects the approval items as "flushed". When we resume the same turn we need
|
|
229
|
+
// to rewind it so the eventual tool output for this call is still written to the session.
|
|
230
|
+
const pendingApprovalItems = state
|
|
231
|
+
.getInterruptions()
|
|
232
|
+
.filter(isApprovalItemLike);
|
|
233
|
+
const pendingApprovalIdentities = new Set();
|
|
234
|
+
for (const approval of pendingApprovalItems) {
|
|
235
|
+
if (!(approval instanceof RunToolApprovalItem)) {
|
|
236
|
+
continue;
|
|
237
|
+
}
|
|
238
|
+
if (isHostedMcpApprovalItem(approval)) {
|
|
239
|
+
continue;
|
|
240
|
+
}
|
|
241
|
+
const rawItem = approval.rawItem;
|
|
242
|
+
if (rawItem.type === 'function_call' &&
|
|
243
|
+
rawItem.callId &&
|
|
244
|
+
completedFunctionCallIds.has(rawItem.callId)) {
|
|
245
|
+
continue;
|
|
246
|
+
}
|
|
247
|
+
if (rawItem.type === 'shell_call' &&
|
|
248
|
+
rawItem.callId &&
|
|
249
|
+
completedShellCallIds.has(rawItem.callId)) {
|
|
250
|
+
continue;
|
|
251
|
+
}
|
|
252
|
+
if (rawItem.type === 'apply_patch_call' &&
|
|
253
|
+
rawItem.callId &&
|
|
254
|
+
completedApplyPatchCallIds.has(rawItem.callId)) {
|
|
255
|
+
continue;
|
|
256
|
+
}
|
|
257
|
+
const identity = getApprovalIdentity(approval);
|
|
258
|
+
if (identity) {
|
|
259
|
+
if (resolveApprovalState(approval, state) === 'pending') {
|
|
260
|
+
pendingApprovalIdentities.add(identity);
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
// Run function tools that require approval after they get their approval results
|
|
265
|
+
const functionToolRuns = processedResponse.functions.filter((run) => {
|
|
266
|
+
const callId = run.toolCall.callId;
|
|
267
|
+
if (!functionCallIds.includes(callId)) {
|
|
268
|
+
return false;
|
|
269
|
+
}
|
|
270
|
+
return !completedFunctionCallIds.has(callId);
|
|
271
|
+
});
|
|
272
|
+
const shellRuns = filterPendingActions(filterActionsByApproval(originalPreStepItems, processedResponse.shellActions, 'shell_call'), {
|
|
273
|
+
completedCallIds: completedShellCallIds,
|
|
274
|
+
});
|
|
275
|
+
const pendingComputerActions = filterPendingActions(processedResponse.computerActions, {
|
|
276
|
+
completedCallIds: collectCompletedCallIds(originalPreStepItems, 'computer_call_result'),
|
|
277
|
+
});
|
|
278
|
+
const applyPatchRuns = filterPendingActions(filterActionsByApproval(originalPreStepItems, processedResponse.applyPatchActions, 'apply_patch_call'), {
|
|
279
|
+
completedCallIds: completedApplyPatchCallIds,
|
|
280
|
+
});
|
|
281
|
+
const functionResults = await executeFunctionToolCalls(agent, functionToolRuns, runner, state);
|
|
282
|
+
// There is no built-in HITL approval surface for computer tools today, so every pending action
|
|
283
|
+
// is executed immediately when the turn resumes.
|
|
284
|
+
const computerResults = pendingComputerActions.length > 0
|
|
285
|
+
? await executeComputerActions(agent, pendingComputerActions, runner, state._context)
|
|
286
|
+
: [];
|
|
287
|
+
const shellResults = shellRuns.length > 0
|
|
288
|
+
? await executeShellActions(agent, shellRuns, runner, state._context)
|
|
289
|
+
: [];
|
|
290
|
+
const applyPatchResults = applyPatchRuns.length > 0
|
|
291
|
+
? await executeApplyPatchOperations(agent, applyPatchRuns, runner, state._context)
|
|
292
|
+
: [];
|
|
293
|
+
const newItems = [];
|
|
294
|
+
const appendContext = buildAppendContext(originalPreStepItems);
|
|
295
|
+
const appendIfNew = (item) => appendRunItemIfNew(item, newItems, appendContext);
|
|
296
|
+
for (const result of functionResults) {
|
|
297
|
+
appendIfNew(result.runItem);
|
|
298
|
+
}
|
|
299
|
+
for (const result of computerResults) {
|
|
300
|
+
appendIfNew(result);
|
|
301
|
+
}
|
|
302
|
+
for (const result of shellResults) {
|
|
303
|
+
appendIfNew(result);
|
|
304
|
+
}
|
|
305
|
+
for (const result of applyPatchResults) {
|
|
306
|
+
appendIfNew(result);
|
|
307
|
+
}
|
|
308
|
+
const additionalInterruptions = collectInterruptions([], [...shellResults, ...applyPatchResults]);
|
|
309
|
+
const hostedMcpApprovals = await handleHostedMcpApprovals({
|
|
310
|
+
requests: processedResponse.mcpApprovalRequests,
|
|
311
|
+
agent,
|
|
312
|
+
state,
|
|
313
|
+
functionResults,
|
|
314
|
+
appendIfNew,
|
|
315
|
+
resolveApproval: (rawItem) => {
|
|
316
|
+
const providerData = rawItem.providerData;
|
|
317
|
+
const approvalRequestId = rawItem.id ?? providerData?.id;
|
|
318
|
+
if (!approvalRequestId) {
|
|
319
|
+
return undefined;
|
|
320
|
+
}
|
|
321
|
+
return state._context.isToolApproved({
|
|
322
|
+
toolName: rawItem.name,
|
|
323
|
+
callId: approvalRequestId,
|
|
324
|
+
});
|
|
325
|
+
},
|
|
326
|
+
});
|
|
327
|
+
// Server-managed conversations rely on preStepItems to re-surface pending approvals.
|
|
328
|
+
// Keep unresolved hosted MCP approvals in place so HITL flows still have something to approve next turn.
|
|
329
|
+
// Drop resolved approval placeholders so they are not replayed on the next turn, but keep
|
|
330
|
+
// pending approvals in place to signal the outstanding work to the UI and session store.
|
|
331
|
+
const preStepItems = originalPreStepItems.filter((item) => {
|
|
332
|
+
if (!(item instanceof RunToolApprovalItem)) {
|
|
333
|
+
return true;
|
|
334
|
+
}
|
|
335
|
+
if (isHostedMcpApprovalItem(item)) {
|
|
336
|
+
if (hostedMcpApprovals.pendingApprovals.has(item)) {
|
|
337
|
+
return true;
|
|
338
|
+
}
|
|
339
|
+
const approvalRequestId = item.rawItem.id ??
|
|
340
|
+
item.rawItem.providerData?.id;
|
|
341
|
+
if (approvalRequestId) {
|
|
342
|
+
return hostedMcpApprovals.pendingApprovalIds.has(approvalRequestId);
|
|
343
|
+
}
|
|
344
|
+
return false;
|
|
345
|
+
}
|
|
346
|
+
// Preserve all other approval items so resumptions can continue to reference the
|
|
347
|
+
// original approval requests (e.g., function/shell/apply_patch) ONLY while they are still pending.
|
|
348
|
+
const identity = getApprovalIdentity(item);
|
|
349
|
+
if (!identity) {
|
|
350
|
+
return true;
|
|
351
|
+
}
|
|
352
|
+
return pendingApprovalIdentities.has(identity);
|
|
353
|
+
});
|
|
354
|
+
const keptApprovalItems = new Set();
|
|
355
|
+
for (const item of preStepItems) {
|
|
356
|
+
if (item instanceof RunToolApprovalItem) {
|
|
357
|
+
keptApprovalItems.add(item);
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
let removedApprovalCount = 0;
|
|
361
|
+
for (const item of originalPreStepItems) {
|
|
362
|
+
if (item instanceof RunToolApprovalItem && !keptApprovalItems.has(item)) {
|
|
363
|
+
removedApprovalCount++;
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
if (removedApprovalCount > 0) {
|
|
367
|
+
// Persisting the approval request already advanced the counter once, so undo the increment
|
|
368
|
+
// to make sure we write the final tool output back to the session when the turn resumes.
|
|
369
|
+
state.rewindTurnPersistence(removedApprovalCount);
|
|
370
|
+
}
|
|
371
|
+
const completedStep = await maybeCompleteTurnFromToolResults({
|
|
372
|
+
agent,
|
|
373
|
+
runner,
|
|
374
|
+
state,
|
|
375
|
+
functionResults,
|
|
376
|
+
originalInput,
|
|
377
|
+
newResponse,
|
|
378
|
+
preStepItems,
|
|
379
|
+
newItems,
|
|
380
|
+
additionalInterruptions,
|
|
381
|
+
});
|
|
382
|
+
if (completedStep) {
|
|
383
|
+
return completedStep;
|
|
384
|
+
}
|
|
385
|
+
// we only ran new tools and side effects. We need to run the rest of the agent
|
|
386
|
+
return new SingleStepResult(originalInput, newResponse, preStepItems, newItems, { type: 'next_step_run_again' });
|
|
387
|
+
}
|
|
388
|
+
/**
|
|
389
|
+
* @internal
|
|
390
|
+
* Executes every follow-up action the model requested (function tools, computer actions, MCP flows),
|
|
391
|
+
* appends their outputs to the run history, and determines the next step for the agent loop.
|
|
392
|
+
*/
|
|
393
|
+
export async function resolveTurnAfterModelResponse(agent, originalInput, originalPreStepItems, newResponse, processedResponse, runner, state) {
|
|
394
|
+
// Reuse the same array reference so we can compare object identity when deciding whether to
|
|
395
|
+
// append new items, ensuring we never double-stream existing RunItems.
|
|
396
|
+
const preStepItems = originalPreStepItems;
|
|
397
|
+
const newItems = [];
|
|
398
|
+
const appendContext = buildAppendContext(originalPreStepItems);
|
|
399
|
+
const appendIfNew = (item) => appendRunItemIfNew(item, newItems, appendContext);
|
|
400
|
+
for (const item of processedResponse.newItems) {
|
|
401
|
+
appendIfNew(item);
|
|
402
|
+
}
|
|
403
|
+
// Run function tools and computer actions in parallel; neither depends on the other's side effects.
|
|
404
|
+
const [functionResults, computerResults, shellResults, applyPatchResults] = await Promise.all([
|
|
405
|
+
executeFunctionToolCalls(agent, processedResponse.functions, runner, state),
|
|
406
|
+
executeComputerActions(agent, processedResponse.computerActions, runner, state._context),
|
|
407
|
+
executeShellActions(agent, processedResponse.shellActions, runner, state._context),
|
|
408
|
+
executeApplyPatchOperations(agent, processedResponse.applyPatchActions, runner, state._context),
|
|
409
|
+
]);
|
|
410
|
+
for (const result of functionResults) {
|
|
411
|
+
appendIfNew(result.runItem);
|
|
412
|
+
}
|
|
413
|
+
for (const item of computerResults) {
|
|
414
|
+
appendIfNew(item);
|
|
415
|
+
}
|
|
416
|
+
for (const item of shellResults) {
|
|
417
|
+
appendIfNew(item);
|
|
418
|
+
}
|
|
419
|
+
for (const item of applyPatchResults) {
|
|
420
|
+
appendIfNew(item);
|
|
421
|
+
}
|
|
422
|
+
const additionalInterruptions = collectInterruptions([], [...shellResults, ...applyPatchResults]);
|
|
423
|
+
if (processedResponse.mcpApprovalRequests.length > 0) {
|
|
424
|
+
await handleHostedMcpApprovals({
|
|
425
|
+
requests: processedResponse.mcpApprovalRequests,
|
|
426
|
+
agent,
|
|
427
|
+
state,
|
|
428
|
+
functionResults,
|
|
429
|
+
appendIfNew,
|
|
430
|
+
resolveApproval: (rawItem) => {
|
|
431
|
+
const providerData = rawItem.providerData;
|
|
432
|
+
const approvalRequestId = rawItem.id ?? providerData?.id;
|
|
433
|
+
if (!approvalRequestId) {
|
|
434
|
+
return undefined;
|
|
435
|
+
}
|
|
436
|
+
return state._context.isToolApproved({
|
|
437
|
+
toolName: rawItem.name,
|
|
438
|
+
callId: approvalRequestId,
|
|
439
|
+
});
|
|
440
|
+
},
|
|
441
|
+
});
|
|
442
|
+
}
|
|
443
|
+
// process handoffs
|
|
444
|
+
if (processedResponse.handoffs.length > 0) {
|
|
445
|
+
return await executeHandoffCalls(agent, originalInput, preStepItems, newItems, newResponse, processedResponse.handoffs, runner, state._context);
|
|
446
|
+
}
|
|
447
|
+
const completedStep = await maybeCompleteTurnFromToolResults({
|
|
448
|
+
agent,
|
|
449
|
+
runner,
|
|
450
|
+
state,
|
|
451
|
+
functionResults,
|
|
452
|
+
originalInput,
|
|
453
|
+
newResponse,
|
|
454
|
+
preStepItems,
|
|
455
|
+
newItems,
|
|
456
|
+
additionalInterruptions,
|
|
457
|
+
});
|
|
458
|
+
if (completedStep) {
|
|
459
|
+
return completedStep;
|
|
460
|
+
}
|
|
461
|
+
// If the model issued any tool calls or handoffs in this turn,
|
|
462
|
+
// we must NOT treat any assistant message in the same turn as the final output.
|
|
463
|
+
// We should run the loop again so the model can see the tool results and respond.
|
|
464
|
+
if (processedResponse.hasToolsOrApprovalsToRun()) {
|
|
465
|
+
return new SingleStepResult(originalInput, newResponse, preStepItems, newItems, { type: 'next_step_run_again' });
|
|
466
|
+
}
|
|
467
|
+
// No tool calls/actions in this turn; safe to consider a plain assistant message as final.
|
|
468
|
+
const messageItems = newItems.filter((item) => item instanceof RunMessageOutputItem);
|
|
469
|
+
// we will use the last content output as the final output
|
|
470
|
+
const potentialFinalOutput = messageItems.length > 0
|
|
471
|
+
? getLastTextFromOutputMessage(messageItems[messageItems.length - 1].rawItem)
|
|
472
|
+
: undefined;
|
|
473
|
+
// if there is no output we just run again
|
|
474
|
+
if (typeof potentialFinalOutput === 'undefined') {
|
|
475
|
+
return new SingleStepResult(originalInput, newResponse, preStepItems, newItems, { type: 'next_step_run_again' });
|
|
476
|
+
}
|
|
477
|
+
// Keep looping if any tool output placeholders still require an approval follow-up.
|
|
478
|
+
const hasPendingToolsOrApprovals = functionResults.some((result) => result.runItem instanceof RunToolApprovalItem) || additionalInterruptions.length > 0;
|
|
479
|
+
if (!hasPendingToolsOrApprovals) {
|
|
480
|
+
if (agent.outputType === 'text') {
|
|
481
|
+
return new SingleStepResult(originalInput, newResponse, preStepItems, newItems, {
|
|
482
|
+
type: 'next_step_final_output',
|
|
483
|
+
output: potentialFinalOutput,
|
|
484
|
+
});
|
|
485
|
+
}
|
|
486
|
+
if (agent.outputType !== 'text' && potentialFinalOutput) {
|
|
487
|
+
// Structured output schema => always leads to a final output if we have text.
|
|
488
|
+
const { parser } = getSchemaAndParserFromInputType(agent.outputType, 'final_output');
|
|
489
|
+
const [error] = await safeExecute(() => parser(potentialFinalOutput));
|
|
490
|
+
if (error) {
|
|
491
|
+
const outputErrorMessage = formatFinalOutputTypeError(error);
|
|
492
|
+
addErrorToCurrentSpan({
|
|
493
|
+
message: outputErrorMessage,
|
|
494
|
+
data: {
|
|
495
|
+
error: String(error),
|
|
496
|
+
},
|
|
497
|
+
});
|
|
498
|
+
throw new ModelBehaviorError(outputErrorMessage);
|
|
499
|
+
}
|
|
500
|
+
return new SingleStepResult(originalInput, newResponse, preStepItems, newItems, { type: 'next_step_final_output', output: potentialFinalOutput });
|
|
501
|
+
}
|
|
502
|
+
}
|
|
503
|
+
return new SingleStepResult(originalInput, newResponse, preStepItems, newItems, { type: 'next_step_run_again' });
|
|
504
|
+
}
|
|
505
|
+
// Consolidates the logic that determines whether tool results yielded a final answer,
|
|
506
|
+
// triggered an interruption, or require the agent loop to continue running.
|
|
507
|
+
async function maybeCompleteTurnFromToolResults({ agent, runner: _runner, state, functionResults, originalInput, newResponse, preStepItems, newItems, additionalInterruptions = [], }) {
|
|
508
|
+
const toolOutcome = await checkForFinalOutputFromTools(agent, functionResults, state, additionalInterruptions);
|
|
509
|
+
if (toolOutcome.isFinalOutput) {
|
|
510
|
+
return new SingleStepResult(originalInput, newResponse, preStepItems, newItems, {
|
|
511
|
+
type: 'next_step_final_output',
|
|
512
|
+
output: toolOutcome.finalOutput,
|
|
513
|
+
});
|
|
514
|
+
}
|
|
515
|
+
if (toolOutcome.isInterrupted) {
|
|
516
|
+
return new SingleStepResult(originalInput, newResponse, preStepItems, newItems, {
|
|
517
|
+
type: 'next_step_interruption',
|
|
518
|
+
data: {
|
|
519
|
+
interruptions: toolOutcome.interruptions,
|
|
520
|
+
},
|
|
521
|
+
});
|
|
522
|
+
}
|
|
523
|
+
return null;
|
|
524
|
+
}
|
|
525
|
+
export { nextStepSchema };
|
|
526
|
+
//# sourceMappingURL=turnResolution.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"turnResolution.mjs","sourceRoot":"","sources":["../../src/runner/turnResolution.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { Handoff } from '../handoff';
|
|
2
|
+
import { RunItem, RunToolApprovalItem } from '../items';
|
|
3
|
+
import { Model, ModelSettings, Prompt, SerializedHandoff, SerializedTool } from '../model';
|
|
4
|
+
import { ApplyPatchTool, ComputerTool, FunctionTool, HostedMCPTool, ShellTool } from '../tool';
|
|
5
|
+
import { Tool } from '../tool';
|
|
6
|
+
import { AgentInputItem, UnknownContext } from '../types';
|
|
7
|
+
import * as protocol from '../types/protocol';
|
|
8
|
+
import { ModelInputData } from './conversation';
|
|
9
|
+
export type ToolRunHandoff = {
|
|
10
|
+
toolCall: protocol.FunctionCallItem;
|
|
11
|
+
handoff: Handoff<any, any>;
|
|
12
|
+
};
|
|
13
|
+
export type ToolRunFunction<TContext = UnknownContext> = {
|
|
14
|
+
toolCall: protocol.FunctionCallItem;
|
|
15
|
+
tool: FunctionTool<TContext>;
|
|
16
|
+
};
|
|
17
|
+
export type ToolRunComputer = {
|
|
18
|
+
toolCall: protocol.ComputerUseCallItem;
|
|
19
|
+
computer: ComputerTool<any, any>;
|
|
20
|
+
};
|
|
21
|
+
export type ToolRunShell = {
|
|
22
|
+
toolCall: protocol.ShellCallItem;
|
|
23
|
+
shell: ShellTool;
|
|
24
|
+
};
|
|
25
|
+
export type ToolRunApplyPatch = {
|
|
26
|
+
toolCall: protocol.ApplyPatchCallItem;
|
|
27
|
+
applyPatch: ApplyPatchTool;
|
|
28
|
+
};
|
|
29
|
+
export type ToolRunMCPApprovalRequest = {
|
|
30
|
+
requestItem: RunToolApprovalItem;
|
|
31
|
+
mcpTool: HostedMCPTool;
|
|
32
|
+
};
|
|
33
|
+
export type ProcessedResponse<TContext = UnknownContext> = {
|
|
34
|
+
newItems: RunItem[];
|
|
35
|
+
handoffs: ToolRunHandoff[];
|
|
36
|
+
functions: ToolRunFunction<TContext>[];
|
|
37
|
+
computerActions: ToolRunComputer[];
|
|
38
|
+
shellActions: ToolRunShell[];
|
|
39
|
+
applyPatchActions: ToolRunApplyPatch[];
|
|
40
|
+
mcpApprovalRequests: ToolRunMCPApprovalRequest[];
|
|
41
|
+
toolsUsed: string[];
|
|
42
|
+
hasToolsOrApprovalsToRun(): boolean;
|
|
43
|
+
};
|
|
44
|
+
export type AgentArtifacts<TContext = UnknownContext> = {
|
|
45
|
+
handoffs: Handoff<any, any>[];
|
|
46
|
+
tools: Tool<TContext>[];
|
|
47
|
+
serializedHandoffs: SerializedHandoff[];
|
|
48
|
+
serializedTools: SerializedTool[];
|
|
49
|
+
toolsExplicitlyProvided: boolean;
|
|
50
|
+
};
|
|
51
|
+
export type PreparedModelCall<TContext = UnknownContext> = AgentArtifacts<TContext> & {
|
|
52
|
+
model: Model;
|
|
53
|
+
explictlyModelSet: boolean;
|
|
54
|
+
modelSettings: ModelSettings;
|
|
55
|
+
modelInput: ModelInputData;
|
|
56
|
+
prompt?: Prompt;
|
|
57
|
+
previousResponseId?: string;
|
|
58
|
+
conversationId?: string;
|
|
59
|
+
sourceItems: (AgentInputItem | undefined)[];
|
|
60
|
+
filterApplied: boolean;
|
|
61
|
+
turnInput: AgentInputItem[];
|
|
62
|
+
};
|
|
63
|
+
export type { CallModelInputFilter, CallModelInputFilterArgs, FilterApplicationResult, } from './conversation';
|
|
64
|
+
export type { ModelInputData };
|
|
65
|
+
export type { AgentInputItemPool } from './items';
|
|
66
|
+
export type { PreparedInputWithSessionResult, SessionPersistenceTracker, } from './sessionPersistence';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/runner/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.mjs","sourceRoot":"","sources":["../../src/runner/types.ts"],"names":[],"mappings":""}
|