ai 6.0.91 → 6.0.93

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/index.js CHANGED
@@ -1211,7 +1211,7 @@ var import_provider_utils3 = require("@ai-sdk/provider-utils");
1211
1211
  var import_provider_utils4 = require("@ai-sdk/provider-utils");
1212
1212
 
1213
1213
  // src/version.ts
1214
- var VERSION = true ? "6.0.91" : "0.0.0-test";
1214
+ var VERSION = true ? "6.0.93" : "0.0.0-test";
1215
1215
 
1216
1216
  // src/util/download/download.ts
1217
1217
  var download = async ({
@@ -2752,6 +2752,14 @@ function collectToolApprovals({
2752
2752
 
2753
2753
  // src/generate-text/execute-tool-call.ts
2754
2754
  var import_provider_utils10 = require("@ai-sdk/provider-utils");
2755
+
2756
+ // src/util/now.ts
2757
+ function now() {
2758
+ var _a21, _b;
2759
+ return (_b = (_a21 = globalThis == null ? void 0 : globalThis.performance) == null ? void 0 : _a21.now()) != null ? _b : Date.now();
2760
+ }
2761
+
2762
+ // src/generate-text/execute-tool-call.ts
2755
2763
  async function executeToolCall({
2756
2764
  toolCall,
2757
2765
  tools,
@@ -2760,7 +2768,11 @@ async function executeToolCall({
2760
2768
  messages,
2761
2769
  abortSignal,
2762
2770
  experimental_context,
2763
- onPreliminaryToolResult
2771
+ stepNumber,
2772
+ model,
2773
+ onPreliminaryToolResult,
2774
+ onToolCallStart,
2775
+ onToolCallFinish
2764
2776
  }) {
2765
2777
  const { toolName, toolCallId, input } = toolCall;
2766
2778
  const tool2 = tools == null ? void 0 : tools[toolName];
@@ -2786,6 +2798,20 @@ async function executeToolCall({
2786
2798
  tracer,
2787
2799
  fn: async (span) => {
2788
2800
  let output;
2801
+ try {
2802
+ await (onToolCallStart == null ? void 0 : onToolCallStart({
2803
+ stepNumber,
2804
+ model,
2805
+ toolCall,
2806
+ messages,
2807
+ abortSignal,
2808
+ functionId: telemetry == null ? void 0 : telemetry.functionId,
2809
+ metadata: telemetry == null ? void 0 : telemetry.metadata,
2810
+ experimental_context
2811
+ }));
2812
+ } catch (_ignored) {
2813
+ }
2814
+ const startTime = now();
2789
2815
  try {
2790
2816
  const stream = (0, import_provider_utils10.executeTool)({
2791
2817
  execute: tool2.execute.bind(tool2),
@@ -2810,6 +2836,23 @@ async function executeToolCall({
2810
2836
  }
2811
2837
  }
2812
2838
  } catch (error) {
2839
+ const durationMs2 = now() - startTime;
2840
+ try {
2841
+ await (onToolCallFinish == null ? void 0 : onToolCallFinish({
2842
+ stepNumber,
2843
+ model,
2844
+ toolCall,
2845
+ messages,
2846
+ abortSignal,
2847
+ success: false,
2848
+ error,
2849
+ durationMs: durationMs2,
2850
+ functionId: telemetry == null ? void 0 : telemetry.functionId,
2851
+ metadata: telemetry == null ? void 0 : telemetry.metadata,
2852
+ experimental_context
2853
+ }));
2854
+ } catch (_ignored) {
2855
+ }
2813
2856
  recordErrorOnSpan(span, error);
2814
2857
  return {
2815
2858
  type: "tool-error",
@@ -2821,6 +2864,23 @@ async function executeToolCall({
2821
2864
  ...toolCall.providerMetadata != null ? { providerMetadata: toolCall.providerMetadata } : {}
2822
2865
  };
2823
2866
  }
2867
+ const durationMs = now() - startTime;
2868
+ try {
2869
+ await (onToolCallFinish == null ? void 0 : onToolCallFinish({
2870
+ stepNumber,
2871
+ model,
2872
+ toolCall,
2873
+ messages,
2874
+ abortSignal,
2875
+ success: true,
2876
+ output,
2877
+ durationMs,
2878
+ functionId: telemetry == null ? void 0 : telemetry.functionId,
2879
+ metadata: telemetry == null ? void 0 : telemetry.metadata,
2880
+ experimental_context
2881
+ }));
2882
+ } catch (_ignored) {
2883
+ }
2824
2884
  try {
2825
2885
  span.setAttributes(
2826
2886
  await selectTelemetryAttributes({
@@ -3711,6 +3771,11 @@ async function doParseToolCall({
3711
3771
  // src/generate-text/step-result.ts
3712
3772
  var DefaultStepResult = class {
3713
3773
  constructor({
3774
+ stepNumber,
3775
+ model,
3776
+ functionId,
3777
+ metadata,
3778
+ experimental_context,
3714
3779
  content,
3715
3780
  finishReason,
3716
3781
  rawFinishReason,
@@ -3720,6 +3785,11 @@ var DefaultStepResult = class {
3720
3785
  response,
3721
3786
  providerMetadata
3722
3787
  }) {
3788
+ this.stepNumber = stepNumber;
3789
+ this.model = model;
3790
+ this.functionId = functionId;
3791
+ this.metadata = metadata;
3792
+ this.experimental_context = experimental_context;
3723
3793
  this.content = content;
3724
3794
  this.finishReason = finishReason;
3725
3795
  this.rawFinishReason = rawFinishReason;
@@ -3977,6 +4047,10 @@ async function generateText({
3977
4047
  experimental_context,
3978
4048
  experimental_include: include,
3979
4049
  _internal: { generateId: generateId2 = originalGenerateId } = {},
4050
+ experimental_onStart: onStart,
4051
+ experimental_onStepStart: onStepStart,
4052
+ experimental_onToolCallStart: onToolCallStart,
4053
+ experimental_onToolCallFinish: onToolCallFinish,
3980
4054
  onStepFinish,
3981
4055
  onFinish,
3982
4056
  ...settings
@@ -4011,6 +4085,37 @@ async function generateText({
4011
4085
  prompt,
4012
4086
  messages
4013
4087
  });
4088
+ try {
4089
+ await (onStart == null ? void 0 : onStart({
4090
+ model: { provider: model.provider, modelId: model.modelId },
4091
+ system,
4092
+ prompt,
4093
+ messages,
4094
+ tools,
4095
+ toolChoice,
4096
+ activeTools,
4097
+ maxOutputTokens: callSettings.maxOutputTokens,
4098
+ temperature: callSettings.temperature,
4099
+ topP: callSettings.topP,
4100
+ topK: callSettings.topK,
4101
+ presencePenalty: callSettings.presencePenalty,
4102
+ frequencyPenalty: callSettings.frequencyPenalty,
4103
+ stopSequences: callSettings.stopSequences,
4104
+ seed: callSettings.seed,
4105
+ maxRetries,
4106
+ timeout,
4107
+ headers,
4108
+ providerOptions,
4109
+ stopWhen,
4110
+ output,
4111
+ abortSignal,
4112
+ include,
4113
+ functionId: telemetry == null ? void 0 : telemetry.functionId,
4114
+ metadata: telemetry == null ? void 0 : telemetry.metadata,
4115
+ experimental_context
4116
+ }));
4117
+ } catch (_ignored) {
4118
+ }
4014
4119
  const tracer = getTracer(telemetry);
4015
4120
  try {
4016
4121
  return await recordSpan({
@@ -4034,7 +4139,7 @@ async function generateText({
4034
4139
  }),
4035
4140
  tracer,
4036
4141
  fn: async (span) => {
4037
- var _a21, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k;
4142
+ var _a21, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m;
4038
4143
  const initialMessages = initialPrompt.messages;
4039
4144
  const responseMessages = [];
4040
4145
  const { approvedToolApprovals, deniedToolApprovals } = collectToolApprovals({ messages: initialMessages });
@@ -4051,7 +4156,11 @@ async function generateText({
4051
4156
  telemetry,
4052
4157
  messages: initialMessages,
4053
4158
  abortSignal: mergedAbortSignal,
4054
- experimental_context
4159
+ experimental_context,
4160
+ stepNumber: 0,
4161
+ model: { provider: model.provider, modelId: model.modelId },
4162
+ onToolCallStart,
4163
+ onToolCallFinish
4055
4164
  });
4056
4165
  const toolContent = [];
4057
4166
  for (const output2 of toolOutputs) {
@@ -4140,11 +4249,44 @@ async function generateText({
4140
4249
  download: download2
4141
4250
  });
4142
4251
  experimental_context = (_d = prepareStepResult == null ? void 0 : prepareStepResult.experimental_context) != null ? _d : experimental_context;
4252
+ const stepActiveTools = (_e = prepareStepResult == null ? void 0 : prepareStepResult.activeTools) != null ? _e : activeTools;
4143
4253
  const { toolChoice: stepToolChoice, tools: stepTools } = await prepareToolsAndToolChoice({
4144
4254
  tools,
4145
- toolChoice: (_e = prepareStepResult == null ? void 0 : prepareStepResult.toolChoice) != null ? _e : toolChoice,
4146
- activeTools: (_f = prepareStepResult == null ? void 0 : prepareStepResult.activeTools) != null ? _f : activeTools
4255
+ toolChoice: (_f = prepareStepResult == null ? void 0 : prepareStepResult.toolChoice) != null ? _f : toolChoice,
4256
+ activeTools: stepActiveTools
4147
4257
  });
4258
+ const stepMessages = (_g = prepareStepResult == null ? void 0 : prepareStepResult.messages) != null ? _g : stepInputMessages;
4259
+ const stepSystem = (_h = prepareStepResult == null ? void 0 : prepareStepResult.system) != null ? _h : initialPrompt.system;
4260
+ const stepProviderOptions = mergeObjects(
4261
+ providerOptions,
4262
+ prepareStepResult == null ? void 0 : prepareStepResult.providerOptions
4263
+ );
4264
+ try {
4265
+ await (onStepStart == null ? void 0 : onStepStart({
4266
+ stepNumber: steps.length,
4267
+ model: {
4268
+ provider: stepModel.provider,
4269
+ modelId: stepModel.modelId
4270
+ },
4271
+ system: stepSystem,
4272
+ messages: stepMessages,
4273
+ tools,
4274
+ toolChoice: stepToolChoice,
4275
+ activeTools: stepActiveTools,
4276
+ steps: [...steps],
4277
+ providerOptions: stepProviderOptions,
4278
+ timeout,
4279
+ headers,
4280
+ stopWhen,
4281
+ output,
4282
+ abortSignal,
4283
+ include,
4284
+ functionId: telemetry == null ? void 0 : telemetry.functionId,
4285
+ metadata: telemetry == null ? void 0 : telemetry.metadata,
4286
+ experimental_context
4287
+ }));
4288
+ } catch (_ignored) {
4289
+ }
4148
4290
  currentModelResponse = await retry(
4149
4291
  () => {
4150
4292
  var _a22;
@@ -4187,10 +4329,6 @@ async function generateText({
4187
4329
  tracer,
4188
4330
  fn: async (span2) => {
4189
4331
  var _a23, _b2, _c2, _d2, _e2, _f2, _g2, _h2;
4190
- const stepProviderOptions = mergeObjects(
4191
- providerOptions,
4192
- prepareStepResult == null ? void 0 : prepareStepResult.providerOptions
4193
- );
4194
4332
  const result = await stepModel.doGenerate({
4195
4333
  ...callSettings2,
4196
4334
  tools: stepTools,
@@ -4322,7 +4460,14 @@ async function generateText({
4322
4460
  telemetry,
4323
4461
  messages: stepInputMessages,
4324
4462
  abortSignal: mergedAbortSignal,
4325
- experimental_context
4463
+ experimental_context,
4464
+ stepNumber: steps.length,
4465
+ model: {
4466
+ provider: stepModel.provider,
4467
+ modelId: stepModel.modelId
4468
+ },
4469
+ onToolCallStart,
4470
+ onToolCallFinish
4326
4471
  })
4327
4472
  );
4328
4473
  }
@@ -4359,15 +4504,24 @@ async function generateText({
4359
4504
  tools
4360
4505
  })
4361
4506
  );
4362
- const stepRequest = ((_g = include == null ? void 0 : include.requestBody) != null ? _g : true) ? (_h = currentModelResponse.request) != null ? _h : {} : { ...currentModelResponse.request, body: void 0 };
4507
+ const stepRequest = ((_i = include == null ? void 0 : include.requestBody) != null ? _i : true) ? (_j = currentModelResponse.request) != null ? _j : {} : { ...currentModelResponse.request, body: void 0 };
4363
4508
  const stepResponse = {
4364
4509
  ...currentModelResponse.response,
4365
4510
  // deep clone msgs to avoid mutating past messages in multi-step:
4366
4511
  messages: structuredClone(responseMessages),
4367
4512
  // Conditionally include response body:
4368
- body: ((_i = include == null ? void 0 : include.responseBody) != null ? _i : true) ? (_j = currentModelResponse.response) == null ? void 0 : _j.body : void 0
4513
+ body: ((_k = include == null ? void 0 : include.responseBody) != null ? _k : true) ? (_l = currentModelResponse.response) == null ? void 0 : _l.body : void 0
4369
4514
  };
4515
+ const stepNumber = steps.length;
4370
4516
  const currentStepResult = new DefaultStepResult({
4517
+ stepNumber,
4518
+ model: {
4519
+ provider: stepModel.provider,
4520
+ modelId: stepModel.modelId
4521
+ },
4522
+ functionId: telemetry == null ? void 0 : telemetry.functionId,
4523
+ metadata: telemetry == null ? void 0 : telemetry.metadata,
4524
+ experimental_context,
4371
4525
  content: stepContent,
4372
4526
  finishReason: currentModelResponse.finishReason.unified,
4373
4527
  rawFinishReason: currentModelResponse.finishReason.raw,
@@ -4378,7 +4532,7 @@ async function generateText({
4378
4532
  response: stepResponse
4379
4533
  });
4380
4534
  logWarnings({
4381
- warnings: (_k = currentModelResponse.warnings) != null ? _k : [],
4535
+ warnings: (_m = currentModelResponse.warnings) != null ? _m : [],
4382
4536
  provider: stepModel.provider,
4383
4537
  model: stepModel.modelId
4384
4538
  });
@@ -4436,6 +4590,11 @@ async function generateText({
4436
4590
  }
4437
4591
  );
4438
4592
  await (onFinish == null ? void 0 : onFinish({
4593
+ stepNumber: lastStep.stepNumber,
4594
+ model: lastStep.model,
4595
+ functionId: lastStep.functionId,
4596
+ metadata: lastStep.metadata,
4597
+ experimental_context: lastStep.experimental_context,
4439
4598
  finishReason: lastStep.finishReason,
4440
4599
  rawFinishReason: lastStep.rawFinishReason,
4441
4600
  usage: lastStep.usage,
@@ -4456,8 +4615,7 @@ async function generateText({
4456
4615
  warnings: lastStep.warnings,
4457
4616
  providerMetadata: lastStep.providerMetadata,
4458
4617
  steps,
4459
- totalUsage,
4460
- experimental_context
4618
+ totalUsage
4461
4619
  }));
4462
4620
  let resolvedOutput;
4463
4621
  if (lastStep.finishReason === "stop") {
@@ -4489,7 +4647,11 @@ async function executeTools({
4489
4647
  telemetry,
4490
4648
  messages,
4491
4649
  abortSignal,
4492
- experimental_context
4650
+ experimental_context,
4651
+ stepNumber,
4652
+ model,
4653
+ onToolCallStart,
4654
+ onToolCallFinish
4493
4655
  }) {
4494
4656
  const toolOutputs = await Promise.all(
4495
4657
  toolCalls.map(
@@ -4500,7 +4662,11 @@ async function executeTools({
4500
4662
  telemetry,
4501
4663
  messages,
4502
4664
  abortSignal,
4503
- experimental_context
4665
+ experimental_context,
4666
+ stepNumber,
4667
+ model,
4668
+ onToolCallStart,
4669
+ onToolCallFinish
4504
4670
  })
4505
4671
  )
4506
4672
  );
@@ -5884,12 +6050,6 @@ function createStitchableStream() {
5884
6050
  };
5885
6051
  }
5886
6052
 
5887
- // src/util/now.ts
5888
- function now() {
5889
- var _a21, _b;
5890
- return (_b = (_a21 = globalThis == null ? void 0 : globalThis.performance) == null ? void 0 : _a21.now()) != null ? _b : Date.now();
5891
- }
5892
-
5893
6053
  // src/generate-text/run-tools-transformation.ts
5894
6054
  var import_provider_utils18 = require("@ai-sdk/provider-utils");
5895
6055
  function runToolsTransformation({
@@ -6449,6 +6609,14 @@ var DefaultStreamTextResult = class {
6449
6609
  tools
6450
6610
  });
6451
6611
  const currentStepResult = new DefaultStepResult({
6612
+ stepNumber: recordedSteps.length,
6613
+ model: {
6614
+ provider: model.provider,
6615
+ modelId: model.modelId
6616
+ },
6617
+ functionId: telemetry == null ? void 0 : telemetry.functionId,
6618
+ metadata: telemetry == null ? void 0 : telemetry.metadata,
6619
+ experimental_context,
6452
6620
  content: recordedContent,
6453
6621
  finishReason: part.finishReason,
6454
6622
  rawFinishReason: part.rawFinishReason,
@@ -6497,6 +6665,11 @@ var DefaultStreamTextResult = class {
6497
6665
  self._steps.resolve(recordedSteps);
6498
6666
  const finalStep = recordedSteps[recordedSteps.length - 1];
6499
6667
  await (onFinish == null ? void 0 : onFinish({
6668
+ stepNumber: finalStep.stepNumber,
6669
+ model: finalStep.model,
6670
+ functionId: finalStep.functionId,
6671
+ metadata: finalStep.metadata,
6672
+ experimental_context: finalStep.experimental_context,
6500
6673
  finishReason: finalStep.finishReason,
6501
6674
  rawFinishReason: finalStep.rawFinishReason,
6502
6675
  totalUsage,
@@ -6517,8 +6690,7 @@ var DefaultStreamTextResult = class {
6517
6690
  response: finalStep.response,
6518
6691
  warnings: finalStep.warnings,
6519
6692
  providerMetadata: finalStep.providerMetadata,
6520
- steps: recordedSteps,
6521
- experimental_context
6693
+ steps: recordedSteps
6522
6694
  }));
6523
6695
  rootSpan.setAttributes(
6524
6696
  await selectTelemetryAttributes({