@ai-sdk/workflow 2.0.71 → 2.0.72

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,13 @@
1
1
  # @ai-sdk/workflow
2
2
 
3
+ ## 2.0.72
4
+
5
+ ### Patch Changes
6
+
7
+ - 9523eb0: feat(ai): add configurable tool call execution concurrency
8
+ - Updated dependencies [9523eb0]
9
+ - ai@7.0.140
10
+
3
11
  ## 2.0.71
4
12
 
5
13
  ### Patch Changes
package/dist/index.d.ts CHANGED
@@ -281,6 +281,7 @@ interface PrepareCallOptions<TTools extends ToolSet = ToolSet, TRuntimeContext e
281
281
  tools: TTools;
282
282
  instructions?: Instructions;
283
283
  toolChoice?: ToolChoice<TTools>;
284
+ toolCallConcurrency?: number;
284
285
  stopWhen?: StopCondition<NoInfer<TTools>, TRuntimeContext> | Array<StopCondition<NoInfer<TTools>, TRuntimeContext>>;
285
286
  activeTools?: ActiveTools<NoInfer<TTools>>;
286
287
  experimental_download?: DownloadFunction;
@@ -342,6 +343,12 @@ type WorkflowAgentOptions<TTools extends ToolSet = ToolSet, TRuntimeContext exte
342
343
  * The tool choice strategy. Default: 'auto'.
343
344
  */
344
345
  toolChoice?: ToolChoice<TTools>;
346
+ /**
347
+ * Maximum number of local tool calls that may execute concurrently within a step.
348
+ * Set to `1` to execute calls sequentially in model order, including approved
349
+ * calls. By default, all local tool calls execute concurrently.
350
+ */
351
+ toolCallConcurrency?: number;
345
352
  /**
346
353
  * Optional telemetry configuration.
347
354
  */
@@ -713,6 +720,12 @@ type WorkflowAgentCallOptions<TTools extends ToolSet = ToolSet, TRuntimeContext
713
720
  * Overrides the toolChoice from the constructor if provided.
714
721
  */
715
722
  toolChoice?: ToolChoice<TTools>;
723
+ /**
724
+ * Maximum number of local tool calls that may execute concurrently within a step.
725
+ * Set to `1` to execute calls sequentially in model order, including approved
726
+ * calls. By default, all local tool calls execute concurrently.
727
+ */
728
+ toolCallConcurrency?: number;
716
729
  /**
717
730
  * Limits the tools that are available for the model to call without
718
731
  * changing the tool call and result types in the result.
@@ -1075,6 +1088,7 @@ export declare class WorkflowAgent<TBaseTools extends ToolSet = ToolSet, TRuntim
1075
1088
  private instructions?;
1076
1089
  private generationSettings;
1077
1090
  private toolChoice?;
1091
+ private toolCallConcurrency?;
1078
1092
  private telemetry?;
1079
1093
  private runtimeContext?;
1080
1094
  private toolsContext?;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":["CoreTelemetryOptions","SandboxSession","ToolCallRepairFunction"],"sources":["../src/model-call.ts","../src/types.ts","../src/workflow-agent.ts","../src/to-ui-message-chunk.ts","../src/normalize-ui-message-stream.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","names":["CoreTelemetryOptions","SandboxSession","ToolCallRepairFunction"],"sources":["../src/model-call.ts","../src/types.ts","../src/workflow-agent.ts","../src/to-ui-message-chunk.ts","../src/normalize-ui-message-stream.ts"],"mappings":";;;;;KAuBY,oBAAoB,eAAe,UAAU,WACrD,qCAAqC;EAEnC;EACA;EACA;EACA;;EAEA;;;;;;;;;KCrBM,0BAA0B;;;;;;;;KC4E1B,+BACV,eAAe,UAAU,SACzB,wBAAwB,UAAU,WAChC,8BAA8B,QAAQ;;;;;;;KAQ9B,kCACV,eAAe,UAAU,SACzB,wBAAwB,UAAU,WAChC,+BAA+B,QAAQ;;;;KAK/B,wBAAwB,kBAClC,uBAAuB,oBAAoB,wBACvC;;;;KAMM,4BACV,gBACA,8BACE,UACF,yBAEA,aAAa,wBAAwB;;;;;UAatB,oBAAoB,QAAQ;WAClC;EACT,gBAAgB,YAAY;EAC5B,mBAAmB;IACjB;MACE;IAAU,SAAS;;EACvB,oBACE;IAAW;KACX;IACE,UAAU;IACV,OAAO;IACP,cAAc;MAEf,QAAQ;;KAGR,2BAA2B,wBAAwB,iBAAiB;;;;KAK7D,kBAAkB;;;;;KAMlB;;;;EAIV;;KAGG,mCAAmC,eAAe,WACrD,eAAe,oBAAoB;EAC7B,cAAc,oBAAoB;;EAClC;;KACI,iBACV,wBAAwB,UAAU,SAClC,eAAe,UAAU,WACvBA,mBAAqB,iBAAiB;;;;KAK9B,oBAAoB,eAAe,YAAY;EACzD,OAAO;EACP;MACI,gBAAgB,2BAA2B;;;;;;KAarC,oBACV;EACE,KAAK;EACL;QAEC;EACA,MAAM;EAAY;;;;;;UAON;;;;EAIf;;;;;EAMA;;;;;;EAOA;;;;;;EAOA;;;;;;;EAQA;;;;;;;EAQA;;;;;EAMA;;;;;EAMA;;;;;EAMA;;;;EAKA,cAAc;;;;;EAMd,UAAU;;;;;EAMV,YAAY;;;;;;EAOZ,kBAAkB;;;;;UAMH,gBACf,eAAe,UAAU,SACzB,wBAAwB,UAAU;;;;;EAMlC,OAAO;;;;EAKP,qBAAqB;;;;EAKrB,iBAAiB,MAAM;;;;EAKvB;;;;EAKA,OAAO,WAAW,QAAQ;;;;;EAM1B,UAAU;;;;;;EAOV,gBAAgB;;;;;;;EAQhB,cAAc,oBAAoB;;;;EAKlC,uBAAuBC;;;;;;UAOR,kBACf,eAAe,UAAU,SACzB,wBAAwB,UAAU,iBAC1B,QAAQ;;;;EAIhB,QAAQ;;;;EAKR;;;;;EAMA,WAAW;;;;EAKX,aAAa,WAAW;;;;;EAMxB,cAAc,YAAY,QAAQ;;;;;EAMlC,iBAAiB;;;;;EAMjB,eAAe,oBAAoB;;;;EAKnC,uBAAuBA;;;;;;KAOb,oBACV,eAAe,UAAU,SACzB,wBAAwB,UAAU,YAElC,MAAM,gBAAgB,QAAQ,qBAE5B,kBAAkB,QAAQ,+BAE1B,QAAQ,kBAAkB,QAAQ;;;;UAKrB,mBACf,eAAe,UAAU,SACzB,wBAAwB,UAAU,iBAC1B,QAAQ;EAChB,OAAO;EACP,OAAO;EACP,eAAe;EACf,aAAa,WAAW;EACxB;EACA,WACI,cAAc,QAAQ,SAAS,mBAC/B,MAAM,cAAc,QAAQ,SAAS;EACzC,cAAc,YAAY,QAAQ;EAClC,wBAAwB;EACxB,YAAY,iBAAiB,iBAAiB;;;;;EAK9C,iBAAiB;;;;EAIjB,eAAe,oBAAoB;EACnC,UAAU;;;;;;;;KASA,kBACV,eAAe,UAAU,SACzB,wBAAwB,UAAU,WAChC,QAAQ,KAAK,mBAAmB,QAAQ;;;;KAKhC,oBACV,eAAe,UAAU,SACzB,wBAAwB,UAAU,YAElC,SAAS,mBAAmB,QAAQ,qBAElC,kBAAkB,QAAQ,mBAC1B,QAAQ,kBAAkB,QAAQ;;;;KAK1B,qBACV,eAAe,UAAU,SACzB,wBAAwB,UAAU,SAClC,cACA,wBACE,qBACF,mCAAmC;;;;EAIjC;;;;;;;EAQA,OAAO;;;;;;EAOP,QAAQ;;;;;EAMR,eAAe;;;;;EAMf;;;;EAKA,aAAa,WAAW;;;;;;EAOxB;;;;EAKA,YAAY,iBAAiB,iBAAiB;;;;;;;;;;;;;;EAe9C,iBAAiB;;;;;;;EAQjB,WACI,cAAc,QAAQ,SAAS,mBAC/B,MAAM,cAAc,QAAQ,SAAS;;;;;;;EAQzC,cAAc,YAAY,QAAQ;;;;;;;EAQlC,SAAS,oBAAoB,QAAQ;;;;;;EAOrC,iBAAiBC,yBAAuB;;;;;;;;EASxC,8BAA8BA,yBAAuB;;;;;;;EAQrD,wBAAwB;;;;;;;EAQxB,uBAAuBD;;;;;;;;;;;EAYvB,kCAAkC;;;;;;;;EASlC,cAAc,oBAAoB,QAAQ;;;;EAK1C,YAAY,+BAA+B,QAAQ;;;;;;EAOnD,eAAe,kCAAkC,QAAQ;;;;EAKzD,QAAQ,2BAA2B,QAAQ;;;;;;EAO3C,WAAW,8BAA8B,QAAQ;;;;EAKjD,UAAU,6BAA6B,QAAQ;;;;;;EAO/C,uBAAuB,6BACrB,QACA;;;;EAMF,cAAc,iCAAiC,QAAQ;;;;;;EAOvD,2BAA2B,iCACzB,QACA;;;;EAMF,uBAAuB,0CAA0C;;;;EAKjE,qBAAqB,wCAAwC;;;;;;EAO7D,cAAc,oBAAoB,QAAQ;;;;;;;;;EAU1C;;;;;KAMQ,2BACV,eAAe,UAAU,SACzB,wBAAwB,UAAU,SAClC,mBACG;;;;WAIM,OAAO,WAAW,QAAQ;;;;WAK1B,UAAU;;;;WAKV;;;;WAKA,cAAc;;;;WAKd,OAAO;;;;WAKP,YAAY;;;;WAKZ,gBAAgB;;;;WAKhB,cAAc,oBAAoB;;;;;WAMlC,QAAQ;MACb;;;;;;KAOM,8BACV,eAAe,UAAU,SACzB,wBAAwB,UAAU,SAClC,kBACE,2BAA2B,QAAQ,iBAAiB;;;;KAK5C,gCAAgC;EAC1C;MACI;;;;KAKM,6BAA6B,eAAe,UAAU,YAC/D;;;;WAIU,OAAO,WAAW;MACvB;;;;KAKI,6BACV,eAAe,UAAU,SACzB,wBAAwB,UAAU,YAC/B;;WAEM,OAAO;;WAEP,UAAU;;WAEV,gBAAgB;;WAEhB,cAAc,oBAAoB;MACvC;;;;KAKM,iCACV,eAAe,UAAU,SACzB,wBAAwB,UAAU,YAC/B;;WAEM;;WAEA,OAAO;;WAEP,UAAU;;WAEV,OAAO,cAAc,WAAW,QAAQ;;WAExC,gBAAgB;;WAEhB,cAAc,oBAAoB;MACvC;KAED,oBAAoB,aAAa,cAAc,aAClD,iBAAiB,qCAGf,iBAAiB;KAEhB,iBACH,eAAe,SACf,mBAAmB,UACjB;WACO,UAAU;WACV,OAAO,eAAe,OAAO;;;;;;;;;KAU5B,qCACV,eAAe,UAAU,YACtB,kBAAkB;WAER,UAAU;WACV;WACA,UAAU;WACV;OAGR,cAAc;WACJ,UAAU,iBAAiB,QAAQ;WACnC;WACA,UAAU;WACV,aAAa,oBAAoB,OAAO;WAE7C;;;;KAKA,0CACV,eAAe,UAAU,YAEzB,OAAO,qCAAqC,YACzC;;;;;;;;;KAUO,mCACV,eAAe,UAAU,YACtB,kBAAkB;WAGJ,UAAU;WACV;WACA;WACA,UAAU;WACV;WACA;WACA;WACA;;WAGA,UAAU;WACV;WACA;WACA,UAAU;WACV;WACA;WACA;WACA;OAGZ,cAAc;WAEA,UAAU,iBAAiB,QAAQ;WACnC;WACA;WACA,UAAU;WACV,aAAa,oBAAoB,OAAO;WACxC;WACA,QAAQ,gBAAgB,OAAO;WAC/B;;WAGA,UAAU,iBAAiB,QAAQ;WACnC;WACA;WACA,UAAU;WACV,aAAa,oBAAoB,OAAO;WACxC;WACA;WACA;WAET;;;;;;KAOA,wCACV,eAAe,UAAU,YAEzB,OAAO,mCAAmC,YACvC;;;;KAKO,yBACV,eAAe,UAAU,SACzB,wBAAwB,UAAU,SAClC,gBACA,0BACE,QAAQ;;;;;;EAQJ,iBAAiB,MAAM;;;;;;EAOvB;;;;;;;EAQA,UAAU,MAAM;;;;;;EAOhB;;;;;EAMJ,eAAe;;;;;;EAOf;;;;;EAMA,WACI,cAAc,QAAQ,SAAS,mBAC/B,MAAM,cAAc,QAAQ,SAAS;;;;;EAMzC,aAAa,WAAW;;;;;;EAOxB;;;;;EAMA,cAAc,YAAY,QAAQ;;;;EAKlC,YAAY,iBAAiB,iBAAiB;;;;;;;;;;;;EAa9C,iBAAiB;;;;;;;;;;;EAYjB,eAAe,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;EAyBnC,SAAS,oBAAoB,QAAQ;;;;EAKrC,iBAAiBC,yBAAuB;;;;;;EAOxC,8BAA8BA,yBAAuB;;;;;;EAOrD,wBAAwB;;;;;EAMxB,uBAAuBD;;;;;;;;;;;EAYvB,kCAAkC;;;;EAKlC,YAAY,+BAA+B,QAAQ;;;;;;EAOnD,eAAe,kCAAkC,QAAQ;;;;;EAMzD,UAAU;;;;;EAMV,QAAQ,2BAA2B,QAAQ,iBAAiB;;;;;;;EAQ5D,WAAW,8BAA8B,QAAQ,iBAAiB;;;;EAKlE,UAAU,6BAA6B;;;;EAKvC,UAAU,6BAA6B,QAAQ;;;;;;EAO/C,uBAAuB,6BACrB,QACA;;;;EAMF,cAAc,iCAAiC,QAAQ;;;;;;EAOvD,2BAA2B,iCACzB,QACA;;;;EAMF,uBAAuB,0CAA0C;;;;EAKjE,qBAAqB,wCAAwC;;;;;;;;;;;;;;;;;;;EAoB7D,cAAc,oBAAoB,QAAQ;;;;;;EAO1C;;;KAIQ,2BACV,eAAe,UAAU,SACzB,wBAAwB,UAAU,SAClC,gBACA,0BACE,yBACF,QACA,iBACA,QACA;;;;;;;;;;;;;;;;;;;;;;;EAwBA,WAAW,eAAe,oBAAoB;;;;;;;EAQ9C;;;;;;EAOA,yBACI,oBAAoB,UACpB,MAAM,oBAAoB;;;;;EAM9B;;;;;EAMA;;KAGU,6BACV,eAAe,UAAU,SACzB,wBAAwB,UAAU,SAClC,iBACA,0BACE,yBACF,QACA,iBACA,QACA;;EAGA;IACE;IACA;IACA;;;;KAKQ,4BACV,eAAe,UAAU,SACzB,wBAAwB,UAAU,SAClC,mBACE,KACF,mBAAmB,QAAQ,iBAAiB,OAAO;WAEtC,QAAQ;;KAElB,sBAAsB,WACzB,2BAA2B,oCAGzB;;;;UAKa;;EAEf;;EAEA;;EAEA;;EAEA;;;;;UAMe;;EAEf;;EAEA;;EAEA;;EAEA;;EAEA;;;;;UAiGe,0BACf,eAAe,UAAU,SACzB;;;;EAKA,UAAU;;;;EAKV,OAAO,WAAW;;;;;;;;;;;;;;;;;EAkBlB,WAAW;;;;;;;;EASX,aAAa;;;;EAKb,cAAc;;;;;;;;EASd;;;;EAKA,YAAY;;;;;EAMZ,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBA8BG,cACX,mBAAmB,UAAU,SAC7B,wBAAwB,UAAU,SAClC,cACA;;;;WAKgB;UAER;;;;WAIQ,OAAO;UACf;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UAGA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UAIA;UAIA;UAIA;UAIA;UACA;UACA;EAGN,YAAA,SAAS,qBACP,YACA,iBACA,QACA;EAoDE,SACJ,eAAe,aAAa,YAC5B,UAAU,sBAAsB,SAChC,iBAAiB,2BAA2B,iBAE5C,SAAS,6BACP,QACA,iBACA,SACA,kBAED,QAAQ,4BAA4B,QAAQ,iBAAiB;EAuC1D,OACJ,eAAe,aAAa,YAC5B,UAAU,2BAA2B,SACrC,iBAAiB,2BAA2B,iBAE5C,SAAS,2BACP,QACA,iBACA,SACA,kBAED,QAAQ,0BAA0B,QAAQ;UAI/B;UAuMA;;;;;;;;wBCp3DA,iBACd,MAAM,oBAAoB,WACzB;;;;;;;;;;;wBAwNa,oCACd;;;;;EAMA;IACO,gBAAgB,oBAAoB,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBC3HhC,8BACrB,QAAQ,cAAc,kBACrB,eAAe"}
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { n as normalizeUIMessageStreamParts, t as WorkflowChatTransport } from "./workflow-chat-transport-Dj1poviu.js";
2
2
  import { asArray, asSchema, convertUint8ArrayToBase64, createIdGenerator, generateId, getErrorMessage, isAbortError, jsonSchema, validateTypes, withUserAgentSuffix } from "@ai-sdk/provider-utils";
3
3
  import { DefaultGeneratedFile, InvalidToolApprovalSignatureError, NoOutputGeneratedError, Output, ToolChoiceViolationError, dynamicTool, experimental_filterActiveTools, experimental_streamLanguageModelCall, gateway, isStepCount, tool, wrapLanguageModel } from "ai";
4
- import { DefaultGenerateTextResult, DefaultStepResult, addLanguageModelUsage, asLanguageModelUsage, calculateTokensPerSecond, collectToolApprovals, convertLanguageModelContent, convertToLanguageModelPrompt, createDefaultDownloadFunction, createNullLanguageModelUsage, createRestrictedTelemetryDispatcher, createTelemetryDispatcher, createToolModelOutput, createToolSearchState, downloadAssets, isOutputChunk, mapToolResultOutput, mergeAbortSignals, mergeCallbacks, parseToolCall, prepareLanguageModelCallOptions, prepareRetries, prepareToolChoice, prepareTools, resolveLanguageModel, signToolApproval, standardizePrompt, validateApprovedToolApprovals, verifyToolApprovalSignature } from "ai/internal";
4
+ import { DefaultGenerateTextResult, DefaultStepResult, addLanguageModelUsage, asLanguageModelUsage, calculateTokensPerSecond, collectToolApprovals, convertLanguageModelContent, convertToLanguageModelPrompt, createDefaultDownloadFunction, createNullLanguageModelUsage, createRestrictedTelemetryDispatcher, createTelemetryDispatcher, createToolModelOutput, createToolSearchState, downloadAssets, isOutputChunk, mapToolResultOutput, mapWithConcurrency, mergeAbortSignals, mergeCallbacks, parseToolCall, prepareLanguageModelCallOptions, prepareRetries, prepareToolCallConcurrency, prepareToolChoice, prepareTools, resolveLanguageModel, signToolApproval, standardizePrompt, validateApprovedToolApprovals, verifyToolApprovalSignature } from "ai/internal";
5
5
  import { getWorkflowMetadata } from "workflow";
6
6
  import Ajv from "ajv";
7
7
  import Ajv2020 from "ajv/dist/2020.js";
@@ -1686,6 +1686,7 @@ var WorkflowAgent = class {
1686
1686
  this.tools = options.tools ?? {};
1687
1687
  this.instructions = options.instructions ?? options.system;
1688
1688
  this.toolChoice = options.toolChoice;
1689
+ this.toolCallConcurrency = options.toolCallConcurrency;
1689
1690
  this.telemetry = options.telemetry;
1690
1691
  this.runtimeContext = options.runtimeContext;
1691
1692
  this.toolsContext = options.toolsContext;
@@ -1759,6 +1760,7 @@ var WorkflowAgent = class {
1759
1760
  let effectiveRuntimeContext = options.runtimeContext ?? this.runtimeContext ?? {};
1760
1761
  let effectiveToolsContext = options.toolsContext ?? this.toolsContext ?? {};
1761
1762
  let effectiveToolChoiceFromPrepare = options.toolChoice ?? this.toolChoice;
1763
+ let effectiveToolCallConcurrency = options.toolCallConcurrency ?? this.toolCallConcurrency;
1762
1764
  let effectiveStopWhenFromPrepare = options.stopWhen ?? this.stopWhen ?? (mode === "generate" ? isStepCount(20) : void 0);
1763
1765
  let effectiveActiveToolsFromPrepare = options.activeTools ?? this.activeTools;
1764
1766
  let effectiveDownloadFromPrepare = options.experimental_download ?? this.experimentalDownload;
@@ -1774,6 +1776,7 @@ var WorkflowAgent = class {
1774
1776
  tools: this.tools,
1775
1777
  instructions: effectiveInstructions,
1776
1778
  toolChoice: effectiveToolChoiceFromPrepare,
1779
+ toolCallConcurrency: effectiveToolCallConcurrency,
1777
1780
  stopWhen: effectiveStopWhenFromPrepare,
1778
1781
  activeTools: effectiveActiveToolsFromPrepare,
1779
1782
  experimental_download: effectiveDownloadFromPrepare,
@@ -1792,6 +1795,7 @@ var WorkflowAgent = class {
1792
1795
  if (prepared.runtimeContext !== void 0) effectiveRuntimeContext = prepared.runtimeContext;
1793
1796
  if (prepared.toolsContext !== void 0) effectiveToolsContext = prepared.toolsContext;
1794
1797
  if (prepared.toolChoice !== void 0) effectiveToolChoiceFromPrepare = prepared.toolChoice;
1798
+ if (prepared.toolCallConcurrency !== void 0) effectiveToolCallConcurrency = prepared.toolCallConcurrency;
1795
1799
  if (prepared.stopWhen !== void 0) effectiveStopWhenFromPrepare = prepared.stopWhen;
1796
1800
  if (prepared.activeTools !== void 0) effectiveActiveToolsFromPrepare = prepared.activeTools;
1797
1801
  if (prepared.experimental_download !== void 0) effectiveDownloadFromPrepare = prepared.experimental_download;
@@ -1810,6 +1814,7 @@ var WorkflowAgent = class {
1810
1814
  if (prepared.reasoning !== void 0) effectiveGenerationSettings.reasoning = prepared.reasoning;
1811
1815
  if (prepared.providerOptions !== void 0) effectiveGenerationSettings.providerOptions = prepared.providerOptions;
1812
1816
  }
1817
+ const toolCallConcurrency = prepareToolCallConcurrency(options.toolCallConcurrency ?? effectiveToolCallConcurrency);
1813
1818
  const effectiveTelemetry = effectiveTelemetryFromPrepare;
1814
1819
  const telemetryDispatcher = createRestrictedTelemetryDispatcher({
1815
1820
  telemetry: effectiveTelemetry,
@@ -1836,6 +1841,7 @@ var WorkflowAgent = class {
1836
1841
  effectiveRuntimeContext,
1837
1842
  effectiveToolsContext,
1838
1843
  effectiveToolChoiceFromPrepare,
1844
+ toolCallConcurrency,
1839
1845
  effectiveStopWhenFromPrepare,
1840
1846
  effectiveActiveToolsFromPrepare,
1841
1847
  effectiveToolApprovalSecret,
@@ -1852,7 +1858,7 @@ var WorkflowAgent = class {
1852
1858
  };
1853
1859
  }
1854
1860
  async execute(options, mode = "stream") {
1855
- const { onEnd, effectiveModel, effectiveInstructions, effectiveGenerationSettings, effectiveRuntimeContext, effectiveToolsContext, effectiveToolChoiceFromPrepare, effectiveStopWhenFromPrepare, effectiveActiveToolsFromPrepare, effectiveToolApprovalSecret, effectiveTelemetry, telemetryDispatcher, prompt, download, workflowDownload, sandbox, effectiveAbortSignal, timeoutAt, mergedOnToolExecutionStart, mergedOnToolExecutionEnd } = await this.prepareInvocation(options, mode);
1861
+ const { onEnd, effectiveModel, effectiveInstructions, effectiveGenerationSettings, effectiveRuntimeContext, effectiveToolsContext, effectiveToolChoiceFromPrepare, toolCallConcurrency, effectiveStopWhenFromPrepare, effectiveActiveToolsFromPrepare, effectiveToolApprovalSecret, effectiveTelemetry, telemetryDispatcher, prompt, download, workflowDownload, sandbox, effectiveAbortSignal, timeoutAt, mergedOnToolExecutionStart, mergedOnToolExecutionEnd } = await this.prepareInvocation(options, mode);
1856
1862
  const initialResponseMessages = [];
1857
1863
  const abortReason = () => effectiveAbortSignal?.reason === void 0 ? void 0 : { value: effectiveAbortSignal.reason };
1858
1864
  const collectedApprovals = collectToolApprovals({ messages: prompt.messages });
@@ -1876,13 +1882,55 @@ var WorkflowAgent = class {
1876
1882
  if (approvedToolApprovals.length > 0 || deniedToolApprovals.length > 0) {
1877
1883
  const toolResultContent = [];
1878
1884
  const approvedRawResults = [];
1879
- for (const approval of approvedToolApprovals) {
1880
- if (approval.providerExecuted) continue;
1881
- const tool = this.tools[approval.toolName];
1882
- if (tool && typeof tool.execute === "function") {
1883
- if (!tool.needsApproval) {
1884
- const reason = `Tool "${approval.toolName}" does not require approval`;
1885
- toolResultContent.push({
1885
+ const approvedResults = await mapWithConcurrency({
1886
+ items: approvedToolApprovals.filter((approval) => !approval.providerExecuted),
1887
+ concurrency: toolCallConcurrency,
1888
+ abortSignal: effectiveAbortSignal,
1889
+ execute: async (approval) => {
1890
+ const tool = this.tools[approval.toolName];
1891
+ if (tool && typeof tool.execute === "function") {
1892
+ if (!tool.needsApproval) {
1893
+ const reason = `Tool "${approval.toolName}" does not require approval`;
1894
+ return { modelResult: {
1895
+ type: "tool-result",
1896
+ toolCallId: approval.toolCallId,
1897
+ toolName: approval.toolName,
1898
+ output: await createLanguageModelToolResultOutput({
1899
+ toolCallId: approval.toolCallId,
1900
+ toolName: approval.toolName,
1901
+ input: approval.input,
1902
+ output: reason,
1903
+ tool,
1904
+ errorMode: "text",
1905
+ supportedUrls: {},
1906
+ download: workflowDownload
1907
+ })
1908
+ } };
1909
+ }
1910
+ let revalidationReason;
1911
+ try {
1912
+ await validateWorkflowToolApprovalSignature({
1913
+ secret: effectiveToolApprovalSecret,
1914
+ approvalId: approval.collected.approvalRequest.approvalId,
1915
+ toolCallId: approval.toolCallId,
1916
+ toolName: approval.toolName,
1917
+ input: approval.input,
1918
+ signature: approval.collected.approvalRequest.signature
1919
+ });
1920
+ const { deniedToolApprovals: policyDenied, invalidToolApprovals } = await validateApprovedToolApprovals({
1921
+ approvedToolApprovals: [approval.collected],
1922
+ tools: this.tools,
1923
+ toolApproval: void 0,
1924
+ messages: prompt.messages,
1925
+ toolsContext: effectiveToolsContext,
1926
+ runtimeContext: effectiveRuntimeContext
1927
+ });
1928
+ if (invalidToolApprovals.length > 0) revalidationReason = getErrorMessage(invalidToolApprovals[0].error);
1929
+ else if (policyDenied.length > 0) revalidationReason = policyDenied[0].approvalResponse.reason ?? "Tool approval denied";
1930
+ } catch (error) {
1931
+ revalidationReason = getErrorMessage(error);
1932
+ }
1933
+ if (revalidationReason != null) return { modelResult: {
1886
1934
  type: "tool-result",
1887
1935
  toolCallId: approval.toolCallId,
1888
1936
  toolName: approval.toolName,
@@ -1890,69 +1938,34 @@ var WorkflowAgent = class {
1890
1938
  toolCallId: approval.toolCallId,
1891
1939
  toolName: approval.toolName,
1892
1940
  input: approval.input,
1893
- output: reason,
1941
+ output: revalidationReason,
1894
1942
  tool,
1895
1943
  errorMode: "text",
1896
1944
  supportedUrls: {},
1897
1945
  download: workflowDownload
1898
1946
  })
1899
- });
1900
- continue;
1901
- }
1902
- let revalidationReason;
1903
- try {
1904
- await validateWorkflowToolApprovalSignature({
1905
- secret: effectiveToolApprovalSecret,
1906
- approvalId: approval.collected.approvalRequest.approvalId,
1947
+ } };
1948
+ const result = await executeToolWithCallbacks({
1907
1949
  toolCallId: approval.toolCallId,
1908
1950
  toolName: approval.toolName,
1909
- input: approval.input,
1910
- signature: approval.collected.approvalRequest.signature
1911
- });
1912
- const { deniedToolApprovals: policyDenied, invalidToolApprovals } = await validateApprovedToolApprovals({
1913
- approvedToolApprovals: [approval.collected],
1914
- tools: this.tools,
1915
- toolApproval: void 0,
1916
- messages: prompt.messages,
1917
- toolsContext: effectiveToolsContext,
1918
- runtimeContext: effectiveRuntimeContext
1919
- });
1920
- if (invalidToolApprovals.length > 0) revalidationReason = getErrorMessage(invalidToolApprovals[0].error);
1921
- else if (policyDenied.length > 0) revalidationReason = policyDenied[0].approvalResponse.reason ?? "Tool approval denied";
1922
- } catch (error) {
1923
- revalidationReason = getErrorMessage(error);
1924
- }
1925
- if (revalidationReason != null) {
1926
- toolResultContent.push({
1927
- type: "tool-result",
1928
- toolCallId: approval.toolCallId,
1929
- toolName: approval.toolName,
1930
- output: await createLanguageModelToolResultOutput({
1951
+ input: approval.input
1952
+ }, this.tools, prompt.messages, effectiveToolsContext, 0, sandbox);
1953
+ return {
1954
+ modelResult: result.modelResult,
1955
+ rawResult: {
1931
1956
  toolCallId: approval.toolCallId,
1932
1957
  toolName: approval.toolName,
1933
1958
  input: approval.input,
1934
- output: revalidationReason,
1935
- tool,
1936
- errorMode: "text",
1937
- supportedUrls: {},
1938
- download: workflowDownload
1939
- })
1940
- });
1941
- continue;
1959
+ output: result.rawOutput
1960
+ }
1961
+ };
1942
1962
  }
1943
- const result = await executeToolWithCallbacks({
1944
- toolCallId: approval.toolCallId,
1945
- toolName: approval.toolName,
1946
- input: approval.input
1947
- }, this.tools, prompt.messages, effectiveToolsContext, 0, sandbox);
1948
- toolResultContent.push(result.modelResult);
1949
- approvedRawResults.push({
1950
- toolCallId: approval.toolCallId,
1951
- toolName: approval.toolName,
1952
- input: approval.input,
1953
- output: result.rawOutput
1954
- });
1955
1963
  }
1964
+ });
1965
+ for (const result of approvedResults) {
1966
+ if (result == null) continue;
1967
+ toolResultContent.push(result.modelResult);
1968
+ if (result.rawResult != null) approvedRawResults.push(result.rawResult);
1956
1969
  }
1957
1970
  for (const denial of deniedToolApprovals) {
1958
1971
  if (denial.providerExecuted || denial.existingToolResult !== void 0) continue;
@@ -2309,7 +2322,12 @@ var WorkflowAgent = class {
2309
2322
  });
2310
2323
  const providerApprovalRequests = step?.content.filter((part) => part.type === "tool-approval-request").filter((part) => part.toolCall.providerExecuted) ?? [];
2311
2324
  if (pausedToolCalls.length > 0 || providerApprovalRequests.length > 0) {
2312
- const executableResults = await Promise.all(executableToolCalls.map((toolCall) => executeToolWithCallbacks(toolCall, stepTools, iterMessages, toolsContext, currentStepNumber, toolExecutionSandbox)));
2325
+ const executableResults = await mapWithConcurrency({
2326
+ items: executableToolCalls,
2327
+ concurrency: toolCallConcurrency,
2328
+ abortSignal: effectiveAbortSignal,
2329
+ execute: (toolCall) => executeToolWithCallbacks(toolCall, stepTools, iterMessages, toolsContext, currentStepNumber, toolExecutionSandbox)
2330
+ });
2313
2331
  const providerResultEntries = await Promise.all(providerToolCallsForResults.filter((call) => !providerApprovalRequests.some((request) => request.toolCall.toolCallId === call.toolCallId)).map(async (toolCall) => ({
2314
2332
  toolCall,
2315
2333
  result: await resolveProviderToolResult(toolCall, capturedProviderToolResults, stepTools, workflowDownload)
@@ -2407,7 +2425,12 @@ var WorkflowAgent = class {
2407
2425
  initialResponseMessages
2408
2426
  };
2409
2427
  }
2410
- const clientToolResults = await Promise.all(nonProviderToolCalls.map((toolCall) => executeToolWithCallbacks(toolCall, stepTools, iterMessages, toolsContext, currentStepNumber, toolExecutionSandbox)));
2428
+ const clientToolResults = await mapWithConcurrency({
2429
+ items: nonProviderToolCalls,
2430
+ concurrency: toolCallConcurrency,
2431
+ abortSignal: effectiveAbortSignal,
2432
+ execute: (toolCall) => executeToolWithCallbacks(toolCall, stepTools, iterMessages, toolsContext, currentStepNumber, toolExecutionSandbox)
2433
+ });
2411
2434
  const providerToolResultEntries = await Promise.all(providerToolCallsForResults.map(async (toolCall) => ({
2412
2435
  toolCall,
2413
2436
  result: await resolveProviderToolResult(toolCall, capturedProviderToolResults, stepTools, workflowDownload)