@langchain/svelte 0.0.1 → 0.1.2
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/README.md +56 -6
- package/dist/index.cjs +73 -60
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +26 -12
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.ts +26 -12
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +47 -34
- package/dist/index.js.map +1 -1
- package/dist/stream.custom.cjs +26 -10
- package/dist/stream.custom.cjs.map +1 -1
- package/dist/stream.custom.js +27 -11
- package/dist/stream.custom.js.map +1 -1
- package/package.json +24 -19
package/README.md
CHANGED
|
@@ -84,10 +84,10 @@ Provide your state type as a generic parameter:
|
|
|
84
84
|
```svelte
|
|
85
85
|
<script lang="ts">
|
|
86
86
|
import { useStream } from "@langchain/svelte";
|
|
87
|
-
import type {
|
|
87
|
+
import type { BaseMessage } from "langchain";
|
|
88
88
|
|
|
89
89
|
interface MyState {
|
|
90
|
-
messages:
|
|
90
|
+
messages: BaseMessage[];
|
|
91
91
|
context?: string;
|
|
92
92
|
}
|
|
93
93
|
|
|
@@ -103,10 +103,10 @@ Provide your state type as a generic parameter:
|
|
|
103
103
|
```svelte
|
|
104
104
|
<script lang="ts">
|
|
105
105
|
import { useStream } from "@langchain/svelte";
|
|
106
|
-
import type {
|
|
106
|
+
import type { BaseMessage } from "langchain";
|
|
107
107
|
|
|
108
108
|
const { interrupt, submit } = useStream<
|
|
109
|
-
{ messages:
|
|
109
|
+
{ messages: BaseMessage[] },
|
|
110
110
|
{ InterruptType: { question: string } }
|
|
111
111
|
>({
|
|
112
112
|
assistantId: "my-graph",
|
|
@@ -120,10 +120,10 @@ Provide your state type as a generic parameter:
|
|
|
120
120
|
```svelte
|
|
121
121
|
<script lang="ts">
|
|
122
122
|
import { useStream } from "@langchain/svelte";
|
|
123
|
-
import type {
|
|
123
|
+
import type { BaseMessage } from "langchain";
|
|
124
124
|
|
|
125
125
|
const { messages, interrupt, submit } = useStream<
|
|
126
|
-
{ messages:
|
|
126
|
+
{ messages: BaseMessage[] },
|
|
127
127
|
{ InterruptType: { question: string } }
|
|
128
128
|
>({
|
|
129
129
|
assistantId: "agent",
|
|
@@ -249,6 +249,56 @@ When `submit()` is called while a stream is already active, the SDK automaticall
|
|
|
249
249
|
|
|
250
250
|
Switching threads via `switchThread()` cancels all pending runs and clears the queue.
|
|
251
251
|
|
|
252
|
+
## Custom Transport
|
|
253
|
+
|
|
254
|
+
Instead of connecting to a LangGraph API, you can provide your own streaming transport. Pass a `transport` object instead of `assistantId` to use a custom backend:
|
|
255
|
+
|
|
256
|
+
```svelte
|
|
257
|
+
<script lang="ts">
|
|
258
|
+
import { useStream, FetchStreamTransport } from "@langchain/svelte";
|
|
259
|
+
import type { BaseMessage } from "langchain";
|
|
260
|
+
|
|
261
|
+
const {
|
|
262
|
+
messages,
|
|
263
|
+
submit,
|
|
264
|
+
isLoading,
|
|
265
|
+
branch,
|
|
266
|
+
setBranch,
|
|
267
|
+
getMessagesMetadata,
|
|
268
|
+
} = useStream<{ messages: BaseMessage[] }>({
|
|
269
|
+
transport: new FetchStreamTransport({
|
|
270
|
+
url: "https://my-api.example.com/stream",
|
|
271
|
+
}),
|
|
272
|
+
threadId: null,
|
|
273
|
+
onThreadId: (id) => console.log("Thread created:", id),
|
|
274
|
+
});
|
|
275
|
+
</script>
|
|
276
|
+
|
|
277
|
+
<div>
|
|
278
|
+
{#each $messages as msg, i (msg.id ?? i)}
|
|
279
|
+
{@const metadata = getMessagesMetadata(msg, i)}
|
|
280
|
+
<div>
|
|
281
|
+
<p>{msg.content}</p>
|
|
282
|
+
{#if metadata?.streamMetadata}
|
|
283
|
+
<span>Node: {metadata.streamMetadata.langgraph_node}</span>
|
|
284
|
+
{/if}
|
|
285
|
+
</div>
|
|
286
|
+
{/each}
|
|
287
|
+
|
|
288
|
+
<p>Current branch: {$branch}</p>
|
|
289
|
+
|
|
290
|
+
<button
|
|
291
|
+
disabled={$isLoading}
|
|
292
|
+
onclick={() =>
|
|
293
|
+
void submit({ messages: [{ type: "human", content: "Hello!" }] })}
|
|
294
|
+
>
|
|
295
|
+
Send
|
|
296
|
+
</button>
|
|
297
|
+
</div>
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
The custom transport interface returns the same properties as the standard `useStream` function, including `getMessagesMetadata`, `branch`, `setBranch`, `switchThread`, and all message/interrupt/subagent helpers. When using a custom transport, `getMessagesMetadata` returns stream metadata sent alongside messages during streaming; `branch` and `setBranch` provide local branch state management.
|
|
301
|
+
|
|
252
302
|
## Playground
|
|
253
303
|
|
|
254
304
|
For complete end-to-end examples with full agentic UIs, visit the [LangGraph Playground](https://github.com/langchain-ai/langgraphjs).
|
package/dist/index.cjs
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value:
|
|
2
|
-
const require_stream_custom = require(
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_stream_custom = require("./stream.custom.cjs");
|
|
3
3
|
let svelte_store = require("svelte/store");
|
|
4
4
|
let svelte = require("svelte");
|
|
5
5
|
let _langchain_langgraph_sdk_ui = require("@langchain/langgraph-sdk/ui");
|
|
6
6
|
let _langchain_langgraph_sdk = require("@langchain/langgraph-sdk");
|
|
7
7
|
let _langchain_langgraph_sdk_utils = require("@langchain/langgraph-sdk/utils");
|
|
8
|
-
|
|
9
8
|
//#region src/index.ts
|
|
10
9
|
function fetchHistory(client, threadId, options) {
|
|
11
10
|
if (options?.limit === false) return client.threads.getState(threadId).then((state) => {
|
|
@@ -40,6 +39,7 @@ function useStreamLGP(options) {
|
|
|
40
39
|
};
|
|
41
40
|
const historyLimit = typeof options.fetchStateHistory === "object" && options.fetchStateHistory != null ? options.fetchStateHistory.limit ?? false : options.fetchStateHistory ?? false;
|
|
42
41
|
const threadId = (0, svelte_store.writable)(void 0);
|
|
42
|
+
let threadIdPromise = null;
|
|
43
43
|
const client = options.client ?? new _langchain_langgraph_sdk.Client({ apiUrl: options.apiUrl });
|
|
44
44
|
const history = (0, svelte_store.writable)({
|
|
45
45
|
data: void 0,
|
|
@@ -111,10 +111,12 @@ function useStreamLGP(options) {
|
|
|
111
111
|
getMessages,
|
|
112
112
|
branchContext: $branchContext
|
|
113
113
|
}));
|
|
114
|
+
const subagentVersion = (0, svelte_store.writable)(0);
|
|
114
115
|
const unsubscribe = stream.subscribe(() => {
|
|
115
116
|
streamValues.set(stream.values);
|
|
116
117
|
streamError.set(stream.error);
|
|
117
118
|
isLoading.set(stream.isLoading);
|
|
119
|
+
subagentVersion.update((v) => v + 1);
|
|
118
120
|
});
|
|
119
121
|
const unsubQueue = pendingRuns.subscribe(() => {
|
|
120
122
|
queueEntries.set(pendingRuns.entries);
|
|
@@ -164,16 +166,19 @@ function useStreamLGP(options) {
|
|
|
164
166
|
return stream.start(async (signal) => {
|
|
165
167
|
usableThreadId = (0, svelte_store.get)(threadId);
|
|
166
168
|
if (!usableThreadId) {
|
|
167
|
-
|
|
169
|
+
const threadPromise = client.threads.create({
|
|
168
170
|
threadId: submitOptions?.threadId,
|
|
169
171
|
metadata: submitOptions?.metadata
|
|
170
|
-
})
|
|
172
|
+
});
|
|
173
|
+
threadIdPromise = threadPromise.then((t) => t.thread_id);
|
|
174
|
+
usableThreadId = (await threadPromise).thread_id;
|
|
171
175
|
threadId.set(usableThreadId);
|
|
172
176
|
options.onThreadId?.(usableThreadId);
|
|
173
177
|
}
|
|
174
178
|
const streamMode = [
|
|
175
179
|
"values",
|
|
176
180
|
"messages-tuple",
|
|
181
|
+
"updates",
|
|
177
182
|
...submitOptions?.streamMode ?? []
|
|
178
183
|
];
|
|
179
184
|
if (options.onUpdateEvent && !streamMode.includes("updates")) streamMode.push("updates");
|
|
@@ -240,21 +245,26 @@ function useStreamLGP(options) {
|
|
|
240
245
|
},
|
|
241
246
|
onError(error) {
|
|
242
247
|
options.onError?.(error, callbackMeta);
|
|
248
|
+
submitOptions?.onError?.(error, callbackMeta);
|
|
243
249
|
},
|
|
244
250
|
onFinish: () => {}
|
|
245
251
|
});
|
|
246
252
|
}
|
|
247
253
|
let submitting = false;
|
|
248
|
-
|
|
249
|
-
if (
|
|
254
|
+
function drainQueue() {
|
|
255
|
+
if (!(0, svelte_store.get)(isLoading) && !submitting && pendingRuns.size > 0) {
|
|
250
256
|
const next = pendingRuns.shift();
|
|
251
257
|
if (next) {
|
|
252
258
|
submitting = true;
|
|
253
259
|
joinStream(next.id).finally(() => {
|
|
254
260
|
submitting = false;
|
|
261
|
+
drainQueue();
|
|
255
262
|
});
|
|
256
263
|
}
|
|
257
264
|
}
|
|
265
|
+
}
|
|
266
|
+
isLoading.subscribe(() => {
|
|
267
|
+
drainQueue();
|
|
258
268
|
});
|
|
259
269
|
async function submit(values, submitOptions) {
|
|
260
270
|
if (stream.isLoading || submitting) {
|
|
@@ -267,27 +277,33 @@ function useStreamLGP(options) {
|
|
|
267
277
|
}
|
|
268
278
|
return;
|
|
269
279
|
}
|
|
270
|
-
|
|
280
|
+
let usableThreadId = (0, svelte_store.get)(threadId);
|
|
281
|
+
if (!usableThreadId && threadIdPromise) usableThreadId = await threadIdPromise;
|
|
271
282
|
if (usableThreadId) {
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
283
|
+
try {
|
|
284
|
+
const run = await client.runs.create(usableThreadId, options.assistantId, {
|
|
285
|
+
input: values,
|
|
286
|
+
config: submitOptions?.config,
|
|
287
|
+
context: submitOptions?.context,
|
|
288
|
+
command: submitOptions?.command,
|
|
289
|
+
interruptBefore: submitOptions?.interruptBefore,
|
|
290
|
+
interruptAfter: submitOptions?.interruptAfter,
|
|
291
|
+
metadata: submitOptions?.metadata,
|
|
292
|
+
multitaskStrategy: "enqueue",
|
|
293
|
+
streamResumable: true,
|
|
294
|
+
streamSubgraphs: submitOptions?.streamSubgraphs,
|
|
295
|
+
durability: submitOptions?.durability
|
|
296
|
+
});
|
|
297
|
+
pendingRuns.add({
|
|
298
|
+
id: run.run_id,
|
|
299
|
+
values,
|
|
300
|
+
options: submitOptions,
|
|
301
|
+
createdAt: new Date(run.created_at)
|
|
302
|
+
});
|
|
303
|
+
} catch (error) {
|
|
304
|
+
options.onError?.(error, void 0);
|
|
305
|
+
submitOptions?.onError?.(error, void 0);
|
|
306
|
+
}
|
|
291
307
|
return;
|
|
292
308
|
}
|
|
293
309
|
}
|
|
@@ -295,6 +311,7 @@ function useStreamLGP(options) {
|
|
|
295
311
|
const result = submitDirect(values, submitOptions);
|
|
296
312
|
Promise.resolve(result).finally(() => {
|
|
297
313
|
submitting = false;
|
|
314
|
+
drainQueue();
|
|
298
315
|
});
|
|
299
316
|
return result;
|
|
300
317
|
}
|
|
@@ -340,7 +357,7 @@ function useStreamLGP(options) {
|
|
|
340
357
|
}
|
|
341
358
|
}
|
|
342
359
|
});
|
|
343
|
-
const messages = (0, svelte_store.derived)([streamValues, historyValues], ([$streamValues, $historyValues]) => getMessages($streamValues ?? $historyValues));
|
|
360
|
+
const messages = (0, svelte_store.derived)([streamValues, historyValues], ([$streamValues, $historyValues]) => (0, _langchain_langgraph_sdk_ui.ensureMessageInstances)(getMessages($streamValues ?? $historyValues)));
|
|
344
361
|
const interrupt = (0, svelte_store.derived)([
|
|
345
362
|
streamValues,
|
|
346
363
|
streamError,
|
|
@@ -437,12 +454,8 @@ function useStreamLGP(options) {
|
|
|
437
454
|
if (newThreadId != null) options.onThreadId?.(newThreadId);
|
|
438
455
|
}
|
|
439
456
|
},
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
},
|
|
443
|
-
get activeSubagents() {
|
|
444
|
-
return stream.getActiveSubagents();
|
|
445
|
-
},
|
|
457
|
+
subagents: (0, svelte_store.derived)(subagentVersion, () => stream.getSubagents()),
|
|
458
|
+
activeSubagents: (0, svelte_store.derived)(subagentVersion, () => stream.getActiveSubagents()),
|
|
446
459
|
getSubagent(toolCallId) {
|
|
447
460
|
return stream.getSubagent(toolCallId);
|
|
448
461
|
},
|
|
@@ -454,38 +467,38 @@ function useStreamLGP(options) {
|
|
|
454
467
|
}
|
|
455
468
|
};
|
|
456
469
|
}
|
|
457
|
-
|
|
458
470
|
//#endregion
|
|
459
471
|
exports.FetchStreamTransport = _langchain_langgraph_sdk_ui.FetchStreamTransport;
|
|
460
|
-
Object.defineProperty(exports,
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
472
|
+
Object.defineProperty(exports, "SubagentManager", {
|
|
473
|
+
enumerable: true,
|
|
474
|
+
get: function() {
|
|
475
|
+
return _langchain_langgraph_sdk_ui.SubagentManager;
|
|
476
|
+
}
|
|
465
477
|
});
|
|
466
|
-
Object.defineProperty(exports,
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
478
|
+
Object.defineProperty(exports, "calculateDepthFromNamespace", {
|
|
479
|
+
enumerable: true,
|
|
480
|
+
get: function() {
|
|
481
|
+
return _langchain_langgraph_sdk_ui.calculateDepthFromNamespace;
|
|
482
|
+
}
|
|
471
483
|
});
|
|
472
|
-
Object.defineProperty(exports,
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
484
|
+
Object.defineProperty(exports, "extractParentIdFromNamespace", {
|
|
485
|
+
enumerable: true,
|
|
486
|
+
get: function() {
|
|
487
|
+
return _langchain_langgraph_sdk_ui.extractParentIdFromNamespace;
|
|
488
|
+
}
|
|
477
489
|
});
|
|
478
|
-
Object.defineProperty(exports,
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
490
|
+
Object.defineProperty(exports, "extractToolCallIdFromNamespace", {
|
|
491
|
+
enumerable: true,
|
|
492
|
+
get: function() {
|
|
493
|
+
return _langchain_langgraph_sdk_ui.extractToolCallIdFromNamespace;
|
|
494
|
+
}
|
|
483
495
|
});
|
|
484
|
-
Object.defineProperty(exports,
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
496
|
+
Object.defineProperty(exports, "isSubagentNamespace", {
|
|
497
|
+
enumerable: true,
|
|
498
|
+
get: function() {
|
|
499
|
+
return _langchain_langgraph_sdk_ui.isSubagentNamespace;
|
|
500
|
+
}
|
|
489
501
|
});
|
|
490
502
|
exports.useStream = useStream;
|
|
503
|
+
|
|
491
504
|
//# sourceMappingURL=index.cjs.map
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","names":["useStreamCustom","Client","MessageTupleManager","StreamManager","toMessageClass","PendingRunsTracker","StreamError"],"sources":["../src/index.ts"],"sourcesContent":["import { writable, derived, get } from \"svelte/store\";\nimport { onDestroy, onMount } from \"svelte\";\n\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 getBranchContext,\n getMessagesMetadataMap,\n StreamError,\n extractInterrupts,\n filterStream,\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 {\n Client,\n type BagTemplate,\n type StreamMode,\n type StreamEvent,\n type Message,\n type ThreadState,\n type ToolCallWithResult as _ToolCallWithResult,\n type DefaultToolCall,\n} from \"@langchain/langgraph-sdk\";\nimport { getToolCallsWithResults } from \"@langchain/langgraph-sdk/utils\";\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\ntype ClassToolCallWithResult<T> =\n T extends _ToolCallWithResult<infer TC, unknown, unknown>\n ? _ToolCallWithResult<TC, CoreToolMessage, CoreAIMessage>\n : T;\n\ntype WithClassMessages<T> = Omit<\n T,\n \"messages\" | \"getMessagesMetadata\" | \"toolCalls\" | \"getToolCalls\"\n> & {\n messages: BaseMessage[];\n getMessagesMetadata: (\n message: BaseMessage,\n index?: number,\n ) => MessageMetadata<Record<string, unknown>> | undefined;\n} & (\"toolCalls\" extends keyof T\n ? {\n toolCalls: T extends { toolCalls: (infer TC)[] }\n ? ClassToolCallWithResult<TC>[]\n : never;\n }\n : unknown) &\n (\"getToolCalls\" extends keyof T\n ? {\n getToolCalls: T extends {\n getToolCalls: (message: infer _M) => (infer TC)[];\n }\n ? (message: CoreAIMessage) => ClassToolCallWithResult<TC>[]\n : never;\n }\n : unknown);\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\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 = writable<string | undefined>(undefined);\n\n const client = options.client ?? new Client({ apiUrl: options.apiUrl });\n\n const history = writable<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 ?? get(threadId);\n if (!tid) return undefined;\n try {\n const data = await fetchHistory<StateType>(client, tid, {\n limit: historyLimit,\n });\n history.set({\n data,\n error: undefined,\n isLoading: false,\n mutate,\n });\n return data;\n } catch (err) {\n history.update((prev) => ({\n ...prev,\n error: err,\n isLoading: false,\n }));\n options.onError?.(err, undefined);\n return undefined;\n }\n }\n\n history.update((prev) => ({ ...prev, mutate }));\n\n const branch = writable<string>(\"\");\n const branchContext = derived([branch, history], ([$branch, $history]) =>\n getBranchContext($branch, $history.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\n const historyValues = derived(\n [branchContext],\n ([$branchContext]) =>\n $branchContext.threadHead?.values ??\n options.initialValues ??\n ({} as StateType),\n );\n\n const historyError = derived([branchContext], ([$branchContext]) => {\n const error = $branchContext.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 = writable<StateType | null>(stream.values);\n const streamError = writable<unknown>(stream.error);\n const isLoading = writable(stream.isLoading);\n\n const queueEntries = writable(pendingRuns.entries);\n const queueSize = writable(pendingRuns.size);\n\n const values = derived(\n [streamValues, historyValues],\n ([$streamValues, $historyValues]) => $streamValues ?? $historyValues,\n );\n\n const error = derived(\n [streamError, historyError, history],\n ([$streamError, $historyError, $history]) =>\n $streamError ?? $historyError ?? $history.error,\n );\n\n const messageMetadata = derived(\n [history, branchContext],\n ([$history, $branchContext]) =>\n getMessagesMetadataMap({\n initialValues: options.initialValues,\n history: $history.data,\n getMessages,\n branchContext: $branchContext,\n }),\n );\n\n const unsubscribe = stream.subscribe(() => {\n streamValues.set(stream.values);\n streamError.set(stream.error);\n isLoading.set(stream.isLoading);\n });\n\n const unsubQueue = pendingRuns.subscribe(() => {\n queueEntries.set(pendingRuns.entries);\n queueSize.set(pendingRuns.size);\n });\n\n const shouldReconstructSubagents = derived(\n [isLoading, history],\n ([$isLoading, $history]) => {\n if (!options.filterSubagentMessages) return false;\n if ($isLoading || $history.isLoading) return false;\n const hvMessages = getMessages(get(historyValues));\n return hvMessages.length > 0;\n },\n );\n\n const unsubReconstruct = shouldReconstructSubagents.subscribe(($should) => {\n if ($should) {\n const hvMessages = getMessages(get(historyValues));\n stream.reconstructSubagents(hvMessages, { skipIfPopulated: true });\n }\n });\n\n onDestroy(() => {\n unsubscribe();\n unsubReconstruct();\n unsubQueue();\n });\n\n function stop() {\n return stream.stop(get(historyValues), {\n onStop: (args) => {\n const tid = get(threadId);\n if (runMetadataStorage && tid) {\n const runId = runMetadataStorage.getItem(`lg:stream:${tid}`);\n if (runId) void client.runs.cancel(tid, runId);\n runMetadataStorage.removeItem(`lg:stream:${tid}`);\n }\n\n options.onStop?.(args);\n },\n });\n }\n\n function setBranch(value: string) {\n branch.set(value);\n }\n\n function submitDirect(\n values: StateType,\n submitOptions?: SubmitOptions<StateType, ConfigurableType>,\n ) {\n const currentBranchContext = get(branchContext);\n\n const checkpointId = submitOptions?.checkpoint?.checkpoint_id;\n branch.set(\n checkpointId != null\n ? (currentBranchContext.branchByCheckpoint[checkpointId]?.branch ?? \"\")\n : \"\",\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 = get(threadId);\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.set(usableThreadId);\n options.onThreadId?.(usableThreadId);\n }\n\n const streamMode: StreamMode[] = [\n \"values\",\n \"messages-tuple\",\n ...(submitOptions?.streamMode ?? []),\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 = { ...get(historyValues), ...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: get(historyValues),\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) {\n options.onError?.(error, callbackMeta);\n },\n onFinish: () => {},\n },\n );\n }\n\n let submitting = false;\n\n isLoading.subscribe(($isLoading) => {\n if (!$isLoading && !submitting && pendingRuns.size > 0) {\n const next = pendingRuns.shift();\n if (next) {\n submitting = true;\n void joinStream(next.id).finally(() => {\n submitting = false;\n });\n }\n }\n });\n\n async function submit(\n values: StateType,\n submitOptions?: SubmitOptions<StateType, ConfigurableType>,\n ) {\n if (stream.isLoading || submitting) {\n const shouldAbort =\n submitOptions?.multitaskStrategy === \"interrupt\" ||\n submitOptions?.multitaskStrategy === \"rollback\";\n\n if (shouldAbort) {\n submitting = true;\n try {\n await submitDirect(values, submitOptions);\n } finally {\n submitting = false;\n }\n return;\n }\n\n const usableThreadId = get(threadId);\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 = true;\n const result = submitDirect(values, submitOptions);\n void Promise.resolve(result).finally(() => {\n submitting = false;\n });\n return result;\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 const tid = get(threadId);\n if (!tid) return;\n\n const callbackMeta: RunCallbackMeta = {\n thread_id: tid,\n run_id: runId,\n };\n\n await stream.start(\n async (signal: AbortSignal) => {\n const rawStream = client.runs.joinStream(tid, 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: get(historyValues),\n callbacks: options,\n async onSuccess() {\n runMetadataStorage?.removeItem(`lg:stream:${tid}`);\n const newHistory = await mutate(tid);\n const lastHead = newHistory?.at(0);\n if (lastHead) options.onFinish?.(lastHead, callbackMeta);\n },\n onError(error) {\n options.onError?.(error, callbackMeta);\n },\n onFinish: () => {},\n },\n );\n }\n\n let shouldReconnect = !!runMetadataStorage;\n\n onMount(() => {\n const tid = get(threadId);\n if (shouldReconnect && runMetadataStorage && tid) {\n const runId = runMetadataStorage.getItem(`lg:stream:${tid}`);\n if (runId) {\n shouldReconnect = false;\n void joinStream(runId);\n }\n }\n });\n\n const messages = derived(\n [streamValues, historyValues],\n ([$streamValues, $historyValues]) =>\n getMessages($streamValues ?? $historyValues),\n );\n\n const interrupt = derived(\n [streamValues, streamError, branchContext, isLoading],\n ([$streamValues, $streamError, $branchContext, $isLoading]) => {\n return extractInterrupts<InterruptType>($streamValues, {\n isLoading: $isLoading,\n threadState: $branchContext.threadHead,\n error: $streamError,\n });\n },\n );\n\n const interrupts = derived(\n [streamValues, streamError, branchContext, isLoading],\n ([$streamValues, $streamError, $branchContext, $isLoading]) => {\n const vals = $streamValues ?? get(historyValues);\n if (\n vals != null &&\n \"__interrupt__\" in vals &&\n Array.isArray(vals.__interrupt__)\n ) {\n const valueInterrupts = vals.__interrupt__;\n if (valueInterrupts.length === 0) return [{ when: \"breakpoint\" }];\n return valueInterrupts;\n }\n\n if ($isLoading) return [];\n\n const allTasks = $branchContext.threadHead?.tasks ?? [];\n const allInterrupts = allTasks.flatMap((t) => t.interrupts ?? []);\n if (allInterrupts.length > 0) return allInterrupts;\n\n const next = $branchContext.threadHead?.next ?? [];\n if (!next.length || $streamError != null) return [];\n return [{ when: \"breakpoint\" }];\n },\n );\n\n const toolCalls = derived(\n [streamValues, historyValues],\n ([$streamValues, $historyValues]) =>\n getToolCallsWithResults(getMessages($streamValues ?? $historyValues)),\n );\n\n function getToolCalls(message: Message) {\n const currentValues = get(streamValues) ?? get(historyValues);\n const allToolCalls = getToolCallsWithResults(getMessages(currentValues));\n return allToolCalls.filter((tc) => tc.aiMessage.id === message.id);\n }\n\n const historyList = derived([branchContext], ([$branchContext]) => {\n if (historyLimit === false) {\n throw new Error(\n \"`fetchStateHistory` must be set to `true` to use `history`\",\n );\n }\n return $branchContext.flatHistory;\n });\n\n const isThreadLoading = derived(\n [history],\n ([$history]) => $history.isLoading && $history.data == null,\n );\n\n const experimentalBranchTree = derived(\n [branchContext],\n ([$branchContext]) => {\n if (historyLimit === false) {\n throw new Error(\n \"`fetchStateHistory` must be set to `true` to use `experimental_branchTree`\",\n );\n }\n return $branchContext.branchTree;\n },\n );\n\n function getMessagesMetadata(\n message: Message,\n index?: number,\n ): MessageMetadata<StateType> | undefined {\n const streamMetadata = messageManager.get(message.id)?.metadata;\n const historyMetadata = get(messageMetadata)?.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 return {\n assistantId: options.assistantId,\n client,\n\n values,\n error,\n isLoading,\n isThreadLoading,\n\n branch,\n setBranch,\n\n messages,\n toolCalls,\n getToolCalls,\n\n interrupt,\n interrupts,\n\n history: historyList,\n experimental_branchTree: experimentalBranchTree,\n\n getMessagesMetadata,\n\n submit,\n stop,\n joinStream,\n\n queue: {\n entries: queueEntries,\n size: queueSize,\n async cancel(id: string) {\n const tid = get(threadId);\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 = get(threadId);\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 = get(threadId) ?? null;\n if (newThreadId !== current) {\n const prevThreadId = get(threadId);\n threadId.set(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\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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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","names":["useStreamCustom","Client","MessageTupleManager","StreamManager","toMessageClass","PendingRunsTracker","StreamError"],"sources":["../src/index.ts"],"sourcesContent":["import { writable, derived, get } from \"svelte/store\";\nimport type { Readable } from \"svelte/store\";\nimport { onDestroy, onMount } from \"svelte\";\n\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 getBranchContext,\n getMessagesMetadataMap,\n StreamError,\n extractInterrupts,\n filterStream,\n FetchStreamTransport,\n toMessageClass,\n ensureMessageInstances,\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 AcceptBaseMessages,\n type UseStreamCustomOptions,\n type SubagentStreamInterface,\n} from \"@langchain/langgraph-sdk/ui\";\nimport {\n Client,\n type BagTemplate,\n type StreamMode,\n type StreamEvent,\n type Message,\n type ThreadState,\n type ToolCallWithResult as _ToolCallWithResult,\n type DefaultToolCall,\n} from \"@langchain/langgraph-sdk\";\nimport { getToolCallsWithResults } from \"@langchain/langgraph-sdk/utils\";\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\ntype ClassToolCallWithResult<T> =\n T extends _ToolCallWithResult<infer TC, unknown, unknown>\n ? _ToolCallWithResult<TC, CoreToolMessage, CoreAIMessage>\n : T;\n\nexport type ClassSubagentStreamInterface<\n StateType = Record<string, unknown>,\n ToolCall = DefaultToolCall,\n SubagentName extends string = string,\n> = Omit<\n SubagentStreamInterface<StateType, ToolCall, SubagentName>,\n \"messages\"\n> & {\n messages: BaseMessage[];\n};\n\n/**\n * Maps a stream interface to Svelte-reactive types:\n * - `messages` becomes `Readable<BaseMessage[]>`\n * - `getMessagesMetadata` accepts `BaseMessage`\n * - `toolCalls` uses `@langchain/core` message classes, wrapped in `Readable`\n * - `getToolCalls` accepts `CoreAIMessage`, returns class-based tool call results\n * - `queue` properties are individually mapped (stores → `Readable`, functions unchanged)\n * - `client`, `assistantId`, `subagents`, `activeSubagents` remain unwrapped\n * - Functions remain unchanged\n * - All other properties are wrapped in `Readable<T>` to match Svelte's store system\n */\ntype WithClassMessages<T> = {\n [K in keyof T as K extends\n | \"getSubagent\"\n | \"getSubagentsByType\"\n | \"getSubagentsByMessage\"\n ? never\n : K]: K extends \"messages\"\n ? Readable<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 ? Readable<ClassToolCallWithResult<TC>[]>\n : Readable<T[K]>\n : K extends \"getToolCalls\"\n ? T[K] extends (message: infer _M) => (infer TC)[]\n ? (message: CoreAIMessage) => ClassToolCallWithResult<TC>[]\n : T[K]\n : K extends \"queue\"\n ? {\n [QK in keyof T[K]]: T[K][QK] extends (\n ...args: infer A\n ) => infer R\n ? (...args: A) => R\n : Readable<T[K][QK]>;\n }\n : K extends \"client\" | \"assistantId\"\n ? T[K]\n : K extends \"subagents\"\n ? T[K] extends Map<\n string,\n SubagentStreamInterface<infer S, infer TC, infer N>\n >\n ? Map<string, ClassSubagentStreamInterface<S, TC, N>>\n : T[K]\n : K extends \"activeSubagents\"\n ? T[K] extends SubagentStreamInterface<\n infer S,\n infer TC,\n infer N\n >[]\n ? ClassSubagentStreamInterface<S, TC, N>[]\n : T[K]\n : K extends \"submit\"\n ? T[K] extends (\n values: infer V,\n options?: infer O,\n ) => infer Ret\n ? (\n values:\n | AcceptBaseMessages<Exclude<V, null | undefined>>\n | null\n | undefined,\n options?: O,\n ) => Ret\n : T[K]\n : T[K] extends (...args: infer A) => infer R\n ? (...args: A) => R\n : Readable<T[K]>;\n} & (\"subagents\" extends keyof T\n ? {\n getSubagent: T extends {\n getSubagent: (\n id: string,\n ) => SubagentStreamInterface<infer S, infer TC, infer N> | undefined;\n }\n ? (\n toolCallId: string,\n ) => ClassSubagentStreamInterface<S, TC, N> | undefined\n : never;\n getSubagentsByType: T extends {\n getSubagentsByType: (\n type: string,\n ) => SubagentStreamInterface<infer S, infer TC, infer N>[];\n }\n ? (type: string) => ClassSubagentStreamInterface<S, TC, N>[]\n : never;\n getSubagentsByMessage: T extends {\n getSubagentsByMessage: (\n id: string,\n ) => SubagentStreamInterface<infer S, infer TC, infer N>[];\n }\n ? (messageId: string) => ClassSubagentStreamInterface<S, TC, N>[]\n : never;\n }\n : unknown);\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\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 = writable<string | undefined>(undefined);\n let threadIdPromise: Promise<string> | null = null;\n\n const client = options.client ?? new Client({ apiUrl: options.apiUrl });\n\n const history = writable<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 ?? get(threadId);\n if (!tid) return undefined;\n try {\n const data = await fetchHistory<StateType>(client, tid, {\n limit: historyLimit,\n });\n history.set({\n data,\n error: undefined,\n isLoading: false,\n mutate,\n });\n return data;\n } catch (err) {\n history.update((prev) => ({\n ...prev,\n error: err,\n isLoading: false,\n }));\n options.onError?.(err, undefined);\n return undefined;\n }\n }\n\n history.update((prev) => ({ ...prev, mutate }));\n\n const branch = writable<string>(\"\");\n const branchContext = derived([branch, history], ([$branch, $history]) =>\n getBranchContext($branch, $history.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\n const historyValues = derived(\n [branchContext],\n ([$branchContext]) =>\n $branchContext.threadHead?.values ??\n options.initialValues ??\n ({} as StateType),\n );\n\n const historyError = derived([branchContext], ([$branchContext]) => {\n const error = $branchContext.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 = writable<StateType | null>(stream.values);\n const streamError = writable<unknown>(stream.error);\n const isLoading = writable(stream.isLoading);\n\n const queueEntries = writable(pendingRuns.entries);\n const queueSize = writable(pendingRuns.size);\n\n const values = derived(\n [streamValues, historyValues],\n ([$streamValues, $historyValues]) => $streamValues ?? $historyValues,\n );\n\n const error = derived(\n [streamError, historyError, history],\n ([$streamError, $historyError, $history]) =>\n $streamError ?? $historyError ?? $history.error,\n );\n\n const messageMetadata = derived(\n [history, branchContext],\n ([$history, $branchContext]) =>\n getMessagesMetadataMap({\n initialValues: options.initialValues,\n history: $history.data,\n getMessages,\n branchContext: $branchContext,\n }),\n );\n\n const subagentVersion = writable(0);\n\n const unsubscribe = stream.subscribe(() => {\n streamValues.set(stream.values);\n streamError.set(stream.error);\n isLoading.set(stream.isLoading);\n subagentVersion.update((v) => v + 1);\n });\n\n const unsubQueue = pendingRuns.subscribe(() => {\n queueEntries.set(pendingRuns.entries);\n queueSize.set(pendingRuns.size);\n });\n\n const shouldReconstructSubagents = derived(\n [isLoading, history],\n ([$isLoading, $history]) => {\n if (!options.filterSubagentMessages) return false;\n if ($isLoading || $history.isLoading) return false;\n const hvMessages = getMessages(get(historyValues));\n return hvMessages.length > 0;\n },\n );\n\n const unsubReconstruct = shouldReconstructSubagents.subscribe(($should) => {\n if ($should) {\n const hvMessages = getMessages(get(historyValues));\n stream.reconstructSubagents(hvMessages, { skipIfPopulated: true });\n }\n });\n\n onDestroy(() => {\n unsubscribe();\n unsubReconstruct();\n unsubQueue();\n });\n\n function stop() {\n return stream.stop(get(historyValues), {\n onStop: (args) => {\n const tid = get(threadId);\n if (runMetadataStorage && tid) {\n const runId = runMetadataStorage.getItem(`lg:stream:${tid}`);\n if (runId) void client.runs.cancel(tid, runId);\n runMetadataStorage.removeItem(`lg:stream:${tid}`);\n }\n\n options.onStop?.(args);\n },\n });\n }\n\n function setBranch(value: string) {\n branch.set(value);\n }\n\n function submitDirect(\n values: StateType,\n submitOptions?: SubmitOptions<StateType, ConfigurableType>,\n ) {\n const currentBranchContext = get(branchContext);\n\n const checkpointId = submitOptions?.checkpoint?.checkpoint_id;\n branch.set(\n checkpointId != null\n ? (currentBranchContext.branchByCheckpoint[checkpointId]?.branch ?? \"\")\n : \"\",\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 = get(threadId);\n if (!usableThreadId) {\n const threadPromise = client.threads.create({\n threadId: submitOptions?.threadId,\n metadata: submitOptions?.metadata,\n });\n\n threadIdPromise = threadPromise.then((t) => t.thread_id);\n\n const thread = await threadPromise;\n\n usableThreadId = thread.thread_id;\n threadId.set(usableThreadId);\n options.onThreadId?.(usableThreadId);\n }\n\n const streamMode: StreamMode[] = [\n \"values\",\n \"messages-tuple\",\n \"updates\",\n ...(submitOptions?.streamMode ?? []),\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 = { ...get(historyValues), ...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: get(historyValues),\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) {\n options.onError?.(error, callbackMeta);\n submitOptions?.onError?.(error, callbackMeta);\n },\n onFinish: () => {},\n },\n );\n }\n\n let submitting = false;\n\n function drainQueue() {\n if (!get(isLoading) && !submitting && pendingRuns.size > 0) {\n const next = pendingRuns.shift();\n if (next) {\n submitting = true;\n void joinStream(next.id).finally(() => {\n submitting = false;\n drainQueue();\n });\n }\n }\n }\n\n isLoading.subscribe(() => {\n drainQueue();\n });\n\n async function submit(\n values: StateType,\n submitOptions?: SubmitOptions<StateType, ConfigurableType>,\n ) {\n if (stream.isLoading || submitting) {\n const shouldAbort =\n submitOptions?.multitaskStrategy === \"interrupt\" ||\n submitOptions?.multitaskStrategy === \"rollback\";\n\n if (shouldAbort) {\n submitting = true;\n try {\n await submitDirect(values, submitOptions);\n } finally {\n submitting = false;\n }\n return;\n }\n\n let usableThreadId: string | undefined = get(threadId);\n if (!usableThreadId && threadIdPromise) {\n usableThreadId = await threadIdPromise;\n }\n if (usableThreadId) {\n try {\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 } catch (error) {\n options.onError?.(error, undefined);\n submitOptions?.onError?.(error, undefined);\n }\n return;\n }\n }\n\n submitting = true;\n const result = submitDirect(values, submitOptions);\n void Promise.resolve(result).finally(() => {\n submitting = false;\n drainQueue();\n });\n return result;\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 const tid = get(threadId);\n if (!tid) return;\n\n const callbackMeta: RunCallbackMeta = {\n thread_id: tid,\n run_id: runId,\n };\n\n await stream.start(\n async (signal: AbortSignal) => {\n const rawStream = client.runs.joinStream(tid, 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: get(historyValues),\n callbacks: options,\n async onSuccess() {\n runMetadataStorage?.removeItem(`lg:stream:${tid}`);\n const newHistory = await mutate(tid);\n const lastHead = newHistory?.at(0);\n if (lastHead) options.onFinish?.(lastHead, callbackMeta);\n },\n onError(error) {\n options.onError?.(error, callbackMeta);\n },\n onFinish: () => {},\n },\n );\n }\n\n let shouldReconnect = !!runMetadataStorage;\n\n onMount(() => {\n const tid = get(threadId);\n if (shouldReconnect && runMetadataStorage && tid) {\n const runId = runMetadataStorage.getItem(`lg:stream:${tid}`);\n if (runId) {\n shouldReconnect = false;\n void joinStream(runId);\n }\n }\n });\n\n const messages = derived(\n [streamValues, historyValues],\n ([$streamValues, $historyValues]) =>\n ensureMessageInstances(getMessages($streamValues ?? $historyValues)),\n );\n\n const interrupt = derived(\n [streamValues, streamError, branchContext, isLoading],\n ([$streamValues, $streamError, $branchContext, $isLoading]) => {\n return extractInterrupts<InterruptType>($streamValues, {\n isLoading: $isLoading,\n threadState: $branchContext.threadHead,\n error: $streamError,\n });\n },\n );\n\n const interrupts = derived(\n [streamValues, streamError, branchContext, isLoading],\n ([$streamValues, $streamError, $branchContext, $isLoading]) => {\n const vals = $streamValues ?? get(historyValues);\n if (\n vals != null &&\n \"__interrupt__\" in vals &&\n Array.isArray(vals.__interrupt__)\n ) {\n const valueInterrupts = vals.__interrupt__;\n if (valueInterrupts.length === 0) return [{ when: \"breakpoint\" }];\n return valueInterrupts;\n }\n\n if ($isLoading) return [];\n\n const allTasks = $branchContext.threadHead?.tasks ?? [];\n const allInterrupts = allTasks.flatMap((t) => t.interrupts ?? []);\n if (allInterrupts.length > 0) return allInterrupts;\n\n const next = $branchContext.threadHead?.next ?? [];\n if (!next.length || $streamError != null) return [];\n return [{ when: \"breakpoint\" }];\n },\n );\n\n const toolCalls = derived(\n [streamValues, historyValues],\n ([$streamValues, $historyValues]) =>\n getToolCallsWithResults(getMessages($streamValues ?? $historyValues)),\n );\n\n function getToolCalls(message: Message) {\n const currentValues = get(streamValues) ?? get(historyValues);\n const allToolCalls = getToolCallsWithResults(getMessages(currentValues));\n return allToolCalls.filter((tc) => tc.aiMessage.id === message.id);\n }\n\n const historyList = derived([branchContext], ([$branchContext]) => {\n if (historyLimit === false) {\n throw new Error(\n \"`fetchStateHistory` must be set to `true` to use `history`\",\n );\n }\n return $branchContext.flatHistory;\n });\n\n const isThreadLoading = derived(\n [history],\n ([$history]) => $history.isLoading && $history.data == null,\n );\n\n const experimentalBranchTree = derived(\n [branchContext],\n ([$branchContext]) => {\n if (historyLimit === false) {\n throw new Error(\n \"`fetchStateHistory` must be set to `true` to use `experimental_branchTree`\",\n );\n }\n return $branchContext.branchTree;\n },\n );\n\n function getMessagesMetadata(\n message: Message,\n index?: number,\n ): MessageMetadata<StateType> | undefined {\n const streamMetadata = messageManager.get(message.id)?.metadata;\n const historyMetadata = get(messageMetadata)?.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 return {\n assistantId: options.assistantId,\n client,\n\n values,\n error,\n isLoading,\n isThreadLoading,\n\n branch,\n setBranch,\n\n messages,\n toolCalls,\n getToolCalls,\n\n interrupt,\n interrupts,\n\n history: historyList,\n experimental_branchTree: experimentalBranchTree,\n\n getMessagesMetadata,\n\n submit,\n stop,\n joinStream,\n\n queue: {\n entries: queueEntries,\n size: queueSize,\n async cancel(id: string) {\n const tid = get(threadId);\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 = get(threadId);\n const removed = pendingRuns.removeAll();\n if (tid && removed.length > 0) {\n await Promise.all(removed.map((e) => client.runs.cancel(tid!, e.id)));\n }\n },\n },\n\n switchThread(newThreadId: string | null) {\n const current = get(threadId) ?? null;\n if (newThreadId !== current) {\n const prevThreadId = get(threadId);\n threadId.set(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 subagents: derived(subagentVersion, () => stream.getSubagents()),\n activeSubagents: derived(subagentVersion, () =>\n 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\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 SubagentApi,\n SubagentStream,\n SubagentStreamInterface,\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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"}
|
package/dist/index.d.cts
CHANGED
|
@@ -1,24 +1,38 @@
|
|
|
1
|
+
import { Readable } from "svelte/store";
|
|
1
2
|
import { AIMessage, BaseMessage, ToolMessage } from "@langchain/core/messages";
|
|
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 { AcceptBaseMessages, 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, SubagentApi, SubagentManager, SubagentStateMap, SubagentStatus, SubagentStream, SubagentStreamInterface, SubagentStreamInterface as SubagentStreamInterface$1, SubagentToolCall, UseAgentStream, UseAgentStreamOptions, UseDeepAgentStream, UseDeepAgentStreamOptions, UseStreamCustomOptions, UseStreamCustomOptions as UseStreamCustomOptions$1, UseStreamOptions, UseStreamThread, UseStreamTransport, calculateDepthFromNamespace, extractParentIdFromNamespace, extractToolCallIdFromNamespace, isSubagentNamespace } from "@langchain/langgraph-sdk/ui";
|
|
3
4
|
import { BagTemplate, DefaultToolCall, DefaultToolCall as DefaultToolCall$1, ToolCallFromTool, ToolCallState, ToolCallWithResult as ToolCallWithResult$1, ToolCallsFromTools } from "@langchain/langgraph-sdk";
|
|
4
5
|
|
|
5
6
|
//#region src/index.d.ts
|
|
6
7
|
type ClassToolCallWithResult<T> = T extends ToolCallWithResult$1<infer TC, unknown, unknown> ? ToolCallWithResult$1<TC, ToolMessage, AIMessage> : T;
|
|
7
|
-
type
|
|
8
|
+
type ClassSubagentStreamInterface<StateType = Record<string, unknown>, ToolCall = DefaultToolCall$1, SubagentName extends string = string> = Omit<SubagentStreamInterface$1<StateType, ToolCall, SubagentName>, "messages"> & {
|
|
8
9
|
messages: BaseMessage[];
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* Maps a stream interface to Svelte-reactive types:
|
|
13
|
+
* - `messages` becomes `Readable<BaseMessage[]>`
|
|
14
|
+
* - `getMessagesMetadata` accepts `BaseMessage`
|
|
15
|
+
* - `toolCalls` uses `@langchain/core` message classes, wrapped in `Readable`
|
|
16
|
+
* - `getToolCalls` accepts `CoreAIMessage`, returns class-based tool call results
|
|
17
|
+
* - `queue` properties are individually mapped (stores → `Readable`, functions unchanged)
|
|
18
|
+
* - `client`, `assistantId`, `subagents`, `activeSubagents` remain unwrapped
|
|
19
|
+
* - Functions remain unchanged
|
|
20
|
+
* - All other properties are wrapped in `Readable<T>` to match Svelte's store system
|
|
21
|
+
*/
|
|
22
|
+
type WithClassMessages<T> = { [K in keyof T as K extends "getSubagent" | "getSubagentsByType" | "getSubagentsByMessage" ? never : K]: K extends "messages" ? Readable<BaseMessage[]> : K extends "getMessagesMetadata" ? (message: BaseMessage, index?: number) => MessageMetadata$1<Record<string, unknown>> | undefined : K extends "toolCalls" ? T[K] extends (infer TC)[] ? Readable<ClassToolCallWithResult<TC>[]> : Readable<T[K]> : K extends "getToolCalls" ? T[K] extends ((message: infer _M) => (infer TC)[]) ? (message: AIMessage) => ClassToolCallWithResult<TC>[] : T[K] : K extends "queue" ? { [QK in keyof T[K]]: T[K][QK] extends ((...args: infer A) => infer R) ? (...args: A) => R : Readable<T[K][QK]> } : K extends "client" | "assistantId" ? T[K] : K extends "subagents" ? T[K] extends Map<string, SubagentStreamInterface$1<infer S, infer TC, infer N>> ? Map<string, ClassSubagentStreamInterface<S, TC, N>> : T[K] : K extends "activeSubagents" ? T[K] extends SubagentStreamInterface$1<infer S, infer TC, infer N>[] ? ClassSubagentStreamInterface<S, TC, N>[] : T[K] : K extends "submit" ? T[K] extends ((values: infer V, options?: infer O) => infer Ret) ? (values: AcceptBaseMessages<Exclude<V, null | undefined>> | null | undefined, options?: O) => Ret : T[K] : T[K] extends ((...args: infer A) => infer R) ? (...args: A) => R : Readable<T[K]> } & ("subagents" extends keyof T ? {
|
|
23
|
+
getSubagent: T extends {
|
|
24
|
+
getSubagent: (id: string) => SubagentStreamInterface$1<infer S, infer TC, infer N> | undefined;
|
|
25
|
+
} ? (toolCallId: string) => ClassSubagentStreamInterface<S, TC, N> | undefined : never;
|
|
26
|
+
getSubagentsByType: T extends {
|
|
27
|
+
getSubagentsByType: (type: string) => SubagentStreamInterface$1<infer S, infer TC, infer N>[];
|
|
28
|
+
} ? (type: string) => ClassSubagentStreamInterface<S, TC, N>[] : never;
|
|
29
|
+
getSubagentsByMessage: T extends {
|
|
30
|
+
getSubagentsByMessage: (id: string) => SubagentStreamInterface$1<infer S, infer TC, infer N>[];
|
|
31
|
+
} ? (messageId: string) => ClassSubagentStreamInterface<S, TC, N>[] : never;
|
|
18
32
|
} : unknown);
|
|
19
33
|
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>>>;
|
|
20
34
|
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>>>;
|
|
21
35
|
type ToolCallWithResult<ToolCall = DefaultToolCall$1> = ToolCallWithResult$1<ToolCall, ToolMessage, AIMessage>;
|
|
22
36
|
//#endregion
|
|
23
|
-
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 };
|
|
37
|
+
export { type AgentTypeConfigLike, type BaseStream, type BaseSubagentState, ClassSubagentStreamInterface, 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, type SubagentApi, SubagentManager, type SubagentStateMap, type SubagentStatus, type SubagentStream, type SubagentStreamInterface, 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 };
|
|
24
38
|
//# sourceMappingURL=index.d.cts.map
|
package/dist/index.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.cts","names":[],"sources":["../src/index.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.cts","names":[],"sources":["../src/index.ts"],"mappings":"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"}
|