ai 6.0.134 → 6.0.136

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.
@@ -5,14 +5,7 @@ import { StreamTextTransform } from '../generate-text/stream-text';
5
5
  import { StreamTextResult } from '../generate-text/stream-text-result';
6
6
  import { ToolSet } from '../generate-text/tool-set';
7
7
  import { TimeoutConfiguration } from '../prompt/call-settings';
8
- import type {
9
- ToolLoopAgentOnFinishCallback,
10
- ToolLoopAgentOnStartCallback,
11
- ToolLoopAgentOnStepFinishCallback,
12
- ToolLoopAgentOnStepStartCallback,
13
- ToolLoopAgentOnToolCallFinishCallback,
14
- ToolLoopAgentOnToolCallStartCallback,
15
- } from './tool-loop-agent-settings';
8
+ import type { ToolLoopAgentOnStepFinishCallback } from './tool-loop-agent-settings';
16
9
 
17
10
  /**
18
11
  * Parameters for calling an agent.
@@ -64,35 +57,10 @@ export type AgentCallParameters<CALL_OPTIONS, TOOLS extends ToolSet = {}> = ([
64
57
  */
65
58
  timeout?: TimeoutConfiguration;
66
59
 
67
- /**
68
- * Callback that is called when the agent operation begins, before any LLM calls.
69
- */
70
- experimental_onStart?: ToolLoopAgentOnStartCallback<TOOLS>;
71
-
72
- /**
73
- * Callback that is called when a step (LLM call) begins, before the provider is called.
74
- */
75
- experimental_onStepStart?: ToolLoopAgentOnStepStartCallback<TOOLS>;
76
-
77
- /**
78
- * Callback that is called before each tool execution begins.
79
- */
80
- experimental_onToolCallStart?: ToolLoopAgentOnToolCallStartCallback<TOOLS>;
81
-
82
- /**
83
- * Callback that is called after each tool execution completes.
84
- */
85
- experimental_onToolCallFinish?: ToolLoopAgentOnToolCallFinishCallback<TOOLS>;
86
-
87
60
  /**
88
61
  * Callback that is called when each step (LLM call) is finished, including intermediate steps.
89
62
  */
90
63
  onStepFinish?: ToolLoopAgentOnStepFinishCallback<TOOLS>;
91
-
92
- /**
93
- * Callback that is called when all steps are finished and the response is complete.
94
- */
95
- onFinish?: ToolLoopAgentOnFinishCallback<TOOLS>;
96
64
  };
97
65
 
98
66
  /**
@@ -5,11 +5,7 @@ export {
5
5
  } from './agent';
6
6
  export {
7
7
  type ToolLoopAgentOnFinishCallback,
8
- type ToolLoopAgentOnStartCallback,
9
8
  type ToolLoopAgentOnStepFinishCallback,
10
- type ToolLoopAgentOnStepStartCallback,
11
- type ToolLoopAgentOnToolCallFinishCallback,
12
- type ToolLoopAgentOnToolCallStartCallback,
13
9
  type ToolLoopAgentSettings,
14
10
 
15
11
  /**
@@ -6,11 +6,7 @@ import {
6
6
  } from '@ai-sdk/provider-utils';
7
7
  import type {
8
8
  OnFinishEvent,
9
- OnStartEvent,
10
9
  OnStepFinishEvent,
11
- OnStepStartEvent,
12
- OnToolCallFinishEvent,
13
- OnToolCallStartEvent,
14
10
  } from '../generate-text/callback-events';
15
11
  import { Output } from '../generate-text/output';
16
12
  import { PrepareStepFunction } from '../generate-text/prepare-step';
@@ -24,24 +20,6 @@ import { LanguageModel, ToolChoice } from '../types/language-model';
24
20
  import { DownloadFunction } from '../util/download/download-function';
25
21
  import { AgentCallParameters } from './agent';
26
22
 
27
- export type ToolLoopAgentOnStartCallback<
28
- TOOLS extends ToolSet = ToolSet,
29
- OUTPUT extends Output = Output,
30
- > = (event: OnStartEvent<TOOLS, OUTPUT>) => PromiseLike<void> | void;
31
-
32
- export type ToolLoopAgentOnStepStartCallback<
33
- TOOLS extends ToolSet = ToolSet,
34
- OUTPUT extends Output = Output,
35
- > = (event: OnStepStartEvent<TOOLS, OUTPUT>) => PromiseLike<void> | void;
36
-
37
- export type ToolLoopAgentOnToolCallStartCallback<
38
- TOOLS extends ToolSet = ToolSet,
39
- > = (event: OnToolCallStartEvent<TOOLS>) => PromiseLike<void> | void;
40
-
41
- export type ToolLoopAgentOnToolCallFinishCallback<
42
- TOOLS extends ToolSet = ToolSet,
43
- > = (event: OnToolCallFinishEvent<TOOLS>) => PromiseLike<void> | void;
44
-
45
23
  export type ToolLoopAgentOnStepFinishCallback<TOOLS extends ToolSet = {}> = (
46
24
  stepResult: OnStepFinishEvent<TOOLS>,
47
25
  ) => Promise<void> | void;
@@ -121,33 +99,6 @@ export type ToolLoopAgentSettings<
121
99
  */
122
100
  experimental_repairToolCall?: ToolCallRepairFunction<NoInfer<TOOLS>>;
123
101
 
124
- /**
125
- * Callback that is called when the agent operation begins, before any LLM calls.
126
- */
127
- experimental_onStart?: ToolLoopAgentOnStartCallback<NoInfer<TOOLS>, OUTPUT>;
128
-
129
- /**
130
- * Callback that is called when a step (LLM call) begins, before the provider is called.
131
- */
132
- experimental_onStepStart?: ToolLoopAgentOnStepStartCallback<
133
- NoInfer<TOOLS>,
134
- OUTPUT
135
- >;
136
-
137
- /**
138
- * Callback that is called before each tool execution begins.
139
- */
140
- experimental_onToolCallStart?: ToolLoopAgentOnToolCallStartCallback<
141
- NoInfer<TOOLS>
142
- >;
143
-
144
- /**
145
- * Callback that is called after each tool execution completes.
146
- */
147
- experimental_onToolCallFinish?: ToolLoopAgentOnToolCallFinishCallback<
148
- NoInfer<TOOLS>
149
- >;
150
-
151
102
  /**
152
103
  * Callback that is called when each step (LLM call) is finished, including intermediate steps.
153
104
  */
@@ -1,13 +1,17 @@
1
1
  import { generateText } from '../generate-text/generate-text';
2
2
  import { GenerateTextResult } from '../generate-text/generate-text-result';
3
3
  import { Output } from '../generate-text/output';
4
+ import { StepResult } from '../generate-text/step-result';
4
5
  import { stepCountIs } from '../generate-text/stop-condition';
5
6
  import { streamText } from '../generate-text/stream-text';
6
7
  import { StreamTextResult } from '../generate-text/stream-text-result';
7
8
  import { ToolSet } from '../generate-text/tool-set';
8
9
  import { Prompt } from '../prompt';
9
10
  import { Agent, AgentCallParameters, AgentStreamParameters } from './agent';
10
- import { ToolLoopAgentSettings } from './tool-loop-agent-settings';
11
+ import {
12
+ ToolLoopAgentOnStepFinishCallback,
13
+ ToolLoopAgentSettings,
14
+ } from './tool-loop-agent-settings';
11
15
 
12
16
  /**
13
17
  * A tool loop agent is an agent that runs tools in a loop. In each step,
@@ -54,29 +58,14 @@ export class ToolLoopAgent<
54
58
  }): Promise<
55
59
  Omit<
56
60
  ToolLoopAgentSettings<CALL_OPTIONS, TOOLS, OUTPUT>,
57
- | 'prepareCall'
58
- | 'instructions'
59
- | 'experimental_onStart'
60
- | 'experimental_onStepStart'
61
- | 'experimental_onToolCallStart'
62
- | 'experimental_onToolCallFinish'
63
- | 'onStepFinish'
64
- | 'onFinish'
61
+ 'prepareCall' | 'instructions' | 'onStepFinish'
65
62
  > &
66
63
  Prompt
67
64
  > {
68
- const {
69
- experimental_onStart: _settingsOnStart,
70
- experimental_onStepStart: _settingsOnStepStart,
71
- experimental_onToolCallStart: _settingsOnToolCallStart,
72
- experimental_onToolCallFinish: _settingsOnToolCallFinish,
73
- onStepFinish: _settingsOnStepFinish,
74
- onFinish: _settingsOnFinish,
75
- ...settingsWithoutCallbacks
76
- } = this.settings;
77
-
65
+ const { onStepFinish: _settingsOnStepFinish, ...settingsWithoutCallback } =
66
+ this.settings;
78
67
  const baseCallArgs = {
79
- ...settingsWithoutCallbacks,
68
+ ...settingsWithoutCallback,
80
69
  stopWhen: this.settings.stopWhen ?? stepCountIs(20),
81
70
  ...options,
82
71
  };
@@ -100,17 +89,19 @@ export class ToolLoopAgent<
100
89
  };
101
90
  }
102
91
 
103
- private mergeCallbacks<T extends (event: any) => PromiseLike<void> | void>(
104
- settingsCallback: T | undefined,
105
- methodCallback: T | undefined,
106
- ): T | undefined {
107
- if (methodCallback && settingsCallback) {
108
- return (async (event: Parameters<T>[0]) => {
109
- await settingsCallback(event);
110
- await methodCallback(event);
111
- }) as unknown as T;
92
+ private mergeOnStepFinishCallbacks(
93
+ methodCallback: ToolLoopAgentOnStepFinishCallback<TOOLS> | undefined,
94
+ ): ToolLoopAgentOnStepFinishCallback<TOOLS> | undefined {
95
+ const constructorCallback = this.settings.onStepFinish;
96
+
97
+ if (methodCallback && constructorCallback) {
98
+ return async (stepResult: StepResult<TOOLS>) => {
99
+ await constructorCallback(stepResult);
100
+ await methodCallback(stepResult);
101
+ };
112
102
  }
113
- return methodCallback ?? settingsCallback;
103
+
104
+ return methodCallback ?? constructorCallback;
114
105
  }
115
106
 
116
107
  /**
@@ -119,12 +110,7 @@ export class ToolLoopAgent<
119
110
  async generate({
120
111
  abortSignal,
121
112
  timeout,
122
- experimental_onStart,
123
- experimental_onStepStart,
124
- experimental_onToolCallStart,
125
- experimental_onToolCallFinish,
126
113
  onStepFinish,
127
- onFinish,
128
114
  ...options
129
115
  }: AgentCallParameters<CALL_OPTIONS, TOOLS>): Promise<
130
116
  GenerateTextResult<TOOLS, OUTPUT>
@@ -133,27 +119,7 @@ export class ToolLoopAgent<
133
119
  ...(await this.prepareCall(options)),
134
120
  abortSignal,
135
121
  timeout,
136
- experimental_onStart: this.mergeCallbacks(
137
- this.settings.experimental_onStart,
138
- experimental_onStart,
139
- ),
140
- experimental_onStepStart: this.mergeCallbacks(
141
- this.settings.experimental_onStepStart,
142
- experimental_onStepStart,
143
- ),
144
- experimental_onToolCallStart: this.mergeCallbacks(
145
- this.settings.experimental_onToolCallStart,
146
- experimental_onToolCallStart,
147
- ),
148
- experimental_onToolCallFinish: this.mergeCallbacks(
149
- this.settings.experimental_onToolCallFinish,
150
- experimental_onToolCallFinish,
151
- ),
152
- onStepFinish: this.mergeCallbacks(
153
- this.settings.onStepFinish,
154
- onStepFinish,
155
- ),
156
- onFinish: this.mergeCallbacks(this.settings.onFinish, onFinish),
122
+ onStepFinish: this.mergeOnStepFinishCallbacks(onStepFinish),
157
123
  });
158
124
  }
159
125
 
@@ -164,12 +130,7 @@ export class ToolLoopAgent<
164
130
  abortSignal,
165
131
  timeout,
166
132
  experimental_transform,
167
- experimental_onStart,
168
- experimental_onStepStart,
169
- experimental_onToolCallStart,
170
- experimental_onToolCallFinish,
171
133
  onStepFinish,
172
- onFinish,
173
134
  ...options
174
135
  }: AgentStreamParameters<CALL_OPTIONS, TOOLS>): Promise<
175
136
  StreamTextResult<TOOLS, OUTPUT>
@@ -179,27 +140,7 @@ export class ToolLoopAgent<
179
140
  abortSignal,
180
141
  timeout,
181
142
  experimental_transform,
182
- experimental_onStart: this.mergeCallbacks(
183
- this.settings.experimental_onStart,
184
- experimental_onStart,
185
- ),
186
- experimental_onStepStart: this.mergeCallbacks(
187
- this.settings.experimental_onStepStart,
188
- experimental_onStepStart,
189
- ),
190
- experimental_onToolCallStart: this.mergeCallbacks(
191
- this.settings.experimental_onToolCallStart,
192
- experimental_onToolCallStart,
193
- ),
194
- experimental_onToolCallFinish: this.mergeCallbacks(
195
- this.settings.experimental_onToolCallFinish,
196
- experimental_onToolCallFinish,
197
- ),
198
- onStepFinish: this.mergeCallbacks(
199
- this.settings.onStepFinish,
200
- onStepFinish,
201
- ),
202
- onFinish: this.mergeCallbacks(this.settings.onFinish, onFinish),
143
+ onStepFinish: this.mergeOnStepFinishCallbacks(onStepFinish),
203
144
  });
204
145
  }
205
146
  }