@ai-sdk/workflow 1.0.0-canary.39 → 1.0.0-canary.41

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/CHANGELOG.md CHANGED
@@ -1,5 +1,29 @@
1
1
  # @ai-sdk/workflow
2
2
 
3
+ ## 1.0.0-canary.41
4
+
5
+ ### Patch Changes
6
+
7
+ - 1d56275: feat(workflow): add `runtimeContext` and `toolsContext` to `WorkflowAgent`.
8
+
9
+ `runtimeContext` is shared agent state that flows through `prepareCall`, `prepareStep`, step results, and `onFinish`. `toolsContext` is a per-tool map; each tool receives its own validated entry as `context`, validated against `tool.contextSchema` when defined. The previous `experimental_context` option (and corresponding fields on related callbacks and option types) has been removed — use `runtimeContext` for shared state and `toolsContext` for per-tool values. Context values in `WorkflowAgent` should be serializable because they can cross workflow and step boundaries.
10
+
11
+ ## 1.0.0-canary.40
12
+
13
+ ### Patch Changes
14
+
15
+ - Updated dependencies [fd4f578]
16
+ - Updated dependencies [31f69de]
17
+ - Updated dependencies [7c71ac6]
18
+ - Updated dependencies [c0c8ca2]
19
+ - Updated dependencies [5faf71c]
20
+ - Updated dependencies [69254e0]
21
+ - Updated dependencies [3015fc3]
22
+ - Updated dependencies [eee1166]
23
+ - Updated dependencies [7dbf992]
24
+ - ai@7.0.0-canary.125
25
+ - @ai-sdk/provider-utils@5.0.0-canary.34
26
+
3
27
  ## 1.0.0-canary.39
4
28
 
5
29
  ### Patch Changes
package/dist/index.d.mts CHANGED
@@ -1,4 +1,5 @@
1
1
  import { LanguageModelV4, SharedV4ProviderOptions, LanguageModelV4CallOptions, LanguageModelV4Prompt, LanguageModelV4StreamPart } from '@ai-sdk/provider';
2
+ import { Context, HasRequiredKey, InferToolSetContext } from '@ai-sdk/provider-utils';
2
3
  import { ToolSet, LanguageModel, SystemModelMessage, ToolChoice, StopCondition, ActiveTools, LanguageModelResponseMetadata, LanguageModelUsage, FinishReason, ToolCallRepairFunction, StepResult, GenerateTextOnStepFinishCallback, ModelMessage, Experimental_LanguageModelStreamPart, UIMessage, UIMessageChunk, ChatTransport, PrepareSendMessagesRequest, PrepareReconnectToStreamRequest, ChatRequestOptions } from 'ai';
3
4
  export { Experimental_LanguageModelStreamPart as ModelCallStreamPart, Output, ToolCallRepairFunction } from 'ai';
4
5
 
@@ -18,11 +19,11 @@ type CompatibleLanguageModel = LanguageModelV4;
18
19
  * Alias for the AI SDK's GenerateTextOnStepFinishCallback, using
19
20
  * WorkflowAgent-consistent naming.
20
21
  */
21
- type WorkflowAgentOnStepFinishCallback<TTools extends ToolSet = ToolSet> = GenerateTextOnStepFinishCallback<TTools, any>;
22
+ type WorkflowAgentOnStepFinishCallback<TTools extends ToolSet = ToolSet, TRuntimeContext extends Context = Context> = GenerateTextOnStepFinishCallback<TTools, TRuntimeContext>;
22
23
  /**
23
24
  * Infer the type of the tools of a workflow agent.
24
25
  */
25
- type InferWorkflowAgentTools<WORKFLOW_AGENT> = WORKFLOW_AGENT extends WorkflowAgent<infer TOOLS> ? TOOLS : never;
26
+ type InferWorkflowAgentTools<WORKFLOW_AGENT> = WORKFLOW_AGENT extends WorkflowAgent<infer TOOLS, any> ? TOOLS : never;
26
27
  /**
27
28
  * Infer the UI message type of a workflow agent.
28
29
  */
@@ -52,6 +53,11 @@ interface OutputSpecification<OUTPUT, PARTIAL> {
52
53
  * Provider-specific options type. This is equivalent to SharedV4ProviderOptions from @ai-sdk/provider.
53
54
  */
54
55
  type ProviderOptions = SharedV4ProviderOptions;
56
+ type WorkflowAgentToolsContextParameter<TTools extends ToolSet> = HasRequiredKey<InferToolSetContext<TTools>> extends true ? {
57
+ toolsContext: InferToolSetContext<TTools>;
58
+ } : {
59
+ toolsContext?: never;
60
+ };
55
61
  /**
56
62
  * Telemetry settings for observability.
57
63
  */
@@ -182,7 +188,7 @@ interface GenerationSettings {
182
188
  /**
183
189
  * Information passed to the prepareStep callback.
184
190
  */
185
- interface PrepareStepInfo<TTools extends ToolSet = ToolSet> {
191
+ interface PrepareStepInfo<TTools extends ToolSet = ToolSet, TRuntimeContext extends Context = Context> {
186
192
  /**
187
193
  * The current model configuration (string or function).
188
194
  * The function should return a LanguageModelV4 instance.
@@ -195,22 +201,31 @@ interface PrepareStepInfo<TTools extends ToolSet = ToolSet> {
195
201
  /**
196
202
  * All previous steps with their results.
197
203
  */
198
- steps: StepResult<TTools, any>[];
204
+ steps: StepResult<TTools, TRuntimeContext>[];
199
205
  /**
200
206
  * The messages that will be sent to the model.
201
207
  * This is the LanguageModelV4Prompt format used internally.
202
208
  */
203
209
  messages: LanguageModelV4Prompt;
204
210
  /**
205
- * The context passed via the experimental_context setting (experimental).
211
+ * The runtime context that flows through the agent loop.
212
+ * Treat the value as immutable; return a new `runtimeContext` from
213
+ * `prepareStep` to update it for the current and subsequent steps.
214
+ */
215
+ runtimeContext: TRuntimeContext;
216
+ /**
217
+ * Per-tool context, keyed by tool name. Each tool receives only its own
218
+ * validated entry as `context` during execution.
219
+ * Treat the value as immutable; return a new `toolsContext` from
220
+ * `prepareStep` to update it for the current and subsequent steps.
206
221
  */
207
- experimental_context: unknown;
222
+ toolsContext: InferToolSetContext<TTools>;
208
223
  }
209
224
  /**
210
225
  * Return type from the prepareStep callback.
211
226
  * All properties are optional - only return the ones you want to override.
212
227
  */
213
- interface PrepareStepResult extends Partial<GenerationSettings> {
228
+ interface PrepareStepResult<TTools extends ToolSet = ToolSet, TRuntimeContext extends Context = Context> extends Partial<GenerationSettings> {
214
229
  /**
215
230
  * Override the model for this step.
216
231
  */
@@ -234,20 +249,25 @@ interface PrepareStepResult extends Partial<GenerationSettings> {
234
249
  */
235
250
  activeTools?: string[];
236
251
  /**
237
- * Context that is passed into tool execution. Experimental.
238
- * Changing the context will affect the context in this step and all subsequent steps.
252
+ * Updated runtime context for the current and subsequent steps.
253
+ * Returning a value replaces the agent's runtime context.
239
254
  */
240
- experimental_context?: unknown;
255
+ runtimeContext?: TRuntimeContext;
256
+ /**
257
+ * Updated per-tool context for the current and subsequent steps.
258
+ * Returning a value replaces the agent's tools context.
259
+ */
260
+ toolsContext?: InferToolSetContext<TTools>;
241
261
  }
242
262
  /**
243
263
  * Callback function called before each step in the agent loop.
244
264
  * Use this to modify settings, manage context, or implement dynamic behavior.
245
265
  */
246
- type PrepareStepCallback<TTools extends ToolSet = ToolSet> = (info: PrepareStepInfo<TTools>) => PrepareStepResult | Promise<PrepareStepResult>;
266
+ type PrepareStepCallback<TTools extends ToolSet = ToolSet, TRuntimeContext extends Context = Context> = (info: PrepareStepInfo<TTools, TRuntimeContext>) => PrepareStepResult<TTools, TRuntimeContext> | undefined | Promise<PrepareStepResult<TTools, TRuntimeContext> | undefined>;
247
267
  /**
248
268
  * Options passed to the prepareCall callback.
249
269
  */
250
- interface PrepareCallOptions<TTools extends ToolSet = ToolSet> extends Partial<GenerationSettings> {
270
+ interface PrepareCallOptions<TTools extends ToolSet = ToolSet, TRuntimeContext extends Context = Context> extends Partial<GenerationSettings> {
251
271
  model: LanguageModel;
252
272
  tools: TTools;
253
273
  instructions?: string | SystemModelMessage | Array<SystemModelMessage>;
@@ -257,7 +277,15 @@ interface PrepareCallOptions<TTools extends ToolSet = ToolSet> extends Partial<G
257
277
  * @deprecated Use `telemetry` instead. This alias will be removed in a future major release.
258
278
  */
259
279
  experimental_telemetry?: TelemetryOptions;
260
- experimental_context?: unknown;
280
+ /**
281
+ * Runtime context that flows through the agent loop.
282
+ * Treat as immutable; return a new `runtimeContext` to update it for the call.
283
+ */
284
+ runtimeContext?: TRuntimeContext;
285
+ /**
286
+ * Per-tool context, keyed by tool name.
287
+ */
288
+ toolsContext?: InferToolSetContext<TTools>;
261
289
  messages: ModelMessage[];
262
290
  }
263
291
  /**
@@ -266,15 +294,15 @@ interface PrepareCallOptions<TTools extends ToolSet = ToolSet> extends Partial<G
266
294
  * Note: `tools` cannot be overridden via prepareCall because they are
267
295
  * bound at construction time for type safety.
268
296
  */
269
- type PrepareCallResult<TTools extends ToolSet = ToolSet> = Partial<Omit<PrepareCallOptions<TTools>, 'tools'>>;
297
+ type PrepareCallResult<TTools extends ToolSet = ToolSet, TRuntimeContext extends Context = Context> = Partial<Omit<PrepareCallOptions<TTools, TRuntimeContext>, 'tools'>>;
270
298
  /**
271
299
  * Callback called once before the agent loop starts to transform call parameters.
272
300
  */
273
- type PrepareCallCallback<TTools extends ToolSet = ToolSet> = (options: PrepareCallOptions<TTools>) => PrepareCallResult<TTools> | Promise<PrepareCallResult<TTools>>;
301
+ type PrepareCallCallback<TTools extends ToolSet = ToolSet, TRuntimeContext extends Context = Context> = (options: PrepareCallOptions<TTools, TRuntimeContext>) => PrepareCallResult<TTools, TRuntimeContext> | Promise<PrepareCallResult<TTools, TRuntimeContext>>;
274
302
  /**
275
303
  * Configuration options for creating a {@link WorkflowAgent} instance.
276
304
  */
277
- interface WorkflowAgentOptions<TTools extends ToolSet = ToolSet> extends GenerationSettings {
305
+ type WorkflowAgentOptions<TTools extends ToolSet = ToolSet, TRuntimeContext extends Context = Context> = GenerationSettings & WorkflowAgentToolsContextParameter<TTools> & {
278
306
  /**
279
307
  * The id of the agent.
280
308
  */
@@ -317,13 +345,19 @@ interface WorkflowAgentOptions<TTools extends ToolSet = ToolSet> extends Generat
317
345
  */
318
346
  experimental_telemetry?: TelemetryOptions;
319
347
  /**
320
- * Default context that is passed into tool execution for every stream call on this agent.
348
+ * Default runtime context for every stream call on this agent.
349
+ *
350
+ * The runtime context flows through `prepareStep`, lifecycle callbacks,
351
+ * and step results.
352
+ * Treat as immutable; return a new `runtimeContext` from `prepareStep`
353
+ * to update it between steps.
321
354
  *
322
- * Per-stream `experimental_context` values passed to `stream()` override this default.
323
- * Experimental (can break in patch releases).
324
- * @default undefined
355
+ * In workflow context, keep values serializable so they can cross workflow
356
+ * and step boundaries.
357
+ *
358
+ * Per-stream `runtimeContext` values passed to `stream()` override this default.
325
359
  */
326
- experimental_context?: unknown;
360
+ runtimeContext?: TRuntimeContext;
327
361
  /**
328
362
  * Default stop condition for the agent loop. When the condition is an array,
329
363
  * any of the conditions can be met to stop the generation.
@@ -364,46 +398,46 @@ interface WorkflowAgentOptions<TTools extends ToolSet = ToolSet> extends Generat
364
398
  *
365
399
  * Per-stream `prepareStep` values passed to `stream()` override this default.
366
400
  */
367
- prepareStep?: PrepareStepCallback<TTools>;
401
+ prepareStep?: PrepareStepCallback<TTools, TRuntimeContext>;
368
402
  /**
369
403
  * Callback function to be called after each step completes.
370
404
  */
371
- onStepFinish?: WorkflowAgentOnStepFinishCallback<ToolSet>;
405
+ onStepFinish?: WorkflowAgentOnStepFinishCallback<TTools, TRuntimeContext>;
372
406
  /**
373
407
  * Callback that is called when the LLM response and all request tool executions are finished.
374
408
  */
375
- onFinish?: WorkflowAgentOnFinishCallback<ToolSet>;
409
+ onFinish?: WorkflowAgentOnFinishCallback<TTools, TRuntimeContext>;
376
410
  /**
377
411
  * Callback called when the agent starts streaming, before any LLM calls.
378
412
  */
379
- experimental_onStart?: WorkflowAgentOnStartCallback;
413
+ experimental_onStart?: WorkflowAgentOnStartCallback<TTools, TRuntimeContext>;
380
414
  /**
381
415
  * Callback called before each step (LLM call) begins.
382
416
  */
383
- experimental_onStepStart?: WorkflowAgentOnStepStartCallback;
417
+ experimental_onStepStart?: WorkflowAgentOnStepStartCallback<TTools, TRuntimeContext>;
384
418
  /**
385
419
  * Callback called before a tool's execute function runs.
386
420
  */
387
- onToolExecutionStart?: WorkflowAgentOnToolExecutionStartCallback;
421
+ onToolExecutionStart?: WorkflowAgentOnToolExecutionStartCallback<TTools>;
388
422
  /**
389
423
  * Callback called after a tool execution completes.
390
424
  */
391
- onToolExecutionEnd?: WorkflowAgentOnToolExecutionEndCallback;
425
+ onToolExecutionEnd?: WorkflowAgentOnToolExecutionEndCallback<TTools>;
392
426
  /**
393
427
  * Prepare the parameters for the stream call.
394
428
  * Called once before the agent loop starts. Use this to transform
395
429
  * model, tools, instructions, or other settings based on runtime context.
396
430
  */
397
- prepareCall?: PrepareCallCallback<TTools>;
398
- }
431
+ prepareCall?: PrepareCallCallback<TTools, TRuntimeContext>;
432
+ };
399
433
  /**
400
434
  * Callback that is called when the LLM response and all request tool executions are finished.
401
435
  */
402
- type WorkflowAgentOnFinishCallback<TTools extends ToolSet = ToolSet, OUTPUT = never> = (event: {
436
+ type WorkflowAgentOnFinishCallback<TTools extends ToolSet = ToolSet, TRuntimeContext extends Context = Context, OUTPUT = never> = (event: {
403
437
  /**
404
438
  * Details for all steps.
405
439
  */
406
- readonly steps: StepResult<TTools, any>[];
440
+ readonly steps: StepResult<TTools, TRuntimeContext>[];
407
441
  /**
408
442
  * The final messages including all tool calls and results.
409
443
  */
@@ -421,9 +455,13 @@ type WorkflowAgentOnFinishCallback<TTools extends ToolSet = ToolSet, OUTPUT = ne
421
455
  */
422
456
  readonly totalUsage: LanguageModelUsage;
423
457
  /**
424
- * Context that is passed into tool execution.
458
+ * The runtime context at the end of the agent loop.
459
+ */
460
+ readonly runtimeContext: TRuntimeContext;
461
+ /**
462
+ * The per-tool context at the end of the agent loop.
425
463
  */
426
- readonly experimental_context: unknown;
464
+ readonly toolsContext: InferToolSetContext<TTools>;
427
465
  /**
428
466
  * The generated structured output. It uses the `output` specification.
429
467
  * Only available when `output` is specified.
@@ -448,16 +486,20 @@ type WorkflowAgentOnAbortCallback<TTools extends ToolSet = ToolSet> = (event: {
448
486
  /**
449
487
  * Callback that is called when the agent starts streaming, before any LLM calls.
450
488
  */
451
- type WorkflowAgentOnStartCallback = (event: {
489
+ type WorkflowAgentOnStartCallback<TTools extends ToolSet = ToolSet, TRuntimeContext extends Context = Context> = (event: {
452
490
  /** The model being used */
453
491
  readonly model: LanguageModel;
454
492
  /** The messages being sent */
455
493
  readonly messages: ModelMessage[];
494
+ /** Shared runtime context for this agent loop */
495
+ readonly runtimeContext: TRuntimeContext;
496
+ /** Per-tool context map for this agent loop */
497
+ readonly toolsContext: InferToolSetContext<TTools>;
456
498
  }) => PromiseLike<void> | void;
457
499
  /**
458
500
  * Callback that is called before each step (LLM call) begins.
459
501
  */
460
- type WorkflowAgentOnStepStartCallback<TTools extends ToolSet = ToolSet> = (event: {
502
+ type WorkflowAgentOnStepStartCallback<TTools extends ToolSet = ToolSet, TRuntimeContext extends Context = Context> = (event: {
461
503
  /** The current step number (0-based) */
462
504
  readonly stepNumber: number;
463
505
  /** The model being used for this step */
@@ -465,29 +507,41 @@ type WorkflowAgentOnStepStartCallback<TTools extends ToolSet = ToolSet> = (event
465
507
  /** The messages being sent for this step */
466
508
  readonly messages: ModelMessage[];
467
509
  /** Results from all previously finished steps */
468
- readonly steps: ReadonlyArray<StepResult<TTools, any>>;
510
+ readonly steps: ReadonlyArray<StepResult<TTools, TRuntimeContext>>;
511
+ /** Shared runtime context for this step */
512
+ readonly runtimeContext: TRuntimeContext;
513
+ /** Per-tool context map for this step */
514
+ readonly toolsContext: InferToolSetContext<TTools>;
469
515
  }) => PromiseLike<void> | void;
470
516
  /**
471
517
  * Callback that is called before a tool's execute function runs.
472
518
  */
473
- type WorkflowAgentOnToolExecutionStartCallback = (event: {
519
+ type WorkflowAgentOnToolExecutionStartCallback<TTools extends ToolSet = ToolSet> = (event: {
474
520
  /** The tool call being executed */
475
521
  readonly toolCall: ToolCall;
476
522
  /** The current step number (0-based) */
477
523
  readonly stepNumber: number;
524
+ /** Messages sent to the language model for the step that produced the call */
525
+ readonly messages: ModelMessage[];
526
+ /** Tool-specific context passed to the tool */
527
+ readonly toolContext: InferToolSetContext<TTools>[keyof InferToolSetContext<TTools>] | undefined;
478
528
  }) => PromiseLike<void> | void;
479
529
  /**
480
530
  * Callback that is called after a tool execution completes.
481
531
  * Uses a discriminated union pattern: check `success` to determine
482
532
  * whether `output` or `error` is available.
483
533
  */
484
- type WorkflowAgentOnToolExecutionEndCallback = (event: {
534
+ type WorkflowAgentOnToolExecutionEndCallback<TTools extends ToolSet = ToolSet> = (event: {
485
535
  /** The tool call that was executed */
486
536
  readonly toolCall: ToolCall;
487
537
  /** The current step number (0-based) */
488
538
  readonly stepNumber: number;
489
539
  /** Execution time in milliseconds */
490
540
  readonly durationMs: number;
541
+ /** Messages sent to the language model for the step that produced the call */
542
+ readonly messages: ModelMessage[];
543
+ /** Tool-specific context passed to the tool */
544
+ readonly toolContext: InferToolSetContext<TTools>[keyof InferToolSetContext<TTools>] | undefined;
491
545
  /** Whether the tool call succeeded */
492
546
  readonly success: true;
493
547
  /** The tool result */
@@ -500,6 +554,10 @@ type WorkflowAgentOnToolExecutionEndCallback = (event: {
500
554
  readonly stepNumber: number;
501
555
  /** Execution time in milliseconds */
502
556
  readonly durationMs: number;
557
+ /** Messages sent to the language model for the step that produced the call */
558
+ readonly messages: ModelMessage[];
559
+ /** Tool-specific context passed to the tool */
560
+ readonly toolContext: InferToolSetContext<TTools>[keyof InferToolSetContext<TTools>] | undefined;
503
561
  /** Whether the tool call succeeded */
504
562
  readonly success: false;
505
563
  /** The error that occurred */
@@ -509,7 +567,7 @@ type WorkflowAgentOnToolExecutionEndCallback = (event: {
509
567
  /**
510
568
  * Options for the {@link WorkflowAgent.stream} method.
511
569
  */
512
- type WorkflowAgentStreamOptions<TTools extends ToolSet = ToolSet, OUTPUT = never, PARTIAL_OUTPUT = never> = Partial<GenerationSettings> & ({
570
+ type WorkflowAgentStreamOptions<TTools extends ToolSet = ToolSet, TRuntimeContext extends Context = Context, OUTPUT = never, PARTIAL_OUTPUT = never> = Partial<GenerationSettings> & ({
513
571
  /**
514
572
  * A prompt. It can be either a text prompt or a list of messages.
515
573
  *
@@ -589,11 +647,28 @@ type WorkflowAgentStreamOptions<TTools extends ToolSet = ToolSet, OUTPUT = never
589
647
  */
590
648
  experimental_telemetry?: TelemetryOptions;
591
649
  /**
592
- * Context that is passed into tool execution.
593
- * Experimental (can break in patch releases).
594
- * @default undefined
650
+ * Runtime context that flows through the agent loop.
651
+ *
652
+ * Treat as immutable; return a new `runtimeContext` from `prepareStep`
653
+ * to update it between steps.
654
+ *
655
+ * In workflow context, keep values serializable so they can cross workflow
656
+ * and step boundaries.
657
+ *
658
+ * Overrides the constructor-level `runtimeContext` if provided.
659
+ */
660
+ runtimeContext?: TRuntimeContext;
661
+ /**
662
+ * Per-tool context, keyed by tool name. Each tool receives only its own
663
+ * validated entry as `context` during execution. Tools that declare a
664
+ * `contextSchema` validate their entry against the schema.
665
+ *
666
+ * In workflow context, keep values serializable so they can cross workflow
667
+ * and step boundaries.
668
+ *
669
+ * Overrides the constructor-level `toolsContext` if provided.
595
670
  */
596
- experimental_context?: unknown;
671
+ toolsContext?: InferToolSetContext<TTools>;
597
672
  /**
598
673
  * Optional specification for parsing structured outputs from the LLM response.
599
674
  * Use `Output.object({ schema })` for structured output or `Output.text()` for text output.
@@ -643,7 +718,7 @@ type WorkflowAgentStreamOptions<TTools extends ToolSet = ToolSet, OUTPUT = never
643
718
  /**
644
719
  * Callback function to be called after each step completes.
645
720
  */
646
- onStepFinish?: WorkflowAgentOnStepFinishCallback<TTools>;
721
+ onStepFinish?: WorkflowAgentOnStepFinishCallback<TTools, TRuntimeContext>;
647
722
  /**
648
723
  * Callback that is invoked when an error occurs during streaming.
649
724
  * You can use it to log errors.
@@ -653,7 +728,7 @@ type WorkflowAgentStreamOptions<TTools extends ToolSet = ToolSet, OUTPUT = never
653
728
  * Callback that is called when the LLM response and all request tool executions
654
729
  * (for tools that have an `execute` function) are finished.
655
730
  */
656
- onFinish?: WorkflowAgentOnFinishCallback<TTools, OUTPUT>;
731
+ onFinish?: WorkflowAgentOnFinishCallback<TTools, TRuntimeContext, OUTPUT>;
657
732
  /**
658
733
  * Callback that is called when the operation is aborted.
659
734
  */
@@ -661,19 +736,19 @@ type WorkflowAgentStreamOptions<TTools extends ToolSet = ToolSet, OUTPUT = never
661
736
  /**
662
737
  * Callback called when the agent starts streaming, before any LLM calls.
663
738
  */
664
- experimental_onStart?: WorkflowAgentOnStartCallback;
739
+ experimental_onStart?: WorkflowAgentOnStartCallback<TTools, TRuntimeContext>;
665
740
  /**
666
741
  * Callback called before each step (LLM call) begins.
667
742
  */
668
- experimental_onStepStart?: WorkflowAgentOnStepStartCallback;
743
+ experimental_onStepStart?: WorkflowAgentOnStepStartCallback<TTools, TRuntimeContext>;
669
744
  /**
670
745
  * Callback called before a tool's execute function runs.
671
746
  */
672
- onToolExecutionStart?: WorkflowAgentOnToolExecutionStartCallback;
747
+ onToolExecutionStart?: WorkflowAgentOnToolExecutionStartCallback<TTools>;
673
748
  /**
674
749
  * Callback called after a tool execution completes.
675
750
  */
676
- onToolExecutionEnd?: WorkflowAgentOnToolExecutionEndCallback;
751
+ onToolExecutionEnd?: WorkflowAgentOnToolExecutionEndCallback<TTools>;
677
752
  /**
678
753
  * Callback function called before each step in the agent loop.
679
754
  * Use this to modify settings, manage context, or inject messages dynamically.
@@ -692,7 +767,7 @@ type WorkflowAgentStreamOptions<TTools extends ToolSet = ToolSet, OUTPUT = never
692
767
  * }
693
768
  * ```
694
769
  */
695
- prepareStep?: PrepareStepCallback<TTools>;
770
+ prepareStep?: PrepareStepCallback<TTools, TRuntimeContext>;
696
771
  /**
697
772
  * Timeout in milliseconds for the stream operation.
698
773
  * When specified, creates an AbortSignal that will abort the operation after the given time.
@@ -808,7 +883,7 @@ interface WorkflowAgentStreamResult<TTools extends ToolSet = ToolSet, OUTPUT = n
808
883
  * });
809
884
  * ```
810
885
  */
811
- declare class WorkflowAgent<TBaseTools extends ToolSet = ToolSet> {
886
+ declare class WorkflowAgent<TBaseTools extends ToolSet = ToolSet, TRuntimeContext extends Context = Context> {
812
887
  /**
813
888
  * The id of the agent.
814
889
  */
@@ -822,7 +897,8 @@ declare class WorkflowAgent<TBaseTools extends ToolSet = ToolSet> {
822
897
  private generationSettings;
823
898
  private toolChoice?;
824
899
  private telemetry?;
825
- private experimentalContext;
900
+ private runtimeContext?;
901
+ private toolsContext?;
826
902
  private stopWhen?;
827
903
  private activeTools?;
828
904
  private output?;
@@ -836,9 +912,9 @@ declare class WorkflowAgent<TBaseTools extends ToolSet = ToolSet> {
836
912
  private constructorOnToolExecutionStart?;
837
913
  private constructorOnToolExecutionEnd?;
838
914
  private prepareCall?;
839
- constructor(options: WorkflowAgentOptions<TBaseTools>);
915
+ constructor(options: WorkflowAgentOptions<TBaseTools, TRuntimeContext>);
840
916
  generate(): void;
841
- stream<TTools extends TBaseTools = TBaseTools, OUTPUT = never, PARTIAL_OUTPUT = never>(options: WorkflowAgentStreamOptions<TTools, OUTPUT, PARTIAL_OUTPUT>): Promise<WorkflowAgentStreamResult<TTools, OUTPUT>>;
917
+ stream<TTools extends TBaseTools = TBaseTools, OUTPUT = never, PARTIAL_OUTPUT = never>(options: WorkflowAgentStreamOptions<TTools, TRuntimeContext, OUTPUT, PARTIAL_OUTPUT>): Promise<WorkflowAgentStreamResult<TTools, OUTPUT>>;
842
918
  }
843
919
 
844
920
  /**