@copilotkit/runtime 1.55.2-next.0 → 1.55.2-next.1

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 (72) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/dist/agent/converters/aisdk.cjs +215 -0
  3. package/dist/agent/converters/aisdk.cjs.map +1 -0
  4. package/dist/agent/converters/aisdk.d.cts +18 -0
  5. package/dist/agent/converters/aisdk.d.cts.map +1 -0
  6. package/dist/agent/converters/aisdk.d.mts +18 -0
  7. package/dist/agent/converters/aisdk.d.mts.map +1 -0
  8. package/dist/agent/converters/aisdk.mjs +214 -0
  9. package/dist/agent/converters/aisdk.mjs.map +1 -0
  10. package/dist/agent/converters/index.d.mts +3 -0
  11. package/dist/agent/converters/tanstack.cjs +180 -0
  12. package/dist/agent/converters/tanstack.cjs.map +1 -0
  13. package/dist/agent/converters/tanstack.d.cts +68 -0
  14. package/dist/agent/converters/tanstack.d.cts.map +1 -0
  15. package/dist/agent/converters/tanstack.d.mts +68 -0
  16. package/dist/agent/converters/tanstack.d.mts.map +1 -0
  17. package/dist/agent/converters/tanstack.mjs +178 -0
  18. package/dist/agent/converters/tanstack.mjs.map +1 -0
  19. package/dist/agent/index.cjs +111 -17
  20. package/dist/agent/index.cjs.map +1 -1
  21. package/dist/agent/index.d.cts +61 -4
  22. package/dist/agent/index.d.cts.map +1 -1
  23. package/dist/agent/index.d.mts +62 -4
  24. package/dist/agent/index.d.mts.map +1 -1
  25. package/dist/agent/index.mjs +111 -17
  26. package/dist/agent/index.mjs.map +1 -1
  27. package/dist/lib/integrations/nextjs/pages-router.cjs.map +1 -1
  28. package/dist/lib/integrations/nextjs/pages-router.d.cts.map +1 -1
  29. package/dist/lib/integrations/nextjs/pages-router.d.mts.map +1 -1
  30. package/dist/lib/integrations/nextjs/pages-router.mjs.map +1 -1
  31. package/dist/lib/runtime/copilot-runtime.cjs +4 -2
  32. package/dist/lib/runtime/copilot-runtime.cjs.map +1 -1
  33. package/dist/lib/runtime/copilot-runtime.d.cts.map +1 -1
  34. package/dist/lib/runtime/copilot-runtime.d.mts.map +1 -1
  35. package/dist/lib/runtime/copilot-runtime.mjs +4 -2
  36. package/dist/lib/runtime/copilot-runtime.mjs.map +1 -1
  37. package/dist/lib/runtime/mcp-tools-utils.cjs +1 -1
  38. package/dist/lib/runtime/mcp-tools-utils.cjs.map +1 -1
  39. package/dist/lib/runtime/mcp-tools-utils.mjs +1 -1
  40. package/dist/lib/runtime/mcp-tools-utils.mjs.map +1 -1
  41. package/dist/package.cjs +1 -1
  42. package/dist/package.mjs +1 -1
  43. package/dist/service-adapters/anthropic/utils.cjs +1 -1
  44. package/dist/service-adapters/anthropic/utils.cjs.map +1 -1
  45. package/dist/service-adapters/anthropic/utils.mjs +1 -1
  46. package/dist/service-adapters/anthropic/utils.mjs.map +1 -1
  47. package/dist/service-adapters/openai/utils.cjs +1 -1
  48. package/dist/service-adapters/openai/utils.cjs.map +1 -1
  49. package/dist/service-adapters/openai/utils.mjs +1 -1
  50. package/dist/service-adapters/openai/utils.mjs.map +1 -1
  51. package/dist/v2/index.cjs +5 -0
  52. package/dist/v2/index.d.cts +4 -2
  53. package/dist/v2/index.d.mts +4 -2
  54. package/dist/v2/index.mjs +3 -1
  55. package/package.json +2 -2
  56. package/src/agent/__tests__/agent-test-helpers.ts +446 -0
  57. package/src/agent/__tests__/agent.test.ts +593 -0
  58. package/src/agent/__tests__/converter-aisdk.test.ts +692 -0
  59. package/src/agent/__tests__/converter-custom.test.ts +319 -0
  60. package/src/agent/__tests__/converter-tanstack-input.test.ts +211 -0
  61. package/src/agent/__tests__/converter-tanstack.test.ts +314 -0
  62. package/src/agent/__tests__/multimodal-tanstack.test.ts +284 -0
  63. package/src/agent/__tests__/test-helpers.ts +12 -8
  64. package/src/agent/converters/aisdk.ts +326 -0
  65. package/src/agent/converters/index.ts +7 -0
  66. package/src/agent/converters/tanstack.ts +286 -0
  67. package/src/agent/index.ts +245 -26
  68. package/src/lib/integrations/nextjs/pages-router.ts +1 -0
  69. package/src/lib/runtime/copilot-runtime.ts +21 -12
  70. package/src/lib/runtime/mcp-tools-utils.ts +1 -1
  71. package/src/service-adapters/anthropic/utils.ts +1 -1
  72. package/src/service-adapters/openai/utils.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.cts","names":[],"sources":["../../src/agent/index.ts"],"mappings":";;;;;;;;;;;AA8DA;;KAAY,mBAAA;;;AAkBZ;KAAY,iBAAA;;;;KA8BA,cAAA,YAA0B,aAAA;;;;UAKrB,mBAAA;EAAA;;;EAIf,IAAA;EAAA;;;EAIA,GAAA;EAI8C;;AAMhD;EANE,OAAA,GAAU,oCAAA;AAAA;;;;UAMK,kBAAA;EAYL;;;EARV,IAAA;EAcyB;;;EAVzB,GAAA;EAoBe;;;EAhBf,OAAA,GAAU,MAAA;AAAA;;;;KAMA,eAAA,GAAkB,mBAAA,GAAsB,kBAAA;AAqBpD;;;;;;;;AAAA,UAXiB,iBAAA;EAcD;EAZd,KAAA,IAAS,OAAA,CAAQ,OAAA;AAAA;;;;;;;iBASH,YAAA,CACd,IAAA,EAAM,cAAA,EACN,MAAA,YACC,aAAA;;;;UA2Ec,cAAA,qBACK,gBAAA,GAAmB,gBAAA;EAEvC,IAAA;EACA,WAAA;EACA,UAAA,EAAY,WAAA;EACZ,OAAA,GAAU,IAAA,EAAM,iBAAA,CAAkB,WAAA,MAAiB,OAAA;AAAA;;;;;;;;AAWrD;iBAAgB,UAAA,qBAA+B,gBAAA,CAAA,CAAkB,MAAA;EAC/D,IAAA;EACA,WAAA;EACA,UAAA,EAAY,WAAA;EACZ,OAAA,GAAU,IAAA,EAAM,iBAAA,CAAkB,WAAA,MAAiB,OAAA;AAAA,IACjD,cAAA,CAAe,WAAA;;;;UAuJF,wBAAA;EACf,qBAAA;EACA,wBAAA;AAAA;;;;iBAMc,oCAAA,CACd,QAAA,EAAU,OAAA,IACV,OAAA,GAAS,wBAAA,GACR,YAAA;;;;UAmFO,UAAA;EACR,IAAA;EACA,WAAA;EACA,UAAA,GAAa,MAAA,SAAe,UAAA;EAC5B,QAAA;EACA,KAAA,GAAQ,UAAA;EACR,IAAA;AAAA;;;;iBAMc,4BAAA,CACd,UAAA,EAAY,UAAA,EACZ,QAAA,YACC,CAAA,CAAE,SAAA;AAAA,iBA+DW,2BAAA,CACd,KAAA,EAAO,aAAA,YACN,OAAA;;;;;;;;iBAgCa,qCAAA,CACd,KAAA,EAAO,cAAA,KACN,OAAA;;;;UA6Bc,yBAAA;EAlOF;;AA8Ed;EAwJC,KAAA,EAAO,iBAAA,GAAoB,aAAA;;;;;;;;EAQ3B,MAAA;EAxJA;;;EA4JA,QAAA;EA1JA;;;EA8JA,UAAA,GAAa,UAAA,CAAW,MAAA;EA7JpB;AAMN;;EA2JE,eAAA;EAxJY;;;EA4JZ,WAAA;EA5JC;;;EAgKD,IAAA;EAjGc;;;EAqGd,IAAA;EApGO;;;EAwGP,eAAA;EAvGQ;AAgCV;;EA2EE,gBAAA;EAzEQ;;;EA6ER,aAAA;EA7EQ;;AA6BV;EAoDE,IAAA;;;;EAIA,UAAA;EApCa;;;EAwCb,MAAA;EAwBQ;;;EApBR,qBAAA,GAAwB,mBAAA;EA5DxB;;;EAgEA,UAAA,GAAa,eAAA;EApDb;;;;;;;;;;;EAgEA,UAAA,GAAa,iBAAA;EAxBb;;;EA4BA,KAAA,GAAQ,cAAA;EAhBR;;;;EAqBA,qBAAA;EALQ;;;;EAUR,wBAAA;EAKwB;;AAG1B;;EAHE,eAAA,GAAkB,MAAA;AAAA;AAAA,cAGP,YAAA,SAAqB,aAAA;EAAA,QAGZ,MAAA;EAAA,QAFZ,eAAA;cAEY,MAAA,EAAQ,yBAAA;EA2oBvB;;;EApoBL,WAAA,CAAY,QAAA,EAAU,mBAAA;EAItB,GAAA,CAAI,KAAA,EAAO,aAAA,GAAgB,UAAA,CAAW,SAAA;EAgoBtC,KAAA,CAAA,GAAK,YAAA;EAQL,QAAA,CAAA;AAAA;;;;cAQW,UAAA,SAAmB,YAAA;cAClB,MAAA,EAAQ,yBAAA;AAAA;AAAA,KAMV,uBAAA,GAA0B,yBAAA"}
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../../src/agent/index.ts"],"mappings":"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"}
@@ -1,4 +1,7 @@
1
1
  import "reflect-metadata";
2
+ import { convertAISDKStream } from "./converters/aisdk.mjs";
3
+ import { TanStackChatMessage, TanStackInputResult, convertInputToTanStackAI, convertTanStackStream } from "./converters/tanstack.mjs";
4
+ import "./converters/index.mjs";
2
5
  import { InferSchemaOutput, StandardSchemaV1 } from "@copilotkit/shared";
3
6
  import { Observable } from "rxjs";
4
7
  import { AbstractAgent, BaseEvent, Message, RunAgentInput } from "@ag-ui/client";
@@ -136,9 +139,54 @@ declare function convertToolsToVercelAITools(tools: RunAgentInput["tools"]): Too
136
139
  */
137
140
  declare function convertToolDefinitionsToVercelAITools(tools: ToolDefinition[]): ToolSet;
138
141
  /**
139
- * Configuration for BuiltInAgent
142
+ * Context passed to the user-supplied factory function in factory mode.
140
143
  */
141
- interface BuiltInAgentConfiguration {
144
+ interface AgentFactoryContext {
145
+ input: RunAgentInput;
146
+ /**
147
+ * Prefer `abortSignal` for most use cases (AI SDK, fetch, custom backends).
148
+ * Provided for backends like TanStack AI that require the full AbortController.
149
+ * Do NOT call `.abort()` on this controller — use `abortRun()` on the agent instead.
150
+ */
151
+ abortController: AbortController;
152
+ abortSignal: AbortSignal;
153
+ }
154
+ /**
155
+ * Factory config for AI SDK backend.
156
+ * The factory must return an object with a `fullStream` async iterable
157
+ * (compatible with the result of `streamText()` — only `fullStream` is consumed).
158
+ */
159
+ interface BuiltInAgentAISDKFactoryConfig {
160
+ type: "aisdk";
161
+ factory: (ctx: AgentFactoryContext) => {
162
+ fullStream: AsyncIterable<unknown>;
163
+ } | Promise<{
164
+ fullStream: AsyncIterable<unknown>;
165
+ }>;
166
+ }
167
+ /**
168
+ * Factory config for TanStack AI backend.
169
+ * The factory must return an async iterable of TanStack AI stream chunks.
170
+ */
171
+ interface BuiltInAgentTanStackFactoryConfig {
172
+ type: "tanstack";
173
+ factory: (ctx: AgentFactoryContext) => AsyncIterable<unknown> | Promise<AsyncIterable<unknown>>;
174
+ }
175
+ /**
176
+ * Factory config for a custom backend that directly yields AG-UI events.
177
+ */
178
+ interface BuiltInAgentCustomFactoryConfig {
179
+ type: "custom";
180
+ factory: (ctx: AgentFactoryContext) => AsyncIterable<BaseEvent> | Promise<AsyncIterable<BaseEvent>>;
181
+ }
182
+ /**
183
+ * Union of all factory-mode configurations.
184
+ */
185
+ type BuiltInAgentFactoryConfig = BuiltInAgentAISDKFactoryConfig | BuiltInAgentTanStackFactoryConfig | BuiltInAgentCustomFactoryConfig;
186
+ /**
187
+ * Classic config — BuiltInAgent handles streamText, tools, MCP, state tools, prompt building.
188
+ */
189
+ interface BuiltInAgentClassicConfig {
142
190
  /**
143
191
  * The model to use
144
192
  */
@@ -239,6 +287,14 @@ interface BuiltInAgentConfiguration {
239
287
  */
240
288
  providerOptions?: Record<string, any>;
241
289
  }
290
+ /**
291
+ * Configuration for BuiltInAgent.
292
+ *
293
+ * Two modes:
294
+ * - **Classic** (model + params): BuiltInAgent handles everything — streamText, tools, MCP, state tools.
295
+ * - **Factory** (type + factory): You own the LLM call. BuiltInAgent handles lifecycle only.
296
+ */
297
+ type BuiltInAgentConfiguration = BuiltInAgentClassicConfig | BuiltInAgentFactoryConfig;
242
298
  declare class BuiltInAgent extends AbstractAgent {
243
299
  private config;
244
300
  private abortController?;
@@ -248,6 +304,7 @@ declare class BuiltInAgent extends AbstractAgent {
248
304
  */
249
305
  canOverride(property: OverridableProperty): boolean;
250
306
  run(input: RunAgentInput): Observable<BaseEvent>;
307
+ private runFactory;
251
308
  clone(): BuiltInAgent;
252
309
  abortRun(): void;
253
310
  }
@@ -257,7 +314,8 @@ declare class BuiltInAgent extends AbstractAgent {
257
314
  declare class BasicAgent extends BuiltInAgent {
258
315
  constructor(config: BuiltInAgentConfiguration);
259
316
  }
260
- type BasicAgentConfiguration = BuiltInAgentConfiguration;
317
+ /** @deprecated Use BuiltInAgentClassicConfig instead */
318
+ type BasicAgentConfiguration = BuiltInAgentClassicConfig;
261
319
  //#endregion
262
- export { BasicAgent, BasicAgentConfiguration, BuiltInAgent, BuiltInAgentConfiguration, BuiltInAgentModel, MCPClientConfig, MCPClientConfigHTTP, MCPClientConfigSSE, MCPClientProvider, MessageConversionOptions, ModelSpecifier, OverridableProperty, ToolDefinition, convertJsonSchemaToZodSchema$1 as convertJsonSchemaToZodSchema, convertMessagesToVercelAISDKMessages, convertToolDefinitionsToVercelAITools, convertToolsToVercelAITools, defineTool, resolveModel };
320
+ export { AgentFactoryContext, BasicAgent, BasicAgentConfiguration, BuiltInAgent, BuiltInAgentAISDKFactoryConfig, BuiltInAgentClassicConfig, BuiltInAgentConfiguration, BuiltInAgentCustomFactoryConfig, BuiltInAgentFactoryConfig, BuiltInAgentModel, BuiltInAgentTanStackFactoryConfig, MCPClientConfig, MCPClientConfigHTTP, MCPClientConfigSSE, MCPClientProvider, MessageConversionOptions, ModelSpecifier, OverridableProperty, ToolDefinition, convertJsonSchemaToZodSchema$1 as convertJsonSchemaToZodSchema, convertMessagesToVercelAISDKMessages, convertToolDefinitionsToVercelAITools, convertToolsToVercelAITools, defineTool, resolveModel };
263
321
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../../src/agent/index.ts"],"mappings":";;;;;;;;;;;AA8DA;;KAAY,mBAAA;;;AAkBZ;KAAY,iBAAA;;;;KA8BA,cAAA,YAA0B,aAAA;;;;UAKrB,mBAAA;EAAA;;;EAIf,IAAA;EAAA;;;EAIA,GAAA;EAI8C;;AAMhD;EANE,OAAA,GAAU,oCAAA;AAAA;;;;UAMK,kBAAA;EAYL;;;EARV,IAAA;EAcyB;;;EAVzB,GAAA;EAoBe;;;EAhBf,OAAA,GAAU,MAAA;AAAA;;;;KAMA,eAAA,GAAkB,mBAAA,GAAsB,kBAAA;AAqBpD;;;;;;;;AAAA,UAXiB,iBAAA;EAcD;EAZd,KAAA,IAAS,OAAA,CAAQ,OAAA;AAAA;;;;;;;iBASH,YAAA,CACd,IAAA,EAAM,cAAA,EACN,MAAA,YACC,aAAA;;;;UA2Ec,cAAA,qBACK,gBAAA,GAAmB,gBAAA;EAEvC,IAAA;EACA,WAAA;EACA,UAAA,EAAY,WAAA;EACZ,OAAA,GAAU,IAAA,EAAM,iBAAA,CAAkB,WAAA,MAAiB,OAAA;AAAA;;;;;;;;AAWrD;iBAAgB,UAAA,qBAA+B,gBAAA,CAAA,CAAkB,MAAA;EAC/D,IAAA;EACA,WAAA;EACA,UAAA,EAAY,WAAA;EACZ,OAAA,GAAU,IAAA,EAAM,iBAAA,CAAkB,WAAA,MAAiB,OAAA;AAAA,IACjD,cAAA,CAAe,WAAA;;;;UAuJF,wBAAA;EACf,qBAAA;EACA,wBAAA;AAAA;;;;iBAMc,oCAAA,CACd,QAAA,EAAU,OAAA,IACV,OAAA,GAAS,wBAAA,GACR,YAAA;;;;UAmFO,UAAA;EACR,IAAA;EACA,WAAA;EACA,UAAA,GAAa,MAAA,SAAe,UAAA;EAC5B,QAAA;EACA,KAAA,GAAQ,UAAA;EACR,IAAA;AAAA;;;;iBAMc,8BAAA,CACd,UAAA,EAAY,UAAA,EACZ,QAAA,YACC,CAAA,CAAE,SAAA;AAAA,iBA+DW,2BAAA,CACd,KAAA,EAAO,aAAA,YACN,OAAA;;;;;;;;iBAgCa,qCAAA,CACd,KAAA,EAAO,cAAA,KACN,OAAA;;;;UA6Bc,yBAAA;EAlOF;;AA8Ed;EAwJC,KAAA,EAAO,iBAAA,GAAoB,aAAA;;;;;;;;EAQ3B,MAAA;EAxJA;;;EA4JA,QAAA;EA1JA;;;EA8JA,UAAA,GAAa,UAAA,CAAW,MAAA;EA7JpB;AAMN;;EA2JE,eAAA;EAxJY;;;EA4JZ,WAAA;EA5JC;;;EAgKD,IAAA;EAjGc;;;EAqGd,IAAA;EApGO;;;EAwGP,eAAA;EAvGQ;AAgCV;;EA2EE,gBAAA;EAzEQ;;;EA6ER,aAAA;EA7EQ;;AA6BV;EAoDE,IAAA;;;;EAIA,UAAA;EApCa;;;EAwCb,MAAA;EAwBQ;;;EApBR,qBAAA,GAAwB,mBAAA;EA5DxB;;;EAgEA,UAAA,GAAa,eAAA;EApDb;;;;;;;;;;;EAgEA,UAAA,GAAa,iBAAA;EAxBb;;;EA4BA,KAAA,GAAQ,cAAA;EAhBR;;;;EAqBA,qBAAA;EALQ;;;;EAUR,wBAAA;EAKwB;;AAG1B;;EAHE,eAAA,GAAkB,MAAA;AAAA;AAAA,cAGP,YAAA,SAAqB,aAAA;EAAA,QAGZ,MAAA;EAAA,QAFZ,eAAA;cAEY,MAAA,EAAQ,yBAAA;EA2oBvB;;;EApoBL,WAAA,CAAY,QAAA,EAAU,mBAAA;EAItB,GAAA,CAAI,KAAA,EAAO,aAAA,GAAgB,UAAA,CAAW,SAAA;EAgoBtC,KAAA,CAAA,GAAK,YAAA;EAQL,QAAA,CAAA;AAAA;;;;cAQW,UAAA,SAAmB,YAAA;cAClB,MAAA,EAAQ,yBAAA;AAAA;AAAA,KAMV,uBAAA,GAA0B,yBAAA"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../../src/agent/index.ts"],"mappings":"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"}
@@ -1,4 +1,6 @@
1
1
  import "reflect-metadata";
2
+ import { convertAISDKStream } from "./converters/aisdk.mjs";
3
+ import { convertInputToTanStackAI, convertTanStackStream } from "./converters/tanstack.mjs";
2
4
  import { createOpenAI } from "@ai-sdk/openai";
3
5
  import { randomUUID, safeParseToolArgs, schemaToJsonSchema } from "@copilotkit/shared";
4
6
  import { Observable } from "rxjs";
@@ -309,6 +311,12 @@ function convertToolDefinitionsToVercelAITools(tools) {
309
311
  }
310
312
  return result;
311
313
  }
314
+ /**
315
+ * Type guard: returns true if this is a factory-mode config.
316
+ */
317
+ function isFactoryConfig(config) {
318
+ return "factory" in config;
319
+ }
312
320
  var BuiltInAgent = class BuiltInAgent extends AbstractAgent {
313
321
  constructor(config) {
314
322
  super();
@@ -318,9 +326,14 @@ var BuiltInAgent = class BuiltInAgent extends AbstractAgent {
318
326
  * Check if a property can be overridden by forwardedProps
319
327
  */
320
328
  canOverride(property) {
329
+ if (isFactoryConfig(this.config)) return false;
321
330
  return this.config?.overridableProperties?.includes(property) ?? false;
322
331
  }
323
332
  run(input) {
333
+ if (isFactoryConfig(this.config)) return this.runFactory(input, this.config);
334
+ if (this.abortController) throw new Error("Agent is already running. Call abortRun() first or create a new instance.");
335
+ this.abortController = new AbortController();
336
+ const abortController = this.abortController;
324
337
  return new Observable((subscriber) => {
325
338
  const startEvent = {
326
339
  type: EventType.RUN_STARTED,
@@ -405,8 +418,6 @@ This is state from the application that you can edit by calling AGUISendStateSna
405
418
  }
406
419
  const mcpClients = [];
407
420
  (async () => {
408
- const abortController = new AbortController();
409
- this.abortController = abortController;
410
421
  let terminalEventEmitted = false;
411
422
  let messageId = randomUUID();
412
423
  let reasoningMessageId = randomUUID();
@@ -626,28 +637,40 @@ This is state from the application that you can edit by calling AGUISendStateSna
626
637
  break;
627
638
  }
628
639
  case "tool-result": {
629
- const toolResult = "output" in part ? part.output : null;
640
+ const toolResult = "output" in part ? part.output : "result" in part ? part.result : null;
630
641
  const toolName = "toolName" in part ? part.toolName : "";
631
642
  toolCallStates.delete(part.toolCallId);
632
643
  if (toolName === "AGUISendStateSnapshot" && toolResult && typeof toolResult === "object") {
633
- const stateSnapshotEvent = {
634
- type: EventType.STATE_SNAPSHOT,
635
- snapshot: toolResult.snapshot
636
- };
637
- subscriber.next(stateSnapshotEvent);
644
+ const snapshot = toolResult.snapshot;
645
+ if (snapshot !== void 0) {
646
+ const stateSnapshotEvent = {
647
+ type: EventType.STATE_SNAPSHOT,
648
+ snapshot
649
+ };
650
+ subscriber.next(stateSnapshotEvent);
651
+ }
638
652
  } else if (toolName === "AGUISendStateDelta" && toolResult && typeof toolResult === "object") {
639
- const stateDeltaEvent = {
640
- type: EventType.STATE_DELTA,
641
- delta: toolResult.delta
642
- };
643
- subscriber.next(stateDeltaEvent);
653
+ const delta = toolResult.delta;
654
+ if (delta !== void 0) {
655
+ const stateDeltaEvent = {
656
+ type: EventType.STATE_DELTA,
657
+ delta
658
+ };
659
+ subscriber.next(stateDeltaEvent);
660
+ }
661
+ }
662
+ let serializedResult;
663
+ try {
664
+ serializedResult = JSON.stringify(toolResult);
665
+ } catch {
666
+ serializedResult = `[Unserializable tool result from ${toolName || part.toolCallId}]`;
644
667
  }
645
668
  const resultEvent = {
646
669
  type: EventType.TOOL_CALL_RESULT,
647
670
  role: "tool",
648
671
  messageId: randomUUID(),
649
672
  toolCallId: part.toolCallId,
650
- content: JSON.stringify(toolResult)
673
+ content: serializedResult
651
674
  };
652
675
  subscriber.next(resultEvent);
653
676
  break;
@@ -665,13 +688,17 @@ This is state from the application that you can edit by calling AGUISendStateSna
665
688
  }
666
689
  case "error": {
667
690
  if (abortController.signal.aborted) break;
691
+ const err = part.error ?? part.message ?? part.cause;
668
692
  const runErrorEvent = {
669
693
  type: EventType.RUN_ERROR,
670
- message: part.error + ""
694
+ message: err instanceof Error ? err.message : typeof err === "string" ? err : `AI SDK stream error: ${JSON.stringify(part)}`,
695
+ threadId: input.threadId,
696
+ runId: input.runId
671
697
  };
672
698
  subscriber.next(runErrorEvent);
673
699
  terminalEventEmitted = true;
674
- subscriber.error(part.error);
700
+ if (err instanceof Error) subscriber.error(err);
701
+ else subscriber.error(new Error(typeof err === "string" ? err : `AI SDK stream error`));
675
702
  break;
676
703
  }
677
704
  }
@@ -695,7 +722,9 @@ This is state from the application that you can edit by calling AGUISendStateSna
695
722
  else {
696
723
  const runErrorEvent = {
697
724
  type: EventType.RUN_ERROR,
698
- message: error + ""
725
+ message: error instanceof Error ? error.message : String(error),
726
+ threadId: input.threadId,
727
+ runId: input.runId
699
728
  };
700
729
  subscriber.next(runErrorEvent);
701
730
  terminalEventEmitted = true;
@@ -711,6 +740,71 @@ This is state from the application that you can edit by calling AGUISendStateSna
711
740
  };
712
741
  });
713
742
  }
743
+ runFactory(input, config) {
744
+ if (this.abortController) throw new Error("Agent is already running. Call abortRun() first or create a new instance.");
745
+ this.abortController = new AbortController();
746
+ const controller = this.abortController;
747
+ return new Observable((subscriber) => {
748
+ const startEvent = {
749
+ type: EventType.RUN_STARTED,
750
+ threadId: input.threadId,
751
+ runId: input.runId
752
+ };
753
+ subscriber.next(startEvent);
754
+ const ctx = {
755
+ input,
756
+ abortController: controller,
757
+ abortSignal: controller.signal
758
+ };
759
+ (async () => {
760
+ try {
761
+ let events;
762
+ switch (config.type) {
763
+ case "aisdk":
764
+ events = convertAISDKStream((await config.factory(ctx)).fullStream, controller.signal);
765
+ break;
766
+ case "tanstack":
767
+ events = convertTanStackStream(await config.factory(ctx), controller.signal);
768
+ break;
769
+ case "custom":
770
+ events = await config.factory(ctx);
771
+ break;
772
+ default: {
773
+ const _exhaustive = config;
774
+ throw new Error(`Unknown agent config type: ${_exhaustive.type}`);
775
+ }
776
+ }
777
+ for await (const event of events) subscriber.next(event);
778
+ if (!controller.signal.aborted) {
779
+ const finishedEvent = {
780
+ type: EventType.RUN_FINISHED,
781
+ threadId: input.threadId,
782
+ runId: input.runId
783
+ };
784
+ subscriber.next(finishedEvent);
785
+ }
786
+ subscriber.complete();
787
+ } catch (error) {
788
+ if (controller.signal.aborted) subscriber.complete();
789
+ else {
790
+ const runErrorEvent = {
791
+ type: EventType.RUN_ERROR,
792
+ message: error instanceof Error ? error.message : String(error),
793
+ threadId: input.threadId,
794
+ runId: input.runId
795
+ };
796
+ subscriber.next(runErrorEvent);
797
+ subscriber.error(error);
798
+ }
799
+ } finally {
800
+ this.abortController = void 0;
801
+ }
802
+ })();
803
+ return () => {
804
+ controller.abort();
805
+ };
806
+ });
807
+ }
714
808
  clone() {
715
809
  const cloned = new BuiltInAgent(this.config);
716
810
  cloned.middlewares = [...this.middlewares];