@openai/agents-core 0.1.6 → 0.1.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/agent.d.ts +14 -1
- package/dist/agent.js +42 -2
- package/dist/agent.js.map +1 -1
- package/dist/agent.mjs +42 -2
- package/dist/agent.mjs.map +1 -1
- package/dist/handoff.d.ts +17 -2
- package/dist/handoff.js +11 -9
- package/dist/handoff.js.map +1 -1
- package/dist/handoff.mjs +11 -9
- package/dist/handoff.mjs.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js.map +1 -1
- package/dist/index.mjs.map +1 -1
- package/dist/metadata.js +2 -2
- package/dist/metadata.mjs +2 -2
- package/dist/run.js +11 -9
- package/dist/run.js.map +1 -1
- package/dist/run.mjs +12 -10
- package/dist/run.mjs.map +1 -1
- package/dist/runImplementation.d.ts +5 -2
- package/dist/runImplementation.js +46 -26
- package/dist/runImplementation.js.map +1 -1
- package/dist/runImplementation.mjs +45 -26
- package/dist/runImplementation.mjs.map +1 -1
- package/dist/tool.d.ts +18 -0
- package/dist/tool.js +8 -0
- package/dist/tool.js.map +1 -1
- package/dist/tool.mjs +8 -0
- package/dist/tool.mjs.map +1 -1
- package/dist/utils/serialize.d.ts +2 -1
- package/dist/utils/serialize.js.map +1 -1
- package/dist/utils/serialize.mjs.map +1 -1
- package/package.json +1 -1
package/dist/agent.d.ts
CHANGED
|
@@ -8,7 +8,7 @@ import type { RunContext } from './runContext';
|
|
|
8
8
|
import { type FunctionTool, type FunctionToolResult, type Tool, type ToolApprovalFunction } from './tool';
|
|
9
9
|
import type { ResolvedAgentOutput, JsonSchemaDefinition, HandoffsOutput, Expand } from './types';
|
|
10
10
|
import type { RunResult } from './result';
|
|
11
|
-
import type
|
|
11
|
+
import { type Handoff } from './handoff';
|
|
12
12
|
import { NonStreamRunOptions, RunConfig } from './run';
|
|
13
13
|
import { RunToolApprovalItem } from './items';
|
|
14
14
|
import { UnknownContext, TextOutput } from './types';
|
|
@@ -292,6 +292,13 @@ export declare class Agent<TContext = UnknownContext, TOutput extends AgentOutpu
|
|
|
292
292
|
* Additional run options for the agent (as tool) execution.
|
|
293
293
|
*/
|
|
294
294
|
runOptions?: NonStreamRunOptions<TContext>;
|
|
295
|
+
/**
|
|
296
|
+
* Determines whether this tool should be exposed to the model for the current run.
|
|
297
|
+
*/
|
|
298
|
+
isEnabled?: boolean | ((args: {
|
|
299
|
+
runContext: RunContext<TContext>;
|
|
300
|
+
agent: Agent<TContext, TOutput>;
|
|
301
|
+
}) => boolean | Promise<boolean>);
|
|
295
302
|
}): FunctionTool<TContext, typeof AgentAsToolNeedApprovalSchame>;
|
|
296
303
|
/**
|
|
297
304
|
* Returns the system prompt for the agent.
|
|
@@ -318,6 +325,12 @@ export declare class Agent<TContext = UnknownContext, TOutput extends AgentOutpu
|
|
|
318
325
|
* @returns all configured tools
|
|
319
326
|
*/
|
|
320
327
|
getAllTools(runContext: RunContext<TContext>): Promise<Tool<TContext>[]>;
|
|
328
|
+
/**
|
|
329
|
+
* Returns the handoffs that should be exposed to the model for the current run.
|
|
330
|
+
*
|
|
331
|
+
* Handoffs that provide an `isEnabled` function returning `false` are omitted.
|
|
332
|
+
*/
|
|
333
|
+
getEnabledHandoffs(runContext: RunContext<TContext>): Promise<Handoff<any, any>[]>;
|
|
321
334
|
/**
|
|
322
335
|
* Processes the final output of the agent.
|
|
323
336
|
*
|
package/dist/agent.js
CHANGED
|
@@ -11,6 +11,7 @@ const lifecycle_1 = require("./lifecycle.js");
|
|
|
11
11
|
const mcp_1 = require("./mcp.js");
|
|
12
12
|
const defaultModel_1 = require("./defaultModel.js");
|
|
13
13
|
const tool_1 = require("./tool.js");
|
|
14
|
+
const handoff_1 = require("./handoff.js");
|
|
14
15
|
const run_1 = require("./run.js");
|
|
15
16
|
const tools_1 = require("./utils/tools.js");
|
|
16
17
|
const messages_1 = require("./utils/messages.js");
|
|
@@ -171,13 +172,14 @@ class Agent extends lifecycle_1.AgentHooks {
|
|
|
171
172
|
* @returns A tool that runs the agent and returns the output text.
|
|
172
173
|
*/
|
|
173
174
|
asTool(options) {
|
|
174
|
-
const { toolName, toolDescription, customOutputExtractor, needsApproval, runConfig, runOptions, } = options;
|
|
175
|
+
const { toolName, toolDescription, customOutputExtractor, needsApproval, runConfig, runOptions, isEnabled, } = options;
|
|
175
176
|
return (0, tool_1.tool)({
|
|
176
177
|
name: toolName ?? (0, tools_1.toFunctionToolName)(this.name),
|
|
177
178
|
description: toolDescription ?? '',
|
|
178
179
|
parameters: AgentAsToolNeedApprovalSchame,
|
|
179
180
|
strict: true,
|
|
180
181
|
needsApproval,
|
|
182
|
+
isEnabled,
|
|
181
183
|
execute: async (data, context, details) => {
|
|
182
184
|
if (!(0, typeGuards_1.isAgentToolInput)(data)) {
|
|
183
185
|
throw new errors_1.ModelBehaviorError('Agent tool called with invalid input');
|
|
@@ -187,6 +189,13 @@ class Agent extends lifecycle_1.AgentHooks {
|
|
|
187
189
|
context,
|
|
188
190
|
...(runOptions ?? {}),
|
|
189
191
|
});
|
|
192
|
+
const usesStopAtToolNames = typeof this.toolUseBehavior === 'object' &&
|
|
193
|
+
this.toolUseBehavior !== null &&
|
|
194
|
+
'stopAtToolNames' in this.toolUseBehavior;
|
|
195
|
+
if (typeof customOutputExtractor !== 'function' &&
|
|
196
|
+
usesStopAtToolNames) {
|
|
197
|
+
logger_1.default.debug(`You're passing the agent (name: ${this.name}) with toolUseBehavior.stopAtToolNames configured as a tool to a different agent; this may not work as you expect. You may want to have a wrapper function tool to consistently return the final output.`);
|
|
198
|
+
}
|
|
190
199
|
const outputText = typeof customOutputExtractor === 'function'
|
|
191
200
|
? await customOutputExtractor(result)
|
|
192
201
|
: (0, messages_1.getOutputText)(result.rawResponses[result.rawResponses.length - 1]);
|
|
@@ -242,7 +251,38 @@ class Agent extends lifecycle_1.AgentHooks {
|
|
|
242
251
|
* @returns all configured tools
|
|
243
252
|
*/
|
|
244
253
|
async getAllTools(runContext) {
|
|
245
|
-
|
|
254
|
+
const mcpTools = await this.getMcpTools(runContext);
|
|
255
|
+
const enabledTools = [];
|
|
256
|
+
for (const candidate of this.tools) {
|
|
257
|
+
if (candidate.type === 'function') {
|
|
258
|
+
const maybeIsEnabled = candidate.isEnabled;
|
|
259
|
+
const enabled = typeof maybeIsEnabled === 'function'
|
|
260
|
+
? await maybeIsEnabled(runContext, this)
|
|
261
|
+
: typeof maybeIsEnabled === 'boolean'
|
|
262
|
+
? maybeIsEnabled
|
|
263
|
+
: true;
|
|
264
|
+
if (!enabled) {
|
|
265
|
+
continue;
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
enabledTools.push(candidate);
|
|
269
|
+
}
|
|
270
|
+
return [...mcpTools, ...enabledTools];
|
|
271
|
+
}
|
|
272
|
+
/**
|
|
273
|
+
* Returns the handoffs that should be exposed to the model for the current run.
|
|
274
|
+
*
|
|
275
|
+
* Handoffs that provide an `isEnabled` function returning `false` are omitted.
|
|
276
|
+
*/
|
|
277
|
+
async getEnabledHandoffs(runContext) {
|
|
278
|
+
const handoffs = this.handoffs?.map((h) => (0, handoff_1.getHandoff)(h)) ?? [];
|
|
279
|
+
const enabled = [];
|
|
280
|
+
for (const handoff of handoffs) {
|
|
281
|
+
if (await handoff.isEnabled({ runContext, agent: this })) {
|
|
282
|
+
enabled.push(handoff);
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
return enabled;
|
|
246
286
|
}
|
|
247
287
|
/**
|
|
248
288
|
* Processes the final output of the agent.
|
package/dist/agent.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
|
package/dist/agent.mjs
CHANGED
|
@@ -3,6 +3,7 @@ import { AgentHooks } from "./lifecycle.mjs";
|
|
|
3
3
|
import { getAllMcpTools } from "./mcp.mjs";
|
|
4
4
|
import { getDefaultModelSettings, gpt5ReasoningSettingsRequired, isGpt5Default, } from "./defaultModel.mjs";
|
|
5
5
|
import { tool, } from "./tool.mjs";
|
|
6
|
+
import { getHandoff } from "./handoff.mjs";
|
|
6
7
|
import { Runner } from "./run.mjs";
|
|
7
8
|
import { toFunctionToolName } from "./utils/tools.mjs";
|
|
8
9
|
import { getOutputText } from "./utils/messages.mjs";
|
|
@@ -163,13 +164,14 @@ export class Agent extends AgentHooks {
|
|
|
163
164
|
* @returns A tool that runs the agent and returns the output text.
|
|
164
165
|
*/
|
|
165
166
|
asTool(options) {
|
|
166
|
-
const { toolName, toolDescription, customOutputExtractor, needsApproval, runConfig, runOptions, } = options;
|
|
167
|
+
const { toolName, toolDescription, customOutputExtractor, needsApproval, runConfig, runOptions, isEnabled, } = options;
|
|
167
168
|
return tool({
|
|
168
169
|
name: toolName ?? toFunctionToolName(this.name),
|
|
169
170
|
description: toolDescription ?? '',
|
|
170
171
|
parameters: AgentAsToolNeedApprovalSchame,
|
|
171
172
|
strict: true,
|
|
172
173
|
needsApproval,
|
|
174
|
+
isEnabled,
|
|
173
175
|
execute: async (data, context, details) => {
|
|
174
176
|
if (!isAgentToolInput(data)) {
|
|
175
177
|
throw new ModelBehaviorError('Agent tool called with invalid input');
|
|
@@ -179,6 +181,13 @@ export class Agent extends AgentHooks {
|
|
|
179
181
|
context,
|
|
180
182
|
...(runOptions ?? {}),
|
|
181
183
|
});
|
|
184
|
+
const usesStopAtToolNames = typeof this.toolUseBehavior === 'object' &&
|
|
185
|
+
this.toolUseBehavior !== null &&
|
|
186
|
+
'stopAtToolNames' in this.toolUseBehavior;
|
|
187
|
+
if (typeof customOutputExtractor !== 'function' &&
|
|
188
|
+
usesStopAtToolNames) {
|
|
189
|
+
logger.debug(`You're passing the agent (name: ${this.name}) with toolUseBehavior.stopAtToolNames configured as a tool to a different agent; this may not work as you expect. You may want to have a wrapper function tool to consistently return the final output.`);
|
|
190
|
+
}
|
|
182
191
|
const outputText = typeof customOutputExtractor === 'function'
|
|
183
192
|
? await customOutputExtractor(result)
|
|
184
193
|
: getOutputText(result.rawResponses[result.rawResponses.length - 1]);
|
|
@@ -234,7 +243,38 @@ export class Agent extends AgentHooks {
|
|
|
234
243
|
* @returns all configured tools
|
|
235
244
|
*/
|
|
236
245
|
async getAllTools(runContext) {
|
|
237
|
-
|
|
246
|
+
const mcpTools = await this.getMcpTools(runContext);
|
|
247
|
+
const enabledTools = [];
|
|
248
|
+
for (const candidate of this.tools) {
|
|
249
|
+
if (candidate.type === 'function') {
|
|
250
|
+
const maybeIsEnabled = candidate.isEnabled;
|
|
251
|
+
const enabled = typeof maybeIsEnabled === 'function'
|
|
252
|
+
? await maybeIsEnabled(runContext, this)
|
|
253
|
+
: typeof maybeIsEnabled === 'boolean'
|
|
254
|
+
? maybeIsEnabled
|
|
255
|
+
: true;
|
|
256
|
+
if (!enabled) {
|
|
257
|
+
continue;
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
enabledTools.push(candidate);
|
|
261
|
+
}
|
|
262
|
+
return [...mcpTools, ...enabledTools];
|
|
263
|
+
}
|
|
264
|
+
/**
|
|
265
|
+
* Returns the handoffs that should be exposed to the model for the current run.
|
|
266
|
+
*
|
|
267
|
+
* Handoffs that provide an `isEnabled` function returning `false` are omitted.
|
|
268
|
+
*/
|
|
269
|
+
async getEnabledHandoffs(runContext) {
|
|
270
|
+
const handoffs = this.handoffs?.map((h) => getHandoff(h)) ?? [];
|
|
271
|
+
const enabled = [];
|
|
272
|
+
for (const handoff of handoffs) {
|
|
273
|
+
if (await handoff.isEnabled({ runContext, agent: this })) {
|
|
274
|
+
enabled.push(handoff);
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
return enabled;
|
|
238
278
|
}
|
|
239
279
|
/**
|
|
240
280
|
* Processes the final output of the agent.
|
package/dist/agent.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.mjs","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"OACO,EAAE,CAAC,EAAE,MAAM,KAAK;OAGhB,EAAE,UAAU,EAAE;OACd,EAAE,cAAc,EAAkB;OAElC,EACL,uBAAuB,EACvB,6BAA6B,EAC7B,aAAa,GACd;OAEM,EAGL,IAAI,
|
|
1
|
+
{"version":3,"file":"agent.mjs","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
|
package/dist/handoff.d.ts
CHANGED
|
@@ -43,6 +43,15 @@ export declare function getTransferMessage<TContext, TOutput extends AgentOutput
|
|
|
43
43
|
* @template TContext The context of the handoff
|
|
44
44
|
* @template TOutput The output type of the handoff
|
|
45
45
|
*/
|
|
46
|
+
type HandoffEnabledPredicate<TContext = UnknownContext> = (args: {
|
|
47
|
+
runContext: RunContext<TContext>;
|
|
48
|
+
agent: Agent<any, any>;
|
|
49
|
+
}) => boolean | Promise<boolean>;
|
|
50
|
+
type HandoffEnabledOption<TContext> = boolean | HandoffEnabledPredicate<TContext>;
|
|
51
|
+
export type HandoffEnabledFunction<TContext = UnknownContext> = (args: {
|
|
52
|
+
runContext: RunContext<TContext>;
|
|
53
|
+
agent: Agent<any, any>;
|
|
54
|
+
}) => Promise<boolean>;
|
|
46
55
|
export declare class Handoff<TContext = UnknownContext, TOutput extends AgentOutputType = TextOutput> {
|
|
47
56
|
/**
|
|
48
57
|
* The name of the tool that represents the handoff.
|
|
@@ -99,6 +108,7 @@ export declare class Handoff<TContext = UnknownContext, TOutput extends AgentOut
|
|
|
99
108
|
parameters: JsonObjectSchema<any>;
|
|
100
109
|
strict: boolean;
|
|
101
110
|
};
|
|
111
|
+
isEnabled: HandoffEnabledFunction<TContext>;
|
|
102
112
|
constructor(agent: Agent<TContext, TOutput>, onInvokeHandoff: (context: RunContext<TContext>, args: string) => Promise<Agent<TContext, TOutput>> | Agent<TContext, TOutput>);
|
|
103
113
|
}
|
|
104
114
|
/**
|
|
@@ -108,7 +118,7 @@ export type OnHandoffCallback<TInputType extends ToolInputParameters> = (context
|
|
|
108
118
|
/**
|
|
109
119
|
* Configuration for a handoff.
|
|
110
120
|
*/
|
|
111
|
-
export type HandoffConfig<TInputType extends ToolInputParameters> = {
|
|
121
|
+
export type HandoffConfig<TInputType extends ToolInputParameters, TContext = UnknownContext> = {
|
|
112
122
|
/**
|
|
113
123
|
* Optional override for the name of the tool that represents the handoff.
|
|
114
124
|
*/
|
|
@@ -130,6 +140,10 @@ export type HandoffConfig<TInputType extends ToolInputParameters> = {
|
|
|
130
140
|
* A function that filters the inputs that are passed to the next agent.
|
|
131
141
|
*/
|
|
132
142
|
inputFilter?: HandoffInputFilter;
|
|
143
|
+
/**
|
|
144
|
+
* Determines whether the handoff should be available to the model for the current run.
|
|
145
|
+
*/
|
|
146
|
+
isEnabled?: HandoffEnabledOption<TContext>;
|
|
133
147
|
};
|
|
134
148
|
/**
|
|
135
149
|
* Creates a handoff from an agent. Handoffs are automatically created when you pass an agent
|
|
@@ -140,7 +154,7 @@ export type HandoffConfig<TInputType extends ToolInputParameters> = {
|
|
|
140
154
|
* @template TOutput The output type of the handoff
|
|
141
155
|
* @template TInputType The input type of the handoff
|
|
142
156
|
*/
|
|
143
|
-
export declare function handoff<TContext = UnknownContext, TOutput extends AgentOutputType = TextOutput, TInputType extends ToolInputParameters = ToolInputParameters>(agent: Agent<TContext, TOutput>, config?: HandoffConfig<TInputType>): Handoff<TContext, TOutput>;
|
|
157
|
+
export declare function handoff<TContext = UnknownContext, TOutput extends AgentOutputType = TextOutput, TInputType extends ToolInputParameters = ToolInputParameters>(agent: Agent<TContext, TOutput>, config?: HandoffConfig<TInputType, TContext>): Handoff<TContext, TOutput>;
|
|
144
158
|
/**
|
|
145
159
|
* Returns a handoff for the given agent. If the agent is already wrapped into a handoff,
|
|
146
160
|
* it will be returned as is. Otherwise, a new handoff instance will be created.
|
|
@@ -149,3 +163,4 @@ export declare function handoff<TContext = UnknownContext, TOutput extends Agent
|
|
|
149
163
|
* @template TOutput The output type of the handoff
|
|
150
164
|
*/
|
|
151
165
|
export declare function getHandoff<TContext, TOutput extends AgentOutputType>(agent: Agent<TContext, TOutput> | Handoff<TContext, TOutput>): Handoff<TContext, TOutput>;
|
|
166
|
+
export {};
|
package/dist/handoff.js
CHANGED
|
@@ -39,15 +39,6 @@ function defaultHandoffToolName(agent) {
|
|
|
39
39
|
function defaultHandoffToolDescription(agent) {
|
|
40
40
|
return `Handoff to the ${agent.name} agent to handle the request. ${agent.handoffDescription ?? ''}`;
|
|
41
41
|
}
|
|
42
|
-
/**
|
|
43
|
-
* A handoff is when an agent delegates a task to another agent.
|
|
44
|
-
* For example, in a customer support scenario you might have a "triage agent" that determines which
|
|
45
|
-
* agent should handle the user's request, and sub-agents that specialize in different areas like
|
|
46
|
-
* billing, account management, etc.
|
|
47
|
-
*
|
|
48
|
-
* @template TContext The context of the handoff
|
|
49
|
-
* @template TOutput The output type of the handoff
|
|
50
|
-
*/
|
|
51
42
|
class Handoff {
|
|
52
43
|
/**
|
|
53
44
|
* The name of the tool that represents the handoff.
|
|
@@ -111,6 +102,7 @@ class Handoff {
|
|
|
111
102
|
strict: this.strictJsonSchema,
|
|
112
103
|
};
|
|
113
104
|
}
|
|
105
|
+
isEnabled = async () => true;
|
|
114
106
|
constructor(agent, onInvokeHandoff) {
|
|
115
107
|
this.agentName = agent.name;
|
|
116
108
|
this.onInvokeHandoff = onInvokeHandoff;
|
|
@@ -172,6 +164,16 @@ function handoff(agent, config = {}) {
|
|
|
172
164
|
return agent;
|
|
173
165
|
}
|
|
174
166
|
const handoff = new Handoff(agent, onInvokeHandoff);
|
|
167
|
+
if (typeof config.isEnabled === 'function') {
|
|
168
|
+
const predicate = config.isEnabled;
|
|
169
|
+
handoff.isEnabled = async ({ runContext, agent }) => {
|
|
170
|
+
const result = await predicate({ runContext, agent });
|
|
171
|
+
return Boolean(result);
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
else if (typeof config.isEnabled === 'boolean') {
|
|
175
|
+
handoff.isEnabled = async () => config.isEnabled;
|
|
176
|
+
}
|
|
175
177
|
if (config.inputType) {
|
|
176
178
|
const result = (0, tools_2.getSchemaAndParserFromInputType)(config.inputType, handoff.toolName);
|
|
177
179
|
handoff.inputJsonSchema = result.schema;
|
package/dist/handoff.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handoff.js","sourceRoot":"","sources":["../src/handoff.ts"],"names":[],"mappings":";;;;;;AAmDA,gDAIC;
|
|
1
|
+
{"version":3,"file":"handoff.js","sourceRoot":"","sources":["../src/handoff.ts"],"names":[],"mappings":"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"}
|
package/dist/handoff.mjs
CHANGED
|
@@ -30,15 +30,6 @@ function defaultHandoffToolName(agent) {
|
|
|
30
30
|
function defaultHandoffToolDescription(agent) {
|
|
31
31
|
return `Handoff to the ${agent.name} agent to handle the request. ${agent.handoffDescription ?? ''}`;
|
|
32
32
|
}
|
|
33
|
-
/**
|
|
34
|
-
* A handoff is when an agent delegates a task to another agent.
|
|
35
|
-
* For example, in a customer support scenario you might have a "triage agent" that determines which
|
|
36
|
-
* agent should handle the user's request, and sub-agents that specialize in different areas like
|
|
37
|
-
* billing, account management, etc.
|
|
38
|
-
*
|
|
39
|
-
* @template TContext The context of the handoff
|
|
40
|
-
* @template TOutput The output type of the handoff
|
|
41
|
-
*/
|
|
42
33
|
export class Handoff {
|
|
43
34
|
/**
|
|
44
35
|
* The name of the tool that represents the handoff.
|
|
@@ -102,6 +93,7 @@ export class Handoff {
|
|
|
102
93
|
strict: this.strictJsonSchema,
|
|
103
94
|
};
|
|
104
95
|
}
|
|
96
|
+
isEnabled = async () => true;
|
|
105
97
|
constructor(agent, onInvokeHandoff) {
|
|
106
98
|
this.agentName = agent.name;
|
|
107
99
|
this.onInvokeHandoff = onInvokeHandoff;
|
|
@@ -162,6 +154,16 @@ export function handoff(agent, config = {}) {
|
|
|
162
154
|
return agent;
|
|
163
155
|
}
|
|
164
156
|
const handoff = new Handoff(agent, onInvokeHandoff);
|
|
157
|
+
if (typeof config.isEnabled === 'function') {
|
|
158
|
+
const predicate = config.isEnabled;
|
|
159
|
+
handoff.isEnabled = async ({ runContext, agent }) => {
|
|
160
|
+
const result = await predicate({ runContext, agent });
|
|
161
|
+
return Boolean(result);
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
else if (typeof config.isEnabled === 'boolean') {
|
|
165
|
+
handoff.isEnabled = async () => config.isEnabled;
|
|
166
|
+
}
|
|
165
167
|
if (config.inputType) {
|
|
166
168
|
const result = getSchemaAndParserFromInputType(config.inputType, handoff.toolName);
|
|
167
169
|
handoff.inputJsonSchema = result.schema;
|
package/dist/handoff.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handoff.mjs","sourceRoot":"","sources":["../src/handoff.ts"],"names":[],"mappings":"OAUO,EAAE,kBAAkB,EAAE,SAAS,EAAE;OAEjC,EAAE,kBAAkB,EAAE;OACtB,EAAE,+BAA+B,EAAE;OACnC,EAAE,qBAAqB,EAAE;OACzB,MAAM;AA8Bb;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAChC,KAA+B;IAE/B,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;AACnD,CAAC;AAED;;;;;GAKG;AACH,SAAS,sBAAsB,CAC7B,KAA+B;IAE/B,OAAO,eAAe,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;AACzD,CAAC;AAED;;;;;GAKG;AACH,SAAS,6BAA6B,CAGpC,KAA+B;IAC/B,OAAO,kBAAkB,KAAK,CAAC,IAAI,iCACjC,KAAK,CAAC,kBAAkB,IAAI,EAC9B,EAAE,CAAC;AACL,CAAC;
|
|
1
|
+
{"version":3,"file":"handoff.mjs","sourceRoot":"","sources":["../src/handoff.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ export { Computer } from './computer';
|
|
|
4
4
|
export { AgentsError, GuardrailExecutionError, InputGuardrailTripwireTriggered, MaxTurnsExceededError, ModelBehaviorError, OutputGuardrailTripwireTriggered, ToolCallError, UserError, SystemError, } from './errors';
|
|
5
5
|
export { RunAgentUpdatedStreamEvent, RunRawModelStreamEvent, RunItemStreamEvent, RunStreamEvent, } from './events';
|
|
6
6
|
export { defineOutputGuardrail, GuardrailFunctionOutput, InputGuardrail, InputGuardrailFunction, InputGuardrailFunctionArgs, InputGuardrailMetadata, InputGuardrailResult, OutputGuardrail, OutputGuardrailDefinition, OutputGuardrailFunction, OutputGuardrailFunctionArgs, OutputGuardrailMetadata, OutputGuardrailResult, } from './guardrail';
|
|
7
|
-
export { getHandoff, getTransferMessage, Handoff, handoff, HandoffInputData, } from './handoff';
|
|
7
|
+
export { getHandoff, getTransferMessage, Handoff, handoff, HandoffInputData, HandoffEnabledFunction, } from './handoff';
|
|
8
8
|
export { assistant, system, user } from './helpers/message';
|
|
9
9
|
export { extractAllTextOutput, RunHandoffCallItem, RunHandoffOutputItem, RunItem, RunMessageOutputItem, RunReasoningItem, RunToolApprovalItem, RunToolCallItem, RunToolCallOutputItem, } from './items';
|
|
10
10
|
export { AgentHooks } from './lifecycle';
|
|
@@ -18,7 +18,7 @@ export { RunResult, StreamedRunResult } from './result';
|
|
|
18
18
|
export { IndividualRunOptions, NonStreamRunOptions, run, RunConfig, Runner, StreamRunOptions, } from './run';
|
|
19
19
|
export { RunContext } from './runContext';
|
|
20
20
|
export { RunState } from './runState';
|
|
21
|
-
export { HostedTool, ComputerTool, computerTool, HostedMCPTool, hostedMcpTool, FunctionTool, FunctionToolResult, Tool, tool, ToolExecuteArgument, } from './tool';
|
|
21
|
+
export { HostedTool, ComputerTool, computerTool, HostedMCPTool, hostedMcpTool, FunctionTool, FunctionToolResult, Tool, tool, ToolExecuteArgument, ToolEnabledFunction, } from './tool';
|
|
22
22
|
export * from './tracing';
|
|
23
23
|
export { getGlobalTraceProvider, TraceProvider } from './tracing/provider';
|
|
24
24
|
export type { AgentInputItem, AgentOutputItem, AssistantMessageItem, HostedToolCallItem, ComputerCallResultItem, ComputerUseCallItem, FunctionCallItem, FunctionCallResultItem, JsonSchemaDefinition, ReasoningItem, ResponseStreamEvent, SystemMessageItem, TextOutput, UnknownContext, UnknownItem, UserMessageItem, StreamEvent, StreamEventTextStream, StreamEventResponseCompleted, StreamEventResponseStarted, StreamEventGenericItem, } from './types';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gDAA8C;AAC9C,sDAAuD;AAEvD,qDAAiE;AAAxD,6GAAA,mBAAmB,OAAA;AAC5B,oCAUiB;AATf,8FAAA,KAAK,OAAA;AAWP,sCAUkB;AAThB,qGAAA,WAAW,OAAA;AACX,iHAAA,uBAAuB,OAAA;AACvB,yHAAA,+BAA+B,OAAA;AAC/B,+GAAA,qBAAqB,OAAA;AACrB,4GAAA,kBAAkB,OAAA;AAClB,0HAAA,gCAAgC,OAAA;AAChC,uGAAA,aAAa,OAAA;AACb,mGAAA,SAAS,OAAA;AACT,qGAAA,WAAW,OAAA;AAEb,sCAKkB;AAJhB,oHAAA,0BAA0B,OAAA;AAC1B,gHAAA,sBAAsB,OAAA;AACtB,4GAAA,kBAAkB,OAAA;AAGpB,4CAcqB;AAbnB,kHAAA,qBAAqB,OAAA;AAcvB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gDAA8C;AAC9C,sDAAuD;AAEvD,qDAAiE;AAAxD,6GAAA,mBAAmB,OAAA;AAC5B,oCAUiB;AATf,8FAAA,KAAK,OAAA;AAWP,sCAUkB;AAThB,qGAAA,WAAW,OAAA;AACX,iHAAA,uBAAuB,OAAA;AACvB,yHAAA,+BAA+B,OAAA;AAC/B,+GAAA,qBAAqB,OAAA;AACrB,4GAAA,kBAAkB,OAAA;AAClB,0HAAA,gCAAgC,OAAA;AAChC,uGAAA,aAAa,OAAA;AACb,mGAAA,SAAS,OAAA;AACT,qGAAA,WAAW,OAAA;AAEb,sCAKkB;AAJhB,oHAAA,0BAA0B,OAAA;AAC1B,gHAAA,sBAAsB,OAAA;AACtB,4GAAA,kBAAkB,OAAA;AAGpB,4CAcqB;AAbnB,kHAAA,qBAAqB,OAAA;AAcvB,wCAOmB;AANjB,qGAAA,UAAU,OAAA;AACV,6GAAA,kBAAkB,OAAA;AAClB,kGAAA,OAAO,OAAA;AACP,kGAAA,OAAO,OAAA;AAIT,gDAA4D;AAAnD,oGAAA,SAAS,OAAA;AAAE,iGAAA,MAAM,OAAA;AAAE,+FAAA,IAAI,OAAA;AAChC,oCAUiB;AATf,6GAAA,oBAAoB,OAAA;AACpB,2GAAA,kBAAkB,OAAA;AAClB,6GAAA,oBAAoB,OAAA;AAEpB,6GAAA,oBAAoB,OAAA;AACpB,yGAAA,gBAAgB,OAAA;AAChB,4GAAA,mBAAmB,OAAA;AACnB,wGAAA,eAAe,OAAA;AACf,8GAAA,qBAAqB,OAAA;AAEvB,4CAAyC;AAAhC,uGAAA,UAAU,OAAA;AACnB,sCAAqC;AAA5B,mGAAA,SAAS,OAAA;AAClB,gCASe;AARb,qGAAA,cAAc,OAAA;AACd,iHAAA,0BAA0B,OAAA;AAC1B,wGAAA,iBAAiB,OAAA;AAEjB,qGAAA,cAAc,OAAA;AACd,8GAAA,uBAAuB,OAAA;AACvB,mGAAA,YAAY,OAAA;AAGd,wCAKmB;AADjB,oHAAA,yBAAyB,OAAA;AAa3B,kDAMwB;AALtB,sIAAA,sCAAsC,OAAA;AACtC,6HAAA,6BAA6B,OAAA;AAC7B,+GAAA,eAAe,OAAA;AACf,uHAAA,uBAAuB,OAAA;AACvB,6GAAA,aAAa,OAAA;AAEf,4CAAsD;AAA7C,oHAAA,uBAAuB,OAAA;AAChC,sCAAwD;AAA/C,mGAAA,SAAS,OAAA;AAAE,2GAAA,iBAAiB,OAAA;AACrC,gCAOe;AAJb,0FAAA,GAAG,OAAA;AAEH,6FAAA,MAAM,OAAA;AAGR,8CAA0C;AAAjC,wGAAA,UAAU,OAAA;AACnB,0CAAsC;AAA7B,oGAAA,QAAQ,OAAA;AACjB,kCAYgB;AATd,oGAAA,YAAY,OAAA;AAEZ,qGAAA,aAAa,OAAA;AAIb,4FAAA,IAAI,OAAA;AAIN,qDAA0B;AAC1B,kDAA2E;AAAlE,kHAAA,sBAAsB,OAAA;AAAE,yGAAA,aAAa,OAAA;AAyB9C,oCAAgC;AAAvB,8FAAA,KAAK,OAAA;AAEd;;;GAGG;AACH,gEAA6C;AAE7C;;;;;GAKG;AACH,IAAA,2BAAiB,EAAC,IAAA,4BAAgB,GAAE,CAAC,CAAC"}
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"OAAO,EAAE,iBAAiB,EAAE;OACrB,EAAE,gBAAgB,EAAE;OAEpB,EAAE,mBAAmB,EAAE,MAAM,4BAA4B;OACzD,EACL,KAAK,GASN;OAEM,EACL,WAAW,EACX,uBAAuB,EACvB,+BAA+B,EAC/B,qBAAqB,EACrB,kBAAkB,EAClB,gCAAgC,EAChC,aAAa,EACb,SAAS,EACT,WAAW,GACZ;OACM,EACL,0BAA0B,EAC1B,sBAAsB,EACtB,kBAAkB,GAEnB;OACM,EACL,qBAAqB,GAatB;OACM,EACL,UAAU,EACV,kBAAkB,EAClB,OAAO,EACP,OAAO,
|
|
1
|
+
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"OAAO,EAAE,iBAAiB,EAAE;OACrB,EAAE,gBAAgB,EAAE;OAEpB,EAAE,mBAAmB,EAAE,MAAM,4BAA4B;OACzD,EACL,KAAK,GASN;OAEM,EACL,WAAW,EACX,uBAAuB,EACvB,+BAA+B,EAC/B,qBAAqB,EACrB,kBAAkB,EAClB,gCAAgC,EAChC,aAAa,EACb,SAAS,EACT,WAAW,GACZ;OACM,EACL,0BAA0B,EAC1B,sBAAsB,EACtB,kBAAkB,GAEnB;OACM,EACL,qBAAqB,GAatB;OACM,EACL,UAAU,EACV,kBAAkB,EAClB,OAAO,EACP,OAAO,GAGR;OACM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE;OAC3B,EACL,oBAAoB,EACpB,kBAAkB,EAClB,oBAAoB,EAEpB,oBAAoB,EACpB,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,qBAAqB,GACtB;OACM,EAAE,UAAU,EAAE;OACd,EAAE,SAAS,EAAE;OACb,EACL,cAAc,EACd,0BAA0B,EAC1B,iBAAiB,EAEjB,cAAc,EACd,uBAAuB,EACvB,YAAY,GAEb;OACM,EAIL,yBAAyB,GAC1B;OAYM,EACL,sCAAsC,EACtC,6BAA6B,EAC7B,eAAe,EACf,uBAAuB,EACvB,aAAa,GACd;OACM,EAAE,uBAAuB,EAAE;OAC3B,EAAE,SAAS,EAAE,iBAAiB,EAAE;OAChC,EAGL,GAAG,EAEH,MAAM,GAEP;OACM,EAAE,UAAU,EAAE;OACd,EAAE,QAAQ,EAAE;OACZ,EAGL,YAAY,EAEZ,aAAa,EAIb,IAAI,GAGL;;OAEM,EAAE,sBAAsB,EAAE,aAAa,EAAE;OAyBzC,EAAE,KAAK,EAAE;OAMT,KAAK,QAAQ;AAEpB;;;;;GAKG;AACH,iBAAiB,CAAC,gBAAgB,EAAE,CAAC,CAAC"}
|
package/dist/metadata.js
CHANGED
|
@@ -4,9 +4,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
4
4
|
exports.METADATA = void 0;
|
|
5
5
|
exports.METADATA = {
|
|
6
6
|
"name": "@openai/agents-core",
|
|
7
|
-
"version": "0.1.
|
|
7
|
+
"version": "0.1.8",
|
|
8
8
|
"versions": {
|
|
9
|
-
"@openai/agents-core": "0.1.
|
|
9
|
+
"@openai/agents-core": "0.1.8",
|
|
10
10
|
"openai": "^5.20.2"
|
|
11
11
|
}
|
|
12
12
|
};
|
package/dist/metadata.mjs
CHANGED
package/dist/run.js
CHANGED
|
@@ -10,7 +10,6 @@ exports.selectModel = selectModel;
|
|
|
10
10
|
exports.run = run;
|
|
11
11
|
const agent_1 = require("./agent.js");
|
|
12
12
|
const guardrail_1 = require("./guardrail.js");
|
|
13
|
-
const handoff_1 = require("./handoff.js");
|
|
14
13
|
const providers_1 = require("./providers.js");
|
|
15
14
|
const runContext_1 = require("./runContext.js");
|
|
16
15
|
const result_1 = require("./result.js");
|
|
@@ -116,12 +115,7 @@ class Runner extends lifecycle_1.RunHooks {
|
|
|
116
115
|
continue;
|
|
117
116
|
}
|
|
118
117
|
if (state._currentStep.type === 'next_step_run_again') {
|
|
119
|
-
const handoffs =
|
|
120
|
-
if (state._currentAgent.handoffs) {
|
|
121
|
-
// While this array usually must not be undefined,
|
|
122
|
-
// we've added this check to prevent unexpected runtime errors like https://github.com/openai/openai-agents-js/issues/138
|
|
123
|
-
handoffs.push(...state._currentAgent.handoffs.map(handoff_1.getHandoff));
|
|
124
|
-
}
|
|
118
|
+
const handoffs = await state._currentAgent.getEnabledHandoffs(state._context);
|
|
125
119
|
if (!state._currentAgentSpan) {
|
|
126
120
|
const handoffNames = handoffs.map((h) => h.agentName);
|
|
127
121
|
state._currentAgentSpan = (0, tracing_1.createAgentSpan)({
|
|
@@ -320,7 +314,7 @@ class Runner extends lifecycle_1.RunHooks {
|
|
|
320
314
|
try {
|
|
321
315
|
while (true) {
|
|
322
316
|
const currentAgent = result.state._currentAgent;
|
|
323
|
-
const handoffs = currentAgent.
|
|
317
|
+
const handoffs = await currentAgent.getEnabledHandoffs(result.state._context);
|
|
324
318
|
const tools = await currentAgent.getAllTools(result.state._context);
|
|
325
319
|
const serializedTools = tools.map((t) => (0, serialize_1.serializeTool)(t));
|
|
326
320
|
const serializedHandoffs = handoffs.map((h) => (0, serialize_1.serializeHandoff)(h));
|
|
@@ -426,8 +420,16 @@ class Runner extends lifecycle_1.RunHooks {
|
|
|
426
420
|
result.state._modelResponses.push(result.state._lastTurnResponse);
|
|
427
421
|
const processedResponse = (0, runImplementation_1.processModelResponse)(result.state._lastTurnResponse, currentAgent, tools, handoffs);
|
|
428
422
|
result.state._lastProcessedResponse = processedResponse;
|
|
423
|
+
// Record the items emitted directly from the model response so we do not
|
|
424
|
+
// stream them again after tools and other side effects finish.
|
|
425
|
+
const preToolItems = new Set(processedResponse.newItems);
|
|
426
|
+
if (preToolItems.size > 0) {
|
|
427
|
+
(0, runImplementation_1.streamStepItemsToRunResult)(result, processedResponse.newItems);
|
|
428
|
+
}
|
|
429
429
|
const turnResult = await (0, runImplementation_1.executeToolsAndSideEffects)(currentAgent, result.state._originalInput, result.state._generatedItems, result.state._lastTurnResponse, result.state._lastProcessedResponse, this, result.state);
|
|
430
|
-
(0, runImplementation_1.addStepToRunResult)(result, turnResult
|
|
430
|
+
(0, runImplementation_1.addStepToRunResult)(result, turnResult, {
|
|
431
|
+
skipItems: preToolItems,
|
|
432
|
+
});
|
|
431
433
|
result.state._toolUseTracker.addToolUse(currentAgent, processedResponse.toolsUsed);
|
|
432
434
|
result.state._originalInput = turnResult.originalInput;
|
|
433
435
|
result.state._generatedItems = turnResult.generatedItems;
|