@copilotkit/runtime 1.75.1 → 1.76.0

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.
Files changed (61) hide show
  1. package/dist/agent/converters/aisdk.cjs +68 -10
  2. package/dist/agent/converters/aisdk.cjs.map +1 -1
  3. package/dist/agent/converters/aisdk.d.cts.map +1 -1
  4. package/dist/agent/converters/aisdk.d.mts.map +1 -1
  5. package/dist/agent/converters/aisdk.mjs +67 -11
  6. package/dist/agent/converters/aisdk.mjs.map +1 -1
  7. package/dist/agent/converters/tanstack.cjs +8 -6
  8. package/dist/agent/converters/tanstack.cjs.map +1 -1
  9. package/dist/agent/converters/tanstack.d.cts.map +1 -1
  10. package/dist/agent/converters/tanstack.d.mts.map +1 -1
  11. package/dist/agent/converters/tanstack.mjs +9 -7
  12. package/dist/agent/converters/tanstack.mjs.map +1 -1
  13. package/dist/agent/converters/usage.cjs +8 -2
  14. package/dist/agent/converters/usage.cjs.map +1 -1
  15. package/dist/agent/converters/usage.d.cts +3 -1
  16. package/dist/agent/converters/usage.d.cts.map +1 -1
  17. package/dist/agent/converters/usage.d.mts +3 -1
  18. package/dist/agent/converters/usage.d.mts.map +1 -1
  19. package/dist/agent/converters/usage.mjs +8 -2
  20. package/dist/agent/converters/usage.mjs.map +1 -1
  21. package/dist/agent/index.cjs +164 -34
  22. package/dist/agent/index.cjs.map +1 -1
  23. package/dist/agent/index.d.cts +18 -6
  24. package/dist/agent/index.d.cts.map +1 -1
  25. package/dist/agent/index.d.mts +18 -6
  26. package/dist/agent/index.d.mts.map +1 -1
  27. package/dist/agent/index.mjs +166 -36
  28. package/dist/agent/index.mjs.map +1 -1
  29. package/dist/agent/mcp-tool-names.cjs +84 -0
  30. package/dist/agent/mcp-tool-names.cjs.map +1 -0
  31. package/dist/agent/mcp-tool-names.mjs +81 -0
  32. package/dist/agent/mcp-tool-names.mjs.map +1 -0
  33. package/dist/lib/runtime/copilot-runtime.cjs +20 -9
  34. package/dist/lib/runtime/copilot-runtime.cjs.map +1 -1
  35. package/dist/lib/runtime/copilot-runtime.d.cts.map +1 -1
  36. package/dist/lib/runtime/copilot-runtime.d.mts.map +1 -1
  37. package/dist/lib/runtime/copilot-runtime.mjs +20 -9
  38. package/dist/lib/runtime/copilot-runtime.mjs.map +1 -1
  39. package/dist/package.cjs +6 -7
  40. package/dist/package.mjs +6 -7
  41. package/dist/v2/runtime/handlers/intelligence/connect.cjs +1 -0
  42. package/dist/v2/runtime/handlers/intelligence/connect.cjs.map +1 -1
  43. package/dist/v2/runtime/handlers/intelligence/connect.mjs +1 -0
  44. package/dist/v2/runtime/handlers/intelligence/connect.mjs.map +1 -1
  45. package/dist/v2/runtime/handlers/shared/agent-utils.cjs +90 -4
  46. package/dist/v2/runtime/handlers/shared/agent-utils.cjs.map +1 -1
  47. package/dist/v2/runtime/handlers/shared/agent-utils.mjs +90 -4
  48. package/dist/v2/runtime/handlers/shared/agent-utils.mjs.map +1 -1
  49. package/dist/v2/runtime/runner/in-memory.cjs +16 -1
  50. package/dist/v2/runtime/runner/in-memory.cjs.map +1 -1
  51. package/dist/v2/runtime/runner/in-memory.d.cts.map +1 -1
  52. package/dist/v2/runtime/runner/in-memory.d.mts.map +1 -1
  53. package/dist/v2/runtime/runner/in-memory.mjs +16 -1
  54. package/dist/v2/runtime/runner/in-memory.mjs.map +1 -1
  55. package/dist/v2/runtime/runner/intelligence.cjs +5 -2
  56. package/dist/v2/runtime/runner/intelligence.cjs.map +1 -1
  57. package/dist/v2/runtime/runner/intelligence.d.cts.map +1 -1
  58. package/dist/v2/runtime/runner/intelligence.d.mts.map +1 -1
  59. package/dist/v2/runtime/runner/intelligence.mjs +6 -3
  60. package/dist/v2/runtime/runner/intelligence.mjs.map +1 -1
  61. package/package.json +7 -10
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.cts","names":[],"sources":["../../src/agent/index.ts"],"mappings":";;;;;;;;;;;;;;AAwFA;;;KAAY,mBAAA;;AAkBZ;;KAAY,iBAAA;;;AA+BZ;KAAY,cAAA,YAA0B,aAAA;;;;UAKrB,mBAAA;EAAmB;EAElC,IAAA;EAS8C;EAP9C,GAAA;EAAA;;;;;AAaF;EANE,OAAA,GAAU,oCAAA;AAAA;;;;UAMK,kBAAA;EAML;EAJV,IAAA;EAIgB;EAFhB,GAAA;EAQyB;EANzB,OAAA,GAAU,MAAA;AAAA;;AAgBZ;;KAVY,eAAA,GAAkB,mBAAA,GAAsB,kBAAA;;;;;;;AAqBpD;;UAXiB,iBAAA;EAcD;EAZd,KAAA,IAAS,OAAA,CAAQ,OAAA;AAAA;;;;;AAyHnB;;iBAhHgB,YAAA,CACd,IAAA,EAAM,cAAA,EACN,MAAA,YACC,aAAA;;;;;;;AAmJH;;;;;;;;;;;;;iBAtCgB,iBAAA,CAAkB,IAAA,EAAM,cAAA,GAAiB,cAAA;;;AAgDzD;;;cAVa,eAAA,SAAwB,KAAA;EAAA,SACP,UAAA,EAAY,SAAA;cAAZ,UAAA,EAAY,SAAA;AAAA;;;;UASzB,cAAA,qBACK,gBAAA,GAAmB,gBAAA;EAEvC,IAAA;EACA,WAAA;EACA,UAAA,EAAY,WAAA;EAFZ;;;;EAOA,OAAA,IAAW,IAAA,EAAM,iBAAA,CAAkB,WAAA,MAAiB,OAAA;EAAnC;;;;;;;EAQjB,SAAA;EAIgB;EAFhB,eAAA;EAawB;EAXxB,gBAAA;AAAA;;;;;;;;;iBAWc,UAAA,qBAA+B,gBAAA,CAAA,CAAkB,MAAA;EAC/D,IAAA;EACA,WAAA;EACA,UAAA,EAAY,WAAA;EACZ,OAAA,IAAW,IAAA,EAAM,iBAAA,CAAkB,WAAA,MAAiB,OAAA;EACpD,SAAA;EACA,eAAA;EACA,gBAAA;AAAA,IACE,cAAA,CAAe,WAAA;;;;UA0JF,wBAAA;EACf,qBAAA;EACA,wBAAA;AAAA;;;;iBAMc,oCAAA,CACd,QAAA,EAAU,OAAA,IACV,OAAA,GAAS,wBAAA,GACR,YAAA;;;;UAmFO,UAAA;EACR,IAAA;EAQA,WAAA;EACA,UAAA,GAAa,MAAA,SAAe,UAAA;EAC5B,QAAA;EACA,KAAA,GAAQ,UAAA;EACR,IAAA;EAIA,KAAA,GAAQ,UAAA;EACR,KAAA,GAAQ,UAAA;AAAA;;;;iBAMM,4BAAA,CACd,UAAA,EAAY,UAAA,EACZ,QAAA,YACC,CAAA,CAAE,SAAA;;iBA2GW,2BAAA,CACd,KAAA,EAAO,aAAA,YACN,OAAA;AA7IF;;;;;;;AAAA,iBA4Le,qCAAA,CACd,KAAA,EAAO,cAAA,KACN,OAAA;;;;UA6Bc,mBAAA;EA5Mf;EA8MA,aAAA,EAAe,yBAAA;EACf,KAAA,EAAO,aAAA;EA9MP;;;;;EAoNA,eAAA,EAAiB,eAAA;EACjB,WAAA,EAAa,WAAA;EA9ML;;;AAMV;;;;;EAiNE,SAAA,GAAY,UAAA,EAAY,SAAA,OAAgB,OAAA,CAAQ,WAAA;AAAA;;KAItC,0BAAA,GAA6B,mBAAA;;;AAvGzC;;;UA8GiB,8BAAA;EA7GR;EA+GP,aAAA,GAAgB,gCAAA;EAChB,IAAA;EACA,OAAA,GACE,GAAA,EAAK,mBAAA;IAED,UAAA,EAAY,aAAA;EAAA,IACd,OAAA;IAAU,UAAA,EAAY,aAAA;EAAA;AAAA;;;;;UAOX,iCAAA;EA7CA;EA+Cf,aAAA,GAAgB,gCAAA;EAChB,IAAA;EACA,OAAA,GACE,GAAA,EAAK,mBAAA,KACF,aAAA,YAAyB,OAAA,CAAQ,aAAA;AAAA;;;;UAMvB,+BAAA;EAtCyB;EAwCxC,aAAA,GAAgB,gCAAA;EAChB,IAAA;EACA,OAAA,GACE,GAAA,EAAK,mBAAA,KACF,aAAA,CAAc,SAAA,IAAa,OAAA,CAAQ,aAAA,CAAc,SAAA;AAAA;;;;KAM5C,yBAAA,GACR,8BAAA,GACA,iCAAA,GACA,+BAAA;;;;UAKa,yBAAA;EA1DH;EA4DZ,aAAA,GAAgB,gCAAA;EA5DgC;;;EAgEhD,KAAA,EAAO,iBAAA,GAAoB,aAAA;EA5DS;;;;AAOtC;;;;EA8DE,MAAA;EAvDkB;;;EA2DlB,QAAA;EA1DW;;;EA8DX,UAAA,GAAa,UAAA,CAAW,MAAA;EAlExB;;;EAsEA,eAAA;EAnEkB;;;EAuElB,WAAA;EAtEuC;;AAOzC;EAmEE,IAAA;;;;EAIA,IAAA;EAjEsC;;;EAqEtC,eAAA;EAzEA;;;EA6EA,gBAAA;EA1EO;;;EA8EP,aAAA;EA7EsC;;;EAiFtC,IAAA;EA3E8C;;;EA+E9C,UAAA;EAzEmB;;;EA6EnB,MAAA;EA7EgC;;;EAiFhC,qBAAA,GAAwB,mBAAA;EArFR;;;EAyFhB,UAAA,GAAa,eAAA;EAtFX;;;;;;;;AAOJ;;;EA2FE,UAAA,GAAa,iBAAA;EAzFX;;;EA6FF,KAAA,GAAQ,cAAA;EA9FN;;;;EAmGF,qBAAA;EA5Fe;;;;EAiGf,wBAAA;EA3F2B;;;;EAgG3B,eAAA,GAAkB,MAAA;EAnBL;;;;;;;;EA4Bb,YAAA,GAAe,OAAA,CAAQ,iBAAA;AAAA;;;;;;;;KAUb,yBAAA,GACR,yBAAA,GACA,yBAAA;AAAA,cAWS,YAAA,SAAqB,aAAA;EAAA,QAmBZ,MAAA;EAAA,QAlBZ,eAAA;EAAA,QACA,aAAA;EAzFR;;;;;;;;;;;;;EAAA,SAwGS,cAAA,EAAgB,cAAA;cAEL,MAAA,EAAQ,yBAAA;EAnD5B;;;EAiEA,WAAA,CAAY,QAAA,EAAU,mBAAA;EAKhB,eAAA,CAAA,GAAmB,OAAA,CAAQ,iBAAA;EA+BjC,GAAA,CAAI,KAAA,EAAO,aAAA,GAAgB,UAAA,CAAW,SAAA;EAAA,QAi5B9B,UAAA;EA0MR,KAAA,CAAA,GAAK,YAAA;EAeL,QAAA,CAAA;AAAA;;;AA/qCF;cAurCa,UAAA,SAAmB,YAAA;cAClB,MAAA,EAAQ,yBAAA;AAAA;;KAOV,uBAAA,GAA0B,yBAAA"}
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../../src/agent/index.ts"],"mappings":"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"}
@@ -31,6 +31,15 @@ type ModelSpecifier = string | LanguageModel;
31
31
  interface MCPClientConfigHTTP {
32
32
  /** Type of MCP client */
33
33
  type: "http";
34
+ /**
35
+ * Optional name for this server. When a tool name collides with another
36
+ * MCP server's tool or with an app tool, the MCP tool is exposed as
37
+ * `<name>_<tool>`. Without a name, the prefix is `mcp<N>`, where N is the
38
+ * server's position among `mcpClients` and then `mcpServers`, from 1.
39
+ * Give each server a different name: if a prefixed name is already in use,
40
+ * a number is added (`<name>_<tool>_2`).
41
+ */
42
+ name?: string;
34
43
  /** URL of the MCP server */
35
44
  url: string;
36
45
  /**
@@ -47,6 +56,15 @@ interface MCPClientConfigHTTP {
47
56
  interface MCPClientConfigSSE {
48
57
  /** Type of MCP client */
49
58
  type: "sse";
59
+ /**
60
+ * Optional name for this server. When a tool name collides with another
61
+ * MCP server's tool or with an app tool, the MCP tool is exposed as
62
+ * `<name>_<tool>`. Without a name, the prefix is `mcp<N>`, where N is the
63
+ * server's position among `mcpClients` and then `mcpServers`, from 1.
64
+ * Give each server a different name: if a prefixed name is already in use,
65
+ * a number is added (`<name>_<tool>_2`).
66
+ */
67
+ name?: string;
50
68
  /** URL of the MCP server */
51
69
  url: string;
52
70
  /** Optional HTTP headers (e.g., for authentication) */
@@ -68,12 +86,6 @@ interface MCPClientProvider {
68
86
  /** Return tools to be merged into the agent's tool set. */
69
87
  tools(): Promise<ToolSet>;
70
88
  }
71
- /**
72
- * Resolves a model specifier to a LanguageModel instance
73
- * @param spec - Model string (e.g., "openai/gpt-4o") or LanguageModel instance
74
- * @param apiKey - Optional API key to use instead of environment variables
75
- * @returns LanguageModel instance
76
- */
77
89
  declare function resolveModel(spec: ModelSpecifier, apiKey?: string): LanguageModel;
78
90
  /**
79
91
  * Which vendor a model specifier will actually reach, as a closed vocabulary.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../../src/agent/index.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../../src/agent/index.ts"],"mappings":"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"}
@@ -1,15 +1,16 @@
1
1
  import "reflect-metadata";
2
2
  import { createStateEventNormalizer } from "./state-delta.mjs";
3
3
  import { collectStandardRunFinishedDetails, getNonEmptyString, isRecord } from "./converters/usage.mjs";
4
- import { convertAISDKStream, getAISDKRunFinishedDetails } from "./converters/aisdk.mjs";
4
+ import { convertAISDKStream, formatToolError, getAISDKRunFinishedDetails, resolveStreamPartMessageId } from "./converters/aisdk.mjs";
5
5
  import { convertInputToTanStackAI, convertTanStackStream } from "./converters/tanstack.mjs";
6
6
  import { SkillRegistry } from "../v2/runtime/intelligence-platform/skill-registry/registry.mjs";
7
7
  import { assertNoSkillToolConflicts, prepareLearnedSkills } from "./learned-skills.mjs";
8
+ import { mergeMCPTools, toToolNamePrefix } from "./mcp-tool-names.mjs";
8
9
  import { createOpenAI } from "@ai-sdk/openai";
9
10
  import { classifyModelHost, randomUUID, safeParseToolArgs, schemaToJsonSchema } from "@copilotkit/shared";
10
11
  import { createGoogleGenerativeAI } from "@ai-sdk/google";
11
12
  import { Observable } from "rxjs";
12
- import { AbstractAgent, EventType } from "@ag-ui/client";
13
+ import { AbstractAgent, EventType, PROTOCOL_VERSION } from "@ag-ui/client";
13
14
  import { RENDER_A2UI_TOOL } from "@ag-ui/a2ui-middleware";
14
15
  import { Validator } from "@cfworker/json-schema";
15
16
  import { jsonSchema, stepCountIs, streamText, tool } from "ai";
@@ -26,6 +27,64 @@ import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/
26
27
  * @param apiKey - Optional API key to use instead of environment variables
27
28
  * @returns LanguageModel instance
28
29
  */
30
+ /**
31
+ * An AG-UI tool result as the AI SDK's tool result output.
32
+ *
33
+ * Providers hold one response per tool call, and the Google adapter emits one
34
+ * functionResponse per text entry of a content list, so all of a result's text
35
+ * is collected into a single entry: text parts run together, and a
36
+ * URL-referenced part contributes the URL it carries on a line of its own —
37
+ * the bytes are not here to hand over, and the reference is the content the
38
+ * tool actually returned. A result with no inline media is that text alone.
39
+ * One with inline media is a content list: the text entry first, when there is
40
+ * any, then each media part with its bytes and media type. A media-only result
41
+ * is media alone: a placeholder text would be content the tool never returned.
42
+ * Which adapters can place media inside a tool response is theirs to decide.
43
+ * A provider file handle (`file` source) is neither bytes nor a URL, and this
44
+ * path cannot hand it to the provider, so the part is dropped with a warning.
45
+ * A result whose parts were all dropped is the empty string, as AG-UI 1.0
46
+ * requires: the call must still be answered.
47
+ */
48
+ function warnDroppedFileSource(what) {
49
+ console.warn(`[CopilotKit] Dropping a ${what} that references a provider file handle: it is not a URL or inline data, so it cannot be sent to the model here.`);
50
+ }
51
+ function toolResultOutput(content) {
52
+ if (typeof content === "string") return {
53
+ type: "text",
54
+ value: content
55
+ };
56
+ const segments = [];
57
+ const media = [];
58
+ let open = false;
59
+ for (const part of content) if (part.type === "text") {
60
+ if (open) segments[segments.length - 1] += part.text;
61
+ else segments.push(part.text);
62
+ open = true;
63
+ } else if (part.source.type === "file") warnDroppedFileSource(`${part.type} part in a tool result`);
64
+ else if (part.source.type === "url") {
65
+ segments.push(part.source.value);
66
+ open = false;
67
+ } else {
68
+ media.push({
69
+ type: "media",
70
+ data: part.source.value,
71
+ mediaType: part.source.mimeType
72
+ });
73
+ open = false;
74
+ }
75
+ const text = segments.join("\n");
76
+ if (media.length === 0) return {
77
+ type: "text",
78
+ value: text
79
+ };
80
+ return {
81
+ type: "content",
82
+ value: [...text.length > 0 ? [{
83
+ type: "text",
84
+ text
85
+ }] : [], ...media]
86
+ };
87
+ }
29
88
  function resolveModel(spec, apiKey) {
30
89
  if (typeof spec !== "string") return spec;
31
90
  const parts = spec.replace("/", ":").trim().split(":");
@@ -150,6 +209,7 @@ function convertUserMessageContent(content) {
150
209
  image: source.value,
151
210
  mediaType: source.mimeType
152
211
  });
212
+ else if (source.type === "file") warnDroppedFileSource("image part");
153
213
  else if (source.type === "url") try {
154
214
  parts.push({
155
215
  type: "image",
@@ -171,6 +231,7 @@ function convertUserMessageContent(content) {
171
231
  data: source.value,
172
232
  mediaType: source.mimeType
173
233
  });
234
+ else if (source.type === "file") warnDroppedFileSource(`${part.type} part`);
174
235
  else if (source.type === "url") try {
175
236
  parts.push({
176
237
  type: "file",
@@ -276,10 +337,7 @@ function convertMessagesToVercelAISDKMessages(messages, options = {}) {
276
337
  type: "tool-result",
277
338
  toolCallId: message.toolCallId,
278
339
  toolName,
279
- output: {
280
- type: "text",
281
- value: message.content
282
- }
340
+ output: toolResultOutput(message.content)
283
341
  }]
284
342
  };
285
343
  result.push(toolMsg);
@@ -457,7 +515,8 @@ var BuiltInAgent = class BuiltInAgent extends AbstractAgent {
457
515
  const startEvent = {
458
516
  type: EventType.RUN_STARTED,
459
517
  threadId: input.threadId,
460
- runId: input.runId
518
+ runId: input.runId,
519
+ protocolVersion: PROTOCOL_VERSION
461
520
  };
462
521
  subscriber.next(startEvent);
463
522
  const model = resolveModel(config.model, config.apiKey);
@@ -626,16 +685,19 @@ This is state from the application that you can edit by calling AGUISendStateSna
626
685
  }
627
686
  })
628
687
  };
629
- if (config.mcpClients && config.mcpClients.length > 0) for (const client of config.mcpClients) {
688
+ const mcpToolSources = [];
689
+ const userMcpClients = config.mcpClients ?? [];
690
+ for (const [index, client] of userMcpClients.entries()) {
630
691
  const mcpTools = await client.tools();
631
692
  abortController.signal.throwIfAborted();
632
- streamTextParams.tools = {
633
- ...streamTextParams.tools,
634
- ...mcpTools
635
- };
693
+ mcpToolSources.push({
694
+ label: `mcp${index + 1}`,
695
+ tools: mcpTools
696
+ });
636
697
  }
637
698
  const allMcpServers = [...config.mcpServers ?? []];
638
- if (allMcpServers.length > 0) for (const serverConfig of allMcpServers) {
699
+ if (allMcpServers.length > 0) for (const [index, serverConfig] of allMcpServers.entries()) {
700
+ const label = serverConfig.name ? toToolNamePrefix(serverConfig.name) : `mcp${userMcpClients.length + index + 1}`;
639
701
  let transport;
640
702
  if (serverConfig.type === "http") transport = new StreamableHTTPClientTransport(new URL(serverConfig.url), serverConfig.options);
641
703
  else if (serverConfig.type === "sse") {
@@ -660,16 +722,17 @@ This is state from the application that you can edit by calling AGUISendStateSna
660
722
  try {
661
723
  const mcpTools = await mcpClient.tools();
662
724
  abortController.signal.throwIfAborted();
663
- streamTextParams.tools = {
664
- ...streamTextParams.tools,
665
- ...mcpTools
666
- };
725
+ mcpToolSources.push({
726
+ label,
727
+ tools: mcpTools
728
+ });
667
729
  } catch (err) {
668
730
  abortController.signal.throwIfAborted();
669
731
  console.error(`[CopilotKit] MCP server ${serverConfig.url} tools() failed — skipping its tools for this run:`, err);
670
732
  }
671
733
  }
672
734
  }
735
+ if (mcpToolSources.length > 0) streamTextParams.tools = mergeMCPTools(streamTextParams.tools ?? {}, mcpToolSources);
673
736
  if (this.skillRegistry) {
674
737
  assertNoSkillToolConflicts(streamTextParams.tools ?? {});
675
738
  streamTextParams.tools = {
@@ -702,6 +765,7 @@ This is state from the application that you can edit by calling AGUISendStateSna
702
765
  }
703
766
  return state;
704
767
  };
768
+ const warnedUnknownPartTypes = /* @__PURE__ */ new Set();
705
769
  for await (const part of response.fullStream) {
706
770
  if (part.type !== "reasoning-delta") closeReasoningIfOpen();
707
771
  switch (part.type) {
@@ -709,7 +773,8 @@ This is state from the application that you can edit by calling AGUISendStateSna
709
773
  const abortEndEvent = {
710
774
  type: EventType.RUN_FINISHED,
711
775
  threadId: input.threadId,
712
- runId: input.runId
776
+ runId: input.runId,
777
+ ...input.protocolVersion !== void 0 ? { outcome: { type: "cancelled" } } : {}
713
778
  };
714
779
  subscriber.next(abortEndEvent);
715
780
  terminalEventEmitted = true;
@@ -717,8 +782,7 @@ This is state from the application that you can edit by calling AGUISendStateSna
717
782
  break;
718
783
  }
719
784
  case "reasoning-start": {
720
- const providedId = "id" in part ? part.id : void 0;
721
- reasoningMessageId = !providedId || providedId === "0" || /^(txt|reasoning|msg)-0$/.test(providedId) ? randomUUID() : providedId;
785
+ reasoningMessageId = resolveStreamPartMessageId("id" in part ? part.id : void 0);
722
786
  const reasoningStartEvent = {
723
787
  type: EventType.REASONING_START,
724
788
  messageId: reasoningMessageId
@@ -774,11 +838,9 @@ This is state from the application that you can edit by calling AGUISendStateSna
774
838
  break;
775
839
  }
776
840
  case "tool-input-end": break;
777
- case "text-start": {
778
- const providedId = "id" in part ? part.id : void 0;
779
- messageId = !providedId || providedId === "0" || /^(txt|reasoning|msg)-0$/.test(providedId) ? randomUUID() : providedId;
841
+ case "text-start":
842
+ messageId = resolveStreamPartMessageId("id" in part ? part.id : void 0);
780
843
  break;
781
- }
782
844
  case "text-delta": {
783
845
  const textDelta = "text" in part ? part.text : "";
784
846
  const textEvent = {
@@ -885,6 +947,24 @@ This is state from the application that you can edit by calling AGUISendStateSna
885
947
  subscriber.next(resultEvent);
886
948
  break;
887
949
  }
950
+ case "tool-error": {
951
+ const toolCallId = part.toolCallId;
952
+ const toolName = "toolName" in part && part.toolName || toolCallStates.get(toolCallId)?.toolName || "";
953
+ if (toolName && interruptToolNames.has(toolName)) {
954
+ toolCallStates.delete(toolCallId);
955
+ break;
956
+ }
957
+ toolCallStates.delete(toolCallId);
958
+ const resultEvent = {
959
+ type: EventType.TOOL_CALL_RESULT,
960
+ role: "tool",
961
+ messageId: randomUUID(),
962
+ toolCallId,
963
+ content: `Error: ${formatToolError(part.error)}`
964
+ };
965
+ subscriber.next(resultEvent);
966
+ break;
967
+ }
888
968
  case "finish": {
889
969
  const model = streamTextParams.model;
890
970
  const finishedEvent = {
@@ -920,6 +1000,24 @@ This is state from the application that you can edit by calling AGUISendStateSna
920
1000
  else subscriber.error(new Error(typeof err === "string" ? err : `AI SDK stream error`));
921
1001
  break;
922
1002
  }
1003
+ case "start":
1004
+ case "start-step":
1005
+ case "finish-step":
1006
+ case "text-end":
1007
+ case "source":
1008
+ case "file":
1009
+ case "tool-output-denied":
1010
+ case "tool-approval-request":
1011
+ case "raw": break;
1012
+ default: {
1013
+ const _exhaustive = part;
1014
+ const unknownType = String(_exhaustive.type);
1015
+ if (!warnedUnknownPartTypes.has(unknownType)) {
1016
+ warnedUnknownPartTypes.add(unknownType);
1017
+ console.warn(`[BuiltInAgent] Ignoring unhandled AI SDK stream part: ${unknownType}`);
1018
+ }
1019
+ break;
1020
+ }
923
1021
  }
924
1022
  }
925
1023
  if (!terminalEventEmitted) {
@@ -973,7 +1071,8 @@ This is state from the application that you can edit by calling AGUISendStateSna
973
1071
  const startEvent = {
974
1072
  type: EventType.RUN_STARTED,
975
1073
  threadId: input.threadId,
976
- runId: input.runId
1074
+ runId: input.runId,
1075
+ protocolVersion: PROTOCOL_VERSION
977
1076
  };
978
1077
  subscriber.next(startEvent);
979
1078
  const ctx = {
@@ -988,20 +1087,47 @@ This is state from the application that you can edit by calling AGUISendStateSna
988
1087
  throw new InterruptSignal(interrupts);
989
1088
  }
990
1089
  };
991
- const answeredToolCallIds = new Set(input.messages.filter((m) => m.role === "tool").map((m) => m.toolCallId).filter((id) => typeof id === "string"));
992
- const resumeToolMessages = (input.resume ?? []).filter((entry) => !answeredToolCallIds.has(entry.interruptId)).map((entry) => ({
993
- id: randomUUID(),
994
- role: "tool",
995
- toolCallId: entry.interruptId,
996
- content: JSON.stringify(entry.status === "cancelled" ? { status: "cancelled" } : entry.payload ?? { status: "resolved" })
997
- }));
998
- const factoryInput = resumeToolMessages.length > 0 && config.type !== "custom" ? {
999
- ...input,
1000
- messages: [...input.messages, ...resumeToolMessages]
1001
- } : input;
1002
1090
  (async () => {
1003
1091
  const runFinishedDetails = {};
1004
1092
  try {
1093
+ const toolCallIds = new Set(input.messages.flatMap((message) => message.role === "assistant" ? (message.toolCalls ?? []).map((call) => call.id) : []));
1094
+ const answeredToolMessages = input.messages.filter((message) => message.role === "tool");
1095
+ const answeredToolCallIds = new Set(answeredToolMessages.map((message) => message.toolCallId));
1096
+ const nativeResume = config.type === "custom" ? [] : input.resume ?? [];
1097
+ const resumeToolMessages = [];
1098
+ const decisionsByCall = /* @__PURE__ */ new Map();
1099
+ for (const entry of nativeResume) {
1100
+ if (!toolCallIds.has(entry.interruptId)) continue;
1101
+ const content = JSON.stringify(entry.status === "cancelled" ? { status: "cancelled" } : entry.payload ?? { status: "resolved" });
1102
+ if (decisionsByCall.has(entry.interruptId)) {
1103
+ if (decisionsByCall.get(entry.interruptId) !== content) throw new Error(`Conflicting decisions for resumed tool call ${entry.interruptId}`);
1104
+ continue;
1105
+ }
1106
+ decisionsByCall.set(entry.interruptId, content);
1107
+ if (answeredToolCallIds.has(entry.interruptId)) continue;
1108
+ resumeToolMessages.push({
1109
+ id: randomUUID(),
1110
+ role: "tool",
1111
+ toolCallId: entry.interruptId,
1112
+ content
1113
+ });
1114
+ }
1115
+ const resumedIds = new Set(nativeResume.map((entry) => entry.interruptId));
1116
+ const resumedResults = new Map([...answeredToolMessages, ...resumeToolMessages].filter((message) => resumedIds.has(message.toolCallId)).map((message) => [message.toolCallId, message.content]));
1117
+ for (const message of resumeToolMessages) {
1118
+ const event = {
1119
+ type: EventType.TOOL_CALL_RESULT,
1120
+ messageId: message.id,
1121
+ toolCallId: message.toolCallId,
1122
+ role: "tool",
1123
+ content: message.content
1124
+ };
1125
+ subscriber.next(event);
1126
+ }
1127
+ const factoryInput = resumeToolMessages.length > 0 && config.type !== "custom" ? {
1128
+ ...input,
1129
+ messages: [...input.messages, ...resumeToolMessages]
1130
+ } : input;
1005
1131
  const learnedSkills = await prepareLearnedSkills(this.skillRegistry, controller.signal);
1006
1132
  controller.signal.throwIfAborted();
1007
1133
  const factoryCtx = {
@@ -1028,6 +1154,10 @@ This is state from the application that you can edit by calling AGUISendStateSna
1028
1154
  }
1029
1155
  }
1030
1156
  for await (const event of events) {
1157
+ if (event.type === EventType.TOOL_CALL_RESULT && "toolCallId" in event && typeof event.toolCallId === "string" && "content" in event && resumedResults.has(event.toolCallId)) {
1158
+ if (resumedResults.get(event.toolCallId) !== event.content) throw new Error(`Conflicting result for resumed tool call ${event.toolCallId}`);
1159
+ continue;
1160
+ }
1031
1161
  if (config.type === "custom" && event.type === EventType.RUN_FINISHED) {
1032
1162
  customRunFinishedEvent = event;
1033
1163
  collectStandardRunFinishedDetails(event, runFinishedDetails);