@openai/agents-core 0.5.4 → 0.7.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/agentToolRunConfig.js +2 -10
- package/dist/agentToolRunConfig.js.map +1 -1
- package/dist/agentToolRunConfig.mjs +2 -10
- package/dist/agentToolRunConfig.mjs.map +1 -1
- package/dist/computer.d.ts +10 -2
- package/dist/events.d.ts +1 -1
- package/dist/events.js.map +1 -1
- package/dist/events.mjs.map +1 -1
- package/dist/extensions/handoffFilters.d.ts +4 -3
- package/dist/extensions/handoffFilters.js +8 -3
- package/dist/extensions/handoffFilters.js.map +1 -1
- package/dist/extensions/handoffFilters.mjs +9 -4
- package/dist/extensions/handoffFilters.mjs.map +1 -1
- package/dist/index.d.ts +6 -5
- package/dist/index.js +10 -2
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +3 -2
- package/dist/index.mjs.map +1 -1
- package/dist/items.d.ts +1158 -32
- package/dist/items.js +56 -2
- package/dist/items.js.map +1 -1
- package/dist/items.mjs +53 -1
- package/dist/items.mjs.map +1 -1
- package/dist/metadata.js +3 -3
- package/dist/metadata.mjs +3 -3
- package/dist/model.d.ts +160 -2
- package/dist/run.js +6 -8
- package/dist/run.js.map +1 -1
- package/dist/run.mjs +8 -10
- package/dist/run.mjs.map +1 -1
- package/dist/runContext.js +116 -67
- package/dist/runContext.js.map +1 -1
- package/dist/runContext.mjs +116 -67
- package/dist/runContext.mjs.map +1 -1
- package/dist/runState.d.ts +493 -17
- package/dist/runState.js +303 -12
- package/dist/runState.js.map +1 -1
- package/dist/runState.mjs +304 -13
- package/dist/runState.mjs.map +1 -1
- package/dist/runner/modelOutputs.d.ts +5 -1
- package/dist/runner/modelOutputs.js +552 -12
- package/dist/runner/modelOutputs.js.map +1 -1
- package/dist/runner/modelOutputs.mjs +552 -13
- package/dist/runner/modelOutputs.mjs.map +1 -1
- package/dist/runner/modelPreparation.js +5 -2
- package/dist/runner/modelPreparation.js.map +1 -1
- package/dist/runner/modelPreparation.mjs +5 -2
- package/dist/runner/modelPreparation.mjs.map +1 -1
- package/dist/runner/modelRetry.d.ts +13 -0
- package/dist/runner/modelRetry.js +581 -0
- package/dist/runner/modelRetry.js.map +1 -0
- package/dist/runner/modelRetry.mjs +576 -0
- package/dist/runner/modelRetry.mjs.map +1 -0
- package/dist/runner/modelSettings.d.ts +1 -0
- package/dist/runner/modelSettings.js +9 -0
- package/dist/runner/modelSettings.js.map +1 -1
- package/dist/runner/modelSettings.mjs +7 -0
- package/dist/runner/modelSettings.mjs.map +1 -1
- package/dist/runner/modelSettingsMerge.d.ts +2 -0
- package/dist/runner/modelSettingsMerge.js +54 -0
- package/dist/runner/modelSettingsMerge.js.map +1 -0
- package/dist/runner/modelSettingsMerge.mjs +51 -0
- package/dist/runner/modelSettingsMerge.mjs.map +1 -0
- package/dist/runner/sessionPersistence.js +17 -3
- package/dist/runner/sessionPersistence.js.map +1 -1
- package/dist/runner/sessionPersistence.mjs +17 -3
- package/dist/runner/sessionPersistence.mjs.map +1 -1
- package/dist/runner/streaming.js +8 -0
- package/dist/runner/streaming.js.map +1 -1
- package/dist/runner/streaming.mjs +9 -1
- package/dist/runner/streaming.mjs.map +1 -1
- package/dist/runner/toolExecution.js +102 -67
- package/dist/runner/toolExecution.js.map +1 -1
- package/dist/runner/toolExecution.mjs +102 -67
- package/dist/runner/toolExecution.mjs.map +1 -1
- package/dist/runner/toolSearch.d.ts +23 -0
- package/dist/runner/toolSearch.js +426 -0
- package/dist/runner/toolSearch.js.map +1 -0
- package/dist/runner/toolSearch.mjs +416 -0
- package/dist/runner/toolSearch.mjs.map +1 -0
- package/dist/runner/turnResolution.js +2 -1
- package/dist/runner/turnResolution.js.map +1 -1
- package/dist/runner/turnResolution.mjs +2 -1
- package/dist/runner/turnResolution.mjs.map +1 -1
- package/dist/tool.d.ts +50 -0
- package/dist/tool.js +79 -0
- package/dist/tool.js.map +1 -1
- package/dist/tool.mjs +74 -0
- package/dist/tool.mjs.map +1 -1
- package/dist/toolIdentity.d.ts +23 -0
- package/dist/toolIdentity.js +105 -0
- package/dist/toolIdentity.js.map +1 -0
- package/dist/toolIdentity.mjs +89 -0
- package/dist/toolIdentity.mjs.map +1 -0
- package/dist/tooling.d.ts +24 -0
- package/dist/tooling.js +110 -0
- package/dist/tooling.js.map +1 -0
- package/dist/tooling.mjs +97 -0
- package/dist/tooling.mjs.map +1 -0
- package/dist/types/aliases.d.ts +3 -3
- package/dist/types/protocol.d.ts +417 -12
- package/dist/types/protocol.js +59 -4
- package/dist/types/protocol.js.map +1 -1
- package/dist/types/protocol.mjs +57 -2
- package/dist/types/protocol.mjs.map +1 -1
- package/dist/types/providerData.d.ts +2 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.js +15 -1
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/index.mjs +2 -0
- package/dist/utils/index.mjs.map +1 -1
- package/dist/utils/serialize.js +37 -6
- package/dist/utils/serialize.js.map +1 -1
- package/dist/utils/serialize.mjs +37 -6
- package/dist/utils/serialize.mjs.map +1 -1
- package/dist/utils/toolSearch.d.ts +1 -0
- package/dist/utils/toolSearch.js +13 -0
- package/dist/utils/toolSearch.js.map +1 -0
- package/dist/utils/toolSearch.mjs +2 -0
- package/dist/utils/toolSearch.mjs.map +1 -0
- package/package.json +2 -2
package/dist/runContext.mjs
CHANGED
|
@@ -1,5 +1,61 @@
|
|
|
1
1
|
import logger from "./logger.mjs";
|
|
2
2
|
import { Usage } from "./usage.mjs";
|
|
3
|
+
const COMPUTER_APPROVAL_TOOL_NAMES = new Set([
|
|
4
|
+
'computer',
|
|
5
|
+
'computer_use_preview',
|
|
6
|
+
]);
|
|
7
|
+
function getApprovalToolNameCandidates(toolName) {
|
|
8
|
+
if (!COMPUTER_APPROVAL_TOOL_NAMES.has(toolName)) {
|
|
9
|
+
return [toolName];
|
|
10
|
+
}
|
|
11
|
+
return toolName === 'computer'
|
|
12
|
+
? ['computer', 'computer_use_preview']
|
|
13
|
+
: ['computer_use_preview', 'computer'];
|
|
14
|
+
}
|
|
15
|
+
function mergeApprovalList(current, incoming) {
|
|
16
|
+
if (current === true || incoming === true) {
|
|
17
|
+
return true;
|
|
18
|
+
}
|
|
19
|
+
const currentList = Array.isArray(current) ? current : [];
|
|
20
|
+
const incomingList = Array.isArray(incoming) ? incoming : [];
|
|
21
|
+
return Array.from(new Set([...currentList, ...incomingList]));
|
|
22
|
+
}
|
|
23
|
+
function mergeApprovalMessages(current, incoming) {
|
|
24
|
+
if (current.rejected === true) {
|
|
25
|
+
return current.messages;
|
|
26
|
+
}
|
|
27
|
+
const merged = current.messages || incoming.messages
|
|
28
|
+
? { ...incoming.messages, ...current.messages }
|
|
29
|
+
: undefined;
|
|
30
|
+
if (!merged) {
|
|
31
|
+
return undefined;
|
|
32
|
+
}
|
|
33
|
+
if (Array.isArray(current.rejected)) {
|
|
34
|
+
for (const callId of current.rejected) {
|
|
35
|
+
if (!current.messages ||
|
|
36
|
+
!Object.prototype.hasOwnProperty.call(current.messages, callId)) {
|
|
37
|
+
delete merged[callId];
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return Object.keys(merged).length > 0 ? merged : undefined;
|
|
42
|
+
}
|
|
43
|
+
function mergeStickyRejectMessage(current, incoming) {
|
|
44
|
+
if (current.rejected === true) {
|
|
45
|
+
return current.stickyRejectMessage;
|
|
46
|
+
}
|
|
47
|
+
return current.stickyRejectMessage ?? incoming.stickyRejectMessage;
|
|
48
|
+
}
|
|
49
|
+
function mergeApprovalRecords(current, incoming) {
|
|
50
|
+
const mergedMessages = mergeApprovalMessages(current, incoming);
|
|
51
|
+
const stickyRejectMessage = mergeStickyRejectMessage(current, incoming);
|
|
52
|
+
return {
|
|
53
|
+
approved: mergeApprovalList(current.approved, incoming.approved),
|
|
54
|
+
rejected: mergeApprovalList(current.rejected, incoming.rejected),
|
|
55
|
+
...(mergedMessages ? { messages: mergedMessages } : {}),
|
|
56
|
+
...(stickyRejectMessage !== undefined ? { stickyRejectMessage } : {}),
|
|
57
|
+
};
|
|
58
|
+
}
|
|
3
59
|
/**
|
|
4
60
|
* A context object that is passed to the `Runner.run()` method.
|
|
5
61
|
*/
|
|
@@ -50,7 +106,10 @@ export class RunContext {
|
|
|
50
106
|
* @param approvals - The approvals map to rebuild.
|
|
51
107
|
*/
|
|
52
108
|
_rebuildApprovals(approvals) {
|
|
53
|
-
this.#approvals = new Map(
|
|
109
|
+
this.#approvals = new Map();
|
|
110
|
+
for (const [toolName, approval] of Object.entries(approvals)) {
|
|
111
|
+
this.#setApprovalRecord(toolName, approval);
|
|
112
|
+
}
|
|
54
113
|
}
|
|
55
114
|
/**
|
|
56
115
|
* Merge approvals from a serialized state without discarding existing entries.
|
|
@@ -59,54 +118,8 @@ export class RunContext {
|
|
|
59
118
|
* @param approvals - The approvals map to merge.
|
|
60
119
|
*/
|
|
61
120
|
_mergeApprovals(approvals) {
|
|
62
|
-
const mergeApproval = (current, incoming) => {
|
|
63
|
-
if (current === true || incoming === true) {
|
|
64
|
-
return true;
|
|
65
|
-
}
|
|
66
|
-
const currentList = Array.isArray(current) ? current : [];
|
|
67
|
-
const incomingList = Array.isArray(incoming) ? incoming : [];
|
|
68
|
-
return Array.from(new Set([...currentList, ...incomingList]));
|
|
69
|
-
};
|
|
70
|
-
const mergeMessages = (current, incoming) => {
|
|
71
|
-
if (current.rejected === true) {
|
|
72
|
-
return current.messages;
|
|
73
|
-
}
|
|
74
|
-
const merged = current.messages || incoming.messages
|
|
75
|
-
? { ...incoming.messages, ...current.messages }
|
|
76
|
-
: undefined;
|
|
77
|
-
if (!merged) {
|
|
78
|
-
return undefined;
|
|
79
|
-
}
|
|
80
|
-
if (Array.isArray(current.rejected)) {
|
|
81
|
-
for (const callId of current.rejected) {
|
|
82
|
-
if (!current.messages ||
|
|
83
|
-
!Object.prototype.hasOwnProperty.call(current.messages, callId)) {
|
|
84
|
-
delete merged[callId];
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
return Object.keys(merged).length > 0 ? merged : undefined;
|
|
89
|
-
};
|
|
90
|
-
const mergeStickyRejectMessage = (current, incoming) => {
|
|
91
|
-
if (current.rejected === true) {
|
|
92
|
-
return current.stickyRejectMessage;
|
|
93
|
-
}
|
|
94
|
-
return current.stickyRejectMessage ?? incoming.stickyRejectMessage;
|
|
95
|
-
};
|
|
96
121
|
for (const [toolName, incoming] of Object.entries(approvals)) {
|
|
97
|
-
|
|
98
|
-
if (!existing) {
|
|
99
|
-
this.#approvals.set(toolName, incoming);
|
|
100
|
-
continue;
|
|
101
|
-
}
|
|
102
|
-
const mergedMessages = mergeMessages(existing, incoming);
|
|
103
|
-
const stickyRejectMessage = mergeStickyRejectMessage(existing, incoming);
|
|
104
|
-
this.#approvals.set(toolName, {
|
|
105
|
-
approved: mergeApproval(existing.approved, incoming.approved),
|
|
106
|
-
rejected: mergeApproval(existing.rejected, incoming.rejected),
|
|
107
|
-
...(mergedMessages ? { messages: mergedMessages } : {}),
|
|
108
|
-
...(stickyRejectMessage !== undefined ? { stickyRejectMessage } : {}),
|
|
109
|
-
});
|
|
122
|
+
this.#setApprovalRecord(toolName, incoming);
|
|
110
123
|
}
|
|
111
124
|
}
|
|
112
125
|
/**
|
|
@@ -117,11 +130,17 @@ export class RunContext {
|
|
|
117
130
|
* @returns The message string if one was provided, `undefined` otherwise.
|
|
118
131
|
*/
|
|
119
132
|
getRejectionMessage(toolName, callId) {
|
|
120
|
-
const approvalEntry
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
133
|
+
for (const approvalEntry of this.#getApprovalEntries(toolName)) {
|
|
134
|
+
if (typeof approvalEntry.messages?.[callId] === 'string') {
|
|
135
|
+
return approvalEntry.messages[callId];
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
for (const approvalEntry of this.#getApprovalEntries(toolName)) {
|
|
139
|
+
if (approvalEntry.rejected === true) {
|
|
140
|
+
return approvalEntry.stickyRejectMessage;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
return undefined;
|
|
125
144
|
}
|
|
126
145
|
#getCallId(approvalItem) {
|
|
127
146
|
if ('callId' in approvalItem.rawItem) {
|
|
@@ -138,23 +157,25 @@ export class RunContext {
|
|
|
138
157
|
*/
|
|
139
158
|
isToolApproved(approval) {
|
|
140
159
|
const { toolName, callId } = approval;
|
|
141
|
-
const
|
|
142
|
-
|
|
160
|
+
const approvalEntries = this.#getApprovalEntries(toolName);
|
|
161
|
+
const hasPermanentApproval = approvalEntries.some((approvalEntry) => approvalEntry.approved === true);
|
|
162
|
+
const hasPermanentRejection = approvalEntries.some((approvalEntry) => approvalEntry.rejected === true);
|
|
163
|
+
if (hasPermanentApproval && hasPermanentRejection) {
|
|
143
164
|
logger.warn('Tool is permanently approved and rejected at the same time. Approval takes precedence');
|
|
144
165
|
return true;
|
|
145
166
|
}
|
|
146
|
-
if (
|
|
167
|
+
if (hasPermanentApproval) {
|
|
147
168
|
return true;
|
|
148
169
|
}
|
|
149
|
-
if (
|
|
170
|
+
if (hasPermanentRejection) {
|
|
150
171
|
return false;
|
|
151
172
|
}
|
|
152
|
-
const individualCallApproval = Array.isArray(approvalEntry
|
|
173
|
+
const individualCallApproval = approvalEntries.some((approvalEntry) => Array.isArray(approvalEntry.approved)
|
|
153
174
|
? approvalEntry.approved.includes(callId)
|
|
154
|
-
: false;
|
|
155
|
-
const individualCallRejection = Array.isArray(approvalEntry
|
|
175
|
+
: false);
|
|
176
|
+
const individualCallRejection = approvalEntries.some((approvalEntry) => Array.isArray(approvalEntry.rejected)
|
|
156
177
|
? approvalEntry.rejected.includes(callId)
|
|
157
|
-
: false;
|
|
178
|
+
: false);
|
|
158
179
|
if (individualCallApproval && individualCallRejection) {
|
|
159
180
|
logger.warn(`Tool call ${callId} is both approved and rejected at the same time. Approval takes precedence`);
|
|
160
181
|
return true;
|
|
@@ -175,21 +196,22 @@ export class RunContext {
|
|
|
175
196
|
*/
|
|
176
197
|
approveTool(approvalItem, { alwaysApprove = false } = {}) {
|
|
177
198
|
const toolName = approvalItem.toolName ?? approvalItem.rawItem.name;
|
|
199
|
+
const approvalKey = this.#getApprovalStorageKey(toolName);
|
|
178
200
|
if (alwaysApprove) {
|
|
179
|
-
this.#approvals.set(
|
|
201
|
+
this.#approvals.set(approvalKey, {
|
|
180
202
|
approved: true,
|
|
181
203
|
rejected: [],
|
|
182
204
|
});
|
|
183
205
|
return;
|
|
184
206
|
}
|
|
185
|
-
const approvalEntry = this.#approvals.get(
|
|
207
|
+
const approvalEntry = this.#approvals.get(approvalKey) ?? {
|
|
186
208
|
approved: [],
|
|
187
209
|
rejected: [],
|
|
188
210
|
};
|
|
189
211
|
if (Array.isArray(approvalEntry.approved)) {
|
|
190
212
|
approvalEntry.approved.push(this.#getCallId(approvalItem));
|
|
191
213
|
}
|
|
192
|
-
this.#approvals.set(
|
|
214
|
+
this.#approvals.set(approvalKey, approvalEntry);
|
|
193
215
|
}
|
|
194
216
|
/**
|
|
195
217
|
* Reject a tool call.
|
|
@@ -198,9 +220,10 @@ export class RunContext {
|
|
|
198
220
|
*/
|
|
199
221
|
rejectTool(approvalItem, { alwaysReject = false, message, } = {}) {
|
|
200
222
|
const toolName = approvalItem.toolName ?? approvalItem.rawItem.name;
|
|
223
|
+
const approvalKey = this.#getApprovalStorageKey(toolName);
|
|
201
224
|
if (alwaysReject) {
|
|
202
225
|
const callId = this.#getCallId(approvalItem);
|
|
203
|
-
this.#approvals.set(
|
|
226
|
+
this.#approvals.set(approvalKey, {
|
|
204
227
|
approved: false,
|
|
205
228
|
rejected: true,
|
|
206
229
|
...(message !== undefined
|
|
@@ -212,7 +235,7 @@ export class RunContext {
|
|
|
212
235
|
});
|
|
213
236
|
return;
|
|
214
237
|
}
|
|
215
|
-
const approvalEntry = this.#approvals.get(
|
|
238
|
+
const approvalEntry = this.#approvals.get(approvalKey) ?? {
|
|
216
239
|
approved: [],
|
|
217
240
|
rejected: [],
|
|
218
241
|
};
|
|
@@ -224,7 +247,7 @@ export class RunContext {
|
|
|
224
247
|
approvalEntry.messages[callId] = message;
|
|
225
248
|
}
|
|
226
249
|
}
|
|
227
|
-
this.#approvals.set(
|
|
250
|
+
this.#approvals.set(approvalKey, approvalEntry);
|
|
228
251
|
}
|
|
229
252
|
/**
|
|
230
253
|
* Creates a child context that shares approvals and usage, with tool input set.
|
|
@@ -255,5 +278,31 @@ export class RunContext {
|
|
|
255
278
|
}
|
|
256
279
|
return json;
|
|
257
280
|
}
|
|
281
|
+
#getApprovalEntries(toolName) {
|
|
282
|
+
return getApprovalToolNameCandidates(toolName)
|
|
283
|
+
.map((candidate) => this.#approvals.get(candidate))
|
|
284
|
+
.filter((approval) => approval !== undefined);
|
|
285
|
+
}
|
|
286
|
+
#getApprovalStorageKey(toolName) {
|
|
287
|
+
return (getApprovalToolNameCandidates(toolName).find((candidate) => this.#approvals.has(candidate)) ?? toolName);
|
|
288
|
+
}
|
|
289
|
+
#setApprovalRecord(toolName, incoming) {
|
|
290
|
+
const candidates = getApprovalToolNameCandidates(toolName);
|
|
291
|
+
const existingEntries = candidates
|
|
292
|
+
.map((candidate) => this.#approvals.get(candidate))
|
|
293
|
+
.filter((approval) => approval !== undefined);
|
|
294
|
+
const mergedExisting = existingEntries.reduce((current, approval) => current ? mergeApprovalRecords(current, approval) : approval, undefined);
|
|
295
|
+
const merged = mergedExisting
|
|
296
|
+
? mergeApprovalRecords(mergedExisting, incoming)
|
|
297
|
+
: incoming;
|
|
298
|
+
const targetKey = candidates.find((candidate) => this.#approvals.has(candidate)) ??
|
|
299
|
+
toolName;
|
|
300
|
+
this.#approvals.set(targetKey, merged);
|
|
301
|
+
for (const candidate of candidates) {
|
|
302
|
+
if (candidate !== targetKey) {
|
|
303
|
+
this.#approvals.delete(candidate);
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
}
|
|
258
307
|
}
|
|
259
308
|
//# sourceMappingURL=runContext.mjs.map
|
package/dist/runContext.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runContext.mjs","sourceRoot":"","sources":["../src/runContext.ts"],"names":[],"mappings":"OACO,MAAM;OAEN,EAAE,KAAK,EAAE;
|
|
1
|
+
{"version":3,"file":"runContext.mjs","sourceRoot":"","sources":["../src/runContext.ts"],"names":[],"mappings":"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"}
|