@langchain/vue 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs ADDED
@@ -0,0 +1,473 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
+ const require_stream_custom = require('./stream.custom.cjs');
3
+ let vue = require("vue");
4
+ let _langchain_langgraph_sdk_ui = require("@langchain/langgraph-sdk/ui");
5
+ let _langchain_langgraph_sdk_utils = require("@langchain/langgraph-sdk/utils");
6
+ let _langchain_langgraph_sdk = require("@langchain/langgraph-sdk");
7
+
8
+ //#region src/index.ts
9
+ function fetchHistory(client, threadId, options) {
10
+ if (options?.limit === false) return client.threads.getState(threadId).then((state) => {
11
+ if (state.checkpoint == null) return [];
12
+ return [state];
13
+ });
14
+ const limit = typeof options?.limit === "number" ? options.limit : 10;
15
+ return client.threads.getHistory(threadId, { limit });
16
+ }
17
+ function useStreamLGP(options) {
18
+ const runMetadataStorage = (() => {
19
+ if (typeof window === "undefined") return null;
20
+ const storage = options.reconnectOnMount;
21
+ if (storage === true) return window.sessionStorage;
22
+ if (typeof storage === "function") return storage();
23
+ return null;
24
+ })();
25
+ const getMessages = (value) => {
26
+ const messagesKey = options.messagesKey ?? "messages";
27
+ return Array.isArray(value[messagesKey]) ? value[messagesKey] : [];
28
+ };
29
+ const setMessages = (current, messages) => {
30
+ const messagesKey = options.messagesKey ?? "messages";
31
+ return {
32
+ ...current,
33
+ [messagesKey]: messages
34
+ };
35
+ };
36
+ const historyLimit = typeof options.fetchStateHistory === "object" && options.fetchStateHistory != null ? options.fetchStateHistory.limit ?? false : options.fetchStateHistory ?? false;
37
+ const threadId = (0, vue.ref)(void 0);
38
+ const client = options.client ?? new _langchain_langgraph_sdk.Client({ apiUrl: options.apiUrl });
39
+ const history = (0, vue.shallowRef)({
40
+ data: void 0,
41
+ error: void 0,
42
+ isLoading: false,
43
+ mutate: async () => void 0
44
+ });
45
+ async function mutate(mutateId) {
46
+ const tid = mutateId ?? threadId.value;
47
+ if (!tid) return void 0;
48
+ try {
49
+ const data = await fetchHistory(client, tid, { limit: historyLimit });
50
+ history.value = {
51
+ data,
52
+ error: void 0,
53
+ isLoading: false,
54
+ mutate
55
+ };
56
+ return data;
57
+ } catch (err) {
58
+ history.value = {
59
+ ...history.value,
60
+ error: err,
61
+ isLoading: false
62
+ };
63
+ options.onError?.(err, void 0);
64
+ return;
65
+ }
66
+ }
67
+ history.value = {
68
+ ...history.value,
69
+ mutate
70
+ };
71
+ const branch = (0, vue.ref)("");
72
+ const branchContext = (0, vue.computed)(() => (0, _langchain_langgraph_sdk_ui.getBranchContext)(branch.value, history.value.data ?? void 0));
73
+ const messageManager = new _langchain_langgraph_sdk_ui.MessageTupleManager();
74
+ const stream = new _langchain_langgraph_sdk_ui.StreamManager(messageManager, {
75
+ throttle: options.throttle ?? false,
76
+ subagentToolNames: options.subagentToolNames,
77
+ filterSubagentMessages: options.filterSubagentMessages,
78
+ toMessage: _langchain_langgraph_sdk_ui.toMessageClass
79
+ });
80
+ const pendingRuns = new _langchain_langgraph_sdk_ui.PendingRunsTracker();
81
+ const queueEntries = (0, vue.shallowRef)(pendingRuns.entries);
82
+ const queueSize = (0, vue.ref)(pendingRuns.size);
83
+ const historyValues = (0, vue.computed)(() => branchContext.value.threadHead?.values ?? options.initialValues ?? {});
84
+ const historyError = (0, vue.computed)(() => {
85
+ const error = branchContext.value.threadHead?.tasks?.at(-1)?.error;
86
+ if (error == null) return void 0;
87
+ try {
88
+ const parsed = JSON.parse(error);
89
+ if (_langchain_langgraph_sdk_ui.StreamError.isStructuredError(parsed)) return new _langchain_langgraph_sdk_ui.StreamError(parsed);
90
+ return parsed;
91
+ } catch {}
92
+ return error;
93
+ });
94
+ const streamValues = (0, vue.shallowRef)(stream.values);
95
+ const streamError = (0, vue.shallowRef)(stream.error);
96
+ const isLoading = (0, vue.shallowRef)(stream.isLoading);
97
+ const values = (0, vue.computed)(() => streamValues.value ?? historyValues.value);
98
+ const error = (0, vue.computed)(() => streamError.value ?? historyError.value ?? history.value.error);
99
+ const messageMetadata = (0, vue.computed)(() => (0, _langchain_langgraph_sdk_ui.getMessagesMetadataMap)({
100
+ initialValues: options.initialValues,
101
+ history: history.value.data,
102
+ getMessages,
103
+ branchContext: branchContext.value
104
+ }));
105
+ const unsubscribe = stream.subscribe(() => {
106
+ streamValues.value = stream.values;
107
+ streamError.value = stream.error;
108
+ isLoading.value = stream.isLoading;
109
+ });
110
+ const unsubQueue = pendingRuns.subscribe(() => {
111
+ queueEntries.value = pendingRuns.entries;
112
+ queueSize.value = pendingRuns.size;
113
+ });
114
+ (0, vue.onUnmounted)(() => {
115
+ unsubscribe();
116
+ unsubQueue();
117
+ });
118
+ (0, vue.watch)(() => {
119
+ const hvMessages = getMessages(historyValues.value);
120
+ return {
121
+ should: options.filterSubagentMessages && !isLoading.value && !history.value.isLoading && hvMessages.length > 0,
122
+ len: hvMessages.length
123
+ };
124
+ }, ({ should }) => {
125
+ if (should) {
126
+ const hvMessages = getMessages(historyValues.value);
127
+ stream.reconstructSubagents(hvMessages, { skipIfPopulated: true });
128
+ }
129
+ }, { immediate: true });
130
+ function stop() {
131
+ return stream.stop(historyValues.value, { onStop: (args) => {
132
+ if (runMetadataStorage && threadId.value) {
133
+ const runId = runMetadataStorage.getItem(`lg:stream:${threadId.value}`);
134
+ if (runId) client.runs.cancel(threadId.value, runId);
135
+ runMetadataStorage.removeItem(`lg:stream:${threadId.value}`);
136
+ }
137
+ options.onStop?.(args);
138
+ } });
139
+ }
140
+ function setBranch(value) {
141
+ branch.value = value;
142
+ }
143
+ async function joinStream(runId, lastEventId, joinOptions) {
144
+ lastEventId ??= "-1";
145
+ if (!threadId.value) return;
146
+ const callbackMeta = {
147
+ thread_id: threadId.value,
148
+ run_id: runId
149
+ };
150
+ await stream.start(async (signal) => {
151
+ const rawStream = client.runs.joinStream(threadId.value, runId, {
152
+ signal,
153
+ lastEventId,
154
+ streamMode: joinOptions?.streamMode
155
+ });
156
+ return joinOptions?.filter != null ? (0, _langchain_langgraph_sdk_ui.filterStream)(rawStream, joinOptions.filter) : rawStream;
157
+ }, {
158
+ getMessages,
159
+ setMessages,
160
+ initialValues: historyValues.value,
161
+ callbacks: options,
162
+ async onSuccess() {
163
+ runMetadataStorage?.removeItem(`lg:stream:${threadId.value}`);
164
+ const lastHead = (await mutate(threadId.value))?.at(0);
165
+ if (lastHead) options.onFinish?.(lastHead, callbackMeta);
166
+ },
167
+ onError(error) {
168
+ options.onError?.(error, callbackMeta);
169
+ }
170
+ });
171
+ }
172
+ function submitDirect(values, submitOptions) {
173
+ const currentBranchContext = branchContext.value;
174
+ const checkpointId = submitOptions?.checkpoint?.checkpoint_id;
175
+ branch.value = checkpointId != null ? currentBranchContext.branchByCheckpoint[checkpointId]?.branch ?? "" : "";
176
+ const includeImplicitBranch = historyLimit === true || typeof historyLimit === "number";
177
+ const shouldRefetch = options.onFinish != null || includeImplicitBranch;
178
+ let checkpoint = submitOptions?.checkpoint ?? (includeImplicitBranch ? currentBranchContext.threadHead?.checkpoint : void 0) ?? void 0;
179
+ if (submitOptions?.checkpoint === null) checkpoint = void 0;
180
+ if (checkpoint != null) delete checkpoint.thread_id;
181
+ let callbackMeta;
182
+ let rejoinKey;
183
+ let usableThreadId;
184
+ return stream.start(async (signal) => {
185
+ usableThreadId = threadId.value;
186
+ if (!usableThreadId) {
187
+ usableThreadId = (await client.threads.create({
188
+ threadId: submitOptions?.threadId,
189
+ metadata: submitOptions?.metadata
190
+ })).thread_id;
191
+ threadId.value = usableThreadId;
192
+ options.onThreadId?.(usableThreadId);
193
+ }
194
+ const streamMode = (0, _langchain_langgraph_sdk_ui.unique)([
195
+ ...submitOptions?.streamMode ?? [],
196
+ "values",
197
+ "messages-tuple"
198
+ ]);
199
+ if (options.onUpdateEvent && !streamMode.includes("updates")) streamMode.push("updates");
200
+ if (options.onCustomEvent && !streamMode.includes("custom")) streamMode.push("custom");
201
+ if (options.onCheckpointEvent && !streamMode.includes("checkpoints")) streamMode.push("checkpoints");
202
+ if (options.onTaskEvent && !streamMode.includes("tasks")) streamMode.push("tasks");
203
+ if ("onDebugEvent" in options && options.onDebugEvent && !streamMode.includes("debug")) streamMode.push("debug");
204
+ if ("onLangChainEvent" in options && options.onLangChainEvent && !streamMode.includes("events")) streamMode.push("events");
205
+ stream.setStreamValues(() => {
206
+ const prev = {
207
+ ...historyValues.value,
208
+ ...stream.values
209
+ };
210
+ if (submitOptions?.optimisticValues != null) return {
211
+ ...prev,
212
+ ...typeof submitOptions.optimisticValues === "function" ? submitOptions.optimisticValues(prev) : submitOptions.optimisticValues
213
+ };
214
+ return { ...prev };
215
+ });
216
+ const streamResumable = submitOptions?.streamResumable ?? !!runMetadataStorage;
217
+ return client.runs.stream(usableThreadId, options.assistantId, {
218
+ input: values,
219
+ config: submitOptions?.config,
220
+ context: submitOptions?.context,
221
+ command: submitOptions?.command,
222
+ interruptBefore: submitOptions?.interruptBefore,
223
+ interruptAfter: submitOptions?.interruptAfter,
224
+ metadata: submitOptions?.metadata,
225
+ multitaskStrategy: submitOptions?.multitaskStrategy,
226
+ onCompletion: submitOptions?.onCompletion,
227
+ onDisconnect: submitOptions?.onDisconnect ?? (streamResumable ? "continue" : "cancel"),
228
+ signal,
229
+ checkpoint,
230
+ streamMode,
231
+ streamSubgraphs: submitOptions?.streamSubgraphs,
232
+ streamResumable,
233
+ durability: submitOptions?.durability,
234
+ onRunCreated(params) {
235
+ callbackMeta = {
236
+ run_id: params.run_id,
237
+ thread_id: params.thread_id ?? usableThreadId
238
+ };
239
+ if (runMetadataStorage) {
240
+ rejoinKey = `lg:stream:${usableThreadId}`;
241
+ runMetadataStorage.setItem(rejoinKey, callbackMeta.run_id);
242
+ }
243
+ options.onCreated?.(callbackMeta);
244
+ }
245
+ });
246
+ }, {
247
+ getMessages,
248
+ setMessages,
249
+ initialValues: historyValues.value,
250
+ callbacks: options,
251
+ async onSuccess() {
252
+ if (rejoinKey) runMetadataStorage?.removeItem(rejoinKey);
253
+ if (shouldRefetch && usableThreadId) {
254
+ const lastHead = (await mutate(usableThreadId))?.at(0);
255
+ if (lastHead) {
256
+ options.onFinish?.(lastHead, callbackMeta);
257
+ return null;
258
+ }
259
+ }
260
+ },
261
+ onError: (error) => options.onError?.(error, callbackMeta),
262
+ onFinish: () => {}
263
+ });
264
+ }
265
+ const submitting = (0, vue.ref)(false);
266
+ (0, vue.watch)(() => ({
267
+ loading: isLoading.value,
268
+ submitting: submitting.value,
269
+ size: pendingRuns.size
270
+ }), ({ loading, submitting: s, size }) => {
271
+ if (!loading && !s && size > 0) {
272
+ const next = pendingRuns.shift();
273
+ if (next) {
274
+ submitting.value = true;
275
+ joinStream(next.id).finally(() => {
276
+ submitting.value = false;
277
+ });
278
+ }
279
+ }
280
+ });
281
+ async function submit(values, submitOptions) {
282
+ if (stream.isLoading || submitting.value) {
283
+ if (submitOptions?.multitaskStrategy === "interrupt" || submitOptions?.multitaskStrategy === "rollback") {
284
+ submitting.value = true;
285
+ try {
286
+ await submitDirect(values, submitOptions);
287
+ } finally {
288
+ submitting.value = false;
289
+ }
290
+ return;
291
+ }
292
+ const usableThreadId = threadId.value;
293
+ if (usableThreadId) {
294
+ const run = await client.runs.create(usableThreadId, options.assistantId, {
295
+ input: values,
296
+ config: submitOptions?.config,
297
+ context: submitOptions?.context,
298
+ command: submitOptions?.command,
299
+ interruptBefore: submitOptions?.interruptBefore,
300
+ interruptAfter: submitOptions?.interruptAfter,
301
+ metadata: submitOptions?.metadata,
302
+ multitaskStrategy: "enqueue",
303
+ streamResumable: true,
304
+ streamSubgraphs: submitOptions?.streamSubgraphs,
305
+ durability: submitOptions?.durability
306
+ });
307
+ pendingRuns.add({
308
+ id: run.run_id,
309
+ values,
310
+ options: submitOptions,
311
+ createdAt: new Date(run.created_at)
312
+ });
313
+ return;
314
+ }
315
+ }
316
+ submitting.value = true;
317
+ const result = submitDirect(values, submitOptions);
318
+ Promise.resolve(result).finally(() => {
319
+ submitting.value = false;
320
+ });
321
+ return result;
322
+ }
323
+ let shouldReconnect = !!runMetadataStorage;
324
+ (0, vue.onMounted)(() => {
325
+ if (shouldReconnect && runMetadataStorage && threadId.value) {
326
+ const runId = runMetadataStorage.getItem(`lg:stream:${threadId.value}`);
327
+ if (runId) {
328
+ shouldReconnect = false;
329
+ joinStream(runId);
330
+ }
331
+ }
332
+ });
333
+ (0, vue.watch)(() => threadId.value, () => {
334
+ shouldReconnect = !!runMetadataStorage;
335
+ });
336
+ const toolCalls = (0, vue.computed)(() => (0, _langchain_langgraph_sdk_utils.getToolCallsWithResults)(getMessages(values.value)));
337
+ function getToolCalls(message) {
338
+ return (0, _langchain_langgraph_sdk_utils.getToolCallsWithResults)(getMessages(values.value)).filter((tc) => tc.aiMessage.id === message.id);
339
+ }
340
+ const interrupts = (0, vue.computed)(() => {
341
+ const v = values.value;
342
+ if (v != null && "__interrupt__" in v && Array.isArray(v.__interrupt__)) {
343
+ const valueInterrupts = v.__interrupt__;
344
+ if (valueInterrupts.length === 0) return [{ when: "breakpoint" }];
345
+ return valueInterrupts;
346
+ }
347
+ if (isLoading.value) return [];
348
+ const allInterrupts = (branchContext.value.threadHead?.tasks ?? []).flatMap((t) => t.interrupts ?? []);
349
+ if (allInterrupts.length > 0) return allInterrupts;
350
+ if (!(branchContext.value.threadHead?.next ?? []).length || error.value != null) return [];
351
+ return [{ when: "breakpoint" }];
352
+ });
353
+ const flatHistory = (0, vue.computed)(() => {
354
+ if (historyLimit === false) throw new Error("`fetchStateHistory` must be set to `true` to use `history`");
355
+ return branchContext.value.flatHistory;
356
+ });
357
+ const isThreadLoading = (0, vue.computed)(() => history.value.isLoading && history.value.data == null);
358
+ const experimentalBranchTree = (0, vue.computed)(() => {
359
+ if (historyLimit === false) throw new Error("`fetchStateHistory` must be set to `true` to use `experimental_branchTree`");
360
+ return branchContext.value.branchTree;
361
+ });
362
+ return {
363
+ assistantId: options.assistantId,
364
+ client,
365
+ values,
366
+ error,
367
+ isLoading,
368
+ branch,
369
+ setBranch,
370
+ messages: (0, vue.computed)(() => getMessages(streamValues.value ?? historyValues.value)),
371
+ toolCalls,
372
+ getToolCalls,
373
+ interrupt: (0, vue.computed)(() => (0, _langchain_langgraph_sdk_ui.extractInterrupts)(streamValues.value, {
374
+ isLoading: isLoading.value,
375
+ threadState: branchContext.value.threadHead,
376
+ error: streamError.value
377
+ })),
378
+ interrupts,
379
+ history: flatHistory,
380
+ isThreadLoading,
381
+ experimental_branchTree: experimentalBranchTree,
382
+ getMessagesMetadata: (message, index) => {
383
+ const streamMetadata = messageManager.get(message.id)?.metadata;
384
+ const historyMetadata = messageMetadata.value?.find((m) => m.messageId === (message.id ?? index));
385
+ if (streamMetadata != null || historyMetadata != null) return {
386
+ ...historyMetadata,
387
+ streamMetadata
388
+ };
389
+ },
390
+ submit,
391
+ stop,
392
+ joinStream,
393
+ queue: {
394
+ entries: queueEntries,
395
+ size: queueSize,
396
+ async cancel(id) {
397
+ const tid = threadId.value;
398
+ const removed = pendingRuns.remove(id);
399
+ if (removed && tid) await client.runs.cancel(tid, id);
400
+ return removed;
401
+ },
402
+ async clear() {
403
+ const tid = threadId.value;
404
+ const removed = pendingRuns.removeAll();
405
+ if (tid && removed.length > 0) await Promise.all(removed.map((e) => client.runs.cancel(tid, e.id)));
406
+ }
407
+ },
408
+ switchThread(newThreadId) {
409
+ if (newThreadId !== (threadId.value ?? null)) {
410
+ const prevThreadId = threadId.value;
411
+ threadId.value = newThreadId ?? void 0;
412
+ stream.clear();
413
+ const removed = pendingRuns.removeAll();
414
+ if (prevThreadId && removed.length > 0) Promise.all(removed.map((e) => client.runs.cancel(prevThreadId, e.id)));
415
+ if (newThreadId != null) options.onThreadId?.(newThreadId);
416
+ }
417
+ },
418
+ get subagents() {
419
+ return stream.getSubagents();
420
+ },
421
+ get activeSubagents() {
422
+ return stream.getActiveSubagents();
423
+ },
424
+ getSubagent(toolCallId) {
425
+ return stream.getSubagent(toolCallId);
426
+ },
427
+ getSubagentsByType(type) {
428
+ return stream.getSubagentsByType(type);
429
+ },
430
+ getSubagentsByMessage(messageId) {
431
+ return stream.getSubagentsByMessage(messageId);
432
+ }
433
+ };
434
+ }
435
+ function useStream(options) {
436
+ if ("transport" in options) return require_stream_custom.useStreamCustom(options);
437
+ return useStreamLGP(options);
438
+ }
439
+
440
+ //#endregion
441
+ exports.FetchStreamTransport = _langchain_langgraph_sdk_ui.FetchStreamTransport;
442
+ Object.defineProperty(exports, 'SubagentManager', {
443
+ enumerable: true,
444
+ get: function () {
445
+ return _langchain_langgraph_sdk_ui.SubagentManager;
446
+ }
447
+ });
448
+ Object.defineProperty(exports, 'calculateDepthFromNamespace', {
449
+ enumerable: true,
450
+ get: function () {
451
+ return _langchain_langgraph_sdk_ui.calculateDepthFromNamespace;
452
+ }
453
+ });
454
+ Object.defineProperty(exports, 'extractParentIdFromNamespace', {
455
+ enumerable: true,
456
+ get: function () {
457
+ return _langchain_langgraph_sdk_ui.extractParentIdFromNamespace;
458
+ }
459
+ });
460
+ Object.defineProperty(exports, 'extractToolCallIdFromNamespace', {
461
+ enumerable: true,
462
+ get: function () {
463
+ return _langchain_langgraph_sdk_ui.extractToolCallIdFromNamespace;
464
+ }
465
+ });
466
+ Object.defineProperty(exports, 'isSubagentNamespace', {
467
+ enumerable: true,
468
+ get: function () {
469
+ return _langchain_langgraph_sdk_ui.isSubagentNamespace;
470
+ }
471
+ });
472
+ exports.useStream = useStream;
473
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","names":["Client","MessageTupleManager","StreamManager","toMessageClass","PendingRunsTracker","StreamError","useStreamCustom"],"sources":["../src/index.ts"],"sourcesContent":["import {\n computed,\n onMounted,\n onUnmounted,\n ref,\n shallowRef,\n watch,\n type ComputedRef,\n type Ref,\n} from \"vue\";\nimport type {\n BaseMessage,\n ToolMessage as CoreToolMessage,\n AIMessage as CoreAIMessage,\n} from \"@langchain/core/messages\";\nimport {\n StreamManager,\n MessageTupleManager,\n PendingRunsTracker,\n filterStream,\n unique,\n getBranchContext,\n getMessagesMetadataMap,\n StreamError,\n extractInterrupts,\n FetchStreamTransport,\n toMessageClass,\n type UseStreamThread,\n type GetConfigurableType,\n type GetCustomEventType,\n type GetInterruptType,\n type GetUpdateType,\n type MessageMetadata,\n type AnyStreamOptions,\n type SubmitOptions,\n type EventStreamEvent,\n type RunCallbackMeta,\n type ResolveStreamInterface,\n type ResolveStreamOptions,\n type InferBag,\n type InferStateType,\n type UseStreamCustomOptions,\n} from \"@langchain/langgraph-sdk/ui\";\nimport { getToolCallsWithResults } from \"@langchain/langgraph-sdk/utils\";\n\nimport {\n Client,\n type StreamMode,\n type StreamEvent,\n type Message,\n type Interrupt,\n type BagTemplate,\n type ThreadState,\n type ToolCallWithResult as _ToolCallWithResult,\n type DefaultToolCall,\n} from \"@langchain/langgraph-sdk\";\n\nimport { useStreamCustom } from \"./stream.custom.js\";\n\nexport { FetchStreamTransport };\n\nfunction fetchHistory<StateType extends Record<string, unknown>>(\n client: Client,\n threadId: string,\n options?: { limit?: boolean | number },\n) {\n if (options?.limit === false) {\n return client.threads.getState<StateType>(threadId).then((state) => {\n if (state.checkpoint == null) return [];\n return [state];\n });\n }\n\n const limit = typeof options?.limit === \"number\" ? options.limit : 10;\n return client.threads.getHistory<StateType>(threadId, { limit });\n}\n\nfunction useStreamLGP<\n StateType extends Record<string, unknown> = Record<string, unknown>,\n Bag extends {\n ConfigurableType?: Record<string, unknown>;\n InterruptType?: unknown;\n CustomEventType?: unknown;\n UpdateType?: unknown;\n } = BagTemplate,\n>(options: AnyStreamOptions<StateType, Bag>) {\n type UpdateType = GetUpdateType<Bag, StateType>;\n type CustomType = GetCustomEventType<Bag>;\n type InterruptType = GetInterruptType<Bag>;\n type ConfigurableType = GetConfigurableType<Bag>;\n\n const runMetadataStorage = (() => {\n if (typeof window === \"undefined\") return null;\n const storage = options.reconnectOnMount;\n if (storage === true) return window.sessionStorage;\n if (typeof storage === \"function\") return storage();\n return null;\n })();\n\n const getMessages = (value: StateType): Message[] => {\n const messagesKey = options.messagesKey ?? \"messages\";\n return Array.isArray(value[messagesKey]) ? value[messagesKey] : [];\n };\n\n const setMessages = (current: StateType, messages: Message[]): StateType => {\n const messagesKey = options.messagesKey ?? \"messages\";\n return { ...current, [messagesKey]: messages };\n };\n\n const historyLimit =\n typeof options.fetchStateHistory === \"object\" &&\n options.fetchStateHistory != null\n ? (options.fetchStateHistory.limit ?? false)\n : (options.fetchStateHistory ?? false);\n\n const threadId = ref<string | undefined>(undefined);\n\n const client = options.client ?? new Client({ apiUrl: options.apiUrl });\n\n const history = shallowRef<UseStreamThread<StateType>>({\n data: undefined,\n error: undefined,\n isLoading: false,\n mutate: async () => undefined,\n });\n\n async function mutate(\n mutateId?: string,\n ): Promise<ThreadState<StateType>[] | undefined> {\n const tid = mutateId ?? threadId.value;\n if (!tid) return undefined;\n try {\n const data = await fetchHistory<StateType>(client, tid, {\n limit: historyLimit,\n });\n history.value = {\n data,\n error: undefined,\n isLoading: false,\n mutate,\n };\n return data;\n } catch (err) {\n history.value = {\n ...history.value,\n error: err,\n isLoading: false,\n };\n options.onError?.(err, undefined);\n return undefined;\n }\n }\n\n history.value = { ...history.value, mutate };\n\n const branch = ref<string>(\"\");\n const branchContext = computed(() =>\n getBranchContext(branch.value, history.value.data ?? undefined),\n );\n\n const messageManager = new MessageTupleManager();\n const stream = new StreamManager<StateType, Bag>(messageManager, {\n throttle: options.throttle ?? false,\n subagentToolNames: options.subagentToolNames,\n filterSubagentMessages: options.filterSubagentMessages,\n toMessage: toMessageClass,\n });\n\n const pendingRuns = new PendingRunsTracker<\n StateType,\n SubmitOptions<StateType, ConfigurableType>\n >();\n const queueEntries = shallowRef(pendingRuns.entries);\n const queueSize = ref(pendingRuns.size);\n\n const historyValues = computed(\n () =>\n branchContext.value.threadHead?.values ??\n options.initialValues ??\n ({} as StateType),\n );\n\n const historyError = computed(() => {\n const error = branchContext.value.threadHead?.tasks?.at(-1)?.error;\n if (error == null) return undefined;\n try {\n const parsed = JSON.parse(error) as unknown;\n if (StreamError.isStructuredError(parsed)) return new StreamError(parsed);\n return parsed;\n } catch {\n // do nothing\n }\n return error;\n });\n\n const streamValues = shallowRef<StateType | null>(stream.values);\n const streamError = shallowRef<unknown>(stream.error);\n const isLoading = shallowRef(stream.isLoading);\n\n const values = computed(() => streamValues.value ?? historyValues.value);\n const error = computed(\n () => streamError.value ?? historyError.value ?? history.value.error,\n );\n\n const messageMetadata = computed(() =>\n getMessagesMetadataMap({\n initialValues: options.initialValues,\n history: history.value.data,\n getMessages,\n branchContext: branchContext.value,\n }),\n );\n\n const unsubscribe = stream.subscribe(() => {\n streamValues.value = stream.values;\n streamError.value = stream.error;\n isLoading.value = stream.isLoading;\n });\n\n const unsubQueue = pendingRuns.subscribe(() => {\n queueEntries.value = pendingRuns.entries;\n queueSize.value = pendingRuns.size;\n });\n\n onUnmounted(() => {\n unsubscribe();\n unsubQueue();\n });\n\n watch(\n () => {\n const hvMessages = getMessages(historyValues.value);\n return {\n should:\n options.filterSubagentMessages &&\n !isLoading.value &&\n !history.value.isLoading &&\n hvMessages.length > 0,\n len: hvMessages.length,\n };\n },\n ({ should }) => {\n if (should) {\n const hvMessages = getMessages(historyValues.value);\n stream.reconstructSubagents(hvMessages, { skipIfPopulated: true });\n }\n },\n { immediate: true },\n );\n\n function stop() {\n return stream.stop(historyValues.value, {\n onStop: (args) => {\n if (runMetadataStorage && threadId.value) {\n const runId = runMetadataStorage.getItem(\n `lg:stream:${threadId.value}`,\n );\n if (runId) void client.runs.cancel(threadId.value, runId);\n runMetadataStorage.removeItem(`lg:stream:${threadId.value}`);\n }\n\n options.onStop?.(args);\n },\n });\n }\n\n function setBranch(value: string) {\n branch.value = value;\n }\n\n async function joinStream(\n runId: string,\n lastEventId?: string,\n joinOptions?: {\n streamMode?: StreamMode | StreamMode[];\n filter?: (event: {\n id?: string;\n event: StreamEvent;\n data: unknown;\n }) => boolean;\n },\n ) {\n // eslint-disable-next-line no-param-reassign\n lastEventId ??= \"-1\";\n if (!threadId.value) return;\n\n const callbackMeta: RunCallbackMeta = {\n thread_id: threadId.value,\n run_id: runId,\n };\n\n await stream.start(\n async (signal: AbortSignal) => {\n const rawStream = client.runs.joinStream(threadId.value!, runId, {\n signal,\n lastEventId,\n streamMode: joinOptions?.streamMode,\n }) as AsyncGenerator<\n EventStreamEvent<StateType, UpdateType, CustomType>\n >;\n\n return joinOptions?.filter != null\n ? filterStream(rawStream, joinOptions.filter)\n : rawStream;\n },\n {\n getMessages,\n setMessages,\n\n initialValues: historyValues.value,\n callbacks: options,\n async onSuccess() {\n runMetadataStorage?.removeItem(`lg:stream:${threadId.value}`);\n const newHistory = await mutate(threadId.value);\n const lastHead = newHistory?.at(0);\n if (lastHead) options.onFinish?.(lastHead, callbackMeta);\n },\n onError(error) {\n options.onError?.(error, callbackMeta);\n },\n },\n );\n }\n\n function submitDirect(\n values: StateType,\n submitOptions?: SubmitOptions<StateType, ConfigurableType>,\n ) {\n const currentBranchContext = branchContext.value;\n\n const checkpointId = submitOptions?.checkpoint?.checkpoint_id;\n branch.value =\n checkpointId != null\n ? (currentBranchContext.branchByCheckpoint[checkpointId]?.branch ?? \"\")\n : \"\";\n\n const includeImplicitBranch =\n historyLimit === true || typeof historyLimit === \"number\";\n\n const shouldRefetch = options.onFinish != null || includeImplicitBranch;\n\n let checkpoint =\n submitOptions?.checkpoint ??\n (includeImplicitBranch\n ? currentBranchContext.threadHead?.checkpoint\n : undefined) ??\n undefined;\n\n if (submitOptions?.checkpoint === null) checkpoint = undefined;\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n if (checkpoint != null) delete checkpoint.thread_id;\n\n let callbackMeta: RunCallbackMeta | undefined;\n let rejoinKey: `lg:stream:${string}` | undefined;\n let usableThreadId: string | undefined;\n\n return stream.start(\n async (signal) => {\n usableThreadId = threadId.value;\n if (!usableThreadId) {\n const thread = await client.threads.create({\n threadId: submitOptions?.threadId,\n metadata: submitOptions?.metadata,\n });\n\n usableThreadId = thread.thread_id;\n threadId.value = usableThreadId;\n options.onThreadId?.(usableThreadId);\n }\n\n const streamMode = unique([\n ...(submitOptions?.streamMode ?? []),\n \"values\" as StreamMode,\n \"messages-tuple\" as StreamMode,\n ]);\n\n if (options.onUpdateEvent && !streamMode.includes(\"updates\"))\n streamMode.push(\"updates\");\n if (options.onCustomEvent && !streamMode.includes(\"custom\"))\n streamMode.push(\"custom\");\n if (options.onCheckpointEvent && !streamMode.includes(\"checkpoints\"))\n streamMode.push(\"checkpoints\");\n if (options.onTaskEvent && !streamMode.includes(\"tasks\"))\n streamMode.push(\"tasks\");\n if (\n \"onDebugEvent\" in options &&\n options.onDebugEvent &&\n !streamMode.includes(\"debug\")\n )\n streamMode.push(\"debug\");\n if (\n \"onLangChainEvent\" in options &&\n options.onLangChainEvent &&\n !streamMode.includes(\"events\")\n )\n streamMode.push(\"events\");\n\n stream.setStreamValues(() => {\n const prev = { ...historyValues.value, ...stream.values };\n\n if (submitOptions?.optimisticValues != null) {\n return {\n ...prev,\n ...(typeof submitOptions.optimisticValues === \"function\"\n ? submitOptions.optimisticValues(prev)\n : submitOptions.optimisticValues),\n };\n }\n\n return { ...prev };\n });\n\n const streamResumable =\n submitOptions?.streamResumable ?? !!runMetadataStorage;\n\n return client.runs.stream(usableThreadId!, options.assistantId, {\n input: values as Record<string, unknown>,\n config: submitOptions?.config,\n context: submitOptions?.context,\n command: submitOptions?.command,\n\n interruptBefore: submitOptions?.interruptBefore,\n interruptAfter: submitOptions?.interruptAfter,\n metadata: submitOptions?.metadata,\n multitaskStrategy: submitOptions?.multitaskStrategy,\n onCompletion: submitOptions?.onCompletion,\n onDisconnect:\n submitOptions?.onDisconnect ??\n (streamResumable ? \"continue\" : \"cancel\"),\n\n signal,\n\n checkpoint,\n streamMode,\n streamSubgraphs: submitOptions?.streamSubgraphs,\n streamResumable,\n durability: submitOptions?.durability,\n onRunCreated(params) {\n callbackMeta = {\n run_id: params.run_id,\n thread_id: params.thread_id ?? usableThreadId!,\n };\n\n if (runMetadataStorage) {\n rejoinKey = `lg:stream:${usableThreadId}`;\n runMetadataStorage.setItem(rejoinKey, callbackMeta.run_id);\n }\n\n options.onCreated?.(callbackMeta);\n },\n }) as AsyncGenerator<\n EventStreamEvent<StateType, UpdateType, CustomType>\n >;\n },\n {\n getMessages,\n setMessages,\n\n initialValues: historyValues.value,\n callbacks: options,\n\n async onSuccess() {\n if (rejoinKey) runMetadataStorage?.removeItem(rejoinKey);\n\n if (shouldRefetch && usableThreadId) {\n const newHistory = await mutate(usableThreadId);\n const lastHead = newHistory?.at(0);\n if (lastHead) {\n options.onFinish?.(lastHead, callbackMeta);\n return null;\n }\n }\n return undefined;\n },\n onError: (error) => options.onError?.(error, callbackMeta),\n onFinish: () => {},\n },\n );\n }\n\n const submitting = ref(false);\n\n watch(\n () => ({\n loading: isLoading.value,\n submitting: submitting.value,\n size: pendingRuns.size,\n }),\n ({ loading, submitting: s, size }) => {\n if (!loading && !s && size > 0) {\n const next = pendingRuns.shift();\n if (next) {\n submitting.value = true;\n void joinStream(next.id).finally(() => {\n submitting.value = false;\n });\n }\n }\n },\n );\n\n async function submit(\n values: StateType,\n submitOptions?: SubmitOptions<StateType, ConfigurableType>,\n ) {\n if (stream.isLoading || submitting.value) {\n const shouldAbort =\n submitOptions?.multitaskStrategy === \"interrupt\" ||\n submitOptions?.multitaskStrategy === \"rollback\";\n\n if (shouldAbort) {\n submitting.value = true;\n try {\n await submitDirect(values, submitOptions);\n } finally {\n submitting.value = false;\n }\n return;\n }\n\n const usableThreadId = threadId.value;\n if (usableThreadId) {\n const run = await client.runs.create(\n usableThreadId,\n options.assistantId,\n {\n input: values as Record<string, unknown>,\n config: submitOptions?.config,\n context: submitOptions?.context,\n command: submitOptions?.command,\n interruptBefore: submitOptions?.interruptBefore,\n interruptAfter: submitOptions?.interruptAfter,\n metadata: submitOptions?.metadata,\n multitaskStrategy: \"enqueue\",\n streamResumable: true,\n streamSubgraphs: submitOptions?.streamSubgraphs,\n durability: submitOptions?.durability,\n },\n );\n\n pendingRuns.add({\n id: run.run_id,\n values: values as Partial<StateType> | null | undefined,\n options: submitOptions,\n createdAt: new Date(run.created_at),\n });\n return;\n }\n }\n\n submitting.value = true;\n const result = submitDirect(values, submitOptions);\n void Promise.resolve(result).finally(() => {\n submitting.value = false;\n });\n return result;\n }\n\n // --- Auto-reconnect on mount ---\n let shouldReconnect = !!runMetadataStorage;\n\n onMounted(() => {\n if (shouldReconnect && runMetadataStorage && threadId.value) {\n const runId = runMetadataStorage.getItem(`lg:stream:${threadId.value}`);\n if (runId) {\n shouldReconnect = false;\n void joinStream(runId);\n }\n }\n });\n\n watch(\n () => threadId.value,\n () => {\n shouldReconnect = !!runMetadataStorage;\n },\n );\n\n const toolCalls = computed(() =>\n getToolCallsWithResults(getMessages(values.value)),\n );\n\n function getToolCalls(message: Message) {\n const allToolCalls = getToolCallsWithResults(getMessages(values.value));\n return allToolCalls.filter((tc) => tc.aiMessage.id === message.id);\n }\n\n const interrupts = computed((): Interrupt<InterruptType>[] => {\n const v = values.value;\n if (v != null && \"__interrupt__\" in v && Array.isArray(v.__interrupt__)) {\n const valueInterrupts = v.__interrupt__;\n if (valueInterrupts.length === 0) return [{ when: \"breakpoint\" }];\n return valueInterrupts;\n }\n\n if (isLoading.value) return [];\n\n const allTasks = branchContext.value.threadHead?.tasks ?? [];\n const allInterrupts = allTasks.flatMap((t) => t.interrupts ?? []);\n\n if (allInterrupts.length > 0) {\n return allInterrupts as Interrupt<InterruptType>[];\n }\n\n const next = branchContext.value.threadHead?.next ?? [];\n if (!next.length || error.value != null) return [];\n return [{ when: \"breakpoint\" }];\n });\n\n const flatHistory = computed(() => {\n if (historyLimit === false) {\n throw new Error(\n \"`fetchStateHistory` must be set to `true` to use `history`\",\n );\n }\n return branchContext.value.flatHistory;\n });\n\n const isThreadLoading = computed(\n () => history.value.isLoading && history.value.data == null,\n );\n\n const experimentalBranchTree = computed(() => {\n if (historyLimit === false) {\n throw new Error(\n \"`fetchStateHistory` must be set to `true` to use `experimental_branchTree`\",\n );\n }\n return branchContext.value.branchTree;\n });\n\n return {\n assistantId: options.assistantId,\n client,\n\n values,\n error,\n isLoading,\n\n branch,\n setBranch,\n\n messages: computed(() =>\n getMessages(streamValues.value ?? historyValues.value),\n ),\n\n toolCalls,\n getToolCalls,\n\n interrupt: computed(() =>\n extractInterrupts<InterruptType>(streamValues.value, {\n isLoading: isLoading.value,\n threadState: branchContext.value.threadHead,\n error: streamError.value,\n }),\n ),\n\n interrupts,\n history: flatHistory,\n isThreadLoading,\n experimental_branchTree: experimentalBranchTree,\n\n getMessagesMetadata: (\n message: Message,\n index?: number,\n ): MessageMetadata<StateType> | undefined => {\n const streamMetadata = messageManager.get(message.id)?.metadata;\n const historyMetadata = messageMetadata.value?.find(\n (m) => m.messageId === (message.id ?? index),\n );\n\n if (streamMetadata != null || historyMetadata != null) {\n return {\n ...historyMetadata,\n streamMetadata,\n } as MessageMetadata<StateType>;\n }\n\n return undefined;\n },\n\n submit,\n stop,\n joinStream,\n\n queue: {\n entries: queueEntries,\n size: queueSize,\n async cancel(id: string) {\n const tid = threadId.value;\n const removed = pendingRuns.remove(id);\n if (removed && tid) {\n await client.runs.cancel(tid, id);\n }\n return removed;\n },\n async clear() {\n const tid = threadId.value;\n const removed = pendingRuns.removeAll();\n if (tid && removed.length > 0) {\n await Promise.all(\n removed.map((e) => client.runs.cancel(tid, e.id)),\n );\n }\n },\n },\n\n switchThread(newThreadId: string | null) {\n const current = threadId.value ?? null;\n if (newThreadId !== current) {\n const prevThreadId = threadId.value;\n threadId.value = newThreadId ?? undefined;\n stream.clear();\n\n const removed = pendingRuns.removeAll();\n if (prevThreadId && removed.length > 0) {\n void Promise.all(\n removed.map((e) => client.runs.cancel(prevThreadId, e.id)),\n );\n }\n\n if (newThreadId != null) {\n options.onThreadId?.(newThreadId);\n }\n }\n },\n\n get subagents() {\n return stream.getSubagents();\n },\n get activeSubagents() {\n return stream.getActiveSubagents();\n },\n getSubagent(toolCallId: string) {\n return stream.getSubagent(toolCallId);\n },\n getSubagentsByType(type: string) {\n return stream.getSubagentsByType(type);\n },\n getSubagentsByMessage(messageId: string) {\n return stream.getSubagentsByMessage(messageId);\n },\n };\n}\n\ntype ClassToolCallWithResult<T> =\n T extends _ToolCallWithResult<infer TC, unknown, unknown>\n ? _ToolCallWithResult<TC, CoreToolMessage, CoreAIMessage>\n : T;\n\n/**\n * Maps a stream interface to Vue-reactive types:\n * - `messages` becomes `ComputedRef<BaseMessage[]>`\n * - `getMessagesMetadata` accepts `BaseMessage`\n * - `toolCalls` uses `@langchain/core` message classes, wrapped in `Ref`\n * - `getToolCalls` accepts `CoreAIMessage`, returns class-based tool call results\n * - Functions remain unchanged\n * - All other properties are wrapped in `Ref<T>` to match Vue's reactivity\n */\ntype WithClassMessages<T> = {\n [K in keyof T]: K extends \"messages\"\n ? ComputedRef<BaseMessage[]>\n : K extends \"getMessagesMetadata\"\n ? (\n message: BaseMessage,\n index?: number,\n ) => MessageMetadata<Record<string, unknown>> | undefined\n : K extends \"toolCalls\"\n ? T[K] extends (infer TC)[]\n ? Ref<ClassToolCallWithResult<TC>[]>\n : Ref<T[K]>\n : K extends \"getToolCalls\"\n ? T[K] extends (message: infer _M) => (infer TC)[]\n ? (message: CoreAIMessage) => ClassToolCallWithResult<TC>[]\n : T[K]\n : T[K] extends (...args: infer A) => infer R\n ? (...args: A) => R\n : Ref<T[K]>;\n};\n\nexport function useStream<\n T = Record<string, unknown>,\n Bag extends BagTemplate = BagTemplate,\n>(\n options: ResolveStreamOptions<T, InferBag<T, Bag>>,\n): WithClassMessages<ResolveStreamInterface<T, InferBag<T, Bag>>>;\n\nexport function useStream<\n T = Record<string, unknown>,\n Bag extends BagTemplate = BagTemplate,\n>(\n options: UseStreamCustomOptions<InferStateType<T>, InferBag<T, Bag>>,\n): WithClassMessages<ResolveStreamInterface<T, InferBag<T, Bag>>>;\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function useStream(options: any): any {\n if (\"transport\" in options) {\n return useStreamCustom(options);\n }\n return useStreamLGP(options);\n}\n\nexport type {\n BaseStream,\n UseAgentStream,\n UseAgentStreamOptions,\n UseDeepAgentStream,\n UseDeepAgentStreamOptions,\n ResolveStreamInterface,\n ResolveStreamOptions,\n InferStateType,\n InferToolCalls,\n InferSubagentStates,\n InferNodeNames,\n InferBag,\n MessageMetadata,\n UseStreamOptions,\n UseStreamCustomOptions,\n UseStreamTransport,\n UseStreamThread,\n GetToolCallsType,\n AgentTypeConfigLike,\n IsAgentLike,\n ExtractAgentConfig,\n InferAgentToolCalls,\n SubagentToolCall,\n SubagentStatus,\n SubAgentLike,\n CompiledSubAgentLike,\n DeepAgentTypeConfigLike,\n IsDeepAgentLike,\n ExtractDeepAgentConfig,\n ExtractSubAgentMiddleware,\n InferDeepAgentSubagents,\n InferSubagentByName,\n InferSubagentState,\n InferSubagentNames,\n SubagentStateMap,\n DefaultSubagentStates,\n BaseSubagentState,\n QueueEntry,\n QueueInterface,\n} from \"@langchain/langgraph-sdk/ui\";\n\nexport type ToolCallWithResult<ToolCall = DefaultToolCall> =\n _ToolCallWithResult<ToolCall, CoreToolMessage, CoreAIMessage>;\nexport type {\n ToolCallState,\n DefaultToolCall,\n ToolCallFromTool,\n ToolCallsFromTools,\n} from \"@langchain/langgraph-sdk\";\n\nexport {\n SubagentManager,\n extractToolCallIdFromNamespace,\n calculateDepthFromNamespace,\n extractParentIdFromNamespace,\n isSubagentNamespace,\n} from \"@langchain/langgraph-sdk/ui\";\n"],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import { ComputedRef, Ref } from "vue";
2
+ import { AIMessage, BaseMessage, ToolMessage } from "@langchain/core/messages";
3
+ import { AgentTypeConfigLike, BaseStream, BaseSubagentState, CompiledSubAgentLike, DeepAgentTypeConfigLike, DefaultSubagentStates, ExtractAgentConfig, ExtractDeepAgentConfig, ExtractSubAgentMiddleware, FetchStreamTransport, GetToolCallsType, InferAgentToolCalls, InferBag, InferBag as InferBag$1, InferDeepAgentSubagents, InferNodeNames, InferStateType, InferStateType as InferStateType$1, InferSubagentByName, InferSubagentNames, InferSubagentState, InferSubagentStates, InferToolCalls, IsAgentLike, IsDeepAgentLike, MessageMetadata, MessageMetadata as MessageMetadata$1, QueueEntry, QueueInterface, ResolveStreamInterface, ResolveStreamInterface as ResolveStreamInterface$1, ResolveStreamOptions, ResolveStreamOptions as ResolveStreamOptions$1, SubAgentLike, SubagentManager, SubagentStateMap, SubagentStatus, SubagentToolCall, UseAgentStream, UseAgentStreamOptions, UseDeepAgentStream, UseDeepAgentStreamOptions, UseStreamCustomOptions, UseStreamCustomOptions as UseStreamCustomOptions$1, UseStreamOptions, UseStreamThread, UseStreamTransport, calculateDepthFromNamespace, extractParentIdFromNamespace, extractToolCallIdFromNamespace, isSubagentNamespace } from "@langchain/langgraph-sdk/ui";
4
+ import { BagTemplate, DefaultToolCall, DefaultToolCall as DefaultToolCall$1, ToolCallFromTool, ToolCallState, ToolCallWithResult as ToolCallWithResult$1, ToolCallsFromTools } from "@langchain/langgraph-sdk";
5
+
6
+ //#region src/index.d.ts
7
+ type ClassToolCallWithResult<T> = T extends ToolCallWithResult$1<infer TC, unknown, unknown> ? ToolCallWithResult$1<TC, ToolMessage, AIMessage> : T;
8
+ /**
9
+ * Maps a stream interface to Vue-reactive types:
10
+ * - `messages` becomes `ComputedRef<BaseMessage[]>`
11
+ * - `getMessagesMetadata` accepts `BaseMessage`
12
+ * - `toolCalls` uses `@langchain/core` message classes, wrapped in `Ref`
13
+ * - `getToolCalls` accepts `CoreAIMessage`, returns class-based tool call results
14
+ * - Functions remain unchanged
15
+ * - All other properties are wrapped in `Ref<T>` to match Vue's reactivity
16
+ */
17
+ type WithClassMessages<T> = { [K in keyof T]: K extends "messages" ? ComputedRef<BaseMessage[]> : K extends "getMessagesMetadata" ? (message: BaseMessage, index?: number) => MessageMetadata$1<Record<string, unknown>> | undefined : K extends "toolCalls" ? T[K] extends (infer TC)[] ? Ref<ClassToolCallWithResult<TC>[]> : Ref<T[K]> : K extends "getToolCalls" ? T[K] extends ((message: infer _M) => (infer TC)[]) ? (message: AIMessage) => ClassToolCallWithResult<TC>[] : T[K] : T[K] extends ((...args: infer A) => infer R) ? (...args: A) => R : Ref<T[K]> };
18
+ declare function useStream<T = Record<string, unknown>, Bag extends BagTemplate = BagTemplate>(options: ResolveStreamOptions$1<T, InferBag$1<T, Bag>>): WithClassMessages<ResolveStreamInterface$1<T, InferBag$1<T, Bag>>>;
19
+ declare function useStream<T = Record<string, unknown>, Bag extends BagTemplate = BagTemplate>(options: UseStreamCustomOptions$1<InferStateType$1<T>, InferBag$1<T, Bag>>): WithClassMessages<ResolveStreamInterface$1<T, InferBag$1<T, Bag>>>;
20
+ type ToolCallWithResult<ToolCall = DefaultToolCall$1> = ToolCallWithResult$1<ToolCall, ToolMessage, AIMessage>;
21
+ //#endregion
22
+ export { type AgentTypeConfigLike, type BaseStream, type BaseSubagentState, type CompiledSubAgentLike, type DeepAgentTypeConfigLike, type DefaultSubagentStates, type DefaultToolCall, type ExtractAgentConfig, type ExtractDeepAgentConfig, type ExtractSubAgentMiddleware, FetchStreamTransport, type GetToolCallsType, type InferAgentToolCalls, type InferBag, type InferDeepAgentSubagents, type InferNodeNames, type InferStateType, type InferSubagentByName, type InferSubagentNames, type InferSubagentState, type InferSubagentStates, type InferToolCalls, type IsAgentLike, type IsDeepAgentLike, type MessageMetadata, type QueueEntry, type QueueInterface, type ResolveStreamInterface, type ResolveStreamOptions, type SubAgentLike, SubagentManager, type SubagentStateMap, type SubagentStatus, type SubagentToolCall, type ToolCallFromTool, type ToolCallState, ToolCallWithResult, type ToolCallsFromTools, type UseAgentStream, type UseAgentStreamOptions, type UseDeepAgentStream, type UseDeepAgentStreamOptions, type UseStreamCustomOptions, type UseStreamOptions, type UseStreamThread, type UseStreamTransport, calculateDepthFromNamespace, extractParentIdFromNamespace, extractToolCallIdFromNamespace, isSubagentNamespace, useStream };
23
+ //# sourceMappingURL=index.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../src/index.ts"],"mappings":";;;;;;KA0uBK,uBAAA,MACH,CAAA,SAAU,oBAAA,+BACN,oBAAA,CAAoB,EAAA,EAAI,WAAA,EAAiB,SAAA,IACzC,CAAA;AAlrB0B;;;;;;;;;AAAA,KA6rB3B,iBAAA,oBACS,CAAA,GAAI,CAAA,sBACZ,WAAA,CAAY,WAAA,MACZ,CAAA,kCAEI,OAAA,EAAS,WAAA,EACT,KAAA,cACG,iBAAA,CAAgB,MAAA,iCACrB,CAAA,uBACE,CAAA,CAAE,CAAA,yBACA,GAAA,CAAI,uBAAA,CAAwB,EAAA,OAC5B,GAAA,CAAI,CAAA,CAAE,CAAA,KACR,CAAA,0BACE,CAAA,CAAE,CAAA,YAAY,OAAA,gCACX,OAAA,EAAS,SAAA,KAAkB,uBAAA,CAAwB,EAAA,MACpD,CAAA,CAAE,CAAA,IACJ,CAAA,CAAE,CAAA,eAAe,IAAA,6BACT,IAAA,EAAM,CAAA,KAAM,CAAA,GAChB,GAAA,CAAI,CAAA,CAAE,CAAA;AAAA,iBAGN,SAAA,KACV,MAAA,+BACQ,WAAA,GAAc,WAAA,CAAA,CAE1B,OAAA,EAAS,sBAAA,CAAqB,CAAA,EAAG,UAAA,CAAS,CAAA,EAAG,GAAA,KAC5C,iBAAA,CAAkB,wBAAA,CAAuB,CAAA,EAAG,UAAA,CAAS,CAAA,EAAG,GAAA;AAAA,iBAE3C,SAAA,KACV,MAAA,+BACQ,WAAA,GAAc,WAAA,CAAA,CAE1B,OAAA,EAAS,wBAAA,CAAuB,gBAAA,CAAe,CAAA,GAAI,UAAA,CAAS,CAAA,EAAG,GAAA,KAC9D,iBAAA,CAAkB,wBAAA,CAAuB,CAAA,EAAG,UAAA,CAAS,CAAA,EAAG,GAAA;AAAA,KAoD/C,kBAAA,YAA8B,iBAAA,IACxC,oBAAA,CAAoB,QAAA,EAAU,WAAA,EAAiB,SAAA"}
@@ -0,0 +1,23 @@
1
+ import { ComputedRef, Ref } from "vue";
2
+ import { AgentTypeConfigLike, BaseStream, BaseSubagentState, CompiledSubAgentLike, DeepAgentTypeConfigLike, DefaultSubagentStates, ExtractAgentConfig, ExtractDeepAgentConfig, ExtractSubAgentMiddleware, FetchStreamTransport, GetToolCallsType, InferAgentToolCalls, InferBag, InferBag as InferBag$1, InferDeepAgentSubagents, InferNodeNames, InferStateType, InferStateType as InferStateType$1, InferSubagentByName, InferSubagentNames, InferSubagentState, InferSubagentStates, InferToolCalls, IsAgentLike, IsDeepAgentLike, MessageMetadata, MessageMetadata as MessageMetadata$1, QueueEntry, QueueInterface, ResolveStreamInterface, ResolveStreamInterface as ResolveStreamInterface$1, ResolveStreamOptions, ResolveStreamOptions as ResolveStreamOptions$1, SubAgentLike, SubagentManager, SubagentStateMap, SubagentStatus, SubagentToolCall, UseAgentStream, UseAgentStreamOptions, UseDeepAgentStream, UseDeepAgentStreamOptions, UseStreamCustomOptions, UseStreamCustomOptions as UseStreamCustomOptions$1, UseStreamOptions, UseStreamThread, UseStreamTransport, calculateDepthFromNamespace, extractParentIdFromNamespace, extractToolCallIdFromNamespace, isSubagentNamespace } from "@langchain/langgraph-sdk/ui";
3
+ import { BagTemplate, DefaultToolCall, DefaultToolCall as DefaultToolCall$1, ToolCallFromTool, ToolCallState, ToolCallWithResult as ToolCallWithResult$1, ToolCallsFromTools } from "@langchain/langgraph-sdk";
4
+ import { AIMessage, BaseMessage, ToolMessage } from "@langchain/core/messages";
5
+
6
+ //#region src/index.d.ts
7
+ type ClassToolCallWithResult<T> = T extends ToolCallWithResult$1<infer TC, unknown, unknown> ? ToolCallWithResult$1<TC, ToolMessage, AIMessage> : T;
8
+ /**
9
+ * Maps a stream interface to Vue-reactive types:
10
+ * - `messages` becomes `ComputedRef<BaseMessage[]>`
11
+ * - `getMessagesMetadata` accepts `BaseMessage`
12
+ * - `toolCalls` uses `@langchain/core` message classes, wrapped in `Ref`
13
+ * - `getToolCalls` accepts `CoreAIMessage`, returns class-based tool call results
14
+ * - Functions remain unchanged
15
+ * - All other properties are wrapped in `Ref<T>` to match Vue's reactivity
16
+ */
17
+ type WithClassMessages<T> = { [K in keyof T]: K extends "messages" ? ComputedRef<BaseMessage[]> : K extends "getMessagesMetadata" ? (message: BaseMessage, index?: number) => MessageMetadata$1<Record<string, unknown>> | undefined : K extends "toolCalls" ? T[K] extends (infer TC)[] ? Ref<ClassToolCallWithResult<TC>[]> : Ref<T[K]> : K extends "getToolCalls" ? T[K] extends ((message: infer _M) => (infer TC)[]) ? (message: AIMessage) => ClassToolCallWithResult<TC>[] : T[K] : T[K] extends ((...args: infer A) => infer R) ? (...args: A) => R : Ref<T[K]> };
18
+ declare function useStream<T = Record<string, unknown>, Bag extends BagTemplate = BagTemplate>(options: ResolveStreamOptions$1<T, InferBag$1<T, Bag>>): WithClassMessages<ResolveStreamInterface$1<T, InferBag$1<T, Bag>>>;
19
+ declare function useStream<T = Record<string, unknown>, Bag extends BagTemplate = BagTemplate>(options: UseStreamCustomOptions$1<InferStateType$1<T>, InferBag$1<T, Bag>>): WithClassMessages<ResolveStreamInterface$1<T, InferBag$1<T, Bag>>>;
20
+ type ToolCallWithResult<ToolCall = DefaultToolCall$1> = ToolCallWithResult$1<ToolCall, ToolMessage, AIMessage>;
21
+ //#endregion
22
+ export { type AgentTypeConfigLike, type BaseStream, type BaseSubagentState, type CompiledSubAgentLike, type DeepAgentTypeConfigLike, type DefaultSubagentStates, type DefaultToolCall, type ExtractAgentConfig, type ExtractDeepAgentConfig, type ExtractSubAgentMiddleware, FetchStreamTransport, type GetToolCallsType, type InferAgentToolCalls, type InferBag, type InferDeepAgentSubagents, type InferNodeNames, type InferStateType, type InferSubagentByName, type InferSubagentNames, type InferSubagentState, type InferSubagentStates, type InferToolCalls, type IsAgentLike, type IsDeepAgentLike, type MessageMetadata, type QueueEntry, type QueueInterface, type ResolveStreamInterface, type ResolveStreamOptions, type SubAgentLike, SubagentManager, type SubagentStateMap, type SubagentStatus, type SubagentToolCall, type ToolCallFromTool, type ToolCallState, ToolCallWithResult, type ToolCallsFromTools, type UseAgentStream, type UseAgentStreamOptions, type UseDeepAgentStream, type UseDeepAgentStreamOptions, type UseStreamCustomOptions, type UseStreamOptions, type UseStreamThread, type UseStreamTransport, calculateDepthFromNamespace, extractParentIdFromNamespace, extractToolCallIdFromNamespace, isSubagentNamespace, useStream };
23
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../src/index.ts"],"mappings":";;;;;;KA0uBK,uBAAA,MACH,CAAA,SAAU,oBAAA,+BACN,oBAAA,CAAoB,EAAA,EAAI,WAAA,EAAiB,SAAA,IACzC,CAAA;AAlrB0B;;;;;;;;;AAAA,KA6rB3B,iBAAA,oBACS,CAAA,GAAI,CAAA,sBACZ,WAAA,CAAY,WAAA,MACZ,CAAA,kCAEI,OAAA,EAAS,WAAA,EACT,KAAA,cACG,iBAAA,CAAgB,MAAA,iCACrB,CAAA,uBACE,CAAA,CAAE,CAAA,yBACA,GAAA,CAAI,uBAAA,CAAwB,EAAA,OAC5B,GAAA,CAAI,CAAA,CAAE,CAAA,KACR,CAAA,0BACE,CAAA,CAAE,CAAA,YAAY,OAAA,gCACX,OAAA,EAAS,SAAA,KAAkB,uBAAA,CAAwB,EAAA,MACpD,CAAA,CAAE,CAAA,IACJ,CAAA,CAAE,CAAA,eAAe,IAAA,6BACT,IAAA,EAAM,CAAA,KAAM,CAAA,GAChB,GAAA,CAAI,CAAA,CAAE,CAAA;AAAA,iBAGN,SAAA,KACV,MAAA,+BACQ,WAAA,GAAc,WAAA,CAAA,CAE1B,OAAA,EAAS,sBAAA,CAAqB,CAAA,EAAG,UAAA,CAAS,CAAA,EAAG,GAAA,KAC5C,iBAAA,CAAkB,wBAAA,CAAuB,CAAA,EAAG,UAAA,CAAS,CAAA,EAAG,GAAA;AAAA,iBAE3C,SAAA,KACV,MAAA,+BACQ,WAAA,GAAc,WAAA,CAAA,CAE1B,OAAA,EAAS,wBAAA,CAAuB,gBAAA,CAAe,CAAA,GAAI,UAAA,CAAS,CAAA,EAAG,GAAA,KAC9D,iBAAA,CAAkB,wBAAA,CAAuB,CAAA,EAAG,UAAA,CAAS,CAAA,EAAG,GAAA;AAAA,KAoD/C,kBAAA,YAA8B,iBAAA,IACxC,oBAAA,CAAoB,QAAA,EAAU,WAAA,EAAiB,SAAA"}