@langchain/langgraph-sdk 1.3.1 → 1.4.5

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 (152) hide show
  1. package/dist/_virtual/rolldown_runtime.cjs +10 -6
  2. package/dist/auth/error.cjs.map +1 -1
  3. package/dist/auth/error.d.cts.map +1 -1
  4. package/dist/auth/error.d.ts.map +1 -1
  5. package/dist/auth/error.js.map +1 -1
  6. package/dist/auth/index.cjs.map +1 -1
  7. package/dist/auth/index.d.cts +1 -3
  8. package/dist/auth/index.d.cts.map +1 -1
  9. package/dist/auth/index.d.ts +1 -3
  10. package/dist/auth/index.d.ts.map +1 -1
  11. package/dist/auth/index.js.map +1 -1
  12. package/dist/auth/types.d.cts +1 -1
  13. package/dist/auth/types.d.cts.map +1 -1
  14. package/dist/auth/types.d.ts +1 -1
  15. package/dist/auth/types.d.ts.map +1 -1
  16. package/dist/client.cjs +15 -24
  17. package/dist/client.cjs.map +1 -1
  18. package/dist/client.d.cts +2 -6
  19. package/dist/client.d.cts.map +1 -1
  20. package/dist/client.d.ts +2 -6
  21. package/dist/client.d.ts.map +1 -1
  22. package/dist/client.js +15 -24
  23. package/dist/client.js.map +1 -1
  24. package/dist/index.d.cts +2 -1
  25. package/dist/index.d.ts +2 -1
  26. package/dist/logging/index.cjs.map +1 -1
  27. package/dist/logging/index.d.cts +0 -1
  28. package/dist/logging/index.d.cts.map +1 -1
  29. package/dist/logging/index.d.ts +0 -1
  30. package/dist/logging/index.d.ts.map +1 -1
  31. package/dist/logging/index.js.map +1 -1
  32. package/dist/react/index.d.cts +3 -2
  33. package/dist/react/index.d.ts +3 -2
  34. package/dist/react/stream.cjs +1 -1
  35. package/dist/react/stream.cjs.map +1 -1
  36. package/dist/react/stream.custom.cjs +12 -6
  37. package/dist/react/stream.custom.cjs.map +1 -1
  38. package/dist/react/stream.custom.d.cts +3 -2
  39. package/dist/react/stream.custom.d.cts.map +1 -1
  40. package/dist/react/stream.custom.d.ts +3 -2
  41. package/dist/react/stream.custom.d.ts.map +1 -1
  42. package/dist/react/stream.custom.js +11 -5
  43. package/dist/react/stream.custom.js.map +1 -1
  44. package/dist/react/stream.d.cts +116 -34
  45. package/dist/react/stream.d.cts.map +1 -1
  46. package/dist/react/stream.d.ts +116 -34
  47. package/dist/react/stream.d.ts.map +1 -1
  48. package/dist/react/stream.js.map +1 -1
  49. package/dist/react/stream.lgp.cjs +15 -13
  50. package/dist/react/stream.lgp.cjs.map +1 -1
  51. package/dist/react/stream.lgp.js +14 -12
  52. package/dist/react/stream.lgp.js.map +1 -1
  53. package/dist/react/thread.cjs +1 -2
  54. package/dist/react/thread.cjs.map +1 -1
  55. package/dist/react/thread.js +0 -1
  56. package/dist/react/thread.js.map +1 -1
  57. package/dist/react/types.d.cts +73 -284
  58. package/dist/react/types.d.cts.map +1 -1
  59. package/dist/react/types.d.ts +73 -284
  60. package/dist/react/types.d.ts.map +1 -1
  61. package/dist/react-ui/client.cjs +8 -7
  62. package/dist/react-ui/client.cjs.map +1 -1
  63. package/dist/react-ui/client.d.cts +4 -21
  64. package/dist/react-ui/client.d.cts.map +1 -1
  65. package/dist/react-ui/client.d.ts +4 -21
  66. package/dist/react-ui/client.d.ts.map +1 -1
  67. package/dist/react-ui/client.js +2 -4
  68. package/dist/react-ui/client.js.map +1 -1
  69. package/dist/react-ui/index.cjs.map +1 -1
  70. package/dist/react-ui/index.js.map +1 -1
  71. package/dist/react-ui/server/server.cjs +1 -1
  72. package/dist/react-ui/server/server.cjs.map +1 -1
  73. package/dist/react-ui/server/server.d.cts.map +1 -1
  74. package/dist/react-ui/server/server.d.ts.map +1 -1
  75. package/dist/react-ui/server/server.js.map +1 -1
  76. package/dist/react-ui/types.cjs.map +1 -1
  77. package/dist/react-ui/types.d.cts.map +1 -1
  78. package/dist/react-ui/types.d.ts.map +1 -1
  79. package/dist/react-ui/types.js.map +1 -1
  80. package/dist/schema.d.cts +6 -6
  81. package/dist/schema.d.cts.map +1 -1
  82. package/dist/schema.d.ts +6 -6
  83. package/dist/schema.d.ts.map +1 -1
  84. package/dist/singletons/fetch.cjs.map +1 -1
  85. package/dist/singletons/fetch.js.map +1 -1
  86. package/dist/types.d.cts +1 -1
  87. package/dist/types.d.cts.map +1 -1
  88. package/dist/types.d.ts +1 -1
  89. package/dist/types.d.ts.map +1 -1
  90. package/dist/types.messages.d.cts +207 -34
  91. package/dist/types.messages.d.cts.map +1 -1
  92. package/dist/types.messages.d.ts +207 -34
  93. package/dist/types.messages.d.ts.map +1 -1
  94. package/dist/types.stream.d.cts +1 -3
  95. package/dist/types.stream.d.cts.map +1 -1
  96. package/dist/types.stream.d.ts +1 -3
  97. package/dist/types.stream.d.ts.map +1 -1
  98. package/dist/types.template.d.cts +19 -0
  99. package/dist/types.template.d.cts.map +1 -0
  100. package/dist/types.template.d.ts +19 -0
  101. package/dist/types.template.d.ts.map +1 -0
  102. package/dist/ui/branching.cjs.map +1 -1
  103. package/dist/ui/branching.d.cts +0 -3
  104. package/dist/ui/branching.d.cts.map +1 -1
  105. package/dist/ui/branching.d.ts +0 -3
  106. package/dist/ui/branching.d.ts.map +1 -1
  107. package/dist/ui/branching.js.map +1 -1
  108. package/dist/ui/errors.cjs.map +1 -1
  109. package/dist/ui/errors.js.map +1 -1
  110. package/dist/ui/manager.cjs +8 -2
  111. package/dist/ui/manager.cjs.map +1 -1
  112. package/dist/ui/manager.js +8 -2
  113. package/dist/ui/manager.js.map +1 -1
  114. package/dist/ui/messages.cjs +10 -10
  115. package/dist/ui/messages.cjs.map +1 -1
  116. package/dist/ui/messages.js.map +1 -1
  117. package/dist/ui/types.d.cts +420 -0
  118. package/dist/ui/types.d.cts.map +1 -0
  119. package/dist/ui/types.d.ts +420 -0
  120. package/dist/ui/types.d.ts.map +1 -0
  121. package/dist/ui/utils.cjs +0 -1
  122. package/dist/ui/utils.cjs.map +1 -1
  123. package/dist/ui/utils.js +0 -1
  124. package/dist/ui/utils.js.map +1 -1
  125. package/dist/utils/async_caller.cjs +12 -4
  126. package/dist/utils/async_caller.cjs.map +1 -1
  127. package/dist/utils/async_caller.d.cts +1 -3
  128. package/dist/utils/async_caller.d.cts.map +1 -1
  129. package/dist/utils/async_caller.d.ts +1 -3
  130. package/dist/utils/async_caller.d.ts.map +1 -1
  131. package/dist/utils/async_caller.js +8 -2
  132. package/dist/utils/async_caller.js.map +1 -1
  133. package/dist/utils/env.cjs +1 -1
  134. package/dist/utils/env.cjs.map +1 -1
  135. package/dist/utils/env.js +1 -1
  136. package/dist/utils/env.js.map +1 -1
  137. package/dist/utils/error.cjs.map +1 -1
  138. package/dist/utils/error.js.map +1 -1
  139. package/dist/utils/signals.cjs.map +1 -1
  140. package/dist/utils/signals.js.map +1 -1
  141. package/dist/utils/sse.cjs.map +1 -1
  142. package/dist/utils/sse.js.map +1 -1
  143. package/dist/utils/stream.cjs +1 -3
  144. package/dist/utils/stream.cjs.map +1 -1
  145. package/dist/utils/stream.js +1 -3
  146. package/dist/utils/stream.js.map +1 -1
  147. package/dist/utils/tools.cjs +52 -0
  148. package/dist/utils/tools.cjs.map +1 -0
  149. package/dist/utils/tools.js +51 -0
  150. package/dist/utils/tools.js.map +1 -0
  151. package/package.json +5 -5
  152. package/CHANGELOG.md +0 -281
@@ -28,39 +28,77 @@ type HumanMessage = BaseMessage & {
28
28
  type: "human";
29
29
  example?: boolean | undefined;
30
30
  };
31
- type AIMessage = BaseMessage & {
31
+ /**
32
+ * Default tool call type when no specific tool definitions are provided.
33
+ */
34
+ type DefaultToolCall = {
35
+ name: string;
36
+ args: {
37
+ [x: string]: any;
38
+ };
39
+ id?: string | undefined;
40
+ type?: "tool_call" | undefined;
41
+ };
42
+ /**
43
+ * Invalid tool call type.
44
+ */
45
+ type InvalidToolCall = {
46
+ name?: string | undefined;
47
+ args?: string | undefined;
48
+ id?: string | undefined;
49
+ error?: string | undefined;
50
+ type?: "invalid_tool_call" | undefined;
51
+ };
52
+ /**
53
+ * Usage metadata for AI messages.
54
+ */
55
+ type UsageMetadata = {
56
+ input_tokens: number;
57
+ output_tokens: number;
58
+ total_tokens: number;
59
+ input_token_details?: {
60
+ audio?: number | undefined;
61
+ cache_read?: number | undefined;
62
+ cache_creation?: number | undefined;
63
+ } | undefined;
64
+ output_token_details?: {
65
+ audio?: number | undefined;
66
+ reasoning?: number | undefined;
67
+ } | undefined;
68
+ };
69
+ /**
70
+ * AI message type that can be parameterized with custom tool call types.
71
+ *
72
+ * @template ToolCall The type of tool calls, defaults to DefaultToolCall.
73
+ * Provide a discriminated union for type-safe tool call handling.
74
+ *
75
+ * @example
76
+ * ```ts
77
+ * // Define typed tool calls as a discriminated union
78
+ * type MyToolCalls =
79
+ * | { name: "get_weather"; args: { location: string }; id?: string }
80
+ * | { name: "search"; args: { query: string; limit?: number }; id?: string };
81
+ *
82
+ * // Use with AIMessage
83
+ * const message: AIMessage<MyToolCalls> = ...;
84
+ *
85
+ * // Now tool.name === "get_weather" narrows tool.args type
86
+ * if (message.tool_calls) {
87
+ * for (const tool of message.tool_calls) {
88
+ * if (tool.name === "get_weather") {
89
+ * // tool.args is now { location: string }
90
+ * console.log(tool.args.location);
91
+ * }
92
+ * }
93
+ * }
94
+ * ```
95
+ */
96
+ type AIMessage<ToolCall = DefaultToolCall> = BaseMessage & {
32
97
  type: "ai";
33
98
  example?: boolean | undefined;
34
- tool_calls?: {
35
- name: string;
36
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
37
- args: {
38
- [x: string]: any;
39
- };
40
- id?: string | undefined;
41
- type?: "tool_call" | undefined;
42
- }[] | undefined;
43
- invalid_tool_calls?: {
44
- name?: string | undefined;
45
- args?: string | undefined;
46
- id?: string | undefined;
47
- error?: string | undefined;
48
- type?: "invalid_tool_call" | undefined;
49
- }[] | undefined;
50
- usage_metadata?: {
51
- input_tokens: number;
52
- output_tokens: number;
53
- total_tokens: number;
54
- input_token_details?: {
55
- audio?: number | undefined;
56
- cache_read?: number | undefined;
57
- cache_creation?: number | undefined;
58
- } | undefined;
59
- output_token_details?: {
60
- audio?: number | undefined;
61
- reasoning?: number | undefined;
62
- } | undefined;
63
- } | undefined;
99
+ tool_calls?: ToolCall[] | undefined;
100
+ invalid_tool_calls?: InvalidToolCall[] | undefined;
101
+ usage_metadata?: UsageMetadata | undefined;
64
102
  };
65
103
  type ToolMessage = BaseMessage & {
66
104
  type: "tool";
@@ -73,7 +111,6 @@ type ToolMessage = BaseMessage & {
73
111
  * a subset of the full tool output is being passed as message content but the full
74
112
  * output is needed in other parts of the code.
75
113
  */
76
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
77
114
  artifact?: any;
78
115
  };
79
116
  type SystemMessage = BaseMessage & {
@@ -85,7 +122,143 @@ type FunctionMessage = BaseMessage & {
85
122
  type RemoveMessage = BaseMessage & {
86
123
  type: "remove";
87
124
  };
88
- type Message = HumanMessage | AIMessage | ToolMessage | SystemMessage | FunctionMessage | RemoveMessage;
125
+ /**
126
+ * Union of all message types.
127
+ *
128
+ * @template ToolCall The type of tool calls for AIMessage, defaults to DefaultToolCall.
129
+ */
130
+ type Message<ToolCall = DefaultToolCall> = HumanMessage | AIMessage<ToolCall> | ToolMessage | SystemMessage | FunctionMessage | RemoveMessage;
131
+ /**
132
+ * Helper type to infer schema input type, supporting both Zod v3 and v4.
133
+ * - Zod v4 uses `_zod.input` property
134
+ * - Zod v3 uses `_input` property
135
+ *
136
+ * Note: Zod v4 is checked first as it's the more specific structure.
137
+ */
138
+ type InferSchemaInput<S> = S extends {
139
+ _zod: {
140
+ input: infer Args;
141
+ };
142
+ } ? Args : S extends {
143
+ _input: infer Args;
144
+ } ? Args : never;
145
+ /**
146
+ * Helper type to extract the input type from a DynamicStructuredTool's _call method.
147
+ * This is more reliable than trying to infer from the schema directly because
148
+ * DynamicStructuredTool has the input type baked into its _call signature.
149
+ */
150
+ type InferToolInput<T> = T extends {
151
+ _call: (arg: infer Args, ...rest: any[]) => any;
152
+ } ? Args : T extends {
153
+ schema: infer S;
154
+ } ? InferSchemaInput<S> : never;
155
+ /**
156
+ * Infer a tool call type from a single tool.
157
+ * Works with tools created via `tool()` from `@langchain/core/tools`.
158
+ *
159
+ * For DynamicStructuredTool, this extracts the input type from the _call method,
160
+ * which is the most reliable source as it's the pre-computed input type.
161
+ *
162
+ * @template T The tool type (e.g., DynamicStructuredTool)
163
+ *
164
+ * @example
165
+ * ```ts
166
+ * import { tool } from "@langchain/core/tools";
167
+ * import { z } from "zod";
168
+ *
169
+ * const getWeather = tool(
170
+ * async ({ location }) => `Weather in ${location}`,
171
+ * { name: "get_weather", schema: z.object({ location: z.string() }) }
172
+ * );
173
+ *
174
+ * // Infer: { name: "get_weather"; args: { location: string }; id?: string; type?: "tool_call" }
175
+ * type WeatherToolCall = ToolCallFromTool<typeof getWeather>;
176
+ * ```
177
+ */
178
+ type ToolCallFromTool<T> = T extends {
179
+ name: infer N;
180
+ } ? InferToolInput<T> extends infer Args ? Args extends never ? never : Args extends Record<string, any> ? {
181
+ name: N;
182
+ args: Args;
183
+ id?: string;
184
+ type?: "tool_call";
185
+ } : never : never : never;
186
+ /**
187
+ * Infer a union of tool call types from an array of tools.
188
+ * Works with tools created via `tool()` from `@langchain/core/tools`.
189
+ *
190
+ * @template T A tuple/array of tools
191
+ *
192
+ * @example
193
+ * ```ts
194
+ * import { tool } from "@langchain/core/tools";
195
+ * import { z } from "zod";
196
+ *
197
+ * const getWeather = tool(
198
+ * async ({ location }) => `Weather in ${location}`,
199
+ * { name: "get_weather", schema: z.object({ location: z.string() }) }
200
+ * );
201
+ *
202
+ * const search = tool(
203
+ * async ({ query }) => `Results for ${query}`,
204
+ * { name: "search", schema: z.object({ query: z.string() }) }
205
+ * );
206
+ *
207
+ * const tools = [getWeather, search] as const;
208
+ *
209
+ * // Infer union:
210
+ * // | { name: "get_weather"; args: { location: string }; id?: string; type?: "tool_call" }
211
+ * // | { name: "search"; args: { query: string }; id?: string; type?: "tool_call" }
212
+ * type MyToolCalls = ToolCallsFromTools<typeof tools>;
213
+ * ```
214
+ */
215
+ type ToolCallsFromTools<T extends readonly unknown[]> = T extends readonly [infer First, ...infer Rest] ? ToolCallFromTool<First> | ToolCallsFromTools<Rest> : never;
216
+ /**
217
+ * The lifecycle state of a tool call.
218
+ *
219
+ * - `pending`: Tool call received, awaiting result
220
+ * - `completed`: Tool execution finished successfully
221
+ * - `error`: Tool execution failed (result.status === "error")
222
+ */
223
+ type ToolCallState = "pending" | "completed" | "error";
224
+ /**
225
+ * Represents a tool call paired with its result.
226
+ * Useful for rendering tool invocations and their outputs together.
227
+ *
228
+ * @template ToolCall The type of the tool call.
229
+ */
230
+ type ToolCallWithResult<ToolCall = DefaultToolCall> = {
231
+ /**
232
+ * Unique identifier for this tool call.
233
+ * Uses the tool call's id if available, otherwise generates one from aiMessage.id and index.
234
+ */
235
+ id: string;
236
+ /**
237
+ * The tool call from the AI message.
238
+ */
239
+ call: ToolCall;
240
+ /**
241
+ * The result message from tool execution.
242
+ * `undefined` if the tool is still being executed or no result was received.
243
+ */
244
+ result: ToolMessage | undefined;
245
+ /**
246
+ * The AI message that initiated this tool call.
247
+ */
248
+ aiMessage: AIMessage<ToolCall>;
249
+ /**
250
+ * Index of this tool call within the AI message's tool_calls array.
251
+ */
252
+ index: number;
253
+ /**
254
+ * The current lifecycle state of the tool call.
255
+ *
256
+ * - `pending`: No result yet
257
+ * - `completed`: Has result with success status
258
+ * - `error`: Has result with error status
259
+ */
260
+ state: ToolCallState;
261
+ };
89
262
  //#endregion
90
- export { AIMessage, FunctionMessage, HumanMessage, Message, RemoveMessage, SystemMessage, ToolMessage };
263
+ export { AIMessage, DefaultToolCall, FunctionMessage, HumanMessage, Message, RemoveMessage, SystemMessage, ToolCallFromTool, ToolCallState, ToolCallWithResult, ToolCallsFromTools, ToolMessage };
91
264
  //# sourceMappingURL=types.messages.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.messages.d.ts","names":["ImageDetail","MessageContentImageUrl","MessageContentText","MessageContentComplex","MessageContent","MessageAdditionalKwargs","Record","BaseMessage","HumanMessage","AIMessage","ToolMessage","SystemMessage","FunctionMessage","RemoveMessage","Message"],"sources":["../src/types.messages.d.ts"],"sourcesContent":["type ImageDetail = \"auto\" | \"low\" | \"high\";\ntype MessageContentImageUrl = {\n type: \"image_url\";\n image_url: string | {\n url: string;\n detail?: ImageDetail | undefined;\n };\n};\ntype MessageContentText = {\n type: \"text\";\n text: string;\n};\ntype MessageContentComplex = MessageContentText | MessageContentImageUrl;\ntype MessageContent = string | MessageContentComplex[];\n/**\n * Model-specific additional kwargs, which is passed back to the underlying LLM.\n */\ntype MessageAdditionalKwargs = Record<string, unknown>;\ntype BaseMessage = {\n additional_kwargs?: MessageAdditionalKwargs | undefined;\n content: MessageContent;\n id?: string | undefined;\n name?: string | undefined;\n response_metadata?: Record<string, unknown> | undefined;\n};\nexport type HumanMessage = BaseMessage & {\n type: \"human\";\n example?: boolean | undefined;\n};\nexport type AIMessage = BaseMessage & {\n type: \"ai\";\n example?: boolean | undefined;\n tool_calls?: {\n name: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n args: {\n [x: string]: any;\n };\n id?: string | undefined;\n type?: \"tool_call\" | undefined;\n }[] | undefined;\n invalid_tool_calls?: {\n name?: string | undefined;\n args?: string | undefined;\n id?: string | undefined;\n error?: string | undefined;\n type?: \"invalid_tool_call\" | undefined;\n }[] | undefined;\n usage_metadata?: {\n input_tokens: number;\n output_tokens: number;\n total_tokens: number;\n input_token_details?: {\n audio?: number | undefined;\n cache_read?: number | undefined;\n cache_creation?: number | undefined;\n } | undefined;\n output_token_details?: {\n audio?: number | undefined;\n reasoning?: number | undefined;\n } | undefined;\n } | undefined;\n};\nexport type ToolMessage = BaseMessage & {\n type: \"tool\";\n status?: \"error\" | \"success\" | undefined;\n tool_call_id: string;\n /**\n * Artifact of the Tool execution which is not meant to be sent to the model.\n *\n * Should only be specified if it is different from the message content, e.g. if only\n * a subset of the full tool output is being passed as message content but the full\n * output is needed in other parts of the code.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n artifact?: any;\n};\nexport type SystemMessage = BaseMessage & {\n type: \"system\";\n};\nexport type FunctionMessage = BaseMessage & {\n type: \"function\";\n};\nexport type RemoveMessage = BaseMessage & {\n type: \"remove\";\n};\nexport type Message = HumanMessage | AIMessage | ToolMessage | SystemMessage | FunctionMessage | RemoveMessage;\nexport {};\n"],"mappings":";KAAKA,WAAAA;KACAC,sBAAAA,GADW;EACXA,IAAAA,EAAAA,WAAAA;EAOAC,SAAAA,EAAAA,MAAAA,GAAAA;IAIAC,GAAAA,EAAAA,MAAAA;IAAqB,MAAA,CAAA,EAPTH,WAOS,GAAA,SAAA;;;KAJrBE,kBAAAA;EAKAE,IAAAA,EAAAA,MAAAA;EAIAC,IAAAA,EAAAA,MAAAA;AAAgC,CAAA;KALhCF,qBAAAA,GAAwBD,kBAMb,GANkCD,sBAMlC;KALXG,cAAAA,GAMmBC,MAAAA,GANOF,qBAMPE,EAAAA;;;;AAMxB,KARKA,uBAAAA,GAA0BC,MAQJC,CAAAA,MAAAA,EAAAA,OAAAA,CAAAA;AAI3B,KAXKA,WAAAA,GAWgB;EAkCTG,iBAAW,CAAA,EA5CCL,uBA4CEE,GAAAA,SAAAA;EAcdI,OAAAA,EAzDCP,cAyDY;EAGbQ,EAAAA,CAAAA,EAAAA,MAAAA,GAAAA,SAAe;EAGfC,IAAAA,CAAAA,EAAAA,MAAAA,GAAa,SAAA;EAGbC,iBAAO,CAAA,EA/DKR,MA+DL,CAAA,MAAA,EAAA,OAAA,CAAA,GAAA,SAAA;CAAA;AAAGE,KA7DVA,YAAAA,GAAeD,WA6DLC,GAAAA;MAAeC,EAAAA,OAAAA;SAAYC,CAAAA,EAAAA,OAAAA,GAAAA,SAAAA;;AAA8BE,KAzDnEH,SAAAA,GAAYF,WAyDuDK,GAAAA;MAAkBC,EAAAA,IAAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAvBrFH,WAAAA,GAAcH;;;;;;;;;;;;;;KAcdI,aAAAA,GAAgBJ;;;KAGhBK,eAAAA,GAAkBL;;;KAGlBM,aAAAA,GAAgBN;;;KAGhBO,OAAAA,GAAUN,eAAeC,YAAYC,cAAcC,gBAAgBC,kBAAkBC"}
1
+ {"version":3,"file":"types.messages.d.ts","names":["ImageDetail","MessageContentImageUrl","MessageContentText","MessageContentComplex","MessageContent","MessageAdditionalKwargs","Record","BaseMessage","HumanMessage","DefaultToolCall","InvalidToolCall","UsageMetadata","AIMessage","ToolCall","ToolMessage","SystemMessage","FunctionMessage","RemoveMessage","Message","InferSchemaInput","S","Args","InferToolInput","T","ToolCallFromTool","N","ToolCallsFromTools","First","Rest","ToolCallState","ToolCallWithResult"],"sources":["../src/types.messages.d.ts"],"sourcesContent":["type ImageDetail = \"auto\" | \"low\" | \"high\";\ntype MessageContentImageUrl = {\n type: \"image_url\";\n image_url: string | {\n url: string;\n detail?: ImageDetail | undefined;\n };\n};\ntype MessageContentText = {\n type: \"text\";\n text: string;\n};\ntype MessageContentComplex = MessageContentText | MessageContentImageUrl;\ntype MessageContent = string | MessageContentComplex[];\n/**\n * Model-specific additional kwargs, which is passed back to the underlying LLM.\n */\ntype MessageAdditionalKwargs = Record<string, unknown>;\ntype BaseMessage = {\n additional_kwargs?: MessageAdditionalKwargs | undefined;\n content: MessageContent;\n id?: string | undefined;\n name?: string | undefined;\n response_metadata?: Record<string, unknown> | undefined;\n};\nexport type HumanMessage = BaseMessage & {\n type: \"human\";\n example?: boolean | undefined;\n};\n/**\n * Default tool call type when no specific tool definitions are provided.\n */\nexport type DefaultToolCall = {\n name: string;\n args: {\n [x: string]: any;\n };\n id?: string | undefined;\n type?: \"tool_call\" | undefined;\n};\n/**\n * Invalid tool call type.\n */\nexport type InvalidToolCall = {\n name?: string | undefined;\n args?: string | undefined;\n id?: string | undefined;\n error?: string | undefined;\n type?: \"invalid_tool_call\" | undefined;\n};\n/**\n * Usage metadata for AI messages.\n */\nexport type UsageMetadata = {\n input_tokens: number;\n output_tokens: number;\n total_tokens: number;\n input_token_details?: {\n audio?: number | undefined;\n cache_read?: number | undefined;\n cache_creation?: number | undefined;\n } | undefined;\n output_token_details?: {\n audio?: number | undefined;\n reasoning?: number | undefined;\n } | undefined;\n};\n/**\n * AI message type that can be parameterized with custom tool call types.\n *\n * @template ToolCall The type of tool calls, defaults to DefaultToolCall.\n * Provide a discriminated union for type-safe tool call handling.\n *\n * @example\n * ```ts\n * // Define typed tool calls as a discriminated union\n * type MyToolCalls =\n * | { name: \"get_weather\"; args: { location: string }; id?: string }\n * | { name: \"search\"; args: { query: string; limit?: number }; id?: string };\n *\n * // Use with AIMessage\n * const message: AIMessage<MyToolCalls> = ...;\n *\n * // Now tool.name === \"get_weather\" narrows tool.args type\n * if (message.tool_calls) {\n * for (const tool of message.tool_calls) {\n * if (tool.name === \"get_weather\") {\n * // tool.args is now { location: string }\n * console.log(tool.args.location);\n * }\n * }\n * }\n * ```\n */\nexport type AIMessage<ToolCall = DefaultToolCall> = BaseMessage & {\n type: \"ai\";\n example?: boolean | undefined;\n tool_calls?: ToolCall[] | undefined;\n invalid_tool_calls?: InvalidToolCall[] | undefined;\n usage_metadata?: UsageMetadata | undefined;\n};\nexport type ToolMessage = BaseMessage & {\n type: \"tool\";\n status?: \"error\" | \"success\" | undefined;\n tool_call_id: string;\n /**\n * Artifact of the Tool execution which is not meant to be sent to the model.\n *\n * Should only be specified if it is different from the message content, e.g. if only\n * a subset of the full tool output is being passed as message content but the full\n * output is needed in other parts of the code.\n */\n artifact?: any;\n};\nexport type SystemMessage = BaseMessage & {\n type: \"system\";\n};\nexport type FunctionMessage = BaseMessage & {\n type: \"function\";\n};\nexport type RemoveMessage = BaseMessage & {\n type: \"remove\";\n};\n/**\n * Union of all message types.\n *\n * @template ToolCall The type of tool calls for AIMessage, defaults to DefaultToolCall.\n */\nexport type Message<ToolCall = DefaultToolCall> = HumanMessage | AIMessage<ToolCall> | ToolMessage | SystemMessage | FunctionMessage | RemoveMessage;\n/**\n * Helper type to infer schema input type, supporting both Zod v3 and v4.\n * - Zod v4 uses `_zod.input` property\n * - Zod v3 uses `_input` property\n *\n * Note: Zod v4 is checked first as it's the more specific structure.\n */\ntype InferSchemaInput<S> = S extends {\n _zod: {\n input: infer Args;\n };\n} ? Args : S extends {\n _input: infer Args;\n} ? Args : never;\n/**\n * Helper type to extract the input type from a DynamicStructuredTool's _call method.\n * This is more reliable than trying to infer from the schema directly because\n * DynamicStructuredTool has the input type baked into its _call signature.\n */\ntype InferToolInput<T> = T extends {\n _call: (arg: infer Args, ...rest: any[]) => any;\n} ? Args : T extends {\n schema: infer S;\n} ? InferSchemaInput<S> : never;\n/**\n * Infer a tool call type from a single tool.\n * Works with tools created via `tool()` from `@langchain/core/tools`.\n *\n * For DynamicStructuredTool, this extracts the input type from the _call method,\n * which is the most reliable source as it's the pre-computed input type.\n *\n * @template T The tool type (e.g., DynamicStructuredTool)\n *\n * @example\n * ```ts\n * import { tool } from \"@langchain/core/tools\";\n * import { z } from \"zod\";\n *\n * const getWeather = tool(\n * async ({ location }) => `Weather in ${location}`,\n * { name: \"get_weather\", schema: z.object({ location: z.string() }) }\n * );\n *\n * // Infer: { name: \"get_weather\"; args: { location: string }; id?: string; type?: \"tool_call\" }\n * type WeatherToolCall = ToolCallFromTool<typeof getWeather>;\n * ```\n */\nexport type ToolCallFromTool<T> = T extends {\n name: infer N;\n} ? InferToolInput<T> extends infer Args ? Args extends never ? never : Args extends Record<string, any> ? {\n name: N;\n args: Args;\n id?: string;\n type?: \"tool_call\";\n} : never : never : never;\n/**\n * Infer a union of tool call types from an array of tools.\n * Works with tools created via `tool()` from `@langchain/core/tools`.\n *\n * @template T A tuple/array of tools\n *\n * @example\n * ```ts\n * import { tool } from \"@langchain/core/tools\";\n * import { z } from \"zod\";\n *\n * const getWeather = tool(\n * async ({ location }) => `Weather in ${location}`,\n * { name: \"get_weather\", schema: z.object({ location: z.string() }) }\n * );\n *\n * const search = tool(\n * async ({ query }) => `Results for ${query}`,\n * { name: \"search\", schema: z.object({ query: z.string() }) }\n * );\n *\n * const tools = [getWeather, search] as const;\n *\n * // Infer union:\n * // | { name: \"get_weather\"; args: { location: string }; id?: string; type?: \"tool_call\" }\n * // | { name: \"search\"; args: { query: string }; id?: string; type?: \"tool_call\" }\n * type MyToolCalls = ToolCallsFromTools<typeof tools>;\n * ```\n */\nexport type ToolCallsFromTools<T extends readonly unknown[]> = T extends readonly [infer First, ...infer Rest] ? ToolCallFromTool<First> | ToolCallsFromTools<Rest> : never;\n/**\n * The lifecycle state of a tool call.\n *\n * - `pending`: Tool call received, awaiting result\n * - `completed`: Tool execution finished successfully\n * - `error`: Tool execution failed (result.status === \"error\")\n */\nexport type ToolCallState = \"pending\" | \"completed\" | \"error\";\n/**\n * Represents a tool call paired with its result.\n * Useful for rendering tool invocations and their outputs together.\n *\n * @template ToolCall The type of the tool call.\n */\nexport type ToolCallWithResult<ToolCall = DefaultToolCall> = {\n /**\n * Unique identifier for this tool call.\n * Uses the tool call's id if available, otherwise generates one from aiMessage.id and index.\n */\n id: string;\n /**\n * The tool call from the AI message.\n */\n call: ToolCall;\n /**\n * The result message from tool execution.\n * `undefined` if the tool is still being executed or no result was received.\n */\n result: ToolMessage | undefined;\n /**\n * The AI message that initiated this tool call.\n */\n aiMessage: AIMessage<ToolCall>;\n /**\n * Index of this tool call within the AI message's tool_calls array.\n */\n index: number;\n /**\n * The current lifecycle state of the tool call.\n *\n * - `pending`: No result yet\n * - `completed`: Has result with success status\n * - `error`: Has result with error status\n */\n state: ToolCallState;\n};\nexport {};\n"],"mappings":";KAAKA,WAAAA;KACAC,sBAAAA,GADW;EACXA,IAAAA,EAAAA,WAAAA;EAOAC,SAAAA,EAAAA,MAAAA,GAAAA;IAIAC,GAAAA,EAAAA,MAAAA;IAAqB,MAAA,CAAA,EAPTH,WAOS,GAAA,SAAA;;;KAJrBE,kBAAAA,GAImE;EACnEE,IAAAA,EAAAA,MAAAA;EAIAC,IAAAA,EAAAA,MAAAA;AAAgC,CAAA;KALhCF,qBAAAA,GAAwBD,kBAMb,GANkCD,sBAMlC;KALXG,cAAAA,GAMmBC,MAAAA,GANOF,qBAMPE,EAAAA;;;;AAMxB,KARKA,uBAAAA,GAA0BC,MAQJC,CAAAA,MAAW,EAAA,OAAA,CAAA;AAOtC,KAdKA,WAAAA,GAcOE;EAWAC,iBAAAA,CAAe,EAxBHL,uBAwBG,GAAA,SAAA;EAUfM,OAAAA,EAjCCP,cAiCY;EAyCbQ,EAAAA,CAAAA,EAAAA,MAAAA,GAAS,SAAA;EAAA,IAAA,CAAA,EAAA,MAAA,GAAA,SAAA;mBAAYH,CAAAA,EAvETH,MAuESG,CAAAA,MAAAA,EAAAA,OAAAA,CAAAA,GAAAA,SAAAA;;AAGhBI,KAxELL,YAAAA,GAAeD,WAwEVM,GAAAA;MACQH,EAAAA,OAAAA;SACJC,CAAAA,EAAAA,OAAAA,GAAAA,SAAAA;CAAa;AAElC;AAaA;AAGA;AAGYM,KAxFAR,eAAAA,GAwFa;EAQbS,IAAAA,EAAAA,MAAO;EAAA,IAAA,EAAA;IAAYT,CAAAA,CAAAA,EAAAA,MAAAA,CAAAA,EAAAA,GAAAA;;KAA4CI,EAAAA,MAAAA,GAAAA,SAAAA;MAAVD,CAAAA,EAAAA,WAAAA,GAAAA,SAAAA;;;;;AAAmF,KArFxIF,eAAAA,GAqFwI;EAQ/IS,IAAAA,CAAAA,EAAAA,MAAAA,GAAAA,SAAgB;EAAA,IAAA,CAAA,EAAA,MAAA,GAAA,SAAA;KAAMC,EAAAA,MAAAA,GAAAA,SAAAA;OAIvBC,CAAAA,EAAAA,MAAAA,GAAAA,SAAAA;MAAOD,CAAAA,EAAAA,mBAAAA,GAAAA,SAAAA;;;AAEH;;AAMiBG,KA/FbZ,aAAAA,GA+FaY;cAErBF,EAAAA,MAAAA;eAAOE,EAAAA,MAAAA;cAEUH,EAAAA,MAAAA;qBAAjBD,CAAAA,EAAAA;IAAgB,KAAA,CAAA,EAAA,MAAA,GAAA,SAAA;IAwBRK,UAAAA,CAAAA,EAAAA,MAAgB,GAAA,SAAA;IAAA,cAAA,CAAA,EAAA,MAAA,GAAA,SAAA;MAAMD,SAAAA;sBAEfA,CAAAA,EAAAA;IAAfD,KAAAA,CAAAA,EAAAA,MAAAA,GAAAA,SAAAA;IAAuCD,SAAAA,CAAAA,EAAAA,MAAAA,GAAAA,SAAAA;MAA6BA,SAAAA;;;;;AAmCxE;;;;;;;;AAQA;AAOA;;;;;;;;;;;;;;;KAtIYT,qBAAqBH,mBAAmBF;;;eAGnCM;uBACQH;mBACJC;;KAETG,WAAAA,GAAcP;;;;;;;;;;;;;KAadQ,aAAAA,GAAgBR;;;KAGhBS,eAAAA,GAAkBT;;;KAGlBU,aAAAA,GAAgBV;;;;;;;;KAQhBW,mBAAmBT,mBAAmBD,eAAeI,UAAUC,YAAYC,cAAcC,gBAAgBC,kBAAkBC;;;;;;;;KAQlIE,sBAAsBC;;;;IAIvBC,OAAOD;;IAEPC;;;;;;KAMCC,oBAAoBC;;IAErBF,OAAOE;;IAEPJ,iBAAiBC;;;;;;;;;;;;;;;;;;;;;;;;KAwBTI,sBAAsBD;;IAE9BD,eAAeC,wBAAwBF,6BAA6BA,aAAaf;QAC3EmB;QACAJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAiCEK,mDAAmDH,kDAAkDC,iBAAiBG,SAASD,mBAAmBE;;;;;;;;KAQlJC,aAAAA;;;;;;;KAOAC,8BAA8BrB;;;;;;;;;QAShCI;;;;;UAKEC;;;;aAIGF,UAAUC;;;;;;;;;;;;SAYdgB"}
@@ -44,8 +44,6 @@ type SubgraphValuesStreamEvent<StateType> = AsSubgraph<ValuesStreamEvent<StateTy
44
44
  */
45
45
  type MessagesTupleStreamEvent = {
46
46
  event: "messages";
47
- // TODO: add types for message and config, which do not depend on LangChain
48
- // while making sure it's easy to keep them in sync.
49
47
  data: [message: Message, config: MessageTupleMetadata];
50
48
  };
51
49
  /** @internal */
@@ -185,7 +183,7 @@ type EventsStreamEvent = {
185
183
  id?: string;
186
184
  event: "events";
187
185
  data: {
188
- event: `on_${"chat_model" | "llm" | "chain" | "tool" | "retriever" | "prompt"}_${"start" | "stream" | "end"}` | (string & {}); // eslint-disable-line @typescript-eslint/ban-types
186
+ event: `on_${"chat_model" | "llm" | "chain" | "tool" | "retriever" | "prompt"}_${"start" | "stream" | "end"}` | (string & {});
189
187
  name: string;
190
188
  tags: string[];
191
189
  run_id: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.stream.d.cts","names":["Message","Interrupt","Metadata","Config","ThreadTask","StreamMode","ThreadStreamMode","MessageTupleMetadata","AsSubgraph","TEvent","ValuesStreamEvent","StateType","SubgraphValuesStreamEvent","MessagesTupleStreamEvent","SubgraphMessagesTupleStreamEvent","MetadataStreamEvent","ErrorStreamEvent","SubgraphErrorStreamEvent","UpdatesStreamEvent","UpdateType","SubgraphUpdatesStreamEvent","CustomStreamEvent","T","SubgraphCustomStreamEvent","MessagesMetadataStreamEvent","MessagesCompleteStreamEvent","MessagesPartialStreamEvent","TasksStreamCreateEvent","TasksStreamResultEvent","TasksStreamErrorEvent","TasksStreamEvent","SubgraphTasksStreamEvent","CheckpointsStreamEvent","SubgraphCheckpointsStreamEvent","MessagesStreamEvent","SubgraphMessagesStreamEvent","DebugStreamEvent","SubgraphDebugStreamEvent","EventsStreamEvent","Record","SubgraphEventsStreamEvent","FeedbackStreamEvent","GetStreamModeMap","TStateType","TUpdateType","TCustomType","TStreamMode","GetSubgraphsStreamModeMap","TypedAsyncGenerator","TSubgraphs","AsyncGenerator"],"sources":["../src/types.stream.d.ts"],"sourcesContent":["import type { Message } from \"./types.messages.js\";\nimport type { Interrupt, Metadata, Config, ThreadTask } from \"./schema.js\";\n/**\nimport type { SubgraphCheckpointsStreamEvent } from \"./types.stream.subgraph.js\";\n * Stream modes\n * - \"values\": Stream only the state values.\n * - \"messages\": Stream complete messages.\n * - \"messages-tuple\": Stream (message chunk, metadata) tuples.\n * - \"updates\": Stream updates to the state.\n * - \"events\": Stream events occurring during execution.\n * - \"debug\": Stream detailed debug information.\n * - \"custom\": Stream custom events.\n */\nexport type StreamMode = \"values\" | \"messages\" | \"updates\" | \"events\" | \"debug\" | \"tasks\" | \"checkpoints\" | \"custom\" | \"messages-tuple\";\nexport type ThreadStreamMode = \"run_modes\" | \"lifecycle\" | \"state_update\";\ntype MessageTupleMetadata = {\n tags: string[];\n [key: string]: unknown;\n};\ntype AsSubgraph<TEvent extends {\n id?: string;\n event: string;\n data: unknown;\n}> = {\n id?: TEvent[\"id\"];\n event: TEvent[\"event\"] | `${TEvent[\"event\"]}|${string}`;\n data: TEvent[\"data\"];\n};\n/**\n * Stream event with values after completion of each step.\n */\nexport type ValuesStreamEvent<StateType> = {\n id?: string;\n event: \"values\";\n data: StateType;\n};\n/** @internal */\nexport type SubgraphValuesStreamEvent<StateType> = AsSubgraph<ValuesStreamEvent<StateType>>;\n/**\n * Stream event with message chunks coming from LLM invocations inside nodes.\n */\nexport type MessagesTupleStreamEvent = {\n event: \"messages\";\n // TODO: add types for message and config, which do not depend on LangChain\n // while making sure it's easy to keep them in sync.\n data: [message: Message, config: MessageTupleMetadata];\n};\n/** @internal */\nexport type SubgraphMessagesTupleStreamEvent = AsSubgraph<MessagesTupleStreamEvent>;\n/**\n * Metadata stream event with information about the run and thread\n */\nexport type MetadataStreamEvent = {\n id?: string;\n event: \"metadata\";\n data: {\n run_id: string;\n thread_id: string;\n };\n};\n/**\n * Stream event with error information.\n */\nexport type ErrorStreamEvent = {\n id?: string;\n event: \"error\";\n data: {\n error: string;\n message: string;\n };\n};\n/** @internal */\nexport type SubgraphErrorStreamEvent = AsSubgraph<ErrorStreamEvent>;\n/**\n * Stream event with updates to the state after each step.\n * The streamed outputs include the name of the node that\n * produced the update as well as the update.\n */\nexport type UpdatesStreamEvent<UpdateType> = {\n id?: string;\n event: \"updates\";\n data: {\n [node: string]: UpdateType;\n };\n};\n/** @internal */\nexport type SubgraphUpdatesStreamEvent<UpdateType> = AsSubgraph<UpdatesStreamEvent<UpdateType>>;\n/**\n * Streaming custom data from inside the nodes.\n */\nexport type CustomStreamEvent<T> = {\n event: \"custom\";\n data: T;\n};\n/** @internal */\nexport type SubgraphCustomStreamEvent<T> = AsSubgraph<CustomStreamEvent<T>>;\ntype MessagesMetadataStreamEvent = {\n id?: string;\n event: \"messages/metadata\";\n data: {\n [messageId: string]: {\n metadata: unknown;\n };\n };\n};\ntype MessagesCompleteStreamEvent = {\n id?: string;\n event: \"messages/complete\";\n data: Message[];\n};\ntype MessagesPartialStreamEvent = {\n id?: string;\n event: \"messages/partial\";\n data: Message[];\n};\ntype TasksStreamCreateEvent<StateType> = {\n id?: string;\n event: \"tasks\";\n data: {\n id: string;\n name: string;\n interrupts: Interrupt[];\n input: StateType;\n triggers: string[];\n };\n};\ntype TasksStreamResultEvent<UpdateType> = {\n id?: string;\n event: \"tasks\";\n data: {\n id: string;\n name: string;\n interrupts: Interrupt[];\n result: [string, UpdateType][];\n };\n};\ntype TasksStreamErrorEvent = {\n id?: string;\n event: \"tasks\";\n data: {\n id: string;\n name: string;\n interrupts: Interrupt[];\n error: string;\n };\n};\nexport type TasksStreamEvent<StateType, UpdateType> = TasksStreamCreateEvent<StateType> | TasksStreamResultEvent<UpdateType> | TasksStreamErrorEvent;\ntype SubgraphTasksStreamEvent<StateType, UpdateType> = AsSubgraph<TasksStreamCreateEvent<StateType>> | AsSubgraph<TasksStreamResultEvent<UpdateType>> | AsSubgraph<TasksStreamErrorEvent>;\nexport type CheckpointsStreamEvent<StateType> = {\n id?: string;\n event: \"checkpoints\";\n data: {\n values: StateType;\n next: string[];\n config: Config;\n metadata: Metadata;\n tasks: ThreadTask[];\n };\n};\ntype SubgraphCheckpointsStreamEvent<StateType> = AsSubgraph<CheckpointsStreamEvent<StateType>>;\n/**\n * Message stream event specific to LangGraph Server.\n * @deprecated Use `streamMode: \"messages-tuple\"` instead.\n */\nexport type MessagesStreamEvent = MessagesMetadataStreamEvent | MessagesCompleteStreamEvent | MessagesPartialStreamEvent;\n/** @internal */\nexport type SubgraphMessagesStreamEvent = AsSubgraph<MessagesMetadataStreamEvent> | AsSubgraph<MessagesCompleteStreamEvent> | AsSubgraph<MessagesPartialStreamEvent>;\n/**\n * Stream event with detailed debug information.\n */\nexport type DebugStreamEvent = {\n id?: string;\n event: \"debug\";\n data: unknown;\n};\n/** @internal */\nexport type SubgraphDebugStreamEvent = AsSubgraph<DebugStreamEvent>;\n/**\n * Stream event with events occurring during execution.\n */\nexport type EventsStreamEvent = {\n id?: string;\n event: \"events\";\n data: {\n event: `on_${\"chat_model\" | \"llm\" | \"chain\" | \"tool\" | \"retriever\" | \"prompt\"}_${\"start\" | \"stream\" | \"end\"}` | (string & {}); // eslint-disable-line @typescript-eslint/ban-types\n name: string;\n tags: string[];\n run_id: string;\n metadata: Record<string, unknown>;\n parent_ids: string[];\n data: unknown;\n };\n};\n/** @internal */\nexport type SubgraphEventsStreamEvent = AsSubgraph<EventsStreamEvent>;\n/**\n * Stream event with a feedback key to signed URL map. Set `feedbackKeys` in\n * the `RunsStreamPayload` to receive this event.\n */\nexport type FeedbackStreamEvent = {\n id?: string;\n event: \"feedback\";\n data: {\n [feedbackKey: string]: string;\n };\n};\ntype GetStreamModeMap<TStreamMode extends StreamMode | StreamMode[], TStateType = unknown, TUpdateType = TStateType, TCustomType = unknown> = {\n values: ValuesStreamEvent<TStateType>;\n updates: UpdatesStreamEvent<TUpdateType>;\n custom: CustomStreamEvent<TCustomType>;\n debug: DebugStreamEvent;\n messages: MessagesStreamEvent;\n \"messages-tuple\": MessagesTupleStreamEvent;\n tasks: TasksStreamEvent<TStateType, TUpdateType>;\n checkpoints: CheckpointsStreamEvent<TStateType>;\n events: EventsStreamEvent;\n}[TStreamMode extends StreamMode[] ? TStreamMode[number] : TStreamMode] | ErrorStreamEvent | MetadataStreamEvent | FeedbackStreamEvent;\ntype GetSubgraphsStreamModeMap<TStreamMode extends StreamMode | StreamMode[], TStateType = unknown, TUpdateType = TStateType, TCustomType = unknown> = {\n values: SubgraphValuesStreamEvent<TStateType>;\n updates: SubgraphUpdatesStreamEvent<TUpdateType>;\n custom: SubgraphCustomStreamEvent<TCustomType>;\n debug: SubgraphDebugStreamEvent;\n messages: SubgraphMessagesStreamEvent;\n \"messages-tuple\": SubgraphMessagesTupleStreamEvent;\n events: SubgraphEventsStreamEvent;\n tasks: SubgraphTasksStreamEvent<TStateType, TUpdateType>;\n checkpoints: SubgraphCheckpointsStreamEvent<TStateType>;\n}[TStreamMode extends StreamMode[] ? TStreamMode[number] : TStreamMode] | SubgraphErrorStreamEvent | MetadataStreamEvent | FeedbackStreamEvent;\nexport type TypedAsyncGenerator<TStreamMode extends StreamMode | StreamMode[] = [], TSubgraphs extends boolean = false, TStateType = unknown, TUpdateType = TStateType, TCustomType = unknown> = AsyncGenerator<TSubgraphs extends true ? GetSubgraphsStreamModeMap<TStreamMode, TStateType, TUpdateType, TCustomType> : GetStreamModeMap<TStreamMode, TStateType, TUpdateType, TCustomType>>;\nexport {};\n"],"mappings":"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"}
1
+ {"version":3,"file":"types.stream.d.cts","names":["Message","Interrupt","Metadata","Config","ThreadTask","StreamMode","ThreadStreamMode","MessageTupleMetadata","AsSubgraph","TEvent","ValuesStreamEvent","StateType","SubgraphValuesStreamEvent","MessagesTupleStreamEvent","SubgraphMessagesTupleStreamEvent","MetadataStreamEvent","ErrorStreamEvent","SubgraphErrorStreamEvent","UpdatesStreamEvent","UpdateType","SubgraphUpdatesStreamEvent","CustomStreamEvent","T","SubgraphCustomStreamEvent","MessagesMetadataStreamEvent","MessagesCompleteStreamEvent","MessagesPartialStreamEvent","TasksStreamCreateEvent","TasksStreamResultEvent","TasksStreamErrorEvent","TasksStreamEvent","SubgraphTasksStreamEvent","CheckpointsStreamEvent","SubgraphCheckpointsStreamEvent","MessagesStreamEvent","SubgraphMessagesStreamEvent","DebugStreamEvent","SubgraphDebugStreamEvent","EventsStreamEvent","Record","SubgraphEventsStreamEvent","FeedbackStreamEvent","GetStreamModeMap","TStateType","TUpdateType","TCustomType","TStreamMode","GetSubgraphsStreamModeMap","TypedAsyncGenerator","TSubgraphs","AsyncGenerator"],"sources":["../src/types.stream.d.ts"],"sourcesContent":["import type { Message } from \"./types.messages.js\";\nimport type { Interrupt, Metadata, Config, ThreadTask } from \"./schema.js\";\n/**\nimport type { SubgraphCheckpointsStreamEvent } from \"./types.stream.subgraph.js\";\n * Stream modes\n * - \"values\": Stream only the state values.\n * - \"messages\": Stream complete messages.\n * - \"messages-tuple\": Stream (message chunk, metadata) tuples.\n * - \"updates\": Stream updates to the state.\n * - \"events\": Stream events occurring during execution.\n * - \"debug\": Stream detailed debug information.\n * - \"custom\": Stream custom events.\n */\nexport type StreamMode = \"values\" | \"messages\" | \"updates\" | \"events\" | \"debug\" | \"tasks\" | \"checkpoints\" | \"custom\" | \"messages-tuple\";\nexport type ThreadStreamMode = \"run_modes\" | \"lifecycle\" | \"state_update\";\ntype MessageTupleMetadata = {\n tags: string[];\n [key: string]: unknown;\n};\ntype AsSubgraph<TEvent extends {\n id?: string;\n event: string;\n data: unknown;\n}> = {\n id?: TEvent[\"id\"];\n event: TEvent[\"event\"] | `${TEvent[\"event\"]}|${string}`;\n data: TEvent[\"data\"];\n};\n/**\n * Stream event with values after completion of each step.\n */\nexport type ValuesStreamEvent<StateType> = {\n id?: string;\n event: \"values\";\n data: StateType;\n};\n/** @internal */\nexport type SubgraphValuesStreamEvent<StateType> = AsSubgraph<ValuesStreamEvent<StateType>>;\n/**\n * Stream event with message chunks coming from LLM invocations inside nodes.\n */\nexport type MessagesTupleStreamEvent = {\n event: \"messages\";\n data: [message: Message, config: MessageTupleMetadata];\n};\n/** @internal */\nexport type SubgraphMessagesTupleStreamEvent = AsSubgraph<MessagesTupleStreamEvent>;\n/**\n * Metadata stream event with information about the run and thread\n */\nexport type MetadataStreamEvent = {\n id?: string;\n event: \"metadata\";\n data: {\n run_id: string;\n thread_id: string;\n };\n};\n/**\n * Stream event with error information.\n */\nexport type ErrorStreamEvent = {\n id?: string;\n event: \"error\";\n data: {\n error: string;\n message: string;\n };\n};\n/** @internal */\nexport type SubgraphErrorStreamEvent = AsSubgraph<ErrorStreamEvent>;\n/**\n * Stream event with updates to the state after each step.\n * The streamed outputs include the name of the node that\n * produced the update as well as the update.\n */\nexport type UpdatesStreamEvent<UpdateType> = {\n id?: string;\n event: \"updates\";\n data: {\n [node: string]: UpdateType;\n };\n};\n/** @internal */\nexport type SubgraphUpdatesStreamEvent<UpdateType> = AsSubgraph<UpdatesStreamEvent<UpdateType>>;\n/**\n * Streaming custom data from inside the nodes.\n */\nexport type CustomStreamEvent<T> = {\n event: \"custom\";\n data: T;\n};\n/** @internal */\nexport type SubgraphCustomStreamEvent<T> = AsSubgraph<CustomStreamEvent<T>>;\ntype MessagesMetadataStreamEvent = {\n id?: string;\n event: \"messages/metadata\";\n data: {\n [messageId: string]: {\n metadata: unknown;\n };\n };\n};\ntype MessagesCompleteStreamEvent = {\n id?: string;\n event: \"messages/complete\";\n data: Message[];\n};\ntype MessagesPartialStreamEvent = {\n id?: string;\n event: \"messages/partial\";\n data: Message[];\n};\ntype TasksStreamCreateEvent<StateType> = {\n id?: string;\n event: \"tasks\";\n data: {\n id: string;\n name: string;\n interrupts: Interrupt[];\n input: StateType;\n triggers: string[];\n };\n};\ntype TasksStreamResultEvent<UpdateType> = {\n id?: string;\n event: \"tasks\";\n data: {\n id: string;\n name: string;\n interrupts: Interrupt[];\n result: [string, UpdateType][];\n };\n};\ntype TasksStreamErrorEvent = {\n id?: string;\n event: \"tasks\";\n data: {\n id: string;\n name: string;\n interrupts: Interrupt[];\n error: string;\n };\n};\nexport type TasksStreamEvent<StateType, UpdateType> = TasksStreamCreateEvent<StateType> | TasksStreamResultEvent<UpdateType> | TasksStreamErrorEvent;\ntype SubgraphTasksStreamEvent<StateType, UpdateType> = AsSubgraph<TasksStreamCreateEvent<StateType>> | AsSubgraph<TasksStreamResultEvent<UpdateType>> | AsSubgraph<TasksStreamErrorEvent>;\nexport type CheckpointsStreamEvent<StateType> = {\n id?: string;\n event: \"checkpoints\";\n data: {\n values: StateType;\n next: string[];\n config: Config;\n metadata: Metadata;\n tasks: ThreadTask[];\n };\n};\ntype SubgraphCheckpointsStreamEvent<StateType> = AsSubgraph<CheckpointsStreamEvent<StateType>>;\n/**\n * Message stream event specific to LangGraph Server.\n * @deprecated Use `streamMode: \"messages-tuple\"` instead.\n */\nexport type MessagesStreamEvent = MessagesMetadataStreamEvent | MessagesCompleteStreamEvent | MessagesPartialStreamEvent;\n/** @internal */\nexport type SubgraphMessagesStreamEvent = AsSubgraph<MessagesMetadataStreamEvent> | AsSubgraph<MessagesCompleteStreamEvent> | AsSubgraph<MessagesPartialStreamEvent>;\n/**\n * Stream event with detailed debug information.\n */\nexport type DebugStreamEvent = {\n id?: string;\n event: \"debug\";\n data: unknown;\n};\n/** @internal */\nexport type SubgraphDebugStreamEvent = AsSubgraph<DebugStreamEvent>;\n/**\n * Stream event with events occurring during execution.\n */\nexport type EventsStreamEvent = {\n id?: string;\n event: \"events\";\n data: {\n event: `on_${\"chat_model\" | \"llm\" | \"chain\" | \"tool\" | \"retriever\" | \"prompt\"}_${\"start\" | \"stream\" | \"end\"}` | (string & {});\n name: string;\n tags: string[];\n run_id: string;\n metadata: Record<string, unknown>;\n parent_ids: string[];\n data: unknown;\n };\n};\n/** @internal */\nexport type SubgraphEventsStreamEvent = AsSubgraph<EventsStreamEvent>;\n/**\n * Stream event with a feedback key to signed URL map. Set `feedbackKeys` in\n * the `RunsStreamPayload` to receive this event.\n */\nexport type FeedbackStreamEvent = {\n id?: string;\n event: \"feedback\";\n data: {\n [feedbackKey: string]: string;\n };\n};\ntype GetStreamModeMap<TStreamMode extends StreamMode | StreamMode[], TStateType = unknown, TUpdateType = TStateType, TCustomType = unknown> = {\n values: ValuesStreamEvent<TStateType>;\n updates: UpdatesStreamEvent<TUpdateType>;\n custom: CustomStreamEvent<TCustomType>;\n debug: DebugStreamEvent;\n messages: MessagesStreamEvent;\n \"messages-tuple\": MessagesTupleStreamEvent;\n tasks: TasksStreamEvent<TStateType, TUpdateType>;\n checkpoints: CheckpointsStreamEvent<TStateType>;\n events: EventsStreamEvent;\n}[TStreamMode extends StreamMode[] ? TStreamMode[number] : TStreamMode] | ErrorStreamEvent | MetadataStreamEvent | FeedbackStreamEvent;\ntype GetSubgraphsStreamModeMap<TStreamMode extends StreamMode | StreamMode[], TStateType = unknown, TUpdateType = TStateType, TCustomType = unknown> = {\n values: SubgraphValuesStreamEvent<TStateType>;\n updates: SubgraphUpdatesStreamEvent<TUpdateType>;\n custom: SubgraphCustomStreamEvent<TCustomType>;\n debug: SubgraphDebugStreamEvent;\n messages: SubgraphMessagesStreamEvent;\n \"messages-tuple\": SubgraphMessagesTupleStreamEvent;\n events: SubgraphEventsStreamEvent;\n tasks: SubgraphTasksStreamEvent<TStateType, TUpdateType>;\n checkpoints: SubgraphCheckpointsStreamEvent<TStateType>;\n}[TStreamMode extends StreamMode[] ? TStreamMode[number] : TStreamMode] | SubgraphErrorStreamEvent | MetadataStreamEvent | FeedbackStreamEvent;\nexport type TypedAsyncGenerator<TStreamMode extends StreamMode | StreamMode[] = [], TSubgraphs extends boolean = false, TStateType = unknown, TUpdateType = TStateType, TCustomType = unknown> = AsyncGenerator<TSubgraphs extends true ? GetSubgraphsStreamModeMap<TStreamMode, TStateType, TUpdateType, TCustomType> : GetStreamModeMap<TStreamMode, TStateType, TUpdateType, TCustomType>>;\nexport {};\n"],"mappings":"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"}
@@ -44,8 +44,6 @@ type SubgraphValuesStreamEvent<StateType> = AsSubgraph<ValuesStreamEvent<StateTy
44
44
  */
45
45
  type MessagesTupleStreamEvent = {
46
46
  event: "messages";
47
- // TODO: add types for message and config, which do not depend on LangChain
48
- // while making sure it's easy to keep them in sync.
49
47
  data: [message: Message, config: MessageTupleMetadata];
50
48
  };
51
49
  /** @internal */
@@ -185,7 +183,7 @@ type EventsStreamEvent = {
185
183
  id?: string;
186
184
  event: "events";
187
185
  data: {
188
- event: `on_${"chat_model" | "llm" | "chain" | "tool" | "retriever" | "prompt"}_${"start" | "stream" | "end"}` | (string & {}); // eslint-disable-line @typescript-eslint/ban-types
186
+ event: `on_${"chat_model" | "llm" | "chain" | "tool" | "retriever" | "prompt"}_${"start" | "stream" | "end"}` | (string & {});
189
187
  name: string;
190
188
  tags: string[];
191
189
  run_id: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.stream.d.ts","names":["Message","Interrupt","Metadata","Config","ThreadTask","StreamMode","ThreadStreamMode","MessageTupleMetadata","AsSubgraph","TEvent","ValuesStreamEvent","StateType","SubgraphValuesStreamEvent","MessagesTupleStreamEvent","SubgraphMessagesTupleStreamEvent","MetadataStreamEvent","ErrorStreamEvent","SubgraphErrorStreamEvent","UpdatesStreamEvent","UpdateType","SubgraphUpdatesStreamEvent","CustomStreamEvent","T","SubgraphCustomStreamEvent","MessagesMetadataStreamEvent","MessagesCompleteStreamEvent","MessagesPartialStreamEvent","TasksStreamCreateEvent","TasksStreamResultEvent","TasksStreamErrorEvent","TasksStreamEvent","SubgraphTasksStreamEvent","CheckpointsStreamEvent","SubgraphCheckpointsStreamEvent","MessagesStreamEvent","SubgraphMessagesStreamEvent","DebugStreamEvent","SubgraphDebugStreamEvent","EventsStreamEvent","Record","SubgraphEventsStreamEvent","FeedbackStreamEvent","GetStreamModeMap","TStateType","TUpdateType","TCustomType","TStreamMode","GetSubgraphsStreamModeMap","TypedAsyncGenerator","TSubgraphs","AsyncGenerator"],"sources":["../src/types.stream.d.ts"],"sourcesContent":["import type { Message } from \"./types.messages.js\";\nimport type { Interrupt, Metadata, Config, ThreadTask } from \"./schema.js\";\n/**\nimport type { SubgraphCheckpointsStreamEvent } from \"./types.stream.subgraph.js\";\n * Stream modes\n * - \"values\": Stream only the state values.\n * - \"messages\": Stream complete messages.\n * - \"messages-tuple\": Stream (message chunk, metadata) tuples.\n * - \"updates\": Stream updates to the state.\n * - \"events\": Stream events occurring during execution.\n * - \"debug\": Stream detailed debug information.\n * - \"custom\": Stream custom events.\n */\nexport type StreamMode = \"values\" | \"messages\" | \"updates\" | \"events\" | \"debug\" | \"tasks\" | \"checkpoints\" | \"custom\" | \"messages-tuple\";\nexport type ThreadStreamMode = \"run_modes\" | \"lifecycle\" | \"state_update\";\ntype MessageTupleMetadata = {\n tags: string[];\n [key: string]: unknown;\n};\ntype AsSubgraph<TEvent extends {\n id?: string;\n event: string;\n data: unknown;\n}> = {\n id?: TEvent[\"id\"];\n event: TEvent[\"event\"] | `${TEvent[\"event\"]}|${string}`;\n data: TEvent[\"data\"];\n};\n/**\n * Stream event with values after completion of each step.\n */\nexport type ValuesStreamEvent<StateType> = {\n id?: string;\n event: \"values\";\n data: StateType;\n};\n/** @internal */\nexport type SubgraphValuesStreamEvent<StateType> = AsSubgraph<ValuesStreamEvent<StateType>>;\n/**\n * Stream event with message chunks coming from LLM invocations inside nodes.\n */\nexport type MessagesTupleStreamEvent = {\n event: \"messages\";\n // TODO: add types for message and config, which do not depend on LangChain\n // while making sure it's easy to keep them in sync.\n data: [message: Message, config: MessageTupleMetadata];\n};\n/** @internal */\nexport type SubgraphMessagesTupleStreamEvent = AsSubgraph<MessagesTupleStreamEvent>;\n/**\n * Metadata stream event with information about the run and thread\n */\nexport type MetadataStreamEvent = {\n id?: string;\n event: \"metadata\";\n data: {\n run_id: string;\n thread_id: string;\n };\n};\n/**\n * Stream event with error information.\n */\nexport type ErrorStreamEvent = {\n id?: string;\n event: \"error\";\n data: {\n error: string;\n message: string;\n };\n};\n/** @internal */\nexport type SubgraphErrorStreamEvent = AsSubgraph<ErrorStreamEvent>;\n/**\n * Stream event with updates to the state after each step.\n * The streamed outputs include the name of the node that\n * produced the update as well as the update.\n */\nexport type UpdatesStreamEvent<UpdateType> = {\n id?: string;\n event: \"updates\";\n data: {\n [node: string]: UpdateType;\n };\n};\n/** @internal */\nexport type SubgraphUpdatesStreamEvent<UpdateType> = AsSubgraph<UpdatesStreamEvent<UpdateType>>;\n/**\n * Streaming custom data from inside the nodes.\n */\nexport type CustomStreamEvent<T> = {\n event: \"custom\";\n data: T;\n};\n/** @internal */\nexport type SubgraphCustomStreamEvent<T> = AsSubgraph<CustomStreamEvent<T>>;\ntype MessagesMetadataStreamEvent = {\n id?: string;\n event: \"messages/metadata\";\n data: {\n [messageId: string]: {\n metadata: unknown;\n };\n };\n};\ntype MessagesCompleteStreamEvent = {\n id?: string;\n event: \"messages/complete\";\n data: Message[];\n};\ntype MessagesPartialStreamEvent = {\n id?: string;\n event: \"messages/partial\";\n data: Message[];\n};\ntype TasksStreamCreateEvent<StateType> = {\n id?: string;\n event: \"tasks\";\n data: {\n id: string;\n name: string;\n interrupts: Interrupt[];\n input: StateType;\n triggers: string[];\n };\n};\ntype TasksStreamResultEvent<UpdateType> = {\n id?: string;\n event: \"tasks\";\n data: {\n id: string;\n name: string;\n interrupts: Interrupt[];\n result: [string, UpdateType][];\n };\n};\ntype TasksStreamErrorEvent = {\n id?: string;\n event: \"tasks\";\n data: {\n id: string;\n name: string;\n interrupts: Interrupt[];\n error: string;\n };\n};\nexport type TasksStreamEvent<StateType, UpdateType> = TasksStreamCreateEvent<StateType> | TasksStreamResultEvent<UpdateType> | TasksStreamErrorEvent;\ntype SubgraphTasksStreamEvent<StateType, UpdateType> = AsSubgraph<TasksStreamCreateEvent<StateType>> | AsSubgraph<TasksStreamResultEvent<UpdateType>> | AsSubgraph<TasksStreamErrorEvent>;\nexport type CheckpointsStreamEvent<StateType> = {\n id?: string;\n event: \"checkpoints\";\n data: {\n values: StateType;\n next: string[];\n config: Config;\n metadata: Metadata;\n tasks: ThreadTask[];\n };\n};\ntype SubgraphCheckpointsStreamEvent<StateType> = AsSubgraph<CheckpointsStreamEvent<StateType>>;\n/**\n * Message stream event specific to LangGraph Server.\n * @deprecated Use `streamMode: \"messages-tuple\"` instead.\n */\nexport type MessagesStreamEvent = MessagesMetadataStreamEvent | MessagesCompleteStreamEvent | MessagesPartialStreamEvent;\n/** @internal */\nexport type SubgraphMessagesStreamEvent = AsSubgraph<MessagesMetadataStreamEvent> | AsSubgraph<MessagesCompleteStreamEvent> | AsSubgraph<MessagesPartialStreamEvent>;\n/**\n * Stream event with detailed debug information.\n */\nexport type DebugStreamEvent = {\n id?: string;\n event: \"debug\";\n data: unknown;\n};\n/** @internal */\nexport type SubgraphDebugStreamEvent = AsSubgraph<DebugStreamEvent>;\n/**\n * Stream event with events occurring during execution.\n */\nexport type EventsStreamEvent = {\n id?: string;\n event: \"events\";\n data: {\n event: `on_${\"chat_model\" | \"llm\" | \"chain\" | \"tool\" | \"retriever\" | \"prompt\"}_${\"start\" | \"stream\" | \"end\"}` | (string & {}); // eslint-disable-line @typescript-eslint/ban-types\n name: string;\n tags: string[];\n run_id: string;\n metadata: Record<string, unknown>;\n parent_ids: string[];\n data: unknown;\n };\n};\n/** @internal */\nexport type SubgraphEventsStreamEvent = AsSubgraph<EventsStreamEvent>;\n/**\n * Stream event with a feedback key to signed URL map. Set `feedbackKeys` in\n * the `RunsStreamPayload` to receive this event.\n */\nexport type FeedbackStreamEvent = {\n id?: string;\n event: \"feedback\";\n data: {\n [feedbackKey: string]: string;\n };\n};\ntype GetStreamModeMap<TStreamMode extends StreamMode | StreamMode[], TStateType = unknown, TUpdateType = TStateType, TCustomType = unknown> = {\n values: ValuesStreamEvent<TStateType>;\n updates: UpdatesStreamEvent<TUpdateType>;\n custom: CustomStreamEvent<TCustomType>;\n debug: DebugStreamEvent;\n messages: MessagesStreamEvent;\n \"messages-tuple\": MessagesTupleStreamEvent;\n tasks: TasksStreamEvent<TStateType, TUpdateType>;\n checkpoints: CheckpointsStreamEvent<TStateType>;\n events: EventsStreamEvent;\n}[TStreamMode extends StreamMode[] ? TStreamMode[number] : TStreamMode] | ErrorStreamEvent | MetadataStreamEvent | FeedbackStreamEvent;\ntype GetSubgraphsStreamModeMap<TStreamMode extends StreamMode | StreamMode[], TStateType = unknown, TUpdateType = TStateType, TCustomType = unknown> = {\n values: SubgraphValuesStreamEvent<TStateType>;\n updates: SubgraphUpdatesStreamEvent<TUpdateType>;\n custom: SubgraphCustomStreamEvent<TCustomType>;\n debug: SubgraphDebugStreamEvent;\n messages: SubgraphMessagesStreamEvent;\n \"messages-tuple\": SubgraphMessagesTupleStreamEvent;\n events: SubgraphEventsStreamEvent;\n tasks: SubgraphTasksStreamEvent<TStateType, TUpdateType>;\n checkpoints: SubgraphCheckpointsStreamEvent<TStateType>;\n}[TStreamMode extends StreamMode[] ? TStreamMode[number] : TStreamMode] | SubgraphErrorStreamEvent | MetadataStreamEvent | FeedbackStreamEvent;\nexport type TypedAsyncGenerator<TStreamMode extends StreamMode | StreamMode[] = [], TSubgraphs extends boolean = false, TStateType = unknown, TUpdateType = TStateType, TCustomType = unknown> = AsyncGenerator<TSubgraphs extends true ? GetSubgraphsStreamModeMap<TStreamMode, TStateType, TUpdateType, TCustomType> : GetStreamModeMap<TStreamMode, TStateType, TUpdateType, TCustomType>>;\nexport {};\n"],"mappings":"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"}
1
+ {"version":3,"file":"types.stream.d.ts","names":["Message","Interrupt","Metadata","Config","ThreadTask","StreamMode","ThreadStreamMode","MessageTupleMetadata","AsSubgraph","TEvent","ValuesStreamEvent","StateType","SubgraphValuesStreamEvent","MessagesTupleStreamEvent","SubgraphMessagesTupleStreamEvent","MetadataStreamEvent","ErrorStreamEvent","SubgraphErrorStreamEvent","UpdatesStreamEvent","UpdateType","SubgraphUpdatesStreamEvent","CustomStreamEvent","T","SubgraphCustomStreamEvent","MessagesMetadataStreamEvent","MessagesCompleteStreamEvent","MessagesPartialStreamEvent","TasksStreamCreateEvent","TasksStreamResultEvent","TasksStreamErrorEvent","TasksStreamEvent","SubgraphTasksStreamEvent","CheckpointsStreamEvent","SubgraphCheckpointsStreamEvent","MessagesStreamEvent","SubgraphMessagesStreamEvent","DebugStreamEvent","SubgraphDebugStreamEvent","EventsStreamEvent","Record","SubgraphEventsStreamEvent","FeedbackStreamEvent","GetStreamModeMap","TStateType","TUpdateType","TCustomType","TStreamMode","GetSubgraphsStreamModeMap","TypedAsyncGenerator","TSubgraphs","AsyncGenerator"],"sources":["../src/types.stream.d.ts"],"sourcesContent":["import type { Message } from \"./types.messages.js\";\nimport type { Interrupt, Metadata, Config, ThreadTask } from \"./schema.js\";\n/**\nimport type { SubgraphCheckpointsStreamEvent } from \"./types.stream.subgraph.js\";\n * Stream modes\n * - \"values\": Stream only the state values.\n * - \"messages\": Stream complete messages.\n * - \"messages-tuple\": Stream (message chunk, metadata) tuples.\n * - \"updates\": Stream updates to the state.\n * - \"events\": Stream events occurring during execution.\n * - \"debug\": Stream detailed debug information.\n * - \"custom\": Stream custom events.\n */\nexport type StreamMode = \"values\" | \"messages\" | \"updates\" | \"events\" | \"debug\" | \"tasks\" | \"checkpoints\" | \"custom\" | \"messages-tuple\";\nexport type ThreadStreamMode = \"run_modes\" | \"lifecycle\" | \"state_update\";\ntype MessageTupleMetadata = {\n tags: string[];\n [key: string]: unknown;\n};\ntype AsSubgraph<TEvent extends {\n id?: string;\n event: string;\n data: unknown;\n}> = {\n id?: TEvent[\"id\"];\n event: TEvent[\"event\"] | `${TEvent[\"event\"]}|${string}`;\n data: TEvent[\"data\"];\n};\n/**\n * Stream event with values after completion of each step.\n */\nexport type ValuesStreamEvent<StateType> = {\n id?: string;\n event: \"values\";\n data: StateType;\n};\n/** @internal */\nexport type SubgraphValuesStreamEvent<StateType> = AsSubgraph<ValuesStreamEvent<StateType>>;\n/**\n * Stream event with message chunks coming from LLM invocations inside nodes.\n */\nexport type MessagesTupleStreamEvent = {\n event: \"messages\";\n data: [message: Message, config: MessageTupleMetadata];\n};\n/** @internal */\nexport type SubgraphMessagesTupleStreamEvent = AsSubgraph<MessagesTupleStreamEvent>;\n/**\n * Metadata stream event with information about the run and thread\n */\nexport type MetadataStreamEvent = {\n id?: string;\n event: \"metadata\";\n data: {\n run_id: string;\n thread_id: string;\n };\n};\n/**\n * Stream event with error information.\n */\nexport type ErrorStreamEvent = {\n id?: string;\n event: \"error\";\n data: {\n error: string;\n message: string;\n };\n};\n/** @internal */\nexport type SubgraphErrorStreamEvent = AsSubgraph<ErrorStreamEvent>;\n/**\n * Stream event with updates to the state after each step.\n * The streamed outputs include the name of the node that\n * produced the update as well as the update.\n */\nexport type UpdatesStreamEvent<UpdateType> = {\n id?: string;\n event: \"updates\";\n data: {\n [node: string]: UpdateType;\n };\n};\n/** @internal */\nexport type SubgraphUpdatesStreamEvent<UpdateType> = AsSubgraph<UpdatesStreamEvent<UpdateType>>;\n/**\n * Streaming custom data from inside the nodes.\n */\nexport type CustomStreamEvent<T> = {\n event: \"custom\";\n data: T;\n};\n/** @internal */\nexport type SubgraphCustomStreamEvent<T> = AsSubgraph<CustomStreamEvent<T>>;\ntype MessagesMetadataStreamEvent = {\n id?: string;\n event: \"messages/metadata\";\n data: {\n [messageId: string]: {\n metadata: unknown;\n };\n };\n};\ntype MessagesCompleteStreamEvent = {\n id?: string;\n event: \"messages/complete\";\n data: Message[];\n};\ntype MessagesPartialStreamEvent = {\n id?: string;\n event: \"messages/partial\";\n data: Message[];\n};\ntype TasksStreamCreateEvent<StateType> = {\n id?: string;\n event: \"tasks\";\n data: {\n id: string;\n name: string;\n interrupts: Interrupt[];\n input: StateType;\n triggers: string[];\n };\n};\ntype TasksStreamResultEvent<UpdateType> = {\n id?: string;\n event: \"tasks\";\n data: {\n id: string;\n name: string;\n interrupts: Interrupt[];\n result: [string, UpdateType][];\n };\n};\ntype TasksStreamErrorEvent = {\n id?: string;\n event: \"tasks\";\n data: {\n id: string;\n name: string;\n interrupts: Interrupt[];\n error: string;\n };\n};\nexport type TasksStreamEvent<StateType, UpdateType> = TasksStreamCreateEvent<StateType> | TasksStreamResultEvent<UpdateType> | TasksStreamErrorEvent;\ntype SubgraphTasksStreamEvent<StateType, UpdateType> = AsSubgraph<TasksStreamCreateEvent<StateType>> | AsSubgraph<TasksStreamResultEvent<UpdateType>> | AsSubgraph<TasksStreamErrorEvent>;\nexport type CheckpointsStreamEvent<StateType> = {\n id?: string;\n event: \"checkpoints\";\n data: {\n values: StateType;\n next: string[];\n config: Config;\n metadata: Metadata;\n tasks: ThreadTask[];\n };\n};\ntype SubgraphCheckpointsStreamEvent<StateType> = AsSubgraph<CheckpointsStreamEvent<StateType>>;\n/**\n * Message stream event specific to LangGraph Server.\n * @deprecated Use `streamMode: \"messages-tuple\"` instead.\n */\nexport type MessagesStreamEvent = MessagesMetadataStreamEvent | MessagesCompleteStreamEvent | MessagesPartialStreamEvent;\n/** @internal */\nexport type SubgraphMessagesStreamEvent = AsSubgraph<MessagesMetadataStreamEvent> | AsSubgraph<MessagesCompleteStreamEvent> | AsSubgraph<MessagesPartialStreamEvent>;\n/**\n * Stream event with detailed debug information.\n */\nexport type DebugStreamEvent = {\n id?: string;\n event: \"debug\";\n data: unknown;\n};\n/** @internal */\nexport type SubgraphDebugStreamEvent = AsSubgraph<DebugStreamEvent>;\n/**\n * Stream event with events occurring during execution.\n */\nexport type EventsStreamEvent = {\n id?: string;\n event: \"events\";\n data: {\n event: `on_${\"chat_model\" | \"llm\" | \"chain\" | \"tool\" | \"retriever\" | \"prompt\"}_${\"start\" | \"stream\" | \"end\"}` | (string & {});\n name: string;\n tags: string[];\n run_id: string;\n metadata: Record<string, unknown>;\n parent_ids: string[];\n data: unknown;\n };\n};\n/** @internal */\nexport type SubgraphEventsStreamEvent = AsSubgraph<EventsStreamEvent>;\n/**\n * Stream event with a feedback key to signed URL map. Set `feedbackKeys` in\n * the `RunsStreamPayload` to receive this event.\n */\nexport type FeedbackStreamEvent = {\n id?: string;\n event: \"feedback\";\n data: {\n [feedbackKey: string]: string;\n };\n};\ntype GetStreamModeMap<TStreamMode extends StreamMode | StreamMode[], TStateType = unknown, TUpdateType = TStateType, TCustomType = unknown> = {\n values: ValuesStreamEvent<TStateType>;\n updates: UpdatesStreamEvent<TUpdateType>;\n custom: CustomStreamEvent<TCustomType>;\n debug: DebugStreamEvent;\n messages: MessagesStreamEvent;\n \"messages-tuple\": MessagesTupleStreamEvent;\n tasks: TasksStreamEvent<TStateType, TUpdateType>;\n checkpoints: CheckpointsStreamEvent<TStateType>;\n events: EventsStreamEvent;\n}[TStreamMode extends StreamMode[] ? TStreamMode[number] : TStreamMode] | ErrorStreamEvent | MetadataStreamEvent | FeedbackStreamEvent;\ntype GetSubgraphsStreamModeMap<TStreamMode extends StreamMode | StreamMode[], TStateType = unknown, TUpdateType = TStateType, TCustomType = unknown> = {\n values: SubgraphValuesStreamEvent<TStateType>;\n updates: SubgraphUpdatesStreamEvent<TUpdateType>;\n custom: SubgraphCustomStreamEvent<TCustomType>;\n debug: SubgraphDebugStreamEvent;\n messages: SubgraphMessagesStreamEvent;\n \"messages-tuple\": SubgraphMessagesTupleStreamEvent;\n events: SubgraphEventsStreamEvent;\n tasks: SubgraphTasksStreamEvent<TStateType, TUpdateType>;\n checkpoints: SubgraphCheckpointsStreamEvent<TStateType>;\n}[TStreamMode extends StreamMode[] ? TStreamMode[number] : TStreamMode] | SubgraphErrorStreamEvent | MetadataStreamEvent | FeedbackStreamEvent;\nexport type TypedAsyncGenerator<TStreamMode extends StreamMode | StreamMode[] = [], TSubgraphs extends boolean = false, TStateType = unknown, TUpdateType = TStateType, TCustomType = unknown> = AsyncGenerator<TSubgraphs extends true ? GetSubgraphsStreamModeMap<TStreamMode, TStateType, TUpdateType, TCustomType> : GetStreamModeMap<TStreamMode, TStateType, TUpdateType, TCustomType>>;\nexport {};\n"],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ //#region src/types.template.d.ts
2
+ /**
3
+ * Template for the bag type.
4
+ * @template ConfigurableType - Type for the `config.configurable` property
5
+ * @template InterruptType - Type for interrupt values
6
+ * @template CustomEventType - Type for custom events
7
+ * @template UpdateType - Type for the submit function updates
8
+ * @template MetaType - Type for the meta property
9
+ */
10
+ type BagTemplate = {
11
+ ConfigurableType?: Record<string, unknown>;
12
+ InterruptType?: unknown;
13
+ CustomEventType?: unknown;
14
+ UpdateType?: unknown;
15
+ MetaType?: unknown;
16
+ };
17
+ //#endregion
18
+ export { BagTemplate };
19
+ //# sourceMappingURL=types.template.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.template.d.cts","names":["BagTemplate","Record"],"sources":["../src/types.template.d.ts"],"sourcesContent":["/**\n * Template for the bag type.\n * @template ConfigurableType - Type for the `config.configurable` property\n * @template InterruptType - Type for interrupt values\n * @template CustomEventType - Type for custom events\n * @template UpdateType - Type for the submit function updates\n * @template MetaType - Type for the meta property\n */\nexport type BagTemplate = {\n ConfigurableType?: Record<string, unknown>;\n InterruptType?: unknown;\n CustomEventType?: unknown;\n UpdateType?: unknown;\n MetaType?: unknown;\n};\n"],"mappings":";;AAQA;;;;;;;KAAYA,WAAAA;qBACWC"}
@@ -0,0 +1,19 @@
1
+ //#region src/types.template.d.ts
2
+ /**
3
+ * Template for the bag type.
4
+ * @template ConfigurableType - Type for the `config.configurable` property
5
+ * @template InterruptType - Type for interrupt values
6
+ * @template CustomEventType - Type for custom events
7
+ * @template UpdateType - Type for the submit function updates
8
+ * @template MetaType - Type for the meta property
9
+ */
10
+ type BagTemplate = {
11
+ ConfigurableType?: Record<string, unknown>;
12
+ InterruptType?: unknown;
13
+ CustomEventType?: unknown;
14
+ UpdateType?: unknown;
15
+ MetaType?: unknown;
16
+ };
17
+ //#endregion
18
+ export { BagTemplate };
19
+ //# sourceMappingURL=types.template.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.template.d.ts","names":["BagTemplate","Record"],"sources":["../src/types.template.d.ts"],"sourcesContent":["/**\n * Template for the bag type.\n * @template ConfigurableType - Type for the `config.configurable` property\n * @template InterruptType - Type for interrupt values\n * @template CustomEventType - Type for custom events\n * @template UpdateType - Type for the submit function updates\n * @template MetaType - Type for the meta property\n */\nexport type BagTemplate = {\n ConfigurableType?: Record<string, unknown>;\n InterruptType?: unknown;\n CustomEventType?: unknown;\n UpdateType?: unknown;\n MetaType?: unknown;\n};\n"],"mappings":";;AAQA;;;;;;;KAAYA,WAAAA;qBACWC"}
@@ -1 +1 @@
1
- {"version":3,"file":"branching.cjs","names":["childrenMap: Record<string, ThreadState<StateType>[]>","queue: string[]","queue","rootSequence: Sequence","queue: Task[]","paths: string[][]","fork: Fork | undefined","pathMap: Record<string, string[][]>","path","history: ThreadState<StateType>[]","branchByCheckpoint: Record<\n string,\n { branch: string | undefined; branchOptions: string[] | undefined }\n >","queue: (Node<StateType> | Fork<StateType>)[]"],"sources":["../../src/ui/branching.ts"],"sourcesContent":["import type { ThreadState } from \"../schema.js\";\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ninterface Node<StateType = any> {\n type: \"node\";\n value: ThreadState<StateType>;\n path: string[];\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ninterface Fork<StateType = any> {\n type: \"fork\";\n items: Array<Sequence<StateType>>;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport interface Sequence<StateType = any> {\n type: \"sequence\";\n items: Array<Node<StateType> | Fork<StateType>>;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ninterface ValidFork<StateType = any> {\n type: \"fork\";\n items: Array<ValidSequence<StateType>>;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ninterface ValidSequence<StateType = any> {\n type: \"sequence\";\n items: [Node<StateType>, ...(Node<StateType> | ValidFork<StateType>)[]];\n}\n\nexport function getBranchSequence<StateType extends Record<string, unknown>>(\n history: ThreadState<StateType>[]\n) {\n const nodeIds = new Set<string>();\n const childrenMap: Record<string, ThreadState<StateType>[]> = {};\n\n // Short circuit if there's only a singular one state\n if (history.length <= 1) {\n return {\n rootSequence: {\n type: \"sequence\",\n items: history.map((value) => ({ type: \"node\", value, path: [] })),\n } satisfies Sequence<StateType>,\n paths: [],\n };\n }\n\n // First pass - collect nodes for each checkpoint\n history.forEach((state) => {\n const checkpointId = state.parent_checkpoint?.checkpoint_id ?? \"$\";\n childrenMap[checkpointId] ??= [];\n childrenMap[checkpointId].push(state);\n\n if (state.checkpoint?.checkpoint_id != null) {\n nodeIds.add(state.checkpoint.checkpoint_id);\n }\n });\n\n // If dealing with partial history, take the branch\n // with the latest checkpoint and mark it as the root.\n const maxId = (...ids: (string | null)[]) =>\n ids\n .filter((i) => i != null)\n .sort((a, b) => a.localeCompare(b))\n .at(-1)!;\n\n const lastOrphanedNode =\n childrenMap.$ == null\n ? Object.keys(childrenMap)\n .filter((parentId) => !nodeIds.has(parentId))\n .map((parentId) => {\n const queue: string[] = [parentId];\n const seen = new Set<string>();\n\n let lastId = parentId;\n\n while (queue.length > 0) {\n const current = queue.shift()!;\n\n if (seen.has(current)) continue;\n seen.add(current);\n\n const children = (childrenMap[current] ?? []).flatMap(\n (i) => i.checkpoint?.checkpoint_id ?? []\n );\n\n lastId = maxId(lastId, ...children);\n queue.push(...children);\n }\n\n return { parentId, lastId };\n })\n .sort((a, b) => a.lastId.localeCompare(b.lastId))\n .at(-1)?.parentId\n : undefined;\n\n if (lastOrphanedNode != null) childrenMap.$ = childrenMap[lastOrphanedNode];\n\n // Second pass - create a tree of sequences\n type Task = { id: string; sequence: Sequence; path: string[] };\n const rootSequence: Sequence = { type: \"sequence\", items: [] };\n const queue: Task[] = [{ id: \"$\", sequence: rootSequence, path: [] }];\n\n const paths: string[][] = [];\n\n const visited = new Set<string>();\n while (queue.length > 0) {\n const task = queue.shift()!;\n if (visited.has(task.id)) continue;\n visited.add(task.id);\n\n const children = childrenMap[task.id];\n if (children == null || children.length === 0) continue;\n\n // If we've encountered a fork (2+ children), push the fork\n // to the sequence and add a new sequence for each child\n let fork: Fork | undefined;\n if (children.length > 1) {\n fork = { type: \"fork\", items: [] };\n task.sequence.items.push(fork);\n }\n\n for (const value of children) {\n const id = value.checkpoint?.checkpoint_id;\n if (id == null) continue;\n\n let { sequence } = task;\n let { path } = task;\n if (fork != null) {\n sequence = { type: \"sequence\", items: [] };\n fork.items.unshift(sequence);\n\n path = path.slice();\n path.push(id);\n paths.push(path);\n }\n\n sequence.items.push({ type: \"node\", value, path });\n queue.push({ id, sequence, path });\n }\n }\n\n return { rootSequence, paths };\n}\n\nconst PATH_SEP = \">\";\nconst ROOT_ID = \"$\";\n\n// Get flat view\nexport function getBranchView<StateType extends Record<string, unknown>>(\n sequence: Sequence<StateType>,\n paths: string[][],\n branch: string\n) {\n const path = branch.split(PATH_SEP);\n const pathMap: Record<string, string[][]> = {};\n\n for (const path of paths) {\n const parent = path.at(-2) ?? ROOT_ID;\n pathMap[parent] ??= [];\n pathMap[parent].unshift(path);\n }\n\n const history: ThreadState<StateType>[] = [];\n const branchByCheckpoint: Record<\n string,\n { branch: string | undefined; branchOptions: string[] | undefined }\n > = {};\n\n const forkStack = path.slice();\n const queue: (Node<StateType> | Fork<StateType>)[] = [...sequence.items];\n\n while (queue.length > 0) {\n const item = queue.shift()!;\n\n if (item.type === \"node\") {\n history.push(item.value);\n const checkpointId = item.value.checkpoint?.checkpoint_id;\n if (checkpointId == null) continue;\n\n branchByCheckpoint[checkpointId] = {\n branch: item.path.join(PATH_SEP),\n branchOptions: (item.path.length > 0\n ? pathMap[item.path.at(-2) ?? ROOT_ID] ?? []\n : []\n ).map((p) => p.join(PATH_SEP)),\n };\n }\n if (item.type === \"fork\") {\n const forkId = forkStack.shift();\n const index =\n forkId != null\n ? item.items.findIndex((value) => {\n const firstItem = value.items.at(0);\n if (!firstItem || firstItem.type !== \"node\") return false;\n return firstItem.value.checkpoint?.checkpoint_id === forkId;\n })\n : -1;\n\n const nextItems = item.items.at(index)?.items ?? [];\n queue.push(...nextItems);\n }\n }\n\n return { history, branchByCheckpoint };\n}\n\nexport function getBranchContext<StateType extends Record<string, unknown>>(\n branch: string,\n history: ThreadState<StateType>[] | undefined\n) {\n const { rootSequence: branchTree, paths } = getBranchSequence(history ?? []);\n const { history: flatHistory, branchByCheckpoint } = getBranchView(\n branchTree,\n paths,\n branch\n );\n\n return {\n branchTree,\n flatHistory,\n branchByCheckpoint,\n threadHead: flatHistory.at(-1),\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"branching.cjs","names":["queue","path"],"sources":["../../src/ui/branching.ts"],"sourcesContent":["import type { ThreadState } from \"../schema.js\";\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ninterface Node<StateType = any> {\n type: \"node\";\n value: ThreadState<StateType>;\n path: string[];\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ninterface Fork<StateType = any> {\n type: \"fork\";\n items: Array<Sequence<StateType>>;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport interface Sequence<StateType = any> {\n type: \"sequence\";\n items: Array<Node<StateType> | Fork<StateType>>;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ninterface ValidFork<StateType = any> {\n type: \"fork\";\n items: Array<ValidSequence<StateType>>;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ninterface ValidSequence<StateType = any> {\n type: \"sequence\";\n items: [Node<StateType>, ...(Node<StateType> | ValidFork<StateType>)[]];\n}\n\nexport function getBranchSequence<StateType extends Record<string, unknown>>(\n history: ThreadState<StateType>[]\n) {\n const nodeIds = new Set<string>();\n const childrenMap: Record<string, ThreadState<StateType>[]> = {};\n\n // Short circuit if there's only a singular one state\n if (history.length <= 1) {\n return {\n rootSequence: {\n type: \"sequence\",\n items: history.map((value) => ({ type: \"node\", value, path: [] })),\n } satisfies Sequence<StateType>,\n paths: [],\n };\n }\n\n // First pass - collect nodes for each checkpoint\n history.forEach((state) => {\n const checkpointId = state.parent_checkpoint?.checkpoint_id ?? \"$\";\n childrenMap[checkpointId] ??= [];\n childrenMap[checkpointId].push(state);\n\n if (state.checkpoint?.checkpoint_id != null) {\n nodeIds.add(state.checkpoint.checkpoint_id);\n }\n });\n\n // If dealing with partial history, take the branch\n // with the latest checkpoint and mark it as the root.\n const maxId = (...ids: (string | null)[]) =>\n ids\n .filter((i): i is string => i != null)\n .sort((a, b) => a.localeCompare(b))\n .at(-1)!;\n\n const lastOrphanedNode =\n childrenMap.$ == null\n ? Object.keys(childrenMap)\n .filter((parentId) => !nodeIds.has(parentId))\n .map((parentId) => {\n const queue: string[] = [parentId];\n const seen = new Set<string>();\n\n let lastId = parentId;\n\n while (queue.length > 0) {\n const current = queue.shift()!;\n\n if (seen.has(current)) continue;\n seen.add(current);\n\n const children = (childrenMap[current] ?? []).flatMap(\n (i) => i.checkpoint?.checkpoint_id ?? []\n );\n\n lastId = maxId(lastId, ...children);\n queue.push(...children);\n }\n\n return { parentId, lastId };\n })\n .sort((a, b) => a.lastId.localeCompare(b.lastId))\n .at(-1)?.parentId\n : undefined;\n\n if (lastOrphanedNode != null) childrenMap.$ = childrenMap[lastOrphanedNode];\n\n // Second pass - create a tree of sequences\n type Task = { id: string; sequence: Sequence; path: string[] };\n const rootSequence: Sequence = { type: \"sequence\", items: [] };\n const queue: Task[] = [{ id: \"$\", sequence: rootSequence, path: [] }];\n\n const paths: string[][] = [];\n\n const visited = new Set<string>();\n while (queue.length > 0) {\n const task = queue.shift()!;\n if (visited.has(task.id)) continue;\n visited.add(task.id);\n\n const children = childrenMap[task.id];\n if (children == null || children.length === 0) continue;\n\n // If we've encountered a fork (2+ children), push the fork\n // to the sequence and add a new sequence for each child\n let fork: Fork | undefined;\n if (children.length > 1) {\n fork = { type: \"fork\", items: [] };\n task.sequence.items.push(fork);\n }\n\n for (const value of children) {\n const id = value.checkpoint?.checkpoint_id;\n if (id == null) continue;\n\n let { sequence } = task;\n let { path } = task;\n if (fork != null) {\n sequence = { type: \"sequence\", items: [] };\n fork.items.unshift(sequence);\n\n path = path.slice();\n path.push(id);\n paths.push(path);\n }\n\n sequence.items.push({ type: \"node\", value, path });\n queue.push({ id, sequence, path });\n }\n }\n\n return { rootSequence, paths };\n}\n\nconst PATH_SEP = \">\";\nconst ROOT_ID = \"$\";\n\n// Get flat view\nexport function getBranchView<StateType extends Record<string, unknown>>(\n sequence: Sequence<StateType>,\n paths: string[][],\n branch: string\n) {\n const path = branch.split(PATH_SEP);\n const pathMap: Record<string, string[][]> = {};\n\n for (const path of paths) {\n const parent = path.at(-2) ?? ROOT_ID;\n pathMap[parent] ??= [];\n pathMap[parent].unshift(path);\n }\n\n const history: ThreadState<StateType>[] = [];\n const branchByCheckpoint: Record<\n string,\n { branch: string | undefined; branchOptions: string[] | undefined }\n > = {};\n\n const forkStack = path.slice();\n const queue: (Node<StateType> | Fork<StateType>)[] = [...sequence.items];\n\n while (queue.length > 0) {\n const item = queue.shift()!;\n\n if (item.type === \"node\") {\n history.push(item.value);\n const checkpointId = item.value.checkpoint?.checkpoint_id;\n if (checkpointId == null) continue;\n\n branchByCheckpoint[checkpointId] = {\n branch: item.path.join(PATH_SEP),\n branchOptions: (item.path.length > 0\n ? pathMap[item.path.at(-2) ?? ROOT_ID] ?? []\n : []\n ).map((p) => p.join(PATH_SEP)),\n };\n }\n if (item.type === \"fork\") {\n const forkId = forkStack.shift();\n const index =\n forkId != null\n ? item.items.findIndex((value) => {\n const firstItem = value.items.at(0);\n if (!firstItem || firstItem.type !== \"node\") return false;\n return firstItem.value.checkpoint?.checkpoint_id === forkId;\n })\n : -1;\n\n const nextItems = item.items.at(index)?.items ?? [];\n queue.push(...nextItems);\n }\n }\n\n return { history, branchByCheckpoint };\n}\n\nexport function getBranchContext<StateType extends Record<string, unknown>>(\n branch: string,\n history: ThreadState<StateType>[] | undefined\n) {\n const { rootSequence: branchTree, paths } = getBranchSequence(history ?? []);\n const { history: flatHistory, branchByCheckpoint } = getBranchView(\n branchTree,\n paths,\n branch\n );\n\n return {\n branchTree,\n flatHistory,\n branchByCheckpoint,\n threadHead: flatHistory.at(-1),\n };\n}\n"],"mappings":"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"}
@@ -1,18 +1,15 @@
1
1
  import { ThreadState } from "../schema.cjs";
2
2
 
3
3
  //#region src/ui/branching.d.ts
4
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
5
4
  interface Node<StateType = any> {
6
5
  type: "node";
7
6
  value: ThreadState<StateType>;
8
7
  path: string[];
9
8
  }
10
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
11
9
  interface Fork<StateType = any> {
12
10
  type: "fork";
13
11
  items: Array<Sequence<StateType>>;
14
12
  }
15
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
16
13
  interface Sequence<StateType = any> {
17
14
  type: "sequence";
18
15
  items: Array<Node<StateType> | Fork<StateType>>;
@@ -1 +1 @@
1
- {"version":3,"file":"branching.d.cts","names":["ThreadState","Node","StateType","Fork","Sequence","Array","getBranchSequence","Record","getBranchView","getBranchContext"],"sources":["../../src/ui/branching.d.ts"],"sourcesContent":["import type { ThreadState } from \"../schema.js\";\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ninterface Node<StateType = any> {\n type: \"node\";\n value: ThreadState<StateType>;\n path: string[];\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ninterface Fork<StateType = any> {\n type: \"fork\";\n items: Array<Sequence<StateType>>;\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport interface Sequence<StateType = any> {\n type: \"sequence\";\n items: Array<Node<StateType> | Fork<StateType>>;\n}\nexport declare function getBranchSequence<StateType extends Record<string, unknown>>(history: ThreadState<StateType>[]): {\n rootSequence: Sequence<any>;\n paths: string[][];\n};\n// Get flat view\nexport declare function getBranchView<StateType extends Record<string, unknown>>(sequence: Sequence<StateType>, paths: string[][], branch: string): {\n history: ThreadState<StateType>[];\n branchByCheckpoint: Record<string, {\n branch: string | undefined;\n branchOptions: string[] | undefined;\n }>;\n};\nexport declare function getBranchContext<StateType extends Record<string, unknown>>(branch: string, history: ThreadState<StateType>[] | undefined): {\n branchTree: Sequence<any>;\n flatHistory: ThreadState<any>[];\n branchByCheckpoint: Record<string, {\n branch: string | undefined;\n branchOptions: string[] | undefined;\n }>;\n threadHead: ThreadState<any> | undefined;\n};\nexport {};\n"],"mappings":";;;;UAEUC;EAAAA,IAAAA,EAAAA,MAAI;EAAA,KAAA,EAEHD,WAFG,CAESE,SAFT,CAAA;MAESA,EAAAA,MAAAA,EAAAA;;;AAAD,UAIZC,IAAI,CAAA,YAAA,GAAA,CAAA,CAAA;EAAA,IAAA,EAAA,MAAA;OAEYD,EAAfG,KAAeH,CAATE,QAASF,CAAAA,SAAAA,CAAAA,CAAAA;;;UAGTE;EAAAA,IAAAA,EAAAA,UAAQ;EAAA,KAAA,EAEdC,KAFc,CAERJ,IAFQ,CAEHC,SAFG,CAAA,GAEUC,IAFV,CAEeD,SAFf,CAAA,CAAA"}
1
+ {"version":3,"file":"branching.d.cts","names":["ThreadState","Node","StateType","Fork","Sequence","Array","getBranchSequence","Record","getBranchView","getBranchContext"],"sources":["../../src/ui/branching.d.ts"],"sourcesContent":["import type { ThreadState } from \"../schema.js\";\ninterface Node<StateType = any> {\n type: \"node\";\n value: ThreadState<StateType>;\n path: string[];\n}\ninterface Fork<StateType = any> {\n type: \"fork\";\n items: Array<Sequence<StateType>>;\n}\nexport interface Sequence<StateType = any> {\n type: \"sequence\";\n items: Array<Node<StateType> | Fork<StateType>>;\n}\nexport declare function getBranchSequence<StateType extends Record<string, unknown>>(history: ThreadState<StateType>[]): {\n rootSequence: Sequence<any>;\n paths: string[][];\n};\nexport declare function getBranchView<StateType extends Record<string, unknown>>(sequence: Sequence<StateType>, paths: string[][], branch: string): {\n history: ThreadState<StateType>[];\n branchByCheckpoint: Record<string, {\n branch: string | undefined;\n branchOptions: string[] | undefined;\n }>;\n};\nexport declare function getBranchContext<StateType extends Record<string, unknown>>(branch: string, history: ThreadState<StateType>[] | undefined): {\n branchTree: Sequence<any>;\n flatHistory: ThreadState<any>[];\n branchByCheckpoint: Record<string, {\n branch: string | undefined;\n branchOptions: string[] | undefined;\n }>;\n threadHead: ThreadState<any> | undefined;\n};\nexport {};\n"],"mappings":";;;UACUC;;EAAAA,KAAAA,EAECD,WAFG,CAESE,SAFT,CAAA;EAAA,IAAA,EAAA,MAAA,EAAA;;UAKJC,IAHCH,CAAAA,YAAAA,GAAAA,CAAAA,CAAAA;EAAW,IAAA,EAAA,MAAA;EAGZG,KAAAA,EAECE,KAFG,CAEGD,QAFH,CAEYF,SAFZ,CAAA,CAAA;;AAEYA,UAETE,QAFSF,CAAAA,YAAAA,GAAAA,CAAAA,CAAAA;MAATE,EAAAA,UAAAA;OAANC,EAIAA,KAJAA,CAIMJ,IAJNI,CAIWH,SAJXG,CAAAA,GAIwBF,IAJxBE,CAI6BH,SAJ7BG,CAAAA,CAAAA"}