@langchain/langgraph-sdk 1.6.4 → 1.7.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 (187) hide show
  1. package/dist/client.cjs +4 -2
  2. package/dist/client.cjs.map +1 -1
  3. package/dist/client.d.cts +7 -0
  4. package/dist/client.d.cts.map +1 -1
  5. package/dist/client.d.ts +7 -0
  6. package/dist/client.d.ts.map +1 -1
  7. package/dist/client.js +4 -2
  8. package/dist/client.js.map +1 -1
  9. package/dist/index.d.cts +4 -4
  10. package/dist/index.d.ts +4 -4
  11. package/dist/react/index.cjs +46 -10
  12. package/dist/react/index.cjs.map +1 -0
  13. package/dist/react/index.d.cts +14 -11
  14. package/dist/react/index.d.cts.map +1 -0
  15. package/dist/react/index.d.ts +14 -11
  16. package/dist/react/index.d.ts.map +1 -0
  17. package/dist/react/index.js +14 -4
  18. package/dist/react/index.js.map +1 -0
  19. package/dist/react-ui/index.cjs +38 -13
  20. package/dist/react-ui/index.d.cts +1 -2
  21. package/dist/react-ui/index.d.ts +1 -2
  22. package/dist/react-ui/index.js +2 -8
  23. package/dist/react-ui/server/index.cjs +14 -4
  24. package/dist/react-ui/server/index.d.cts +1 -2
  25. package/dist/react-ui/server/index.d.ts +1 -2
  26. package/dist/react-ui/server/index.js +1 -2
  27. package/dist/schema.d.cts +2 -0
  28. package/dist/schema.d.cts.map +1 -1
  29. package/dist/schema.d.ts +2 -0
  30. package/dist/schema.d.ts.map +1 -1
  31. package/dist/types.messages.d.cts +5 -3
  32. package/dist/types.messages.d.cts.map +1 -1
  33. package/dist/types.messages.d.ts +5 -3
  34. package/dist/types.messages.d.ts.map +1 -1
  35. package/dist/types.stream.d.cts +40 -2
  36. package/dist/types.stream.d.cts.map +1 -1
  37. package/dist/types.stream.d.ts +40 -2
  38. package/dist/types.stream.d.ts.map +1 -1
  39. package/dist/ui/branching.cjs +24 -0
  40. package/dist/ui/branching.cjs.map +1 -1
  41. package/dist/ui/branching.d.cts +26 -1
  42. package/dist/ui/branching.d.cts.map +1 -1
  43. package/dist/ui/branching.d.ts +26 -1
  44. package/dist/ui/branching.d.ts.map +1 -1
  45. package/dist/ui/branching.js +25 -1
  46. package/dist/ui/branching.js.map +1 -1
  47. package/dist/ui/index.cjs +30 -0
  48. package/dist/ui/index.d.cts +15 -0
  49. package/dist/ui/index.d.ts +15 -0
  50. package/dist/ui/index.js +11 -0
  51. package/dist/ui/interrupts.cjs +21 -0
  52. package/dist/ui/interrupts.cjs.map +1 -0
  53. package/dist/ui/interrupts.d.cts +11 -0
  54. package/dist/ui/interrupts.d.cts.map +1 -0
  55. package/dist/ui/interrupts.d.ts +11 -0
  56. package/dist/ui/interrupts.d.ts.map +1 -0
  57. package/dist/ui/interrupts.js +20 -0
  58. package/dist/ui/interrupts.js.map +1 -0
  59. package/dist/ui/manager.cjs +12 -3
  60. package/dist/ui/manager.cjs.map +1 -1
  61. package/dist/ui/manager.d.cts +224 -0
  62. package/dist/ui/manager.d.cts.map +1 -0
  63. package/dist/ui/manager.d.ts +224 -0
  64. package/dist/ui/manager.d.ts.map +1 -0
  65. package/dist/ui/manager.js +12 -3
  66. package/dist/ui/manager.js.map +1 -1
  67. package/dist/ui/messages.cjs +19 -0
  68. package/dist/ui/messages.cjs.map +1 -1
  69. package/dist/ui/messages.d.cts +36 -0
  70. package/dist/ui/messages.d.cts.map +1 -0
  71. package/dist/ui/messages.d.ts +36 -0
  72. package/dist/ui/messages.d.ts.map +1 -0
  73. package/dist/ui/messages.js +18 -1
  74. package/dist/ui/messages.js.map +1 -1
  75. package/dist/ui/queue.cjs +75 -0
  76. package/dist/ui/queue.cjs.map +1 -0
  77. package/dist/ui/queue.d.cts +72 -0
  78. package/dist/ui/queue.d.cts.map +1 -0
  79. package/dist/ui/queue.d.ts +72 -0
  80. package/dist/ui/queue.d.ts.map +1 -0
  81. package/dist/ui/queue.js +74 -0
  82. package/dist/ui/queue.js.map +1 -0
  83. package/dist/ui/stream/base.d.cts +17 -1
  84. package/dist/ui/stream/base.d.cts.map +1 -1
  85. package/dist/ui/stream/base.d.ts +17 -1
  86. package/dist/ui/stream/base.d.ts.map +1 -1
  87. package/dist/ui/stream/index.d.cts +4 -4
  88. package/dist/ui/stream/index.d.cts.map +1 -1
  89. package/dist/ui/stream/index.d.ts +4 -4
  90. package/dist/ui/stream/index.d.ts.map +1 -1
  91. package/dist/ui/subagents.cjs +4 -1
  92. package/dist/ui/subagents.cjs.map +1 -1
  93. package/dist/ui/subagents.d.cts +7 -0
  94. package/dist/ui/subagents.d.cts.map +1 -1
  95. package/dist/ui/subagents.d.ts +7 -0
  96. package/dist/ui/subagents.d.ts.map +1 -1
  97. package/dist/ui/subagents.js +4 -1
  98. package/dist/ui/subagents.js.map +1 -1
  99. package/dist/ui/transport.cjs +31 -0
  100. package/dist/ui/transport.cjs.map +1 -0
  101. package/dist/{react/stream.custom.d.cts → ui/transport.d.cts} +3 -3
  102. package/dist/ui/transport.d.cts.map +1 -0
  103. package/dist/{react/stream.custom.d.ts → ui/transport.d.ts} +3 -3
  104. package/dist/ui/transport.d.ts.map +1 -0
  105. package/dist/ui/transport.js +31 -0
  106. package/dist/ui/transport.js.map +1 -0
  107. package/dist/ui/types.d.cts +134 -18
  108. package/dist/ui/types.d.cts.map +1 -1
  109. package/dist/ui/types.d.ts +134 -18
  110. package/dist/ui/types.d.ts.map +1 -1
  111. package/dist/ui/utils.d.cts +7 -0
  112. package/dist/ui/utils.d.cts.map +1 -0
  113. package/dist/ui/utils.d.ts +7 -0
  114. package/dist/ui/utils.d.ts.map +1 -0
  115. package/dist/utils/index.cjs +9 -0
  116. package/dist/utils/index.d.cts +4 -0
  117. package/dist/utils/index.d.ts +4 -0
  118. package/dist/utils/index.js +5 -0
  119. package/dist/utils/sse.d.cts +11 -0
  120. package/dist/utils/sse.d.cts.map +1 -0
  121. package/dist/utils/sse.d.ts +11 -0
  122. package/dist/utils/sse.d.ts.map +1 -0
  123. package/dist/utils/stream.d.cts +19 -0
  124. package/dist/utils/stream.d.cts.map +1 -0
  125. package/dist/utils/stream.d.ts +19 -0
  126. package/dist/utils/stream.d.ts.map +1 -0
  127. package/dist/utils/tools.cjs +26 -17
  128. package/dist/utils/tools.cjs.map +1 -1
  129. package/dist/utils/tools.d.cts +7 -0
  130. package/dist/utils/tools.d.cts.map +1 -0
  131. package/dist/utils/tools.d.ts +7 -0
  132. package/dist/utils/tools.d.ts.map +1 -0
  133. package/dist/utils/tools.js +26 -17
  134. package/dist/utils/tools.js.map +1 -1
  135. package/package.json +42 -13
  136. package/dist/react/stream.cjs +0 -18
  137. package/dist/react/stream.cjs.map +0 -1
  138. package/dist/react/stream.custom.cjs +0 -164
  139. package/dist/react/stream.custom.cjs.map +0 -1
  140. package/dist/react/stream.custom.d.cts.map +0 -1
  141. package/dist/react/stream.custom.d.ts.map +0 -1
  142. package/dist/react/stream.custom.js +0 -162
  143. package/dist/react/stream.custom.js.map +0 -1
  144. package/dist/react/stream.d.cts +0 -174
  145. package/dist/react/stream.d.cts.map +0 -1
  146. package/dist/react/stream.d.ts +0 -174
  147. package/dist/react/stream.d.ts.map +0 -1
  148. package/dist/react/stream.js +0 -17
  149. package/dist/react/stream.js.map +0 -1
  150. package/dist/react/stream.lgp.cjs +0 -482
  151. package/dist/react/stream.lgp.cjs.map +0 -1
  152. package/dist/react/stream.lgp.js +0 -481
  153. package/dist/react/stream.lgp.js.map +0 -1
  154. package/dist/react/thread.cjs +0 -21
  155. package/dist/react/thread.cjs.map +0 -1
  156. package/dist/react/thread.js +0 -20
  157. package/dist/react/thread.js.map +0 -1
  158. package/dist/react/types.d.cts +0 -75
  159. package/dist/react/types.d.cts.map +0 -1
  160. package/dist/react/types.d.ts +0 -75
  161. package/dist/react/types.d.ts.map +0 -1
  162. package/dist/react-ui/client.cjs +0 -138
  163. package/dist/react-ui/client.cjs.map +0 -1
  164. package/dist/react-ui/client.d.cts +0 -76
  165. package/dist/react-ui/client.d.cts.map +0 -1
  166. package/dist/react-ui/client.d.ts +0 -76
  167. package/dist/react-ui/client.d.ts.map +0 -1
  168. package/dist/react-ui/client.js +0 -132
  169. package/dist/react-ui/client.js.map +0 -1
  170. package/dist/react-ui/index.cjs.map +0 -1
  171. package/dist/react-ui/index.js.map +0 -1
  172. package/dist/react-ui/server/server.cjs +0 -57
  173. package/dist/react-ui/server/server.cjs.map +0 -1
  174. package/dist/react-ui/server/server.d.cts +0 -54
  175. package/dist/react-ui/server/server.d.cts.map +0 -1
  176. package/dist/react-ui/server/server.d.ts +0 -54
  177. package/dist/react-ui/server/server.d.ts.map +0 -1
  178. package/dist/react-ui/server/server.js +0 -56
  179. package/dist/react-ui/server/server.js.map +0 -1
  180. package/dist/react-ui/types.cjs +0 -38
  181. package/dist/react-ui/types.cjs.map +0 -1
  182. package/dist/react-ui/types.d.cts +0 -25
  183. package/dist/react-ui/types.d.cts.map +0 -1
  184. package/dist/react-ui/types.d.ts +0 -25
  185. package/dist/react-ui/types.d.ts.map +0 -1
  186. package/dist/react-ui/types.js +0 -35
  187. package/dist/react-ui/types.js.map +0 -1
@@ -1,9 +1,10 @@
1
1
  import { Checkpoint, Config, Interrupt, Metadata, ThreadState } from "../schema.js";
2
2
  import { AIMessage, DefaultToolCall, Message, ToolCallWithResult } from "../types.messages.js";
3
- import { CheckpointsStreamEvent, CustomStreamEvent, DebugStreamEvent, EventsStreamEvent, MetadataStreamEvent, StreamMode, TasksStreamEvent, UpdatesStreamEvent } from "../types.stream.js";
3
+ import { CheckpointsStreamEvent, CustomStreamEvent, DebugStreamEvent, EventsStreamEvent, MetadataStreamEvent, StreamMode, TasksStreamEvent, ToolsStreamEvent, UpdatesStreamEvent } from "../types.stream.js";
4
4
  import { Command, DisconnectMode, Durability, MultitaskStrategy, OnCompletionBehavior } from "../types.js";
5
5
  import { Client, ClientConfig } from "../client.js";
6
6
  import { BagTemplate } from "../types.template.js";
7
+ import { BaseMessage } from "@langchain/core/messages";
7
8
  import { InferInteropZodInput } from "@langchain/core/utils/types";
8
9
 
9
10
  //#region src/ui/types.d.ts
@@ -161,6 +162,33 @@ interface StreamBase<StateType = Record<string, unknown>, ToolCall = DefaultTool
161
162
  * ```
162
163
  */
163
164
  getSubagentsByMessage: (messageId: string) => SubagentStreamInterface<SubagentStates[keyof SubagentStates], ToolCall, keyof SubagentStates & string>[];
165
+ /**
166
+ * Switch to a different thread, clearing the current stream state.
167
+ * Pass `null` to reset to no thread (a new thread will be created on next submit).
168
+ *
169
+ * @param newThreadId - The thread ID to switch to, or `null` to start fresh.
170
+ */
171
+ switchThread: (newThreadId: string | null) => void;
172
+ }
173
+ /**
174
+ * Subagent API surface parameterised by the subagent interface type.
175
+ *
176
+ * Framework adapters supply a class-message variant of
177
+ * `SubagentStreamInterface` (where `messages` is `BaseMessage[]`
178
+ * from `@langchain/core`) so that consumers always work with class
179
+ * instances. The default parameter keeps the SDK's plain `Message`
180
+ * interface for direct SDK usage.
181
+ *
182
+ * @template Iface - The subagent stream interface to expose.
183
+ * Defaults to {@link SubagentStreamInterface} with default generic
184
+ * parameters.
185
+ */
186
+ interface SubagentApi<Iface = SubagentStreamInterface> {
187
+ subagents: Map<string, Iface>;
188
+ activeSubagents: Iface[];
189
+ getSubagent: (toolCallId: string) => Iface | undefined;
190
+ getSubagentsByType: (type: string) => Iface[];
191
+ getSubagentsByMessage: (messageId: string) => Iface[];
164
192
  }
165
193
  /**
166
194
  * Base interface for a single subagent stream.
@@ -278,9 +306,10 @@ interface AgentMiddlewareLike<TSchema = unknown, TContextSchema = unknown, TFull
278
306
  * Uses structural matching against AgentMiddleware to extract the state schema
279
307
  * type parameter, similar to how langchain's InferMiddlewareState works.
280
308
  */
281
- type InferMiddlewareState<T> = T extends AgentMiddlewareLike<infer TSchema, unknown, unknown, unknown> ? TSchema extends Record<string, any> ? InferInteropZodInput<TSchema> : {} : T extends {
309
+ type SafeInferInteropZodInput<T> = InferInteropZodInput<T> extends never ? {} : InferInteropZodInput<T>;
310
+ type InferMiddlewareState<T> = T extends AgentMiddlewareLike<infer TSchema, unknown, unknown, unknown> ? TSchema extends Record<string, any> ? SafeInferInteropZodInput<TSchema> : {} : T extends {
282
311
  stateSchema: infer S;
283
- } ? InferInteropZodInput<S> : {};
312
+ } ? SafeInferInteropZodInput<S> : {};
284
313
  /**
285
314
  * Helper type to detect if a type is `any`.
286
315
  * Uses the fact that `any` is both a subtype and supertype of all types.
@@ -325,23 +354,52 @@ type InferMiddlewareStatesFromArray<T> = IsAny<T> extends true ? {} : T extends
325
354
  type BaseAgentState<ToolCall = DefaultToolCall> = {
326
355
  messages: Message<ToolCall>[];
327
356
  };
357
+ /**
358
+ * Conditionally adds `structuredResponse` to the agent state when
359
+ * `responseFormat` is provided to `createAgent`.
360
+ *
361
+ * The sentinel type `ResponseFormatUndefined` (from langchain) has a
362
+ * `__responseFormatUndefined` brand property. When the Response type
363
+ * carries that brand, no `structuredResponse` key is added.
364
+ */
365
+ type InferStructuredResponse<Response> = Response extends {
366
+ __responseFormatUndefined: true;
367
+ } ? {} : Response extends Record<string, any> ? {
368
+ structuredResponse: Response;
369
+ } : {};
328
370
  type InferAgentState<T> = T extends {
329
371
  "~agentTypes": unknown;
330
- } ? ExtractAgentConfig<T> extends never ? {} : BaseAgentState<InferAgentToolCalls<T>> & (ExtractAgentConfig<T>["State"] extends undefined ? {} : InferInteropZodInput<ExtractAgentConfig<T>["State"]>) & InferMiddlewareStatesFromArray<ExtractAgentConfig<T>["Middleware"]> : T extends {
372
+ } ? ExtractAgentConfig<T> extends never ? {} : BaseAgentState<InferAgentToolCalls<T>> & (ExtractAgentConfig<T>["State"] extends undefined ? {} : SafeInferInteropZodInput<ExtractAgentConfig<T>["State"]>) & InferMiddlewareStatesFromArray<ExtractAgentConfig<T>["Middleware"]> & InferStructuredResponse<ExtractAgentConfig<T>["Response"]> : T extends {
331
373
  "~RunOutput": infer RunOutput;
332
374
  } ? RunOutput : T extends {
333
375
  messages: unknown;
334
376
  } ? T : {};
335
377
  /**
336
- * Helper type to extract the input type from a DynamicStructuredTool's _call method.
337
- * This is more reliable than trying to infer from the schema directly because
338
- * DynamicStructuredTool has the input type baked into its _call signature.
378
+ * Helper type to infer schema input type, supporting both Zod v3 and v4.
379
+ * Self-contained to avoid cross-package type resolution issues with
380
+ * InferInteropZodInput from @langchain/core.
381
+ * - Zod v4 uses `_zod.input` property
382
+ * - Zod v3 uses `_input` property
383
+ */
384
+ type InferToolSchemaInput<S> = S extends {
385
+ _zod: {
386
+ input: infer Args;
387
+ };
388
+ } ? Args : S extends {
389
+ _input: infer Args;
390
+ } ? Args : never;
391
+ /**
392
+ * Helper type to extract the input type from a DynamicStructuredTool.
393
+ *
394
+ * Tries the following in order:
395
+ * 1. `_call` method signature (may fail when `_call` is `protected`)
396
+ * 2. `schema` property with self-contained Zod v3/v4 inference
339
397
  */
340
398
  type InferToolInput<T> = T extends {
341
399
  _call: (arg: infer Args, ...rest: any[]) => any;
342
400
  } ? Args : T extends {
343
401
  schema: infer S;
344
- } ? InferInteropZodInput<S> : never;
402
+ } ? InferToolSchemaInput<S> : never;
345
403
  /**
346
404
  * Helper type to check if a type is a literal string (not generic `string`).
347
405
  * Returns true only for literal types like "get_weather", false for `string`.
@@ -596,6 +654,17 @@ type MessageMetadata<StateType extends Record<string, unknown>> = {
596
654
  type GetUpdateType<Bag extends BagTemplate, StateType extends Record<string, unknown>> = Bag extends {
597
655
  UpdateType: unknown;
598
656
  } ? Bag["UpdateType"] : Partial<StateType>;
657
+ /**
658
+ * Widens an update type so that its `messages` field also accepts
659
+ * `@langchain/core` {@link BaseMessage} class instances (single or array).
660
+ *
661
+ * Framework SDKs apply this to `submit` so callers can write:
662
+ * ```ts
663
+ * stream.submit({ messages: new HumanMessage("hello") });
664
+ * stream.submit({ messages: [new HumanMessage("hello")] });
665
+ * ```
666
+ */
667
+ type AcceptBaseMessages<T> = T extends Record<string, unknown> ? { [K in keyof T]: K extends "messages" ? T[K] | BaseMessage | BaseMessage[] : T[K] } : T;
599
668
  type GetConfigurableType<Bag extends BagTemplate> = Bag extends {
600
669
  ConfigurableType: Record<string, unknown>;
601
670
  } ? Bag["ConfigurableType"] : Record<string, unknown>;
@@ -723,6 +792,13 @@ interface UseStreamOptions<StateType extends Record<string, unknown> = Record<st
723
792
  onTaskEvent?: (data: TasksStreamEvent<StateType, GetUpdateType<Bag, StateType>>["data"], options: {
724
793
  namespace: string[] | undefined;
725
794
  }) => void;
795
+ /**
796
+ * Callback that is called when a tool lifecycle event is received.
797
+ */
798
+ onToolEvent?: (data: ToolsStreamEvent["data"], options: {
799
+ namespace: string[] | undefined;
800
+ mutate: (update: Partial<StateType> | ((prev: StateType) => Partial<StateType>)) => void;
801
+ }) => void;
726
802
  /**
727
803
  * Callback that is called when the stream is stopped by the user.
728
804
  * Provides a mutate function to update the stream state immediately
@@ -787,6 +863,20 @@ interface UseStreamOptions<StateType extends Record<string, unknown> = Record<st
787
863
  */
788
864
  throttle?: number | boolean;
789
865
  }
866
+ /**
867
+ * Union of all stream options types.
868
+ *
869
+ * Used internally by the implementation to accept any options type.
870
+ * This allows the implementation functions to handle options from
871
+ * any agent type while maintaining type safety at the public API level.
872
+ *
873
+ * @internal
874
+ */
875
+ type AnyStreamOptions<StateType extends Record<string, unknown> = Record<string, unknown>, Bag extends BagTemplate = BagTemplate> = UseStreamOptions<StateType, Bag> & {
876
+ subagentToolNames?: string[];
877
+ filterSubagentMessages?: boolean;
878
+ toMessage?: (chunk: BaseMessage) => Message | BaseMessage;
879
+ };
790
880
  interface RunMetadataStorage {
791
881
  getItem(key: `lg:stream:${string}`): string | null;
792
882
  setItem(key: `lg:stream:${string}`, value: string): void;
@@ -837,28 +927,54 @@ interface SubmitOptions<StateType extends Record<string, unknown> = Record<strin
837
927
  * before the thread is actually created.
838
928
  */
839
929
  threadId?: string;
930
+ /**
931
+ * Callback that is called when an error occurs during this specific submit call.
932
+ * Unlike the hook-level `onError`, this allows handling errors on a per-submit basis,
933
+ * e.g. to show a retry button or a specific error message to the user.
934
+ */
935
+ onError?: (error: unknown, run: RunCallbackMeta | undefined) => void;
936
+ }
937
+ /**
938
+ * Payload for the `stream` method of the `UseStreamTransport` interface.
939
+ * @template StateType - The type of the stream's state values.
940
+ * @template Bag - The type of the stream's bag values.
941
+ */
942
+ interface UseStreamTransportPayload<StateType extends Record<string, unknown> = Record<string, unknown>, Bag extends BagTemplate = BagTemplate> {
943
+ input: GetUpdateType<Bag, StateType> | null | undefined;
944
+ context: GetConfigurableType<Bag> | undefined;
945
+ command: Command | undefined;
946
+ config: ConfigWithConfigurable<GetConfigurableType<Bag>> | undefined;
947
+ signal: AbortSignal;
840
948
  }
841
949
  /**
842
950
  * Transport used to stream the thread.
843
951
  * Only applicable for custom endpoints using `toLangGraphEventStream` or `toLangGraphEventStreamResponse`.
844
952
  */
845
953
  interface UseStreamTransport<StateType extends Record<string, unknown> = Record<string, unknown>, Bag extends BagTemplate = BagTemplate> {
846
- stream: (payload: {
847
- input: GetUpdateType<Bag, StateType> | null | undefined;
848
- context: GetConfigurableType<Bag> | undefined;
849
- command: Command | undefined;
850
- config: ConfigWithConfigurable<GetConfigurableType<Bag>> | undefined;
851
- signal: AbortSignal;
852
- }) => Promise<AsyncGenerator<{
954
+ stream: (payload: UseStreamTransportPayload<StateType, Bag>) => Promise<AsyncGenerator<{
853
955
  id?: string;
854
956
  event: string;
855
957
  data: unknown;
856
958
  }>>;
857
959
  }
858
- type UseStreamCustomOptions<StateType extends Record<string, unknown> = Record<string, unknown>, Bag extends BagTemplate = BagTemplate> = Pick<UseStreamOptions<StateType, Bag>, "messagesKey" | "threadId" | "onThreadId" | "onError" | "onCreated" | "onUpdateEvent" | "onCustomEvent" | "onMetadataEvent" | "onLangChainEvent" | "onDebugEvent" | "onCheckpointEvent" | "onTaskEvent" | "onStop" | "initialValues" | "throttle"> & {
960
+ type UseStreamCustomOptions<StateType extends Record<string, unknown> = Record<string, unknown>, Bag extends BagTemplate = BagTemplate> = Pick<UseStreamOptions<StateType, Bag>, "messagesKey" | "threadId" | "onThreadId" | "onError" | "onCreated" | "onUpdateEvent" | "onCustomEvent" | "onMetadataEvent" | "onLangChainEvent" | "onDebugEvent" | "onCheckpointEvent" | "onTaskEvent" | "onStop" | "initialValues" | "throttle" | "onToolEvent"> & {
859
961
  transport: UseStreamTransport<StateType, Bag>;
860
962
  };
861
- type CustomSubmitOptions<StateType extends Record<string, unknown> = Record<string, unknown>, ConfigurableType extends Record<string, unknown> = Record<string, unknown>> = Pick<SubmitOptions<StateType, ConfigurableType>, "optimisticValues" | "context" | "command" | "config">;
963
+ /**
964
+ * Union of all custom stream options types.
965
+ *
966
+ * Used internally by the implementation to accept any custom options type.
967
+ * This allows the implementation functions to handle options from
968
+ * any agent type while maintaining type safety at the public API level.
969
+ *
970
+ * @internal
971
+ */
972
+ type AnyStreamCustomOptions<StateType extends Record<string, unknown> = Record<string, unknown>, Bag extends BagTemplate = BagTemplate> = UseStreamCustomOptions<StateType, Bag> & {
973
+ subagentToolNames?: string[];
974
+ filterSubagentMessages?: boolean;
975
+ toMessage?: (chunk: BaseMessage) => Message | BaseMessage;
976
+ };
977
+ type CustomSubmitOptions<StateType extends Record<string, unknown> = Record<string, unknown>, ConfigurableType extends Record<string, unknown> = Record<string, unknown>> = Pick<SubmitOptions<StateType, ConfigurableType>, "optimisticValues" | "context" | "command" | "config" | "onError">;
862
978
  //#endregion
863
- export { AgentTypeConfigLike, BaseSubagentState, CompiledSubAgentLike, CustomSubmitOptions, DeepAgentTypeConfigLike, DefaultSubagentStates, ExtractAgentConfig, ExtractDeepAgentConfig, ExtractSubAgentMiddleware, GetConfigurableType, GetInterruptType, GetToolCallsType, GetUpdateType, InferAgentState, InferAgentToolCalls, InferDeepAgentSubagents, InferSubagentByName, InferSubagentNames, InferSubagentState, IsAgentLike, IsDeepAgentLike, MessageMetadata, RunCallbackMeta, StreamBase, SubAgentLike, SubagentStateMap, SubagentStatus, SubagentStream, SubagentStreamInterface, SubagentToolCall, SubmitOptions, UseStreamCustomOptions, UseStreamOptions, UseStreamThread, UseStreamTransport };
979
+ export { AcceptBaseMessages, AgentMiddlewareLike, AgentTypeConfigLike, AnyStreamCustomOptions, AnyStreamOptions, BaseSubagentState, CompiledSubAgentLike, CustomSubmitOptions, DeepAgentTypeConfigLike, DefaultSubagentStates, ExtractAgentConfig, ExtractDeepAgentConfig, ExtractSubAgentMiddleware, ExtractToolCallsFromState, GetConfigurableType, GetCustomEventType, GetInterruptType, GetToolCallsType, GetUpdateType, InferAgentState, InferAgentToolCalls, InferDeepAgentSubagents, InferMiddlewareStatesFromArray, InferSubagentByName, InferSubagentNames, InferSubagentState, IsAgentLike, IsDeepAgentLike, MessageMetadata, RunCallbackMeta, StreamBase, SubAgentLike, SubagentApi, SubagentStateMap, SubagentStatus, SubagentStream, SubagentStreamInterface, SubagentToolCall, SubmitOptions, UseStreamCustomOptions, UseStreamOptions, UseStreamThread, UseStreamTransport, UseStreamTransportPayload };
864
980
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","names":[],"sources":["../../src/ui/types.ts"],"mappings":";;;;;;;;;;;AA0CA;;;;;UAAiB,gBAAA;EAIf;EAFA,EAAA;EAME;EAJF,IAAA;EAMkB;EAJlB,IAAA;IAMc,4CAJZ,WAAA,WA0BQ;IAxBR,aAAA,GAAgB,YAAA,EAwBM;IAAA,CAtBrB,GAAA;EAAA;AAAA;;;;;AAwCL;;;;;;;;;;;;;;KAlBY,cAAA;;;;;KAMA,qBAAA,GAAwB,MAAA,SAAe,MAAA;;;;;;;;;;;UAYlC,UAAA,aACH,MAAA,8BACD,eAAA,kDAEY,MAAA,oBAA0B,qBAAA;EAmF3C;;;EA9EN,MAAA,EAAQ,SAAA;EA6EJ;;;EAxEJ,KAAA;EAmG4C;;;EA9F5C,SAAA;EAiGI;;;EA5FJ,QAAA,EAAU,OAAA,CAAQ,QAAA;EA4HK;;;;EAtHvB,SAAA,EAAW,kBAAA,CAAmB,QAAA;EAqHF;;;;;;EA7G5B,YAAA,GACE,OAAA,EAAS,SAAA,CAAU,QAAA,MAChB,kBAAA,CAAmB,QAAA;EApCD;;;;EA0CvB,SAAA,EAAW,SAAA,CAAU,aAAA;EA3BrB;;;;;EAkCA,UAAA,EAAY,SAAA,CAAU,aAAA;EAvBQ;;;;EA6B9B,SAAA,EAAW,GAAA,SAET,uBAAA,CACE,cAAA,OAAqB,cAAA,GACrB,QAAA,QACM,cAAA;EAxBL;;;EA+BL,eAAA,EAAiB,uBAAA,CACf,cAAA,OAAqB,cAAA,GACrB,QAAA,QACM,cAAA;EA5Ba;;;;;;EAqCrB,WAAA,GACE,UAAA,aAEE,uBAAA,CACE,cAAA,OAAqB,cAAA,GACrB,QAAA,QACM,cAAA;EA3BR;;;;;;;;;;;;;;;;EA+CJ,kBAAA;IAAA,qBAEuB,cAAA,WACnB,IAAA,EAAM,KAAA,GACL,uBAAA,CAAwB,cAAA,CAAe,KAAA,GAAQ,QAAA,EAAU,KAAA;IAAA,CAE3D,IAAA,WAAe,uBAAA,CACd,MAAA,mBACA,QAAA;EAAA;EALM;;;;;;;;;;;;;;;;;;;;AA2DZ;;;;EA1BE,qBAAA,GACE,SAAA,aACG,uBAAA,CACH,cAAA,OAAqB,cAAA,GACrB,QAAA,QACM,cAAA;AAAA;;;;;;;;;;;;;;;;;;UAqBO,uBAAA,aACH,MAAA,8BACD,eAAA,gDAEH,UAAA,CAAW,SAAA,EAAW,QAAA;EAK9B;EAHA,EAAA;EAG2B;EAA3B,QAAA,EAAU,gBAAA,CAAiB,YAAA;EAGnB;EAAR,MAAA,EAAQ,cAAA;EAMR;EAHA,MAAA;EASA;EANA,SAAA;EASW;EANX,QAAA;EASa;EANb,KAAA;EAMiB;EAHjB,SAAA,EAAW,IAAA;EAiCa;EA9BxB,WAAA,EAAa,IAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA8BH,cAAA,KACN,MAAA,8BACO,eAAA,IACT,eAAA,CAAgB,CAAA,iBAChB,uBAAA,CACE,gBAAA,CAAiB,CAAA,EAAG,mBAAA,CAAoB,CAAA,GAAI,kBAAA,CAAmB,CAAA,IAC/D,mBAAA,CAAoB,CAAA,GACpB,kBAAA,CAAmB,CAAA,KAErB,WAAA,CAAY,CAAA,iBACZ,uBAAA,CAAwB,eAAA,CAAgB,CAAA,GAAI,mBAAA,CAAoB,CAAA,KAChE,uBAAA,CAAwB,CAAA,EAAG,QAAA;;;;;UAad,mBAAA;EACf,QAAA;EACA,KAAA;EACA,OAAA;EACA,UAAA;EACA,KAAA;AAAA;;;;;KAOU,WAAA,MAAiB,CAAA;EAAY,aAAA,EAAe,mBAAA;AAAA;;;;;;;;;;AAZxD;KA0BY,kBAAA,MAAwB,CAAA;EAAY,aAAA;AAAA,IAC5C,MAAA,SAAe,mBAAA,GACb,MAAA;;;;;;UAeW,mBAAA;EAMf,IAAA;EACA,WAAA,GAAc,OAAA;EACd,kBAAA;IACE,MAAA,EAAQ,OAAA;IACR,aAAA,EAAe,cAAA;IACf,WAAA,EAAa,YAAA;IACb,KAAA,EAAO,MAAA;EAAA;AAAA;;;AA7BX;;;KAsCK,oBAAA,MAEH,CAAA,SAAU,mBAAA,6CAEN,OAAA,SAAgB,MAAA,gBACd,oBAAA,CAAqB,OAAA,SAIzB,CAAA;EAAY,WAAA;AAAA,IACV,oBAAA,CAAqB,CAAA;;;;;KAQtB,KAAA,oBAAyB,CAAA;;;AAvC9B;;;;;;;;;;KAqDY,8BAAA,MAEV,KAAA,CAAM,CAAA,sBAIJ,CAAA,iCAIA,CAAA,4BAIA,CAAA,mBAIA,CAAA,4EACE,oBAAA,CAAqB,KAAA,IAAS,8BAAA,CAA+B,IAAA,IAE/D,CAAA,0DACE,oBAAA,CAAqB,KAAA,IAAS,8BAAA,CAA+B,IAAA,IAE/D,CAAA,gCACE,oBAAA,CAAqB,CAAA,IAEvB,CAAA,uBACE,oBAAA,CAAqB,CAAA;;;;;;;;;;;;;;;;;;AAnE1B;;;;;;KA8FI,cAAA,YAA0B,eAAA;EAC7B,QAAA,EAAU,OAAA,CAAQ,QAAA;AAAA;AAAA,KAGR,eAAA,MAAqB,CAAA;EAAY,aAAA;AAAA,IACzC,kBAAA,CAAmB,CAAA,uBAGjB,cAAA,CAAe,mBAAA,CAAoB,CAAA,MAChC,kBAAA,CAAmB,CAAA,oCAGhB,oBAAA,CAAqB,kBAAA,CAAmB,CAAA,eAC5C,8BAAA,CAA+B,kBAAA,CAAmB,CAAA,mBACtD,CAAA;EAAY,YAAA;AAAA,IACZ,SAAA,GACA,CAAA;EAAY,QAAA;AAAA,IACZ,CAAA;;;;;;KAUC,cAAA,MAAoB,CAAA;EAEvB,KAAA,GAAQ,GAAA,iBAAoB,IAAA;AAAA,IAE1B,IAAA,GACA,CAAA;EAAY,MAAA;AAAA,IACZ,oBAAA,CAAqB,CAAA;;;AA9GG;;KAqHvB,eAAA,qBAAoC,CAAA,WAErC,CAAA;;;AAjGJ;;;;;;;;;KAgHK,qBAAA,MAA2B,CAAA;EAAY,IAAA;AAAA,IACxC,CAAA,kBACE,eAAA,CAAgB,CAAA,iBACd,cAAA,CAAe,CAAA,uBACb,IAAA,yBAGA,IAAA,SAAa,MAAA;EACT,IAAA,EAAM,CAAA;EAAG,IAAA,EAAM,IAAA;EAAM,EAAA;EAAa,IAAA;AAAA;;;;;;;;;;;;;;;;;;KAwBpC,mBAAA,MACV,kBAAA,CAAmB,CAAA,6CACf,qBAAA,CAAsB,IAAA,kBACpB,eAAA,GACA,qBAAA,CAAsB,IAAA,IACxB,eAAA;;;;;UAaW,YAAA;EACf,IAAA;EACA,WAAA;EACA,UAAA,YAAsB,mBAAA;AAAA;;;;;UAOP,oBAAA;EACf,IAAA;EACA,WAAA;EACA,QAAA;AAAA;;;;AAjJO;UAwJQ,uBAAA,SAAgC,mBAAA;EAC/C,SAAA;AAAA;;;;;KAOU,eAAA,MAAqB,CAAA;EAC/B,iBAAA,EAAmB,uBAAA;AAAA;;;;;AApIrB;;;;;;KAmJY,sBAAA,MAA4B,CAAA;EACtC,iBAAA;AAAA,IAEE,MAAA,SAAe,uBAAA,GACb,MAAA;;;;;KAQM,yBAAA,MAA+B,CAAA;EACzC,UAAA;AAAA,IAEE,CAAA,kBAAmB,mBAAA,KACjB,CAAA,GACA,CAAA,SAAU,mBAAA,KACV,CAAA;;;;;;;;;;;KAcM,uBAAA,MAA6B,sBAAA,CAAuB,CAAA,0BAE5D,sBAAA,CAAuB,CAAA;;;;;;;;;;;;;;;;;;KAmBf,mBAAA,4BAGR,uBAAA,CAAwB,CAAA,kCACxB,EAAA;EAAa,IAAA,EAAM,KAAA;AAAA,IACjB,EAAA;AA9LC;;;;;;AAAA,KAwMK,iBAAA,YAA6B,eAAA;EACvC,QAAA,EAAU,OAAA,CAAQ,QAAA;AAAA;;;;;;;;;;;;;;;AA3LM;;;;;;KAkNd,kBAAA,qCAGC,eAAA,IACT,mBAAA,CAAoB,CAAA,EAAG,KAAA,kBACvB,MAAA,oBACA,mBAAA,CAAoB,CAAA,EAAG,KAAA,qBACvB,iBAAA,CAAkB,QAAA,IAChB,8BAAA,CAA+B,yBAAA,CAA0B,EAAA,KAC3D,MAAA;;;AAlNC;;;;;;;;;;;;;;KAoOO,kBAAA,MACV,uBAAA,CAAwB,CAAA,kCACpB,EAAA;EAAa,IAAA;AAAA,IACX,CAAA,kBACE,CAAA;;;;;;;;;;;;;;;;;;AAzLV;;;KAkNY,gBAAA,eAA+B,eAAA,YACnC,kBAAA,CAAmB,CAAA,IAAK,kBAAA,CAAmB,CAAA,EAAG,CAAA,EAAG,QAAA;;;;;;;;;KAiBpD,+BAAA,MAAqC,CAAA,SAAU,SAAA,aAChD,EAAA;EAAa,IAAA;AAAA,mBAGI,CAAA,WAEb,EAAA;;;;;;;;;AAxNR;;;;;;;;;;KA8OY,yBAAA,mBACQ,MAAA,qBAChB,SAAA;EAAoB,QAAA;AAAA,IACpB,QAAA,gCACE,+BAAA,CAAgC,CAAA,IAChC,QAAA,uBACA,+BAAA,CAAgC,CAAA;AAAA,KAI1B,eAAA,mBAAkC,MAAA;EA7O5C;;;EAiPA,SAAA;EA/OQ;AAOV;;EA6OE,cAAA,EAAgB,WAAA,CAAY,SAAA;EA7OmB;;AAQjD;EA0OE,MAAA;EA1OyB;;;;EAgPzB,aAAA;EA/OmB;;;AAerB;EAsOE,cAAA,EAAgB,MAAA;AAAA;AAAA,KAGN,aAAA,aACE,WAAA,oBACM,MAAA,qBAChB,GAAA;EAAc,UAAA;AAAA,IACd,GAAA,iBACA,OAAA,CAAQ,SAAA;AAAA,KAEA,mBAAA,aAAgC,WAAA,IAAe,GAAA;EACzD,gBAAA,EAAkB,MAAA;AAAA,IAEhB,GAAA,uBACA,MAAA;AAAA,KAEQ,gBAAA,aAA6B,WAAA,IAAe,GAAA;EACtD,aAAA;AAAA,IAEE,GAAA;AAAA,KAGQ,kBAAA,aAA+B,WAAA,IAAe,GAAA;EACxD,eAAA;AAAA,IAEE,GAAA;;;;;;;;;;;;;;;;;;;AA/NJ;;;KAuPY,gBAAA,mBAAmC,MAAA,qBAC7C,yBAAA,CAA0B,SAAA,kBACtB,eAAA,GACA,yBAAA,CAA0B,SAAA;AAAA,UAEf,eAAA;EACf,MAAA;EACA,SAAA;AAAA;AAAA,UAGe,eAAA,mBAAkC,MAAA;EACjD,IAAA,EAAM,WAAA,CAAY,SAAA;EAClB,KAAA;EACA,SAAA;EACA,MAAA,GACE,QAAA,cACG,OAAA,CAAQ,WAAA,CAAY,SAAA;AAAA;AAAA,UAGV,gBAAA,mBACG,MAAA,oBAA0B,MAAA,+BAChC,WAAA,GAAc,WAAA;EA1QA;AAmB5B;;EA4PE,WAAA;EAzP0B;;;EA8P1B,MAAA,GAAS,MAAA;EA7PiB;;;EAkQ1B,MAAA,GAAS,YAAA;EAnQiB;;;EAwQ1B,MAAA,GAAS,YAAA;EAvQY;;;EA4QrB,aAAA,GAAgB,YAAA;EAjQN;;;EAsQV,cAAA,GAAiB,YAAA;EArQC;;;;;;EA6QlB,WAAA;EA7QU;;;EAkRV,OAAA,IAAW,KAAA,WAAgB,GAAA,EAAK,eAAA;EA3PtB;;;EAgQV,QAAA,IACE,KAAA,EAAO,WAAA,CAAY,SAAA,GACnB,GAAA,EAAK,eAAA;EA9Pe;;;EAoQtB,SAAA,IAAa,GAAA,EAAK,eAAA;EAlQI;;;EAuQtB,aAAA,IACE,IAAA,EAAM,kBAAA,CAAmB,aAAA,CAAc,GAAA,EAAK,SAAA,YAC5C,OAAA;IACE,SAAA;IACA,MAAA,GACE,MAAA,EAAQ,OAAA,CAAQ,SAAA,MAAe,IAAA,EAAM,SAAA,KAAc,OAAA,CAAQ,SAAA;EAAA;EA1Q7D;;;EAkRJ,aAAA,IACE,IAAA,EAAM,iBAAA,CAAkB,kBAAA,CAAmB,GAAA,YAC3C,OAAA;IACE,SAAA;IACA,MAAA,GACE,MAAA,EAAQ,OAAA,CAAQ,SAAA,MAAe,IAAA,EAAM,SAAA,KAAc,OAAA,CAAQ,SAAA;EAAA;EA5RtD;;;EAoSX,eAAA,IAAmB,IAAA,EAAM,mBAAA;EAlSvB;;;;EAwSF,gBAAA,IAAoB,IAAA,EAAM,iBAAA;EAtSxB;;;;EA4SF,YAAA,IACE,IAAA,EAAM,gBAAA,UACN,OAAA;IAAW,SAAA;EAAA;EA5SL;AAkBV;;EAgSE,iBAAA,IACE,IAAA,EAAM,sBAAA,CAAuB,SAAA,WAC7B,OAAA;IAAW,SAAA;EAAA;EAjSb;;;EAuSA,WAAA,IACE,IAAA,EAAM,gBAAA,CAAiB,SAAA,EAAW,aAAA,CAAc,GAAA,EAAK,SAAA,YACrD,OAAA;IAAW,SAAA;EAAA;EAvSP;;;;AA0BR;;;;;;;;;;;;;;;EAmSE,MAAA,IAAU,OAAA;IACR,MAAA,GACE,MAAA,EAAQ,OAAA,CAAQ,SAAA,MAAe,IAAA,EAAM,SAAA,KAAc,OAAA,CAAQ,SAAA;EAAA;EApSjC;;;EA2S9B,QAAA;EA3S+D;;AAC/D;EA+SA,UAAA,IAAc,QAAA;EA/RoB;EAkSlC,gBAAA,oBAAoC,kBAAA;EAlSD;;;;;;;;;EA6SnC,aAAA,GAAgB,SAAA;EAvSR;AAsBV;;;;;EAyRE,iBAAA;IAAgC,KAAA;EAAA;EAnR5B;;;EAwRJ,MAAA,GAAS,eAAA,CAAgB,SAAA;EA7RP;;;;;;;EAsSlB,QAAA;AAAA;AAAA,UA0BQ,kBAAA;EACR,OAAA,CAAQ,GAAA;EACR,OAAA,CAAQ,GAAA,yBAA4B,KAAA;EACpC,UAAA,CAAW,GAAA;AAAA;AAAA,KAGR,sBAAA,0BAAgD,MAAA,qBACnD,MAAA;EAAW,YAAA,GAAe,gBAAA;AAAA;AAAA,UAEX,aAAA,mBACG,MAAA,oBAA0B,MAAA,uCACxB,MAAA,oBAA0B,MAAA;EAE9C,MAAA,GAAS,sBAAA,CAAuB,WAAA;EAChC,OAAA,GAAU,WAAA;EACV,UAAA,GAAa,IAAA,CAAK,UAAA;EAClB,OAAA,GAAU,OAAA;EACV,eAAA;EACA,cAAA;EACA,QAAA,GAAW,QAAA;EACX,iBAAA,GAAoB,iBAAA;EACpB,YAAA,GAAe,oBAAA;EACf,YAAA,GAAe,cAAA;EACf,YAAA;EACA,UAAA,GAAa,KAAA,CAAM,UAAA;EACnB,KAAA;EACA,gBAAA,GACI,OAAA,CAAQ,SAAA,MACN,IAAA,EAAM,SAAA,KAAc,OAAA,CAAQ,SAAA;EAjTzB;;;;;EAwTT,eAAA;EA1TgB;;;;;EAiUhB,eAAA;EA7TU;;;;;;;EAsUV,UAAA,GAAa,UAAA;EAlUL;;;;;;EA0UR,QAAA;AAAA;;;;AAxUF;UA+UiB,kBAAA,mBACG,MAAA,oBAA0B,MAAA,+BAChC,WAAA,GAAc,WAAA;EAE1B,MAAA,GAAS,OAAA;IACP,KAAA,EAAO,aAAA,CAAc,GAAA,EAAK,SAAA;IAC1B,OAAA,EAAS,mBAAA,CAAoB,GAAA;IAC7B,OAAA,EAAS,OAAA;IACT,MAAA,EAAQ,sBAAA,CAAuB,mBAAA,CAAoB,GAAA;IACnD,MAAA,EAAQ,WAAA;EAAA,MACJ,OAAA,CAAQ,cAAA;IAAiB,EAAA;IAAa,KAAA;IAAe,IAAA;EAAA;AAAA;AAAA,KAGjD,sBAAA,mBACQ,MAAA,oBAA0B,MAAA,+BAChC,WAAA,GAAc,WAAA,IACxB,IAAA,CACF,gBAAA,CAAiB,SAAA,EAAW,GAAA;EAgBxB,SAAA,EAAW,kBAAA,CAAmB,SAAA,EAAW,GAAA;AAAA;AAAA,KAoBnC,mBAAA,mBACQ,MAAA,oBAA0B,MAAA,4CACnB,MAAA,oBAA0B,MAAA,qBACjD,IAAA,CACF,aAAA,CAAc,SAAA,EAAW,gBAAA"}
1
+ {"version":3,"file":"types.d.ts","names":[],"sources":["../../src/ui/types.ts"],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ //#region src/ui/utils.d.ts
2
+ declare function unique<T>(array: T[]): T[];
3
+ declare function findLast<T>(array: T[], predicate: (item: T) => boolean): T | undefined;
4
+ declare function filterStream<T, TReturn>(stream: AsyncGenerator<T, TReturn>, filter: (event: T) => boolean): AsyncGenerator<T, TReturn>;
5
+ //#endregion
6
+ export { filterStream, findLast, unique };
7
+ //# sourceMappingURL=utils.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.cts","names":[],"sources":["../../src/ui/utils.ts"],"mappings":";iBAAgB,MAAA,GAAA,CAAU,KAAA,EAAO,CAAA,KAAG,CAAA;AAAA,iBAIpB,QAAA,GAAA,CAAY,KAAA,EAAO,CAAA,IAAK,SAAA,GAAY,IAAA,EAAM,CAAA,eAAa,CAAA;AAAA,iBAOhD,YAAA,YAAA,CACrB,MAAA,EAAQ,cAAA,CAAe,CAAA,EAAG,OAAA,GAC1B,MAAA,GAAS,KAAA,EAAO,CAAA,eACf,cAAA,CAAe,CAAA,EAAG,OAAA"}
@@ -0,0 +1,7 @@
1
+ //#region src/ui/utils.d.ts
2
+ declare function unique<T>(array: T[]): T[];
3
+ declare function findLast<T>(array: T[], predicate: (item: T) => boolean): T | undefined;
4
+ declare function filterStream<T, TReturn>(stream: AsyncGenerator<T, TReturn>, filter: (event: T) => boolean): AsyncGenerator<T, TReturn>;
5
+ //#endregion
6
+ export { filterStream, findLast, unique };
7
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","names":[],"sources":["../../src/ui/utils.ts"],"mappings":";iBAAgB,MAAA,GAAA,CAAU,KAAA,EAAO,CAAA,KAAG,CAAA;AAAA,iBAIpB,QAAA,GAAA,CAAY,KAAA,EAAO,CAAA,IAAK,SAAA,GAAY,IAAA,EAAM,CAAA,eAAa,CAAA;AAAA,iBAOhD,YAAA,YAAA,CACrB,MAAA,EAAQ,cAAA,CAAe,CAAA,EAAG,OAAA,GAC1B,MAAA,GAAS,KAAA,EAAO,CAAA,eACf,cAAA,CAAe,CAAA,EAAG,OAAA"}
@@ -0,0 +1,9 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
+ const require_sse = require('./sse.cjs');
3
+ const require_stream = require('./stream.cjs');
4
+ const require_tools = require('./tools.cjs');
5
+
6
+ exports.BytesLineDecoder = require_sse.BytesLineDecoder;
7
+ exports.IterableReadableStream = require_stream.IterableReadableStream;
8
+ exports.SSEDecoder = require_sse.SSEDecoder;
9
+ exports.getToolCallsWithResults = require_tools.getToolCallsWithResults;
@@ -0,0 +1,4 @@
1
+ import { getToolCallsWithResults } from "./tools.cjs";
2
+ import { BytesLineDecoder, SSEDecoder } from "./sse.cjs";
3
+ import { IterableReadableStream } from "./stream.cjs";
4
+ export { BytesLineDecoder, IterableReadableStream, SSEDecoder, getToolCallsWithResults };
@@ -0,0 +1,4 @@
1
+ import { getToolCallsWithResults } from "./tools.js";
2
+ import { BytesLineDecoder, SSEDecoder } from "./sse.js";
3
+ import { IterableReadableStream } from "./stream.js";
4
+ export { BytesLineDecoder, IterableReadableStream, SSEDecoder, getToolCallsWithResults };
@@ -0,0 +1,5 @@
1
+ import { BytesLineDecoder, SSEDecoder } from "./sse.js";
2
+ import { IterableReadableStream } from "./stream.js";
3
+ import { getToolCallsWithResults } from "./tools.js";
4
+
5
+ export { BytesLineDecoder, IterableReadableStream, SSEDecoder, getToolCallsWithResults };
@@ -0,0 +1,11 @@
1
+ //#region src/utils/sse.d.ts
2
+ declare function BytesLineDecoder(): TransformStream<Uint8Array<ArrayBufferLike>, Uint8Array<ArrayBufferLike>>;
3
+ interface StreamPart {
4
+ id: string | undefined;
5
+ event: string;
6
+ data: unknown;
7
+ }
8
+ declare function SSEDecoder(): TransformStream<Uint8Array<ArrayBufferLike>, StreamPart>;
9
+ //#endregion
10
+ export { BytesLineDecoder, SSEDecoder };
11
+ //# sourceMappingURL=sse.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sse.d.cts","names":[],"sources":["../../src/utils/sse.ts"],"mappings":";iBAQgB,gBAAA,CAAA,GAAgB,eAAA,CAAA,UAAA,CAAA,eAAA,GAAA,UAAA,CAAA,eAAA;AAAA,UAoFtB,UAAA;EACR,EAAA;EACA,KAAA;EACA,IAAA;AAAA;AAAA,iBAGc,UAAA,CAAA,GAAU,eAAA,CAAA,UAAA,CAAA,eAAA,GAAA,UAAA"}
@@ -0,0 +1,11 @@
1
+ //#region src/utils/sse.d.ts
2
+ declare function BytesLineDecoder(): TransformStream<Uint8Array<ArrayBufferLike>, Uint8Array<ArrayBufferLike>>;
3
+ interface StreamPart {
4
+ id: string | undefined;
5
+ event: string;
6
+ data: unknown;
7
+ }
8
+ declare function SSEDecoder(): TransformStream<Uint8Array<ArrayBufferLike>, StreamPart>;
9
+ //#endregion
10
+ export { BytesLineDecoder, SSEDecoder };
11
+ //# sourceMappingURL=sse.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sse.d.ts","names":[],"sources":["../../src/utils/sse.ts"],"mappings":";iBAQgB,gBAAA,CAAA,GAAgB,eAAA,CAAA,UAAA,CAAA,eAAA,GAAA,UAAA,CAAA,eAAA;AAAA,UAoFtB,UAAA;EACR,EAAA;EACA,KAAA;EACA,IAAA;AAAA;AAAA,iBAGc,UAAA,CAAA,GAAU,eAAA,CAAA,UAAA,CAAA,eAAA,GAAA,UAAA"}
@@ -0,0 +1,19 @@
1
+ //#region src/utils/stream.d.ts
2
+ type IterableReadableStreamInterface<T> = ReadableStream<T> & AsyncIterable<T>;
3
+ /**
4
+ * Options for streaming with automatic retry logic.
5
+ */
6
+ declare class IterableReadableStream<T> extends ReadableStream<T> implements IterableReadableStreamInterface<T> {
7
+ reader: ReadableStreamDefaultReader<T>;
8
+ ensureReader(): void;
9
+ next(): Promise<IteratorResult<T>>;
10
+ return(): Promise<IteratorResult<T>>;
11
+ throw(e: any): Promise<IteratorResult<T>>;
12
+ [Symbol.asyncDispose](): Promise<void>;
13
+ [Symbol.asyncIterator](): this;
14
+ static fromReadableStream<T>(stream: ReadableStream<T>): IterableReadableStream<T>;
15
+ static fromAsyncGenerator<T>(generator: AsyncGenerator<T>): IterableReadableStream<T>;
16
+ }
17
+ //#endregion
18
+ export { IterableReadableStream };
19
+ //# sourceMappingURL=stream.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream.d.cts","names":[],"sources":["../../src/utils/stream.ts"],"mappings":";KAGK,+BAAA,MAAqC,cAAA,CAAe,CAAA,IAAK,aAAA,CAAc,CAAA;;;;cAyL/D,sBAAA,YACH,cAAA,CAAe,CAAA,aACZ,+BAAA,CAAgC,CAAA;EAEpC,MAAA,EAAQ,2BAAA,CAA4B,CAAA;EAE3C,YAAA,CAAA;EAMM,IAAA,CAAA,GAAQ,OAAA,CAAQ,cAAA,CAAe,CAAA;EAsB/B,MAAA,CAAA,GAAU,OAAA,CAAQ,cAAA,CAAe,CAAA;EAYjC,KAAA,CAAM,CAAA,QAAS,OAAA,CAAQ,cAAA,CAAe,CAAA;EAAA,CAYrC,MAAA,CAAO,YAAA,KAAa,OAAA;EAAA,CAI1B,MAAA,CAAO,aAAA;EAAA,OAID,kBAAA,GAAA,CAAsB,MAAA,EAAQ,cAAA,CAAe,CAAA,IAAE,sBAAA,CAAA,CAAA;EAAA,OAyB/C,kBAAA,GAAA,CAAsB,SAAA,EAAW,cAAA,CAAe,CAAA,IAAE,sBAAA,CAAA,CAAA;AAAA"}
@@ -0,0 +1,19 @@
1
+ //#region src/utils/stream.d.ts
2
+ type IterableReadableStreamInterface<T> = ReadableStream<T> & AsyncIterable<T>;
3
+ /**
4
+ * Options for streaming with automatic retry logic.
5
+ */
6
+ declare class IterableReadableStream<T> extends ReadableStream<T> implements IterableReadableStreamInterface<T> {
7
+ reader: ReadableStreamDefaultReader<T>;
8
+ ensureReader(): void;
9
+ next(): Promise<IteratorResult<T>>;
10
+ return(): Promise<IteratorResult<T>>;
11
+ throw(e: any): Promise<IteratorResult<T>>;
12
+ [Symbol.asyncDispose](): Promise<void>;
13
+ [Symbol.asyncIterator](): this;
14
+ static fromReadableStream<T>(stream: ReadableStream<T>): IterableReadableStream<T>;
15
+ static fromAsyncGenerator<T>(generator: AsyncGenerator<T>): IterableReadableStream<T>;
16
+ }
17
+ //#endregion
18
+ export { IterableReadableStream };
19
+ //# sourceMappingURL=stream.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream.d.ts","names":[],"sources":["../../src/utils/stream.ts"],"mappings":";KAGK,+BAAA,MAAqC,cAAA,CAAe,CAAA,IAAK,aAAA,CAAc,CAAA;;;;cAyL/D,sBAAA,YACH,cAAA,CAAe,CAAA,aACZ,+BAAA,CAAgC,CAAA;EAEpC,MAAA,EAAQ,2BAAA,CAA4B,CAAA;EAE3C,YAAA,CAAA;EAMM,IAAA,CAAA,GAAQ,OAAA,CAAQ,cAAA,CAAe,CAAA;EAsB/B,MAAA,CAAA,GAAU,OAAA,CAAQ,cAAA,CAAe,CAAA;EAYjC,KAAA,CAAM,CAAA,QAAS,OAAA,CAAQ,cAAA,CAAe,CAAA;EAAA,CAYrC,MAAA,CAAO,YAAA,KAAa,OAAA;EAAA,CAI1B,MAAA,CAAO,aAAA;EAAA,OAID,kBAAA,GAAA,CAAsB,MAAA,EAAQ,cAAA,CAAe,CAAA,IAAE,sBAAA,CAAA,CAAA;EAAA,OAyB/C,kBAAA,GAAA,CAAsB,SAAA,EAAW,cAAA,CAAe,CAAA,IAAE,sBAAA,CAAA,CAAA;AAAA"}
@@ -20,28 +20,37 @@
20
20
  /**
21
21
  * Computes the lifecycle state of a tool call based on its result.
22
22
  */
23
- function computeToolCallState(result) {
24
- if (!result) return "pending";
25
- return result.status === "error" ? "error" : "completed";
23
+ function computeToolCallState(result, impliedCompleted) {
24
+ if (result) return result.status === "error" ? "error" : "completed";
25
+ if (impliedCompleted) return "completed";
26
+ return "pending";
26
27
  }
27
28
  function getToolCallsWithResults(messages) {
28
29
  const results = [];
29
30
  const toolResultsById = /* @__PURE__ */ new Map();
30
31
  for (const msg of messages) if (msg.type === "tool") toolResultsById.set(msg.tool_call_id, msg);
31
- for (const msg of messages) if (msg.type === "ai" && msg.tool_calls && msg.tool_calls.length > 0) {
32
- const aiMessage = msg;
33
- for (let i = 0; i < aiMessage.tool_calls.length; i += 1) {
34
- const call = aiMessage.tool_calls[i];
35
- const callId = call.id;
36
- const result = callId ? toolResultsById.get(callId) : void 0;
37
- results.push({
38
- id: callId ?? `${aiMessage.id ?? "unknown"}-${i}`,
39
- call,
40
- result,
41
- aiMessage,
42
- index: i,
43
- state: computeToolCallState(result)
44
- });
32
+ for (let msgIdx = 0; msgIdx < messages.length; msgIdx += 1) {
33
+ const msg = messages[msgIdx];
34
+ if (msg.type === "ai" && msg.tool_calls && msg.tool_calls.length > 0) {
35
+ const aiMessage = msg;
36
+ let impliedCompleted = false;
37
+ for (let j = msgIdx + 1; j < messages.length; j += 1) if (messages[j].type === "ai") {
38
+ impliedCompleted = true;
39
+ break;
40
+ }
41
+ for (let i = 0; i < aiMessage.tool_calls.length; i += 1) {
42
+ const call = aiMessage.tool_calls[i];
43
+ const callId = call.id;
44
+ const result = callId ? toolResultsById.get(callId) : void 0;
45
+ results.push({
46
+ id: callId ?? `${aiMessage.id ?? "unknown"}-${i}`,
47
+ call,
48
+ result,
49
+ aiMessage,
50
+ index: i,
51
+ state: computeToolCallState(result, impliedCompleted)
52
+ });
53
+ }
45
54
  }
46
55
  }
47
56
  return results;
@@ -1 +1 @@
1
- {"version":3,"file":"tools.cjs","names":[],"sources":["../../src/utils/tools.ts"],"sourcesContent":["import type {\n Message,\n AIMessage,\n ToolMessage,\n ToolCallState,\n ToolCallWithResult,\n DefaultToolCall,\n} from \"../types.messages.js\";\n\n/**\n * Extracts tool calls with their results from a list of messages.\n *\n * @template ToolCall The type of tool calls.\n * @param messages The list of messages to extract tool calls from.\n * @returns An array of ToolCallWithResult objects.\n *\n * @example\n * ```ts\n * const toolCalls = getToolCallsWithResults(messages);\n * for (const { call, result } of toolCalls) {\n * if (call.name === \"get_weather\") {\n * console.log(`Weather for ${call.args.location}:`, result?.content);\n * }\n * }\n * ```\n */\n/**\n * Computes the lifecycle state of a tool call based on its result.\n */\nfunction computeToolCallState(result: ToolMessage | undefined): ToolCallState {\n if (!result) return \"pending\";\n return result.status === \"error\" ? \"error\" : \"completed\";\n}\n\nexport function getToolCallsWithResults<ToolCall = DefaultToolCall>(\n messages: Message<ToolCall>[]\n): ToolCallWithResult<ToolCall>[] {\n const results: ToolCallWithResult<ToolCall>[] = [];\n\n // Create a map of tool_call_id to ToolMessage for quick lookup\n const toolResultsById = new Map<string, ToolMessage>();\n for (const msg of messages) {\n if (msg.type === \"tool\") {\n toolResultsById.set(msg.tool_call_id, msg);\n }\n }\n\n // Find all AI messages with tool calls and pair them with results\n for (const msg of messages) {\n if (msg.type === \"ai\" && msg.tool_calls && msg.tool_calls.length > 0) {\n const aiMessage = msg as AIMessage<ToolCall>;\n for (let i = 0; i < aiMessage.tool_calls!.length; i += 1) {\n const call = aiMessage.tool_calls![i] as ToolCall & { id?: string };\n const callId = call.id as string | undefined;\n const result = callId ? toolResultsById.get(callId) : undefined;\n\n results.push({\n id: callId ?? `${aiMessage.id ?? \"unknown\"}-${i}`,\n call,\n result,\n aiMessage,\n index: i,\n state: computeToolCallState(result),\n });\n }\n }\n }\n\n return results;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AA6BA,SAAS,qBAAqB,QAAgD;AAC5E,KAAI,CAAC,OAAQ,QAAO;AACpB,QAAO,OAAO,WAAW,UAAU,UAAU;;AAG/C,SAAgB,wBACd,UACgC;CAChC,MAAM,UAA0C,EAAE;CAGlD,MAAM,kCAAkB,IAAI,KAA0B;AACtD,MAAK,MAAM,OAAO,SAChB,KAAI,IAAI,SAAS,OACf,iBAAgB,IAAI,IAAI,cAAc,IAAI;AAK9C,MAAK,MAAM,OAAO,SAChB,KAAI,IAAI,SAAS,QAAQ,IAAI,cAAc,IAAI,WAAW,SAAS,GAAG;EACpE,MAAM,YAAY;AAClB,OAAK,IAAI,IAAI,GAAG,IAAI,UAAU,WAAY,QAAQ,KAAK,GAAG;GACxD,MAAM,OAAO,UAAU,WAAY;GACnC,MAAM,SAAS,KAAK;GACpB,MAAM,SAAS,SAAS,gBAAgB,IAAI,OAAO,GAAG;AAEtD,WAAQ,KAAK;IACX,IAAI,UAAU,GAAG,UAAU,MAAM,UAAU,GAAG;IAC9C;IACA;IACA;IACA,OAAO;IACP,OAAO,qBAAqB,OAAO;IACpC,CAAC;;;AAKR,QAAO"}
1
+ {"version":3,"file":"tools.cjs","names":[],"sources":["../../src/utils/tools.ts"],"sourcesContent":["import type {\n Message,\n AIMessage,\n ToolMessage,\n ToolCallState,\n ToolCallWithResult,\n DefaultToolCall,\n} from \"../types.messages.js\";\n\n/**\n * Extracts tool calls with their results from a list of messages.\n *\n * @template ToolCall The type of tool calls.\n * @param messages The list of messages to extract tool calls from.\n * @returns An array of ToolCallWithResult objects.\n *\n * @example\n * ```ts\n * const toolCalls = getToolCallsWithResults(messages);\n * for (const { call, result } of toolCalls) {\n * if (call.name === \"get_weather\") {\n * console.log(`Weather for ${call.args.location}:`, result?.content);\n * }\n * }\n * ```\n */\n/**\n * Computes the lifecycle state of a tool call based on its result.\n */\nfunction computeToolCallState(\n result: ToolMessage | undefined,\n impliedCompleted: boolean\n): ToolCallState {\n if (result) return result.status === \"error\" ? \"error\" : \"completed\";\n if (impliedCompleted) return \"completed\";\n return \"pending\";\n}\n\nexport function getToolCallsWithResults<ToolCall = DefaultToolCall>(\n messages: Message<ToolCall>[]\n): ToolCallWithResult<ToolCall>[] {\n const results: ToolCallWithResult<ToolCall>[] = [];\n\n // Create a map of tool_call_id to ToolMessage for quick lookup\n const toolResultsById = new Map<string, ToolMessage>();\n for (const msg of messages) {\n if (msg.type === \"tool\") {\n toolResultsById.set(msg.tool_call_id, msg);\n }\n }\n\n // Find all AI messages with tool calls and pair them with results.\n // For each, independently check if there's a subsequent AI message,\n // which implies the tools completed (handles tools returning Commands\n // where ToolMessages are embedded in the state update rather than streamed).\n for (let msgIdx = 0; msgIdx < messages.length; msgIdx += 1) {\n const msg = messages[msgIdx];\n if (msg.type === \"ai\" && msg.tool_calls && msg.tool_calls.length > 0) {\n const aiMessage = msg as AIMessage<ToolCall>;\n\n let impliedCompleted = false;\n for (let j = msgIdx + 1; j < messages.length; j += 1) {\n if (messages[j].type === \"ai\") {\n impliedCompleted = true;\n break;\n }\n }\n\n for (let i = 0; i < aiMessage.tool_calls!.length; i += 1) {\n const call = aiMessage.tool_calls![i] as ToolCall & { id?: string };\n const callId = call.id as string | undefined;\n const result = callId ? toolResultsById.get(callId) : undefined;\n\n results.push({\n id: callId ?? `${aiMessage.id ?? \"unknown\"}-${i}`,\n call,\n result,\n aiMessage,\n index: i,\n state: computeToolCallState(result, impliedCompleted),\n });\n }\n }\n }\n\n return results;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AA6BA,SAAS,qBACP,QACA,kBACe;AACf,KAAI,OAAQ,QAAO,OAAO,WAAW,UAAU,UAAU;AACzD,KAAI,iBAAkB,QAAO;AAC7B,QAAO;;AAGT,SAAgB,wBACd,UACgC;CAChC,MAAM,UAA0C,EAAE;CAGlD,MAAM,kCAAkB,IAAI,KAA0B;AACtD,MAAK,MAAM,OAAO,SAChB,KAAI,IAAI,SAAS,OACf,iBAAgB,IAAI,IAAI,cAAc,IAAI;AAQ9C,MAAK,IAAI,SAAS,GAAG,SAAS,SAAS,QAAQ,UAAU,GAAG;EAC1D,MAAM,MAAM,SAAS;AACrB,MAAI,IAAI,SAAS,QAAQ,IAAI,cAAc,IAAI,WAAW,SAAS,GAAG;GACpE,MAAM,YAAY;GAElB,IAAI,mBAAmB;AACvB,QAAK,IAAI,IAAI,SAAS,GAAG,IAAI,SAAS,QAAQ,KAAK,EACjD,KAAI,SAAS,GAAG,SAAS,MAAM;AAC7B,uBAAmB;AACnB;;AAIJ,QAAK,IAAI,IAAI,GAAG,IAAI,UAAU,WAAY,QAAQ,KAAK,GAAG;IACxD,MAAM,OAAO,UAAU,WAAY;IACnC,MAAM,SAAS,KAAK;IACpB,MAAM,SAAS,SAAS,gBAAgB,IAAI,OAAO,GAAG;AAEtD,YAAQ,KAAK;KACX,IAAI,UAAU,GAAG,UAAU,MAAM,UAAU,GAAG;KAC9C;KACA;KACA;KACA,OAAO;KACP,OAAO,qBAAqB,QAAQ,iBAAiB;KACtD,CAAC;;;;AAKR,QAAO"}
@@ -0,0 +1,7 @@
1
+ import { DefaultToolCall, Message, ToolCallWithResult } from "../types.messages.cjs";
2
+
3
+ //#region src/utils/tools.d.ts
4
+ declare function getToolCallsWithResults<ToolCall = DefaultToolCall>(messages: Message<ToolCall>[]): ToolCallWithResult<ToolCall>[];
5
+ //#endregion
6
+ export { getToolCallsWithResults };
7
+ //# sourceMappingURL=tools.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.d.cts","names":[],"sources":["../../src/utils/tools.ts"],"mappings":";;;iBAsCgB,uBAAA,YAAmC,eAAA,CAAA,CACjD,QAAA,EAAU,OAAA,CAAQ,QAAA,MACjB,kBAAA,CAAmB,QAAA"}
@@ -0,0 +1,7 @@
1
+ import { DefaultToolCall, Message, ToolCallWithResult } from "../types.messages.js";
2
+
3
+ //#region src/utils/tools.d.ts
4
+ declare function getToolCallsWithResults<ToolCall = DefaultToolCall>(messages: Message<ToolCall>[]): ToolCallWithResult<ToolCall>[];
5
+ //#endregion
6
+ export { getToolCallsWithResults };
7
+ //# sourceMappingURL=tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.d.ts","names":[],"sources":["../../src/utils/tools.ts"],"mappings":";;;iBAsCgB,uBAAA,YAAmC,eAAA,CAAA,CACjD,QAAA,EAAU,OAAA,CAAQ,QAAA,MACjB,kBAAA,CAAmB,QAAA"}
@@ -19,28 +19,37 @@
19
19
  /**
20
20
  * Computes the lifecycle state of a tool call based on its result.
21
21
  */
22
- function computeToolCallState(result) {
23
- if (!result) return "pending";
24
- return result.status === "error" ? "error" : "completed";
22
+ function computeToolCallState(result, impliedCompleted) {
23
+ if (result) return result.status === "error" ? "error" : "completed";
24
+ if (impliedCompleted) return "completed";
25
+ return "pending";
25
26
  }
26
27
  function getToolCallsWithResults(messages) {
27
28
  const results = [];
28
29
  const toolResultsById = /* @__PURE__ */ new Map();
29
30
  for (const msg of messages) if (msg.type === "tool") toolResultsById.set(msg.tool_call_id, msg);
30
- for (const msg of messages) if (msg.type === "ai" && msg.tool_calls && msg.tool_calls.length > 0) {
31
- const aiMessage = msg;
32
- for (let i = 0; i < aiMessage.tool_calls.length; i += 1) {
33
- const call = aiMessage.tool_calls[i];
34
- const callId = call.id;
35
- const result = callId ? toolResultsById.get(callId) : void 0;
36
- results.push({
37
- id: callId ?? `${aiMessage.id ?? "unknown"}-${i}`,
38
- call,
39
- result,
40
- aiMessage,
41
- index: i,
42
- state: computeToolCallState(result)
43
- });
31
+ for (let msgIdx = 0; msgIdx < messages.length; msgIdx += 1) {
32
+ const msg = messages[msgIdx];
33
+ if (msg.type === "ai" && msg.tool_calls && msg.tool_calls.length > 0) {
34
+ const aiMessage = msg;
35
+ let impliedCompleted = false;
36
+ for (let j = msgIdx + 1; j < messages.length; j += 1) if (messages[j].type === "ai") {
37
+ impliedCompleted = true;
38
+ break;
39
+ }
40
+ for (let i = 0; i < aiMessage.tool_calls.length; i += 1) {
41
+ const call = aiMessage.tool_calls[i];
42
+ const callId = call.id;
43
+ const result = callId ? toolResultsById.get(callId) : void 0;
44
+ results.push({
45
+ id: callId ?? `${aiMessage.id ?? "unknown"}-${i}`,
46
+ call,
47
+ result,
48
+ aiMessage,
49
+ index: i,
50
+ state: computeToolCallState(result, impliedCompleted)
51
+ });
52
+ }
44
53
  }
45
54
  }
46
55
  return results;
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","names":[],"sources":["../../src/utils/tools.ts"],"sourcesContent":["import type {\n Message,\n AIMessage,\n ToolMessage,\n ToolCallState,\n ToolCallWithResult,\n DefaultToolCall,\n} from \"../types.messages.js\";\n\n/**\n * Extracts tool calls with their results from a list of messages.\n *\n * @template ToolCall The type of tool calls.\n * @param messages The list of messages to extract tool calls from.\n * @returns An array of ToolCallWithResult objects.\n *\n * @example\n * ```ts\n * const toolCalls = getToolCallsWithResults(messages);\n * for (const { call, result } of toolCalls) {\n * if (call.name === \"get_weather\") {\n * console.log(`Weather for ${call.args.location}:`, result?.content);\n * }\n * }\n * ```\n */\n/**\n * Computes the lifecycle state of a tool call based on its result.\n */\nfunction computeToolCallState(result: ToolMessage | undefined): ToolCallState {\n if (!result) return \"pending\";\n return result.status === \"error\" ? \"error\" : \"completed\";\n}\n\nexport function getToolCallsWithResults<ToolCall = DefaultToolCall>(\n messages: Message<ToolCall>[]\n): ToolCallWithResult<ToolCall>[] {\n const results: ToolCallWithResult<ToolCall>[] = [];\n\n // Create a map of tool_call_id to ToolMessage for quick lookup\n const toolResultsById = new Map<string, ToolMessage>();\n for (const msg of messages) {\n if (msg.type === \"tool\") {\n toolResultsById.set(msg.tool_call_id, msg);\n }\n }\n\n // Find all AI messages with tool calls and pair them with results\n for (const msg of messages) {\n if (msg.type === \"ai\" && msg.tool_calls && msg.tool_calls.length > 0) {\n const aiMessage = msg as AIMessage<ToolCall>;\n for (let i = 0; i < aiMessage.tool_calls!.length; i += 1) {\n const call = aiMessage.tool_calls![i] as ToolCall & { id?: string };\n const callId = call.id as string | undefined;\n const result = callId ? toolResultsById.get(callId) : undefined;\n\n results.push({\n id: callId ?? `${aiMessage.id ?? \"unknown\"}-${i}`,\n call,\n result,\n aiMessage,\n index: i,\n state: computeToolCallState(result),\n });\n }\n }\n }\n\n return results;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AA6BA,SAAS,qBAAqB,QAAgD;AAC5E,KAAI,CAAC,OAAQ,QAAO;AACpB,QAAO,OAAO,WAAW,UAAU,UAAU;;AAG/C,SAAgB,wBACd,UACgC;CAChC,MAAM,UAA0C,EAAE;CAGlD,MAAM,kCAAkB,IAAI,KAA0B;AACtD,MAAK,MAAM,OAAO,SAChB,KAAI,IAAI,SAAS,OACf,iBAAgB,IAAI,IAAI,cAAc,IAAI;AAK9C,MAAK,MAAM,OAAO,SAChB,KAAI,IAAI,SAAS,QAAQ,IAAI,cAAc,IAAI,WAAW,SAAS,GAAG;EACpE,MAAM,YAAY;AAClB,OAAK,IAAI,IAAI,GAAG,IAAI,UAAU,WAAY,QAAQ,KAAK,GAAG;GACxD,MAAM,OAAO,UAAU,WAAY;GACnC,MAAM,SAAS,KAAK;GACpB,MAAM,SAAS,SAAS,gBAAgB,IAAI,OAAO,GAAG;AAEtD,WAAQ,KAAK;IACX,IAAI,UAAU,GAAG,UAAU,MAAM,UAAU,GAAG;IAC9C;IACA;IACA;IACA,OAAO;IACP,OAAO,qBAAqB,OAAO;IACpC,CAAC;;;AAKR,QAAO"}
1
+ {"version":3,"file":"tools.js","names":[],"sources":["../../src/utils/tools.ts"],"sourcesContent":["import type {\n Message,\n AIMessage,\n ToolMessage,\n ToolCallState,\n ToolCallWithResult,\n DefaultToolCall,\n} from \"../types.messages.js\";\n\n/**\n * Extracts tool calls with their results from a list of messages.\n *\n * @template ToolCall The type of tool calls.\n * @param messages The list of messages to extract tool calls from.\n * @returns An array of ToolCallWithResult objects.\n *\n * @example\n * ```ts\n * const toolCalls = getToolCallsWithResults(messages);\n * for (const { call, result } of toolCalls) {\n * if (call.name === \"get_weather\") {\n * console.log(`Weather for ${call.args.location}:`, result?.content);\n * }\n * }\n * ```\n */\n/**\n * Computes the lifecycle state of a tool call based on its result.\n */\nfunction computeToolCallState(\n result: ToolMessage | undefined,\n impliedCompleted: boolean\n): ToolCallState {\n if (result) return result.status === \"error\" ? \"error\" : \"completed\";\n if (impliedCompleted) return \"completed\";\n return \"pending\";\n}\n\nexport function getToolCallsWithResults<ToolCall = DefaultToolCall>(\n messages: Message<ToolCall>[]\n): ToolCallWithResult<ToolCall>[] {\n const results: ToolCallWithResult<ToolCall>[] = [];\n\n // Create a map of tool_call_id to ToolMessage for quick lookup\n const toolResultsById = new Map<string, ToolMessage>();\n for (const msg of messages) {\n if (msg.type === \"tool\") {\n toolResultsById.set(msg.tool_call_id, msg);\n }\n }\n\n // Find all AI messages with tool calls and pair them with results.\n // For each, independently check if there's a subsequent AI message,\n // which implies the tools completed (handles tools returning Commands\n // where ToolMessages are embedded in the state update rather than streamed).\n for (let msgIdx = 0; msgIdx < messages.length; msgIdx += 1) {\n const msg = messages[msgIdx];\n if (msg.type === \"ai\" && msg.tool_calls && msg.tool_calls.length > 0) {\n const aiMessage = msg as AIMessage<ToolCall>;\n\n let impliedCompleted = false;\n for (let j = msgIdx + 1; j < messages.length; j += 1) {\n if (messages[j].type === \"ai\") {\n impliedCompleted = true;\n break;\n }\n }\n\n for (let i = 0; i < aiMessage.tool_calls!.length; i += 1) {\n const call = aiMessage.tool_calls![i] as ToolCall & { id?: string };\n const callId = call.id as string | undefined;\n const result = callId ? toolResultsById.get(callId) : undefined;\n\n results.push({\n id: callId ?? `${aiMessage.id ?? \"unknown\"}-${i}`,\n call,\n result,\n aiMessage,\n index: i,\n state: computeToolCallState(result, impliedCompleted),\n });\n }\n }\n }\n\n return results;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AA6BA,SAAS,qBACP,QACA,kBACe;AACf,KAAI,OAAQ,QAAO,OAAO,WAAW,UAAU,UAAU;AACzD,KAAI,iBAAkB,QAAO;AAC7B,QAAO;;AAGT,SAAgB,wBACd,UACgC;CAChC,MAAM,UAA0C,EAAE;CAGlD,MAAM,kCAAkB,IAAI,KAA0B;AACtD,MAAK,MAAM,OAAO,SAChB,KAAI,IAAI,SAAS,OACf,iBAAgB,IAAI,IAAI,cAAc,IAAI;AAQ9C,MAAK,IAAI,SAAS,GAAG,SAAS,SAAS,QAAQ,UAAU,GAAG;EAC1D,MAAM,MAAM,SAAS;AACrB,MAAI,IAAI,SAAS,QAAQ,IAAI,cAAc,IAAI,WAAW,SAAS,GAAG;GACpE,MAAM,YAAY;GAElB,IAAI,mBAAmB;AACvB,QAAK,IAAI,IAAI,SAAS,GAAG,IAAI,SAAS,QAAQ,KAAK,EACjD,KAAI,SAAS,GAAG,SAAS,MAAM;AAC7B,uBAAmB;AACnB;;AAIJ,QAAK,IAAI,IAAI,GAAG,IAAI,UAAU,WAAY,QAAQ,KAAK,GAAG;IACxD,MAAM,OAAO,UAAU,WAAY;IACnC,MAAM,SAAS,KAAK;IACpB,MAAM,SAAS,SAAS,gBAAgB,IAAI,OAAO,GAAG;AAEtD,YAAQ,KAAK;KACX,IAAI,UAAU,GAAG,UAAU,MAAM,UAAU,GAAG;KAC9C;KACA;KACA;KACA,OAAO;KACP,OAAO,qBAAqB,QAAQ,iBAAiB;KACtD,CAAC;;;;AAKR,QAAO"}