@langchain/svelte 0.3.0 → 0.3.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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":["useStreamCustom","Client","StreamOrchestrator"],"sources":["../src/index.ts"],"sourcesContent":["import { writable, derived, fromStore } from \"svelte/store\";\nimport { onDestroy, onMount, setContext, getContext } from \"svelte\";\n\nimport type {\n BaseMessage,\n ToolMessage as CoreToolMessage,\n AIMessage as CoreAIMessage,\n} from \"@langchain/core/messages\";\nimport {\n StreamOrchestrator,\n FetchStreamTransport,\n ensureMessageInstances,\n type MessageMetadata,\n type AnyStreamOptions,\n type ResolveStreamInterface,\n type ResolveStreamOptions,\n type InferBag,\n type InferStateType,\n type AcceptBaseMessages,\n type UseStreamCustomOptions,\n type SubagentStreamInterface,\n type HistoryWithBaseMessages,\n} from \"@langchain/langgraph-sdk/ui\";\nimport {\n Client,\n type BagTemplate,\n type Message,\n type ToolCallWithResult as _ToolCallWithResult,\n type DefaultToolCall,\n} from \"@langchain/langgraph-sdk\";\nimport { useStreamCustom } from \"./stream.custom.js\";\n\nexport { FetchStreamTransport };\n\nconst STREAM_CONTEXT_KEY = Symbol.for(\"langchain:stream-context\");\n\n/**\n * Provides a `useStream` return value to all descendant components via\n * Svelte's context API. Must be called during component initialisation\n * (i.e. at the top level of a `<script>` block).\n *\n * @example\n * ```svelte\n * <script lang=\"ts\">\n * import { useStream, setStreamContext } from \"@langchain/svelte\";\n *\n * const stream = useStream({ assistantId: \"agent\", apiUrl: \"...\" });\n * setStreamContext(stream);\n * </script>\n *\n * <ChildComponent />\n * ```\n */\nexport function setStreamContext<T extends ReturnType<typeof useStream>>(\n stream: T,\n): T {\n setContext(STREAM_CONTEXT_KEY, stream);\n return stream;\n}\n\n/**\n * Retrieves the `useStream` instance previously provided by a parent\n * component via {@link setStreamContext} or {@link provideStream}.\n * Must be called during component initialisation.\n *\n * @throws If no stream context has been set by an ancestor component.\n *\n * @example\n * ```svelte\n * <script lang=\"ts\">\n * import { getStreamContext } from \"@langchain/svelte\";\n *\n * const stream = getStreamContext();\n * </script>\n * ```\n */\nexport function getStreamContext<\n T = Record<string, unknown>,\n Bag extends BagTemplate = BagTemplate,\n>(): WithClassMessages<ResolveStreamInterface<T, InferBag<T, Bag>>> {\n const ctx = getContext(STREAM_CONTEXT_KEY);\n if (!ctx) {\n throw new Error(\n \"getStreamContext must be used within a component that has called setStreamContext\",\n );\n }\n return ctx as WithClassMessages<ResolveStreamInterface<T, InferBag<T, Bag>>>;\n}\n\n/**\n * Creates a shared `useStream` instance and makes it available to all\n * descendant components via Svelte's `setContext`/`getContext`.\n *\n * Call this in a parent component's `<script>` block. Children access\n * the shared stream via {@link getStream}.\n *\n * Uses the same context key as {@link setStreamContext}/{@link getStreamContext},\n * so both retrieval functions work interchangeably.\n *\n * @example\n * ```svelte\n * <!-- ChatContainer.svelte -->\n * <script lang=\"ts\">\n * import { provideStream } from \"@langchain/svelte\";\n *\n * provideStream({\n * assistantId: \"agent\",\n * apiUrl: \"http://localhost:2024\",\n * });\n * </script>\n *\n * <ChatHeader />\n * <MessageList />\n * <MessageInput />\n * ```\n *\n * @returns The stream instance (same as calling `useStream` directly).\n */\nexport function provideStream<\n T = Record<string, unknown>,\n Bag extends BagTemplate = BagTemplate,\n>(\n options:\n | ResolveStreamOptions<T, InferBag<T, Bag>>\n | UseStreamCustomOptions<InferStateType<T>, InferBag<T, Bag>>,\n): ReturnType<typeof useStream<T, Bag>> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const stream = useStream<T, Bag>(options as any);\n setContext(STREAM_CONTEXT_KEY, stream);\n return stream;\n}\n\n/**\n * Retrieves the shared stream instance from the nearest ancestor that\n * called {@link provideStream} or {@link setStreamContext}.\n *\n * Throws if no ancestor has provided a stream.\n *\n * @example\n * ```svelte\n * <!-- MessageList.svelte -->\n * <script lang=\"ts\">\n * import { getStream } from \"@langchain/svelte\";\n *\n * const stream = getStream();\n * </script>\n *\n * {#each stream.messages as msg (msg.id)}\n * <div>{msg.content}</div>\n * {/each}\n * ```\n */\nexport function getStream<\n T = Record<string, unknown>,\n Bag extends BagTemplate = BagTemplate,\n>(): ReturnType<typeof useStream<T, Bag>> {\n const context = getContext(STREAM_CONTEXT_KEY);\n if (context == null) {\n throw new Error(\n \"getStream() requires a parent component to call provideStream(). \" +\n \"Add provideStream({ assistantId: '...' }) in an ancestor component.\",\n );\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return context as any;\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 5-reactive types:\n * - `messages` becomes `BaseMessage[]`\n * - `getMessagesMetadata` accepts `BaseMessage`\n * - `toolCalls` uses `@langchain/core` message classes\n * - `getToolCalls` accepts `CoreAIMessage`, returns class-based tool call results\n * - `queue` properties are plain values and functions\n * - `client`, `assistantId`, `subagents`, `activeSubagents` remain unwrapped\n * - Functions remain unchanged\n * - All other reactive properties are exposed as plain values via getters\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 ? 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 ? ClassToolCallWithResult<TC>[]\n : 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 : 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 : K extends \"history\"\n ? HistoryWithBaseMessages<T[K]>\n : T[K] extends (...args: infer A) => infer R\n ? (...args: A) => R\n : 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 const client = options.client ?? new Client({ apiUrl: options.apiUrl });\n\n const orchestrator = new StreamOrchestrator<StateType, Bag>(options, {\n getClient: () => client,\n getAssistantId: () => options.assistantId,\n getMessagesKey: () => options.messagesKey ?? \"messages\",\n });\n\n orchestrator.initThreadId(options.threadId ?? undefined);\n\n const version = writable(0);\n const unsubscribe = orchestrator.subscribe(() => {\n version.update((v) => v + 1);\n });\n\n let fetchController: AbortController | null = null;\n\n // Subagent reconstruction\n const shouldReconstructSubagents = derived(version, () => {\n const hvMessages = orchestrator.messages;\n if (!options.filterSubagentMessages) return false;\n if (orchestrator.isLoading || orchestrator.historyData.isLoading)\n return false;\n return hvMessages.length > 0;\n });\n\n const unsubReconstruct = shouldReconstructSubagents.subscribe(($should) => {\n if ($should) {\n fetchController?.abort();\n const controller = orchestrator.reconstructSubagentsIfNeeded();\n fetchController = controller;\n }\n });\n\n // Queue draining - must track isLoading specifically (not just version)\n // so the drain fires exactly when stream transitions from loading → idle\n const isLoadingForDrain = derived(version, () => orchestrator.isLoading);\n const unsubDrain = isLoadingForDrain.subscribe(() => {\n orchestrator.drainQueue();\n });\n\n // Auto-reconnect\n let { shouldReconnect } = orchestrator;\n\n onMount(() => {\n if (shouldReconnect) {\n const reconnected = orchestrator.tryReconnect();\n if (reconnected) shouldReconnect = false;\n }\n });\n\n onDestroy(() => {\n fetchController?.abort();\n unsubscribe();\n unsubReconstruct();\n unsubDrain();\n orchestrator.dispose();\n });\n\n // Derived stores\n const valuesStore = derived(version, () => {\n orchestrator.trackStreamMode(\"values\");\n return orchestrator.values;\n });\n const errorStore = derived(version, () => orchestrator.error);\n const isLoadingStore = derived(version, () => orchestrator.isLoading);\n const branchStore = derived(version, () => orchestrator.branch);\n const messagesStore = derived(version, () => {\n orchestrator.trackStreamMode(\"messages-tuple\", \"values\");\n return ensureMessageInstances(orchestrator.messages);\n });\n const toolCallsStore = derived(version, () => {\n orchestrator.trackStreamMode(\"messages-tuple\", \"values\");\n return orchestrator.toolCalls;\n });\n const interruptStore = derived(version, () => orchestrator.interrupt);\n const interruptsStore = derived(version, () => orchestrator.interrupts);\n const historyListStore = derived(version, () => orchestrator.flatHistory);\n const isThreadLoadingStore = derived(\n version,\n () => orchestrator.isThreadLoading,\n );\n const experimentalBranchTreeStore = derived(\n version,\n () => orchestrator.experimental_branchTree,\n );\n const subagentsStore = derived(version, () => {\n orchestrator.trackStreamMode(\"updates\", \"messages-tuple\");\n return orchestrator.subagents;\n });\n const activeSubagentsStore = derived(version, () => {\n orchestrator.trackStreamMode(\"updates\", \"messages-tuple\");\n return orchestrator.activeSubagents;\n });\n const queueEntriesStore = derived(version, () => orchestrator.queueEntries);\n const queueSizeStore = derived(version, () => orchestrator.queueSize);\n\n // fromStore adapters for Svelte 5\n const valuesRef = fromStore(valuesStore);\n const errorRef = fromStore(errorStore);\n const isLoadingRef = fromStore(isLoadingStore);\n const branchRef = fromStore(branchStore);\n const messagesRef = fromStore(messagesStore);\n const toolCallsRef = fromStore(toolCallsStore);\n const interruptRef = fromStore(interruptStore);\n const interruptsRef = fromStore(interruptsStore);\n const historyListRef = fromStore(historyListStore);\n const isThreadLoadingRef = fromStore(isThreadLoadingStore);\n const experimentalBranchTreeRef = fromStore(experimentalBranchTreeStore);\n const subagentsRef = fromStore(subagentsStore);\n const activeSubagentsRef = fromStore(activeSubagentsStore);\n const queueEntriesRef = fromStore(queueEntriesStore);\n const queueSizeRef = fromStore(queueSizeStore);\n\n return {\n assistantId: options.assistantId,\n client,\n\n get values() {\n return valuesRef.current;\n },\n get error() {\n return errorRef.current;\n },\n get isLoading() {\n return isLoadingRef.current;\n },\n get isThreadLoading() {\n return isThreadLoadingRef.current;\n },\n\n get branch() {\n return branchRef.current;\n },\n setBranch(value: string) {\n orchestrator.setBranch(value);\n },\n\n get messages() {\n return messagesRef.current;\n },\n get toolCalls() {\n return toolCallsRef.current;\n },\n getToolCalls(message: Message) {\n return orchestrator.getToolCalls(message);\n },\n\n get interrupt() {\n return interruptRef.current;\n },\n get interrupts() {\n return interruptsRef.current;\n },\n\n get history() {\n return historyListRef.current;\n },\n get experimental_branchTree() {\n return experimentalBranchTreeRef.current;\n },\n\n getMessagesMetadata(\n message: Message,\n index?: number,\n ): MessageMetadata<StateType> | undefined {\n return orchestrator.getMessagesMetadata(message, index);\n },\n\n submit: (...args: Parameters<typeof orchestrator.submit>) =>\n orchestrator.submit(...args),\n stop: () => orchestrator.stop(),\n joinStream: (...args: Parameters<typeof orchestrator.joinStream>) =>\n orchestrator.joinStream(...args),\n\n queue: {\n get entries() {\n return queueEntriesRef.current;\n },\n get size() {\n return queueSizeRef.current;\n },\n cancel: (id: string) => orchestrator.cancelQueueItem(id),\n clear: () => orchestrator.clearQueue(),\n },\n\n switchThread(newThreadId: string | null) {\n orchestrator.switchThread(newThreadId);\n },\n\n get subagents() {\n return subagentsRef.current;\n },\n get activeSubagents() {\n return activeSubagentsRef.current;\n },\n getSubagent(toolCallId: string) {\n return orchestrator.getSubagent(toolCallId);\n },\n getSubagentsByType(type: string) {\n return orchestrator.getSubagentsByType(type);\n },\n getSubagentsByMessage(messageId: string) {\n return orchestrator.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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"}
1
+ {"version":3,"file":"index.cjs","names":["useStreamCustom","Client","StreamOrchestrator"],"sources":["../src/index.ts"],"sourcesContent":["import { writable, derived, fromStore } from \"svelte/store\";\nimport { onDestroy, onMount, setContext, getContext } from \"svelte\";\n\nimport type {\n ToolMessage as CoreToolMessage,\n AIMessage as CoreAIMessage,\n} from \"@langchain/core/messages\";\nimport {\n StreamOrchestrator,\n FetchStreamTransport,\n ensureMessageInstances,\n type MessageMetadata,\n type AnyStreamOptions,\n type ResolveStreamInterface,\n type ResolveStreamOptions,\n type InferBag,\n type InferStateType,\n type UseStreamCustomOptions,\n type WithClassMessages,\n} from \"@langchain/langgraph-sdk/ui\";\nimport {\n Client,\n type BagTemplate,\n type Message,\n type ToolCallWithResult as _ToolCallWithResult,\n type DefaultToolCall,\n} from \"@langchain/langgraph-sdk\";\nimport { useStreamCustom } from \"./stream.custom.js\";\n\nexport { FetchStreamTransport };\n\nconst STREAM_CONTEXT_KEY = Symbol.for(\"langchain:stream-context\");\n\n/**\n * Provides a `useStream` return value to all descendant components via\n * Svelte's context API. Must be called during component initialisation\n * (i.e. at the top level of a `<script>` block).\n *\n * @example\n * ```svelte\n * <script lang=\"ts\">\n * import { useStream, setStreamContext } from \"@langchain/svelte\";\n *\n * const stream = useStream({ assistantId: \"agent\", apiUrl: \"...\" });\n * setStreamContext(stream);\n * </script>\n *\n * <ChildComponent />\n * ```\n */\nexport function setStreamContext<T extends ReturnType<typeof useStream>>(\n stream: T\n): T {\n setContext(STREAM_CONTEXT_KEY, stream);\n return stream;\n}\n\n/**\n * Retrieves the `useStream` instance previously provided by a parent\n * component via {@link setStreamContext} or {@link provideStream}.\n * Must be called during component initialisation.\n *\n * @throws If no stream context has been set by an ancestor component.\n *\n * @example\n * ```svelte\n * <script lang=\"ts\">\n * import { getStreamContext } from \"@langchain/svelte\";\n *\n * const stream = getStreamContext();\n * </script>\n * ```\n */\nexport function getStreamContext<\n T = Record<string, unknown>,\n Bag extends BagTemplate = BagTemplate,\n>(): WithClassMessages<ResolveStreamInterface<T, InferBag<T, Bag>>> {\n const ctx = getContext(STREAM_CONTEXT_KEY);\n if (!ctx) {\n throw new Error(\n \"getStreamContext must be used within a component that has called setStreamContext\"\n );\n }\n return ctx as WithClassMessages<ResolveStreamInterface<T, InferBag<T, Bag>>>;\n}\n\n/**\n * Creates a shared `useStream` instance and makes it available to all\n * descendant components via Svelte's `setContext`/`getContext`.\n *\n * Call this in a parent component's `<script>` block. Children access\n * the shared stream via {@link getStream}.\n *\n * Uses the same context key as {@link setStreamContext}/{@link getStreamContext},\n * so both retrieval functions work interchangeably.\n *\n * @example\n * ```svelte\n * <!-- ChatContainer.svelte -->\n * <script lang=\"ts\">\n * import { provideStream } from \"@langchain/svelte\";\n *\n * provideStream({\n * assistantId: \"agent\",\n * apiUrl: \"http://localhost:2024\",\n * });\n * </script>\n *\n * <ChatHeader />\n * <MessageList />\n * <MessageInput />\n * ```\n *\n * @returns The stream instance (same as calling `useStream` directly).\n */\nexport function provideStream<\n T = Record<string, unknown>,\n Bag extends BagTemplate = BagTemplate,\n>(\n options:\n | ResolveStreamOptions<T, InferBag<T, Bag>>\n | UseStreamCustomOptions<InferStateType<T>, InferBag<T, Bag>>\n): ReturnType<typeof useStream<T, Bag>> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const stream = useStream<T, Bag>(options as any);\n setContext(STREAM_CONTEXT_KEY, stream);\n return stream;\n}\n\n/**\n * Retrieves the shared stream instance from the nearest ancestor that\n * called {@link provideStream} or {@link setStreamContext}.\n *\n * Throws if no ancestor has provided a stream.\n *\n * @example\n * ```svelte\n * <!-- MessageList.svelte -->\n * <script lang=\"ts\">\n * import { getStream } from \"@langchain/svelte\";\n *\n * const stream = getStream();\n * </script>\n *\n * {#each stream.messages as msg (msg.id)}\n * <div>{msg.content}</div>\n * {/each}\n * ```\n */\nexport function getStream<\n T = Record<string, unknown>,\n Bag extends BagTemplate = BagTemplate,\n>(): ReturnType<typeof useStream<T, Bag>> {\n const context = getContext(STREAM_CONTEXT_KEY);\n if (context == null) {\n throw new Error(\n \"getStream() requires a parent component to call provideStream(). \" +\n \"Add provideStream({ assistantId: '...' }) in an ancestor component.\"\n );\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return context as any;\n}\n\nexport type { ClassSubagentStreamInterface } from \"@langchain/langgraph-sdk/ui\";\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 const client = options.client ?? new Client({ apiUrl: options.apiUrl });\n\n const orchestrator = new StreamOrchestrator<StateType, Bag>(options, {\n getClient: () => client,\n getAssistantId: () => options.assistantId,\n getMessagesKey: () => options.messagesKey ?? \"messages\",\n });\n\n orchestrator.initThreadId(options.threadId ?? undefined);\n\n const version = writable(0);\n const unsubscribe = orchestrator.subscribe(() => {\n version.update((v) => v + 1);\n });\n\n let fetchController: AbortController | null = null;\n\n // Subagent reconstruction\n const shouldReconstructSubagents = derived(version, () => {\n const hvMessages = orchestrator.messages;\n if (!options.filterSubagentMessages) return false;\n if (orchestrator.isLoading || orchestrator.historyData.isLoading)\n return false;\n return hvMessages.length > 0;\n });\n\n const unsubReconstruct = shouldReconstructSubagents.subscribe(($should) => {\n if ($should) {\n fetchController?.abort();\n const controller = orchestrator.reconstructSubagentsIfNeeded();\n fetchController = controller;\n }\n });\n\n // Queue draining - must track isLoading specifically (not just version)\n // so the drain fires exactly when stream transitions from loading → idle\n const isLoadingForDrain = derived(version, () => orchestrator.isLoading);\n const unsubDrain = isLoadingForDrain.subscribe(() => {\n orchestrator.drainQueue();\n });\n\n // Auto-reconnect\n let { shouldReconnect } = orchestrator;\n\n onMount(() => {\n if (shouldReconnect) {\n const reconnected = orchestrator.tryReconnect();\n if (reconnected) shouldReconnect = false;\n }\n });\n\n onDestroy(() => {\n fetchController?.abort();\n unsubscribe();\n unsubReconstruct();\n unsubDrain();\n orchestrator.dispose();\n });\n\n // Derived stores\n const valuesStore = derived(version, () => {\n orchestrator.trackStreamMode(\"values\");\n return orchestrator.values;\n });\n const errorStore = derived(version, () => orchestrator.error);\n const isLoadingStore = derived(version, () => orchestrator.isLoading);\n const branchStore = derived(version, () => orchestrator.branch);\n const messagesStore = derived(version, () => {\n orchestrator.trackStreamMode(\"messages-tuple\", \"values\");\n return ensureMessageInstances(orchestrator.messages);\n });\n const toolCallsStore = derived(version, () => {\n orchestrator.trackStreamMode(\"messages-tuple\", \"values\");\n return orchestrator.toolCalls;\n });\n const interruptStore = derived(version, () => orchestrator.interrupt);\n const interruptsStore = derived(version, () => orchestrator.interrupts);\n const historyListStore = derived(version, () => orchestrator.flatHistory);\n const isThreadLoadingStore = derived(\n version,\n () => orchestrator.isThreadLoading\n );\n const experimentalBranchTreeStore = derived(\n version,\n () => orchestrator.experimental_branchTree\n );\n const subagentsStore = derived(version, () => {\n orchestrator.trackStreamMode(\"updates\", \"messages-tuple\");\n return orchestrator.subagents;\n });\n const activeSubagentsStore = derived(version, () => {\n orchestrator.trackStreamMode(\"updates\", \"messages-tuple\");\n return orchestrator.activeSubagents;\n });\n const queueEntriesStore = derived(version, () => orchestrator.queueEntries);\n const queueSizeStore = derived(version, () => orchestrator.queueSize);\n\n // fromStore adapters for Svelte 5\n const valuesRef = fromStore(valuesStore);\n const errorRef = fromStore(errorStore);\n const isLoadingRef = fromStore(isLoadingStore);\n const branchRef = fromStore(branchStore);\n const messagesRef = fromStore(messagesStore);\n const toolCallsRef = fromStore(toolCallsStore);\n const interruptRef = fromStore(interruptStore);\n const interruptsRef = fromStore(interruptsStore);\n const historyListRef = fromStore(historyListStore);\n const isThreadLoadingRef = fromStore(isThreadLoadingStore);\n const experimentalBranchTreeRef = fromStore(experimentalBranchTreeStore);\n const subagentsRef = fromStore(subagentsStore);\n const activeSubagentsRef = fromStore(activeSubagentsStore);\n const queueEntriesRef = fromStore(queueEntriesStore);\n const queueSizeRef = fromStore(queueSizeStore);\n\n return {\n assistantId: options.assistantId,\n client,\n\n get values() {\n return valuesRef.current;\n },\n get error() {\n return errorRef.current;\n },\n get isLoading() {\n return isLoadingRef.current;\n },\n get isThreadLoading() {\n return isThreadLoadingRef.current;\n },\n\n get branch() {\n return branchRef.current;\n },\n setBranch(value: string) {\n orchestrator.setBranch(value);\n },\n\n get messages() {\n return messagesRef.current;\n },\n get toolCalls() {\n return toolCallsRef.current;\n },\n getToolCalls(message: Message) {\n return orchestrator.getToolCalls(message);\n },\n\n get interrupt() {\n return interruptRef.current;\n },\n get interrupts() {\n return interruptsRef.current;\n },\n\n get history() {\n return historyListRef.current;\n },\n get experimental_branchTree() {\n return experimentalBranchTreeRef.current;\n },\n\n getMessagesMetadata(\n message: Message,\n index?: number\n ): MessageMetadata<StateType> | undefined {\n return orchestrator.getMessagesMetadata(message, index);\n },\n\n submit: (...args: Parameters<typeof orchestrator.submit>) =>\n orchestrator.submit(...args),\n stop: () => orchestrator.stop(),\n joinStream: (...args: Parameters<typeof orchestrator.joinStream>) =>\n orchestrator.joinStream(...args),\n\n queue: {\n get entries() {\n return queueEntriesRef.current;\n },\n get size() {\n return queueSizeRef.current;\n },\n cancel: (id: string) => orchestrator.cancelQueueItem(id),\n clear: () => orchestrator.clearQueue(),\n },\n\n switchThread(newThreadId: string | null) {\n orchestrator.switchThread(newThreadId);\n },\n\n get subagents() {\n return subagentsRef.current;\n },\n get activeSubagents() {\n return activeSubagentsRef.current;\n },\n getSubagent(toolCallId: string) {\n return orchestrator.getSubagent(toolCallId);\n },\n getSubagentsByType(type: string) {\n return orchestrator.getSubagentsByType(type);\n },\n getSubagentsByMessage(messageId: string) {\n return orchestrator.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,5 +1,5 @@
1
- import { AIMessage, BaseMessage, ToolMessage } from "@langchain/core/messages";
2
- import { AcceptBaseMessages, AgentTypeConfigLike, BaseStream, BaseSubagentState, CompiledSubAgentLike, DeepAgentTypeConfigLike, DefaultSubagentStates, ExtractAgentConfig, ExtractDeepAgentConfig, ExtractSubAgentMiddleware, FetchStreamTransport, GetToolCallsType, HistoryWithBaseMessages, 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";
1
+ import { AIMessage, ToolMessage } from "@langchain/core/messages";
2
+ import { AgentTypeConfigLike, BaseStream, BaseSubagentState, ClassSubagentStreamInterface, 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, QueueEntry, QueueInterface, ResolveStreamInterface, ResolveStreamInterface as ResolveStreamInterface$1, ResolveStreamOptions, ResolveStreamOptions as ResolveStreamOptions$1, SubAgentLike, SubagentApi, SubagentManager, SubagentStateMap, SubagentStatus, SubagentStream, SubagentStreamInterface, SubagentToolCall, UseAgentStream, UseAgentStreamOptions, UseDeepAgentStream, UseDeepAgentStreamOptions, UseStreamCustomOptions, UseStreamCustomOptions as UseStreamCustomOptions$1, UseStreamOptions, UseStreamThread, UseStreamTransport, WithClassMessages, calculateDepthFromNamespace, extractParentIdFromNamespace, extractToolCallIdFromNamespace, isSubagentNamespace } from "@langchain/langgraph-sdk/ui";
3
3
  import { BagTemplate, DefaultToolCall, DefaultToolCall as DefaultToolCall$1, ToolCallFromTool, ToolCallState, ToolCallWithResult as ToolCallWithResult$1, ToolCallsFromTools } from "@langchain/langgraph-sdk";
4
4
 
5
5
  //#region src/index.d.ts
@@ -89,35 +89,9 @@ declare function provideStream<T = Record<string, unknown>, Bag extends BagTempl
89
89
  * ```
90
90
  */
91
91
  declare function getStream<T = Record<string, unknown>, Bag extends BagTemplate = BagTemplate>(): ReturnType<typeof useStream<T, Bag>>;
92
- type ClassToolCallWithResult<T> = T extends ToolCallWithResult$1<infer TC, unknown, unknown> ? ToolCallWithResult$1<TC, ToolMessage, AIMessage> : T;
93
- type ClassSubagentStreamInterface<StateType = Record<string, unknown>, ToolCall = DefaultToolCall$1, SubagentName extends string = string> = Omit<SubagentStreamInterface$1<StateType, ToolCall, SubagentName>, "messages"> & {
94
- messages: BaseMessage[];
95
- };
96
- /**
97
- * Maps a stream interface to Svelte 5-reactive types:
98
- * - `messages` becomes `BaseMessage[]`
99
- * - `getMessagesMetadata` accepts `BaseMessage`
100
- * - `toolCalls` uses `@langchain/core` message classes
101
- * - `getToolCalls` accepts `CoreAIMessage`, returns class-based tool call results
102
- * - `queue` properties are plain values and functions
103
- * - `client`, `assistantId`, `subagents`, `activeSubagents` remain unwrapped
104
- * - Functions remain unchanged
105
- * - All other reactive properties are exposed as plain values via getters
106
- */
107
- type WithClassMessages<T> = { [K in keyof T as K extends "getSubagent" | "getSubagentsByType" | "getSubagentsByMessage" ? never : K]: K extends "messages" ? BaseMessage[] : K extends "getMessagesMetadata" ? (message: BaseMessage, index?: number) => MessageMetadata$1<Record<string, unknown>> | undefined : K extends "toolCalls" ? T[K] extends (infer TC)[] ? ClassToolCallWithResult<TC>[] : 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 : 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] : K extends "history" ? HistoryWithBaseMessages<T[K]> : T[K] extends ((...args: infer A) => infer R) ? (...args: A) => R : T[K] } & ("subagents" extends keyof T ? {
108
- getSubagent: T extends {
109
- getSubagent: (id: string) => SubagentStreamInterface$1<infer S, infer TC, infer N> | undefined;
110
- } ? (toolCallId: string) => ClassSubagentStreamInterface<S, TC, N> | undefined : never;
111
- getSubagentsByType: T extends {
112
- getSubagentsByType: (type: string) => SubagentStreamInterface$1<infer S, infer TC, infer N>[];
113
- } ? (type: string) => ClassSubagentStreamInterface<S, TC, N>[] : never;
114
- getSubagentsByMessage: T extends {
115
- getSubagentsByMessage: (id: string) => SubagentStreamInterface$1<infer S, infer TC, infer N>[];
116
- } ? (messageId: string) => ClassSubagentStreamInterface<S, TC, N>[] : never;
117
- } : unknown);
118
92
  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>>>;
119
93
  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>>>;
120
94
  type ToolCallWithResult<ToolCall = DefaultToolCall$1> = ToolCallWithResult$1<ToolCall, ToolMessage, AIMessage>;
121
95
  //#endregion
122
- 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, getStream, getStreamContext, isSubagentNamespace, provideStream, setStreamContext, useStream };
96
+ export { type AgentTypeConfigLike, type BaseStream, type BaseSubagentState, type 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, getStream, getStreamContext, isSubagentNamespace, provideStream, setStreamContext, useStream };
123
97
  //# sourceMappingURL=index.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.cts","names":[],"sources":["../src/index.ts"],"mappings":";;;;;;AAqDA;;;;;;;;;;;;;;;;iBAAgB,gBAAA,WAA2B,UAAA,QAAkB,SAAA,EAAA,CAC3D,MAAA,EAAQ,CAAA,GACP,CAAA;AAqBH;;;;;;;;;;;;;;;;AAAA,iBAAgB,gBAAA,KACV,MAAA,+BACQ,WAAA,GAAc,WAAA,CAAA,CAAA,GACvB,iBAAA,CAAkB,wBAAA,CAAuB,CAAA,EAAG,UAAA,CAAS,CAAA,EAAG,GAAA;;;;;;;;;;;AAuC7D;;;;;;;;;;;;;;;;;;;iBAAgB,aAAA,KACV,MAAA,+BACQ,WAAA,GAAc,WAAA,CAAA,CAE1B,OAAA,EACI,sBAAA,CAAqB,CAAA,EAAG,UAAA,CAAS,CAAA,EAAG,GAAA,KACpC,wBAAA,CAAuB,gBAAA,CAAe,CAAA,GAAI,UAAA,CAAS,CAAA,EAAG,GAAA,KACzD,UAAA,QAAkB,SAAA,CAAU,CAAA,EAAG,GAAA;;;;;;;;;;;;;;;;;;;;;iBA2BlB,SAAA,KACV,MAAA,+BACQ,WAAA,GAAc,WAAA,CAAA,CAAA,GACvB,UAAA,QAAkB,SAAA,CAAU,CAAA,EAAG,GAAA;AAAA,KAY/B,uBAAA,MACH,CAAA,SAAU,oBAAA,+BACN,oBAAA,CAAoB,EAAA,EAAI,WAAA,EAAiB,SAAA,IACzC,CAAA;AAAA,KAEM,4BAAA,aACE,MAAA,8BACD,iBAAA,0CAET,IAAA,CACF,yBAAA,CAAwB,SAAA,EAAW,QAAA,EAAU,YAAA;EAG7C,QAAA,EAAU,WAAA;AAAA;;AA5BZ;;;;;;;;;;KA0CK,iBAAA,oBACS,CAAA,IAAK,CAAA,kFAKb,CAAA,GAAI,CAAA,sBACJ,WAAA,KACA,CAAA,kCAEI,OAAA,EAAS,WAAA,EACT,KAAA,cACG,iBAAA,CAAgB,MAAA,iCACrB,CAAA,uBACE,CAAA,CAAE,CAAA,yBACA,uBAAA,CAAwB,EAAA,MACxB,CAAA,CAAE,CAAA,IACJ,CAAA,0BACE,CAAA,CAAE,CAAA,YAAY,OAAA,gCACX,OAAA,EAAS,SAAA,KAAkB,uBAAA,CAAwB,EAAA,MACpD,CAAA,CAAE,CAAA,IACJ,CAAA,kCAEiB,CAAA,CAAE,CAAA,IAAK,CAAA,CAAE,CAAA,EAAG,EAAA,eACpB,IAAA,6BAEG,IAAA,EAAM,CAAA,KAAM,CAAA,GAChB,CAAA,CAAE,CAAA,EAAG,EAAA,MAEX,CAAA,oCACE,CAAA,CAAE,CAAA,IACF,CAAA,uBACE,CAAA,CAAE,CAAA,UAAW,GAAA,SAEX,yBAAA,gCAEA,GAAA,SAAY,4BAAA,CAA6B,CAAA,EAAG,EAAA,EAAI,CAAA,KAChD,CAAA,CAAE,CAAA,IACJ,CAAA,6BACE,CAAA,CAAE,CAAA,UAAW,yBAAA,iCAKX,4BAAA,CAA6B,CAAA,EAAG,EAAA,EAAI,CAAA,MACpC,CAAA,CAAE,CAAA,IACJ,CAAA,oBACE,CAAA,CAAE,CAAA,YACA,MAAA,WACA,OAAA,6BAGE,MAAA,EACI,kBAAA,CAAmB,OAAA,CAAQ,CAAA,yCAG/B,OAAA,GAAU,CAAA,KACP,GAAA,GACL,CAAA,CAAE,CAAA,IACJ,CAAA,qBACE,uBAAA,CAAwB,CAAA,CAAE,CAAA,KAC1B,CAAA,CAAE,CAAA,eAAe,IAAA,6BACX,IAAA,EAAM,CAAA,KAAM,CAAA,GAChB,CAAA,CAAE,CAAA,iCACG,CAAA;EAEzB,WAAA,EAAa,CAAA;IACX,WAAA,GACE,EAAA,aACG,yBAAA;EAAA,KAGD,UAAA,aACG,4BAAA,CAA6B,CAAA,EAAG,EAAA,EAAI,CAAA;EAE7C,kBAAA,EAAoB,CAAA;IAClB,kBAAA,GACE,IAAA,aACG,yBAAA;EAAA,KAEF,IAAA,aAAiB,4BAAA,CAA6B,CAAA,EAAG,EAAA,EAAI,CAAA;EAE1D,qBAAA,EAAuB,CAAA;IACrB,qBAAA,GACE,EAAA,aACG,yBAAA;EAAA,KAEF,SAAA,aAAsB,4BAAA,CAA6B,CAAA,EAAG,EAAA,EAAI,CAAA;AAAA;AAAA,iBAKrD,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,KAgR/C,kBAAA,YAA8B,iBAAA,IACxC,oBAAA,CAAoB,QAAA,EAAU,WAAA,EAAiB,SAAA"}
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../src/index.ts"],"mappings":";;;;;;AAkDA;;;;;;;;;;;;;;;;iBAAgB,gBAAA,WAA2B,UAAA,QAAkB,SAAA,EAAA,CAC3D,MAAA,EAAQ,CAAA,GACP,CAAA;AAqBH;;;;;;;;;;;;;;;;AAAA,iBAAgB,gBAAA,KACV,MAAA,+BACQ,WAAA,GAAc,WAAA,CAAA,CAAA,GACvB,iBAAA,CAAkB,wBAAA,CAAuB,CAAA,EAAG,UAAA,CAAS,CAAA,EAAG,GAAA;;;;;;;;;;;AAuC7D;;;;;;;;;;;;;;;;;;;iBAAgB,aAAA,KACV,MAAA,+BACQ,WAAA,GAAc,WAAA,CAAA,CAE1B,OAAA,EACI,sBAAA,CAAqB,CAAA,EAAG,UAAA,CAAS,CAAA,EAAG,GAAA,KACpC,wBAAA,CAAuB,gBAAA,CAAe,CAAA,GAAI,UAAA,CAAS,CAAA,EAAG,GAAA,KACzD,UAAA,QAAkB,SAAA,CAAU,CAAA,EAAG,GAAA;;;;;;;;;;;;;;;;;;;;;iBA2BlB,SAAA,KACV,MAAA,+BACQ,WAAA,GAAc,WAAA,CAAA,CAAA,GACvB,UAAA,QAAkB,SAAA,CAAU,CAAA,EAAG,GAAA;AAAA,iBAcpB,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,KAgR/C,kBAAA,YAA8B,iBAAA,IACxC,oBAAA,CAAoB,QAAA,EAAU,WAAA,EAAiB,SAAA"}
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
- import { AcceptBaseMessages, AgentTypeConfigLike, BaseStream, BaseSubagentState, CompiledSubAgentLike, DeepAgentTypeConfigLike, DefaultSubagentStates, ExtractAgentConfig, ExtractDeepAgentConfig, ExtractSubAgentMiddleware, FetchStreamTransport, GetToolCallsType, HistoryWithBaseMessages, 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";
1
+ import { AgentTypeConfigLike, BaseStream, BaseSubagentState, ClassSubagentStreamInterface, 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, QueueEntry, QueueInterface, ResolveStreamInterface, ResolveStreamInterface as ResolveStreamInterface$1, ResolveStreamOptions, ResolveStreamOptions as ResolveStreamOptions$1, SubAgentLike, SubagentApi, SubagentManager, SubagentStateMap, SubagentStatus, SubagentStream, SubagentStreamInterface, SubagentToolCall, UseAgentStream, UseAgentStreamOptions, UseDeepAgentStream, UseDeepAgentStreamOptions, UseStreamCustomOptions, UseStreamCustomOptions as UseStreamCustomOptions$1, UseStreamOptions, UseStreamThread, UseStreamTransport, WithClassMessages, calculateDepthFromNamespace, extractParentIdFromNamespace, extractToolCallIdFromNamespace, isSubagentNamespace } from "@langchain/langgraph-sdk/ui";
2
2
  import { BagTemplate, DefaultToolCall, DefaultToolCall as DefaultToolCall$1, ToolCallFromTool, ToolCallState, ToolCallWithResult as ToolCallWithResult$1, ToolCallsFromTools } from "@langchain/langgraph-sdk";
3
- import { AIMessage, BaseMessage, ToolMessage } from "@langchain/core/messages";
3
+ import { AIMessage, ToolMessage } from "@langchain/core/messages";
4
4
 
5
5
  //#region src/index.d.ts
6
6
  /**
@@ -89,35 +89,9 @@ declare function provideStream<T = Record<string, unknown>, Bag extends BagTempl
89
89
  * ```
90
90
  */
91
91
  declare function getStream<T = Record<string, unknown>, Bag extends BagTemplate = BagTemplate>(): ReturnType<typeof useStream<T, Bag>>;
92
- type ClassToolCallWithResult<T> = T extends ToolCallWithResult$1<infer TC, unknown, unknown> ? ToolCallWithResult$1<TC, ToolMessage, AIMessage> : T;
93
- type ClassSubagentStreamInterface<StateType = Record<string, unknown>, ToolCall = DefaultToolCall$1, SubagentName extends string = string> = Omit<SubagentStreamInterface$1<StateType, ToolCall, SubagentName>, "messages"> & {
94
- messages: BaseMessage[];
95
- };
96
- /**
97
- * Maps a stream interface to Svelte 5-reactive types:
98
- * - `messages` becomes `BaseMessage[]`
99
- * - `getMessagesMetadata` accepts `BaseMessage`
100
- * - `toolCalls` uses `@langchain/core` message classes
101
- * - `getToolCalls` accepts `CoreAIMessage`, returns class-based tool call results
102
- * - `queue` properties are plain values and functions
103
- * - `client`, `assistantId`, `subagents`, `activeSubagents` remain unwrapped
104
- * - Functions remain unchanged
105
- * - All other reactive properties are exposed as plain values via getters
106
- */
107
- type WithClassMessages<T> = { [K in keyof T as K extends "getSubagent" | "getSubagentsByType" | "getSubagentsByMessage" ? never : K]: K extends "messages" ? BaseMessage[] : K extends "getMessagesMetadata" ? (message: BaseMessage, index?: number) => MessageMetadata$1<Record<string, unknown>> | undefined : K extends "toolCalls" ? T[K] extends (infer TC)[] ? ClassToolCallWithResult<TC>[] : 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 : 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] : K extends "history" ? HistoryWithBaseMessages<T[K]> : T[K] extends ((...args: infer A) => infer R) ? (...args: A) => R : T[K] } & ("subagents" extends keyof T ? {
108
- getSubagent: T extends {
109
- getSubagent: (id: string) => SubagentStreamInterface$1<infer S, infer TC, infer N> | undefined;
110
- } ? (toolCallId: string) => ClassSubagentStreamInterface<S, TC, N> | undefined : never;
111
- getSubagentsByType: T extends {
112
- getSubagentsByType: (type: string) => SubagentStreamInterface$1<infer S, infer TC, infer N>[];
113
- } ? (type: string) => ClassSubagentStreamInterface<S, TC, N>[] : never;
114
- getSubagentsByMessage: T extends {
115
- getSubagentsByMessage: (id: string) => SubagentStreamInterface$1<infer S, infer TC, infer N>[];
116
- } ? (messageId: string) => ClassSubagentStreamInterface<S, TC, N>[] : never;
117
- } : unknown);
118
92
  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>>>;
119
93
  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>>>;
120
94
  type ToolCallWithResult<ToolCall = DefaultToolCall$1> = ToolCallWithResult$1<ToolCall, ToolMessage, AIMessage>;
121
95
  //#endregion
122
- 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, getStream, getStreamContext, isSubagentNamespace, provideStream, setStreamContext, useStream };
96
+ export { type AgentTypeConfigLike, type BaseStream, type BaseSubagentState, type 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, getStream, getStreamContext, isSubagentNamespace, provideStream, setStreamContext, useStream };
123
97
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../src/index.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../src/index.ts"],"mappings":";;;;;;AAkDA;;;;;;;;;;;;;;;;iBAAgB,gBAAA,WAA2B,UAAA,QAAkB,SAAA,EAAA,CAC3D,MAAA,EAAQ,CAAA,GACP,CAAA;AAqBH;;;;;;;;;;;;;;;;AAAA,iBAAgB,gBAAA,KACV,MAAA,+BACQ,WAAA,GAAc,WAAA,CAAA,CAAA,GACvB,iBAAA,CAAkB,wBAAA,CAAuB,CAAA,EAAG,UAAA,CAAS,CAAA,EAAG,GAAA;;;;;;;;;;;AAuC7D;;;;;;;;;;;;;;;;;;;iBAAgB,aAAA,KACV,MAAA,+BACQ,WAAA,GAAc,WAAA,CAAA,CAE1B,OAAA,EACI,sBAAA,CAAqB,CAAA,EAAG,UAAA,CAAS,CAAA,EAAG,GAAA,KACpC,wBAAA,CAAuB,gBAAA,CAAe,CAAA,GAAI,UAAA,CAAS,CAAA,EAAG,GAAA,KACzD,UAAA,QAAkB,SAAA,CAAU,CAAA,EAAG,GAAA;;;;;;;;;;;;;;;;;;;;;iBA2BlB,SAAA,KACV,MAAA,+BACQ,WAAA,GAAc,WAAA,CAAA,CAAA,GACvB,UAAA,QAAkB,SAAA,CAAU,CAAA,EAAG,GAAA;AAAA,iBAcpB,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,KAgR/C,kBAAA,YAA8B,iBAAA,IACxC,oBAAA,CAAoB,QAAA,EAAU,WAAA,EAAiB,SAAA"}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../src/index.ts"],"sourcesContent":["import { writable, derived, fromStore } from \"svelte/store\";\nimport { onDestroy, onMount, setContext, getContext } from \"svelte\";\n\nimport type {\n BaseMessage,\n ToolMessage as CoreToolMessage,\n AIMessage as CoreAIMessage,\n} from \"@langchain/core/messages\";\nimport {\n StreamOrchestrator,\n FetchStreamTransport,\n ensureMessageInstances,\n type MessageMetadata,\n type AnyStreamOptions,\n type ResolveStreamInterface,\n type ResolveStreamOptions,\n type InferBag,\n type InferStateType,\n type AcceptBaseMessages,\n type UseStreamCustomOptions,\n type SubagentStreamInterface,\n type HistoryWithBaseMessages,\n} from \"@langchain/langgraph-sdk/ui\";\nimport {\n Client,\n type BagTemplate,\n type Message,\n type ToolCallWithResult as _ToolCallWithResult,\n type DefaultToolCall,\n} from \"@langchain/langgraph-sdk\";\nimport { useStreamCustom } from \"./stream.custom.js\";\n\nexport { FetchStreamTransport };\n\nconst STREAM_CONTEXT_KEY = Symbol.for(\"langchain:stream-context\");\n\n/**\n * Provides a `useStream` return value to all descendant components via\n * Svelte's context API. Must be called during component initialisation\n * (i.e. at the top level of a `<script>` block).\n *\n * @example\n * ```svelte\n * <script lang=\"ts\">\n * import { useStream, setStreamContext } from \"@langchain/svelte\";\n *\n * const stream = useStream({ assistantId: \"agent\", apiUrl: \"...\" });\n * setStreamContext(stream);\n * </script>\n *\n * <ChildComponent />\n * ```\n */\nexport function setStreamContext<T extends ReturnType<typeof useStream>>(\n stream: T,\n): T {\n setContext(STREAM_CONTEXT_KEY, stream);\n return stream;\n}\n\n/**\n * Retrieves the `useStream` instance previously provided by a parent\n * component via {@link setStreamContext} or {@link provideStream}.\n * Must be called during component initialisation.\n *\n * @throws If no stream context has been set by an ancestor component.\n *\n * @example\n * ```svelte\n * <script lang=\"ts\">\n * import { getStreamContext } from \"@langchain/svelte\";\n *\n * const stream = getStreamContext();\n * </script>\n * ```\n */\nexport function getStreamContext<\n T = Record<string, unknown>,\n Bag extends BagTemplate = BagTemplate,\n>(): WithClassMessages<ResolveStreamInterface<T, InferBag<T, Bag>>> {\n const ctx = getContext(STREAM_CONTEXT_KEY);\n if (!ctx) {\n throw new Error(\n \"getStreamContext must be used within a component that has called setStreamContext\",\n );\n }\n return ctx as WithClassMessages<ResolveStreamInterface<T, InferBag<T, Bag>>>;\n}\n\n/**\n * Creates a shared `useStream` instance and makes it available to all\n * descendant components via Svelte's `setContext`/`getContext`.\n *\n * Call this in a parent component's `<script>` block. Children access\n * the shared stream via {@link getStream}.\n *\n * Uses the same context key as {@link setStreamContext}/{@link getStreamContext},\n * so both retrieval functions work interchangeably.\n *\n * @example\n * ```svelte\n * <!-- ChatContainer.svelte -->\n * <script lang=\"ts\">\n * import { provideStream } from \"@langchain/svelte\";\n *\n * provideStream({\n * assistantId: \"agent\",\n * apiUrl: \"http://localhost:2024\",\n * });\n * </script>\n *\n * <ChatHeader />\n * <MessageList />\n * <MessageInput />\n * ```\n *\n * @returns The stream instance (same as calling `useStream` directly).\n */\nexport function provideStream<\n T = Record<string, unknown>,\n Bag extends BagTemplate = BagTemplate,\n>(\n options:\n | ResolveStreamOptions<T, InferBag<T, Bag>>\n | UseStreamCustomOptions<InferStateType<T>, InferBag<T, Bag>>,\n): ReturnType<typeof useStream<T, Bag>> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const stream = useStream<T, Bag>(options as any);\n setContext(STREAM_CONTEXT_KEY, stream);\n return stream;\n}\n\n/**\n * Retrieves the shared stream instance from the nearest ancestor that\n * called {@link provideStream} or {@link setStreamContext}.\n *\n * Throws if no ancestor has provided a stream.\n *\n * @example\n * ```svelte\n * <!-- MessageList.svelte -->\n * <script lang=\"ts\">\n * import { getStream } from \"@langchain/svelte\";\n *\n * const stream = getStream();\n * </script>\n *\n * {#each stream.messages as msg (msg.id)}\n * <div>{msg.content}</div>\n * {/each}\n * ```\n */\nexport function getStream<\n T = Record<string, unknown>,\n Bag extends BagTemplate = BagTemplate,\n>(): ReturnType<typeof useStream<T, Bag>> {\n const context = getContext(STREAM_CONTEXT_KEY);\n if (context == null) {\n throw new Error(\n \"getStream() requires a parent component to call provideStream(). \" +\n \"Add provideStream({ assistantId: '...' }) in an ancestor component.\",\n );\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return context as any;\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 5-reactive types:\n * - `messages` becomes `BaseMessage[]`\n * - `getMessagesMetadata` accepts `BaseMessage`\n * - `toolCalls` uses `@langchain/core` message classes\n * - `getToolCalls` accepts `CoreAIMessage`, returns class-based tool call results\n * - `queue` properties are plain values and functions\n * - `client`, `assistantId`, `subagents`, `activeSubagents` remain unwrapped\n * - Functions remain unchanged\n * - All other reactive properties are exposed as plain values via getters\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 ? 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 ? ClassToolCallWithResult<TC>[]\n : 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 : 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 : K extends \"history\"\n ? HistoryWithBaseMessages<T[K]>\n : T[K] extends (...args: infer A) => infer R\n ? (...args: A) => R\n : 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 const client = options.client ?? new Client({ apiUrl: options.apiUrl });\n\n const orchestrator = new StreamOrchestrator<StateType, Bag>(options, {\n getClient: () => client,\n getAssistantId: () => options.assistantId,\n getMessagesKey: () => options.messagesKey ?? \"messages\",\n });\n\n orchestrator.initThreadId(options.threadId ?? undefined);\n\n const version = writable(0);\n const unsubscribe = orchestrator.subscribe(() => {\n version.update((v) => v + 1);\n });\n\n let fetchController: AbortController | null = null;\n\n // Subagent reconstruction\n const shouldReconstructSubagents = derived(version, () => {\n const hvMessages = orchestrator.messages;\n if (!options.filterSubagentMessages) return false;\n if (orchestrator.isLoading || orchestrator.historyData.isLoading)\n return false;\n return hvMessages.length > 0;\n });\n\n const unsubReconstruct = shouldReconstructSubagents.subscribe(($should) => {\n if ($should) {\n fetchController?.abort();\n const controller = orchestrator.reconstructSubagentsIfNeeded();\n fetchController = controller;\n }\n });\n\n // Queue draining - must track isLoading specifically (not just version)\n // so the drain fires exactly when stream transitions from loading → idle\n const isLoadingForDrain = derived(version, () => orchestrator.isLoading);\n const unsubDrain = isLoadingForDrain.subscribe(() => {\n orchestrator.drainQueue();\n });\n\n // Auto-reconnect\n let { shouldReconnect } = orchestrator;\n\n onMount(() => {\n if (shouldReconnect) {\n const reconnected = orchestrator.tryReconnect();\n if (reconnected) shouldReconnect = false;\n }\n });\n\n onDestroy(() => {\n fetchController?.abort();\n unsubscribe();\n unsubReconstruct();\n unsubDrain();\n orchestrator.dispose();\n });\n\n // Derived stores\n const valuesStore = derived(version, () => {\n orchestrator.trackStreamMode(\"values\");\n return orchestrator.values;\n });\n const errorStore = derived(version, () => orchestrator.error);\n const isLoadingStore = derived(version, () => orchestrator.isLoading);\n const branchStore = derived(version, () => orchestrator.branch);\n const messagesStore = derived(version, () => {\n orchestrator.trackStreamMode(\"messages-tuple\", \"values\");\n return ensureMessageInstances(orchestrator.messages);\n });\n const toolCallsStore = derived(version, () => {\n orchestrator.trackStreamMode(\"messages-tuple\", \"values\");\n return orchestrator.toolCalls;\n });\n const interruptStore = derived(version, () => orchestrator.interrupt);\n const interruptsStore = derived(version, () => orchestrator.interrupts);\n const historyListStore = derived(version, () => orchestrator.flatHistory);\n const isThreadLoadingStore = derived(\n version,\n () => orchestrator.isThreadLoading,\n );\n const experimentalBranchTreeStore = derived(\n version,\n () => orchestrator.experimental_branchTree,\n );\n const subagentsStore = derived(version, () => {\n orchestrator.trackStreamMode(\"updates\", \"messages-tuple\");\n return orchestrator.subagents;\n });\n const activeSubagentsStore = derived(version, () => {\n orchestrator.trackStreamMode(\"updates\", \"messages-tuple\");\n return orchestrator.activeSubagents;\n });\n const queueEntriesStore = derived(version, () => orchestrator.queueEntries);\n const queueSizeStore = derived(version, () => orchestrator.queueSize);\n\n // fromStore adapters for Svelte 5\n const valuesRef = fromStore(valuesStore);\n const errorRef = fromStore(errorStore);\n const isLoadingRef = fromStore(isLoadingStore);\n const branchRef = fromStore(branchStore);\n const messagesRef = fromStore(messagesStore);\n const toolCallsRef = fromStore(toolCallsStore);\n const interruptRef = fromStore(interruptStore);\n const interruptsRef = fromStore(interruptsStore);\n const historyListRef = fromStore(historyListStore);\n const isThreadLoadingRef = fromStore(isThreadLoadingStore);\n const experimentalBranchTreeRef = fromStore(experimentalBranchTreeStore);\n const subagentsRef = fromStore(subagentsStore);\n const activeSubagentsRef = fromStore(activeSubagentsStore);\n const queueEntriesRef = fromStore(queueEntriesStore);\n const queueSizeRef = fromStore(queueSizeStore);\n\n return {\n assistantId: options.assistantId,\n client,\n\n get values() {\n return valuesRef.current;\n },\n get error() {\n return errorRef.current;\n },\n get isLoading() {\n return isLoadingRef.current;\n },\n get isThreadLoading() {\n return isThreadLoadingRef.current;\n },\n\n get branch() {\n return branchRef.current;\n },\n setBranch(value: string) {\n orchestrator.setBranch(value);\n },\n\n get messages() {\n return messagesRef.current;\n },\n get toolCalls() {\n return toolCallsRef.current;\n },\n getToolCalls(message: Message) {\n return orchestrator.getToolCalls(message);\n },\n\n get interrupt() {\n return interruptRef.current;\n },\n get interrupts() {\n return interruptsRef.current;\n },\n\n get history() {\n return historyListRef.current;\n },\n get experimental_branchTree() {\n return experimentalBranchTreeRef.current;\n },\n\n getMessagesMetadata(\n message: Message,\n index?: number,\n ): MessageMetadata<StateType> | undefined {\n return orchestrator.getMessagesMetadata(message, index);\n },\n\n submit: (...args: Parameters<typeof orchestrator.submit>) =>\n orchestrator.submit(...args),\n stop: () => orchestrator.stop(),\n joinStream: (...args: Parameters<typeof orchestrator.joinStream>) =>\n orchestrator.joinStream(...args),\n\n queue: {\n get entries() {\n return queueEntriesRef.current;\n },\n get size() {\n return queueSizeRef.current;\n },\n cancel: (id: string) => orchestrator.cancelQueueItem(id),\n clear: () => orchestrator.clearQueue(),\n },\n\n switchThread(newThreadId: string | null) {\n orchestrator.switchThread(newThreadId);\n },\n\n get subagents() {\n return subagentsRef.current;\n },\n get activeSubagents() {\n return activeSubagentsRef.current;\n },\n getSubagent(toolCallId: string) {\n return orchestrator.getSubagent(toolCallId);\n },\n getSubagentsByType(type: string) {\n return orchestrator.getSubagentsByType(type);\n },\n getSubagentsByMessage(messageId: string) {\n return orchestrator.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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"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../src/index.ts"],"sourcesContent":["import { writable, derived, fromStore } from \"svelte/store\";\nimport { onDestroy, onMount, setContext, getContext } from \"svelte\";\n\nimport type {\n ToolMessage as CoreToolMessage,\n AIMessage as CoreAIMessage,\n} from \"@langchain/core/messages\";\nimport {\n StreamOrchestrator,\n FetchStreamTransport,\n ensureMessageInstances,\n type MessageMetadata,\n type AnyStreamOptions,\n type ResolveStreamInterface,\n type ResolveStreamOptions,\n type InferBag,\n type InferStateType,\n type UseStreamCustomOptions,\n type WithClassMessages,\n} from \"@langchain/langgraph-sdk/ui\";\nimport {\n Client,\n type BagTemplate,\n type Message,\n type ToolCallWithResult as _ToolCallWithResult,\n type DefaultToolCall,\n} from \"@langchain/langgraph-sdk\";\nimport { useStreamCustom } from \"./stream.custom.js\";\n\nexport { FetchStreamTransport };\n\nconst STREAM_CONTEXT_KEY = Symbol.for(\"langchain:stream-context\");\n\n/**\n * Provides a `useStream` return value to all descendant components via\n * Svelte's context API. Must be called during component initialisation\n * (i.e. at the top level of a `<script>` block).\n *\n * @example\n * ```svelte\n * <script lang=\"ts\">\n * import { useStream, setStreamContext } from \"@langchain/svelte\";\n *\n * const stream = useStream({ assistantId: \"agent\", apiUrl: \"...\" });\n * setStreamContext(stream);\n * </script>\n *\n * <ChildComponent />\n * ```\n */\nexport function setStreamContext<T extends ReturnType<typeof useStream>>(\n stream: T\n): T {\n setContext(STREAM_CONTEXT_KEY, stream);\n return stream;\n}\n\n/**\n * Retrieves the `useStream` instance previously provided by a parent\n * component via {@link setStreamContext} or {@link provideStream}.\n * Must be called during component initialisation.\n *\n * @throws If no stream context has been set by an ancestor component.\n *\n * @example\n * ```svelte\n * <script lang=\"ts\">\n * import { getStreamContext } from \"@langchain/svelte\";\n *\n * const stream = getStreamContext();\n * </script>\n * ```\n */\nexport function getStreamContext<\n T = Record<string, unknown>,\n Bag extends BagTemplate = BagTemplate,\n>(): WithClassMessages<ResolveStreamInterface<T, InferBag<T, Bag>>> {\n const ctx = getContext(STREAM_CONTEXT_KEY);\n if (!ctx) {\n throw new Error(\n \"getStreamContext must be used within a component that has called setStreamContext\"\n );\n }\n return ctx as WithClassMessages<ResolveStreamInterface<T, InferBag<T, Bag>>>;\n}\n\n/**\n * Creates a shared `useStream` instance and makes it available to all\n * descendant components via Svelte's `setContext`/`getContext`.\n *\n * Call this in a parent component's `<script>` block. Children access\n * the shared stream via {@link getStream}.\n *\n * Uses the same context key as {@link setStreamContext}/{@link getStreamContext},\n * so both retrieval functions work interchangeably.\n *\n * @example\n * ```svelte\n * <!-- ChatContainer.svelte -->\n * <script lang=\"ts\">\n * import { provideStream } from \"@langchain/svelte\";\n *\n * provideStream({\n * assistantId: \"agent\",\n * apiUrl: \"http://localhost:2024\",\n * });\n * </script>\n *\n * <ChatHeader />\n * <MessageList />\n * <MessageInput />\n * ```\n *\n * @returns The stream instance (same as calling `useStream` directly).\n */\nexport function provideStream<\n T = Record<string, unknown>,\n Bag extends BagTemplate = BagTemplate,\n>(\n options:\n | ResolveStreamOptions<T, InferBag<T, Bag>>\n | UseStreamCustomOptions<InferStateType<T>, InferBag<T, Bag>>\n): ReturnType<typeof useStream<T, Bag>> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const stream = useStream<T, Bag>(options as any);\n setContext(STREAM_CONTEXT_KEY, stream);\n return stream;\n}\n\n/**\n * Retrieves the shared stream instance from the nearest ancestor that\n * called {@link provideStream} or {@link setStreamContext}.\n *\n * Throws if no ancestor has provided a stream.\n *\n * @example\n * ```svelte\n * <!-- MessageList.svelte -->\n * <script lang=\"ts\">\n * import { getStream } from \"@langchain/svelte\";\n *\n * const stream = getStream();\n * </script>\n *\n * {#each stream.messages as msg (msg.id)}\n * <div>{msg.content}</div>\n * {/each}\n * ```\n */\nexport function getStream<\n T = Record<string, unknown>,\n Bag extends BagTemplate = BagTemplate,\n>(): ReturnType<typeof useStream<T, Bag>> {\n const context = getContext(STREAM_CONTEXT_KEY);\n if (context == null) {\n throw new Error(\n \"getStream() requires a parent component to call provideStream(). \" +\n \"Add provideStream({ assistantId: '...' }) in an ancestor component.\"\n );\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return context as any;\n}\n\nexport type { ClassSubagentStreamInterface } from \"@langchain/langgraph-sdk/ui\";\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 const client = options.client ?? new Client({ apiUrl: options.apiUrl });\n\n const orchestrator = new StreamOrchestrator<StateType, Bag>(options, {\n getClient: () => client,\n getAssistantId: () => options.assistantId,\n getMessagesKey: () => options.messagesKey ?? \"messages\",\n });\n\n orchestrator.initThreadId(options.threadId ?? undefined);\n\n const version = writable(0);\n const unsubscribe = orchestrator.subscribe(() => {\n version.update((v) => v + 1);\n });\n\n let fetchController: AbortController | null = null;\n\n // Subagent reconstruction\n const shouldReconstructSubagents = derived(version, () => {\n const hvMessages = orchestrator.messages;\n if (!options.filterSubagentMessages) return false;\n if (orchestrator.isLoading || orchestrator.historyData.isLoading)\n return false;\n return hvMessages.length > 0;\n });\n\n const unsubReconstruct = shouldReconstructSubagents.subscribe(($should) => {\n if ($should) {\n fetchController?.abort();\n const controller = orchestrator.reconstructSubagentsIfNeeded();\n fetchController = controller;\n }\n });\n\n // Queue draining - must track isLoading specifically (not just version)\n // so the drain fires exactly when stream transitions from loading → idle\n const isLoadingForDrain = derived(version, () => orchestrator.isLoading);\n const unsubDrain = isLoadingForDrain.subscribe(() => {\n orchestrator.drainQueue();\n });\n\n // Auto-reconnect\n let { shouldReconnect } = orchestrator;\n\n onMount(() => {\n if (shouldReconnect) {\n const reconnected = orchestrator.tryReconnect();\n if (reconnected) shouldReconnect = false;\n }\n });\n\n onDestroy(() => {\n fetchController?.abort();\n unsubscribe();\n unsubReconstruct();\n unsubDrain();\n orchestrator.dispose();\n });\n\n // Derived stores\n const valuesStore = derived(version, () => {\n orchestrator.trackStreamMode(\"values\");\n return orchestrator.values;\n });\n const errorStore = derived(version, () => orchestrator.error);\n const isLoadingStore = derived(version, () => orchestrator.isLoading);\n const branchStore = derived(version, () => orchestrator.branch);\n const messagesStore = derived(version, () => {\n orchestrator.trackStreamMode(\"messages-tuple\", \"values\");\n return ensureMessageInstances(orchestrator.messages);\n });\n const toolCallsStore = derived(version, () => {\n orchestrator.trackStreamMode(\"messages-tuple\", \"values\");\n return orchestrator.toolCalls;\n });\n const interruptStore = derived(version, () => orchestrator.interrupt);\n const interruptsStore = derived(version, () => orchestrator.interrupts);\n const historyListStore = derived(version, () => orchestrator.flatHistory);\n const isThreadLoadingStore = derived(\n version,\n () => orchestrator.isThreadLoading\n );\n const experimentalBranchTreeStore = derived(\n version,\n () => orchestrator.experimental_branchTree\n );\n const subagentsStore = derived(version, () => {\n orchestrator.trackStreamMode(\"updates\", \"messages-tuple\");\n return orchestrator.subagents;\n });\n const activeSubagentsStore = derived(version, () => {\n orchestrator.trackStreamMode(\"updates\", \"messages-tuple\");\n return orchestrator.activeSubagents;\n });\n const queueEntriesStore = derived(version, () => orchestrator.queueEntries);\n const queueSizeStore = derived(version, () => orchestrator.queueSize);\n\n // fromStore adapters for Svelte 5\n const valuesRef = fromStore(valuesStore);\n const errorRef = fromStore(errorStore);\n const isLoadingRef = fromStore(isLoadingStore);\n const branchRef = fromStore(branchStore);\n const messagesRef = fromStore(messagesStore);\n const toolCallsRef = fromStore(toolCallsStore);\n const interruptRef = fromStore(interruptStore);\n const interruptsRef = fromStore(interruptsStore);\n const historyListRef = fromStore(historyListStore);\n const isThreadLoadingRef = fromStore(isThreadLoadingStore);\n const experimentalBranchTreeRef = fromStore(experimentalBranchTreeStore);\n const subagentsRef = fromStore(subagentsStore);\n const activeSubagentsRef = fromStore(activeSubagentsStore);\n const queueEntriesRef = fromStore(queueEntriesStore);\n const queueSizeRef = fromStore(queueSizeStore);\n\n return {\n assistantId: options.assistantId,\n client,\n\n get values() {\n return valuesRef.current;\n },\n get error() {\n return errorRef.current;\n },\n get isLoading() {\n return isLoadingRef.current;\n },\n get isThreadLoading() {\n return isThreadLoadingRef.current;\n },\n\n get branch() {\n return branchRef.current;\n },\n setBranch(value: string) {\n orchestrator.setBranch(value);\n },\n\n get messages() {\n return messagesRef.current;\n },\n get toolCalls() {\n return toolCallsRef.current;\n },\n getToolCalls(message: Message) {\n return orchestrator.getToolCalls(message);\n },\n\n get interrupt() {\n return interruptRef.current;\n },\n get interrupts() {\n return interruptsRef.current;\n },\n\n get history() {\n return historyListRef.current;\n },\n get experimental_branchTree() {\n return experimentalBranchTreeRef.current;\n },\n\n getMessagesMetadata(\n message: Message,\n index?: number\n ): MessageMetadata<StateType> | undefined {\n return orchestrator.getMessagesMetadata(message, index);\n },\n\n submit: (...args: Parameters<typeof orchestrator.submit>) =>\n orchestrator.submit(...args),\n stop: () => orchestrator.stop(),\n joinStream: (...args: Parameters<typeof orchestrator.joinStream>) =>\n orchestrator.joinStream(...args),\n\n queue: {\n get entries() {\n return queueEntriesRef.current;\n },\n get size() {\n return queueSizeRef.current;\n },\n cancel: (id: string) => orchestrator.cancelQueueItem(id),\n clear: () => orchestrator.clearQueue(),\n },\n\n switchThread(newThreadId: string | null) {\n orchestrator.switchThread(newThreadId);\n },\n\n get subagents() {\n return subagentsRef.current;\n },\n get activeSubagents() {\n return activeSubagentsRef.current;\n },\n getSubagent(toolCallId: string) {\n return orchestrator.getSubagent(toolCallId);\n },\n getSubagentsByType(type: string) {\n return orchestrator.getSubagentsByType(type);\n },\n getSubagentsByMessage(messageId: string) {\n return orchestrator.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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"}
@@ -1 +1 @@
1
- {"version":3,"file":"stream.custom.cjs","names":["CustomStreamOrchestrator"],"sources":["../src/stream.custom.ts"],"sourcesContent":["import { writable, derived, fromStore } from \"svelte/store\";\nimport { onDestroy } from \"svelte\";\nimport {\n CustomStreamOrchestrator,\n type AnyStreamCustomOptions,\n type CustomSubmitOptions,\n type GetUpdateType,\n type GetInterruptType,\n type GetConfigurableType,\n type MessageMetadata,\n} from \"@langchain/langgraph-sdk/ui\";\nimport type { BagTemplate, Message, Interrupt } from \"@langchain/langgraph-sdk\";\n\nexport function useStreamCustom<\n StateType extends Record<string, unknown> = Record<string, unknown>,\n Bag extends BagTemplate = BagTemplate,\n>(options: AnyStreamCustomOptions<StateType, Bag>) {\n type UpdateType = GetUpdateType<Bag, StateType>;\n type InterruptType = GetInterruptType<Bag>;\n type ConfigurableType = GetConfigurableType<Bag>;\n const orchestrator = new CustomStreamOrchestrator<StateType, Bag>(options);\n\n const version = writable(0);\n const branch = writable<string>(\"\");\n\n const unsubscribe = orchestrator.subscribe(() => {\n version.update((v) => v + 1);\n });\n\n onDestroy(() => {\n unsubscribe();\n orchestrator.dispose();\n });\n\n const valuesStore = derived(version, () => orchestrator.values);\n\n const messagesStore = derived(version, () => orchestrator.messages);\n\n const toolCallsStore = derived(version, () => orchestrator.toolCalls);\n\n const interruptStore = derived(\n version,\n () => orchestrator.interrupt as Interrupt<InterruptType> | undefined,\n );\n\n const interruptsStore = derived(\n version,\n () => orchestrator.interrupts as Interrupt<InterruptType>[],\n );\n\n const subagentsStore = derived(version, () => orchestrator.subagents);\n const activeSubagentsStore = derived(\n version,\n () => orchestrator.activeSubagents,\n );\n\n const emptyEntries = writable<never[]>([]);\n const emptySize = writable(0);\n\n const valuesRef = fromStore(valuesStore);\n const errorRef = fromStore(derived(version, () => orchestrator.error));\n const isLoadingRef = fromStore(\n derived(version, () => orchestrator.isLoading),\n );\n const branchRef = fromStore(branch);\n const messagesRef = fromStore(messagesStore);\n const toolCallsRef = fromStore(toolCallsStore);\n const interruptRef = fromStore(interruptStore);\n const interruptsRef = fromStore(interruptsStore);\n const subagentsRef = fromStore(subagentsStore);\n const activeSubagentsRef = fromStore(activeSubagentsStore);\n const emptyEntriesRef = fromStore(emptyEntries);\n const emptySizeRef = fromStore(emptySize);\n\n return {\n get values() {\n return valuesRef.current;\n },\n get error() {\n return errorRef.current;\n },\n get isLoading() {\n return isLoadingRef.current;\n },\n\n stop: () => orchestrator.stop(),\n\n async submit(\n values: UpdateType | null | undefined,\n submitOptions?: CustomSubmitOptions<StateType, ConfigurableType>,\n ) {\n await orchestrator.submit(values, submitOptions);\n },\n\n switchThread(newThreadId: string | null) {\n orchestrator.switchThread(newThreadId);\n },\n\n get branch() {\n return branchRef.current;\n },\n setBranch(value: string) {\n branch.set(value);\n orchestrator.setBranch(value);\n },\n\n getMessagesMetadata(\n message: Message,\n index?: number,\n ): MessageMetadata<StateType> | undefined {\n return orchestrator.getMessagesMetadata(message, index);\n },\n\n queue: {\n get entries() {\n return emptyEntriesRef.current;\n },\n get size() {\n return emptySizeRef.current;\n },\n async cancel() {\n return false;\n },\n async clear() {},\n },\n\n get interrupt() {\n return interruptRef.current;\n },\n get interrupts() {\n return interruptsRef.current;\n },\n\n get messages() {\n return messagesRef.current;\n },\n get toolCalls() {\n return toolCallsRef.current;\n },\n getToolCalls(message: Message) {\n return orchestrator.getToolCalls(message);\n },\n\n get subagents() {\n return subagentsRef.current;\n },\n get activeSubagents() {\n return activeSubagentsRef.current;\n },\n getSubagent(toolCallId: string) {\n return orchestrator.getSubagent(toolCallId);\n },\n getSubagentsByType(type: string) {\n return orchestrator.getSubagentsByType(type);\n },\n getSubagentsByMessage(messageId: string) {\n return orchestrator.getSubagentsByMessage(messageId);\n },\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"stream.custom.cjs","names":["CustomStreamOrchestrator"],"sources":["../src/stream.custom.ts"],"sourcesContent":["import { writable, derived, fromStore } from \"svelte/store\";\nimport { onDestroy } from \"svelte\";\nimport {\n CustomStreamOrchestrator,\n type AnyStreamCustomOptions,\n type CustomSubmitOptions,\n type GetUpdateType,\n type GetInterruptType,\n type GetConfigurableType,\n type MessageMetadata,\n} from \"@langchain/langgraph-sdk/ui\";\nimport type { BagTemplate, Message, Interrupt } from \"@langchain/langgraph-sdk\";\n\nexport function useStreamCustom<\n StateType extends Record<string, unknown> = Record<string, unknown>,\n Bag extends BagTemplate = BagTemplate,\n>(options: AnyStreamCustomOptions<StateType, Bag>) {\n type UpdateType = GetUpdateType<Bag, StateType>;\n type InterruptType = GetInterruptType<Bag>;\n type ConfigurableType = GetConfigurableType<Bag>;\n const orchestrator = new CustomStreamOrchestrator<StateType, Bag>(options);\n\n const version = writable(0);\n const branch = writable<string>(\"\");\n\n const unsubscribe = orchestrator.subscribe(() => {\n version.update((v) => v + 1);\n });\n\n onDestroy(() => {\n unsubscribe();\n orchestrator.dispose();\n });\n\n const valuesStore = derived(version, () => orchestrator.values);\n\n const messagesStore = derived(version, () => orchestrator.messages);\n\n const toolCallsStore = derived(version, () => orchestrator.toolCalls);\n\n const interruptStore = derived(\n version,\n () => orchestrator.interrupt as Interrupt<InterruptType> | undefined\n );\n\n const interruptsStore = derived(\n version,\n () => orchestrator.interrupts as Interrupt<InterruptType>[]\n );\n\n const subagentsStore = derived(version, () => orchestrator.subagents);\n const activeSubagentsStore = derived(\n version,\n () => orchestrator.activeSubagents\n );\n\n const emptyEntries = writable<never[]>([]);\n const emptySize = writable(0);\n\n const valuesRef = fromStore(valuesStore);\n const errorRef = fromStore(derived(version, () => orchestrator.error));\n const isLoadingRef = fromStore(\n derived(version, () => orchestrator.isLoading)\n );\n const branchRef = fromStore(branch);\n const messagesRef = fromStore(messagesStore);\n const toolCallsRef = fromStore(toolCallsStore);\n const interruptRef = fromStore(interruptStore);\n const interruptsRef = fromStore(interruptsStore);\n const subagentsRef = fromStore(subagentsStore);\n const activeSubagentsRef = fromStore(activeSubagentsStore);\n const emptyEntriesRef = fromStore(emptyEntries);\n const emptySizeRef = fromStore(emptySize);\n\n return {\n get values() {\n return valuesRef.current;\n },\n get error() {\n return errorRef.current;\n },\n get isLoading() {\n return isLoadingRef.current;\n },\n\n stop: () => orchestrator.stop(),\n\n async submit(\n values: UpdateType | null | undefined,\n submitOptions?: CustomSubmitOptions<StateType, ConfigurableType>\n ) {\n await orchestrator.submit(values, submitOptions);\n },\n\n switchThread(newThreadId: string | null) {\n orchestrator.switchThread(newThreadId);\n },\n\n get branch() {\n return branchRef.current;\n },\n setBranch(value: string) {\n branch.set(value);\n orchestrator.setBranch(value);\n },\n\n getMessagesMetadata(\n message: Message,\n index?: number\n ): MessageMetadata<StateType> | undefined {\n return orchestrator.getMessagesMetadata(message, index);\n },\n\n queue: {\n get entries() {\n return emptyEntriesRef.current;\n },\n get size() {\n return emptySizeRef.current;\n },\n async cancel() {\n return false;\n },\n async clear() {},\n },\n\n get interrupt() {\n return interruptRef.current;\n },\n get interrupts() {\n return interruptsRef.current;\n },\n\n get messages() {\n return messagesRef.current;\n },\n get toolCalls() {\n return toolCallsRef.current;\n },\n getToolCalls(message: Message) {\n return orchestrator.getToolCalls(message);\n },\n\n get subagents() {\n return subagentsRef.current;\n },\n get activeSubagents() {\n return activeSubagentsRef.current;\n },\n getSubagent(toolCallId: string) {\n return orchestrator.getSubagent(toolCallId);\n },\n getSubagentsByType(type: string) {\n return orchestrator.getSubagentsByType(type);\n },\n getSubagentsByMessage(messageId: string) {\n return orchestrator.getSubagentsByMessage(messageId);\n },\n };\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"stream.custom.js","names":[],"sources":["../src/stream.custom.ts"],"sourcesContent":["import { writable, derived, fromStore } from \"svelte/store\";\nimport { onDestroy } from \"svelte\";\nimport {\n CustomStreamOrchestrator,\n type AnyStreamCustomOptions,\n type CustomSubmitOptions,\n type GetUpdateType,\n type GetInterruptType,\n type GetConfigurableType,\n type MessageMetadata,\n} from \"@langchain/langgraph-sdk/ui\";\nimport type { BagTemplate, Message, Interrupt } from \"@langchain/langgraph-sdk\";\n\nexport function useStreamCustom<\n StateType extends Record<string, unknown> = Record<string, unknown>,\n Bag extends BagTemplate = BagTemplate,\n>(options: AnyStreamCustomOptions<StateType, Bag>) {\n type UpdateType = GetUpdateType<Bag, StateType>;\n type InterruptType = GetInterruptType<Bag>;\n type ConfigurableType = GetConfigurableType<Bag>;\n const orchestrator = new CustomStreamOrchestrator<StateType, Bag>(options);\n\n const version = writable(0);\n const branch = writable<string>(\"\");\n\n const unsubscribe = orchestrator.subscribe(() => {\n version.update((v) => v + 1);\n });\n\n onDestroy(() => {\n unsubscribe();\n orchestrator.dispose();\n });\n\n const valuesStore = derived(version, () => orchestrator.values);\n\n const messagesStore = derived(version, () => orchestrator.messages);\n\n const toolCallsStore = derived(version, () => orchestrator.toolCalls);\n\n const interruptStore = derived(\n version,\n () => orchestrator.interrupt as Interrupt<InterruptType> | undefined,\n );\n\n const interruptsStore = derived(\n version,\n () => orchestrator.interrupts as Interrupt<InterruptType>[],\n );\n\n const subagentsStore = derived(version, () => orchestrator.subagents);\n const activeSubagentsStore = derived(\n version,\n () => orchestrator.activeSubagents,\n );\n\n const emptyEntries = writable<never[]>([]);\n const emptySize = writable(0);\n\n const valuesRef = fromStore(valuesStore);\n const errorRef = fromStore(derived(version, () => orchestrator.error));\n const isLoadingRef = fromStore(\n derived(version, () => orchestrator.isLoading),\n );\n const branchRef = fromStore(branch);\n const messagesRef = fromStore(messagesStore);\n const toolCallsRef = fromStore(toolCallsStore);\n const interruptRef = fromStore(interruptStore);\n const interruptsRef = fromStore(interruptsStore);\n const subagentsRef = fromStore(subagentsStore);\n const activeSubagentsRef = fromStore(activeSubagentsStore);\n const emptyEntriesRef = fromStore(emptyEntries);\n const emptySizeRef = fromStore(emptySize);\n\n return {\n get values() {\n return valuesRef.current;\n },\n get error() {\n return errorRef.current;\n },\n get isLoading() {\n return isLoadingRef.current;\n },\n\n stop: () => orchestrator.stop(),\n\n async submit(\n values: UpdateType | null | undefined,\n submitOptions?: CustomSubmitOptions<StateType, ConfigurableType>,\n ) {\n await orchestrator.submit(values, submitOptions);\n },\n\n switchThread(newThreadId: string | null) {\n orchestrator.switchThread(newThreadId);\n },\n\n get branch() {\n return branchRef.current;\n },\n setBranch(value: string) {\n branch.set(value);\n orchestrator.setBranch(value);\n },\n\n getMessagesMetadata(\n message: Message,\n index?: number,\n ): MessageMetadata<StateType> | undefined {\n return orchestrator.getMessagesMetadata(message, index);\n },\n\n queue: {\n get entries() {\n return emptyEntriesRef.current;\n },\n get size() {\n return emptySizeRef.current;\n },\n async cancel() {\n return false;\n },\n async clear() {},\n },\n\n get interrupt() {\n return interruptRef.current;\n },\n get interrupts() {\n return interruptsRef.current;\n },\n\n get messages() {\n return messagesRef.current;\n },\n get toolCalls() {\n return toolCallsRef.current;\n },\n getToolCalls(message: Message) {\n return orchestrator.getToolCalls(message);\n },\n\n get subagents() {\n return subagentsRef.current;\n },\n get activeSubagents() {\n return activeSubagentsRef.current;\n },\n getSubagent(toolCallId: string) {\n return orchestrator.getSubagent(toolCallId);\n },\n getSubagentsByType(type: string) {\n return orchestrator.getSubagentsByType(type);\n },\n getSubagentsByMessage(messageId: string) {\n return orchestrator.getSubagentsByMessage(messageId);\n },\n };\n}\n"],"mappings":";;;;AAaA,SAAgB,gBAGd,SAAiD;CAIjD,MAAM,eAAe,IAAI,yBAAyC,QAAQ;CAE1E,MAAM,UAAU,SAAS,EAAE;CAC3B,MAAM,SAAS,SAAiB,GAAG;CAEnC,MAAM,cAAc,aAAa,gBAAgB;AAC/C,UAAQ,QAAQ,MAAM,IAAI,EAAE;GAC5B;AAEF,iBAAgB;AACd,eAAa;AACb,eAAa,SAAS;GACtB;CAEF,MAAM,cAAc,QAAQ,eAAe,aAAa,OAAO;CAE/D,MAAM,gBAAgB,QAAQ,eAAe,aAAa,SAAS;CAEnE,MAAM,iBAAiB,QAAQ,eAAe,aAAa,UAAU;CAErE,MAAM,iBAAiB,QACrB,eACM,aAAa,UACpB;CAED,MAAM,kBAAkB,QACtB,eACM,aAAa,WACpB;CAED,MAAM,iBAAiB,QAAQ,eAAe,aAAa,UAAU;CACrE,MAAM,uBAAuB,QAC3B,eACM,aAAa,gBACpB;CAED,MAAM,eAAe,SAAkB,EAAE,CAAC;CAC1C,MAAM,YAAY,SAAS,EAAE;CAE7B,MAAM,YAAY,UAAU,YAAY;CACxC,MAAM,WAAW,UAAU,QAAQ,eAAe,aAAa,MAAM,CAAC;CACtE,MAAM,eAAe,UACnB,QAAQ,eAAe,aAAa,UAAU,CAC/C;CACD,MAAM,YAAY,UAAU,OAAO;CACnC,MAAM,cAAc,UAAU,cAAc;CAC5C,MAAM,eAAe,UAAU,eAAe;CAC9C,MAAM,eAAe,UAAU,eAAe;CAC9C,MAAM,gBAAgB,UAAU,gBAAgB;CAChD,MAAM,eAAe,UAAU,eAAe;CAC9C,MAAM,qBAAqB,UAAU,qBAAqB;CAC1D,MAAM,kBAAkB,UAAU,aAAa;CAC/C,MAAM,eAAe,UAAU,UAAU;AAEzC,QAAO;EACL,IAAI,SAAS;AACX,UAAO,UAAU;;EAEnB,IAAI,QAAQ;AACV,UAAO,SAAS;;EAElB,IAAI,YAAY;AACd,UAAO,aAAa;;EAGtB,YAAY,aAAa,MAAM;EAE/B,MAAM,OACJ,QACA,eACA;AACA,SAAM,aAAa,OAAO,QAAQ,cAAc;;EAGlD,aAAa,aAA4B;AACvC,gBAAa,aAAa,YAAY;;EAGxC,IAAI,SAAS;AACX,UAAO,UAAU;;EAEnB,UAAU,OAAe;AACvB,UAAO,IAAI,MAAM;AACjB,gBAAa,UAAU,MAAM;;EAG/B,oBACE,SACA,OACwC;AACxC,UAAO,aAAa,oBAAoB,SAAS,MAAM;;EAGzD,OAAO;GACL,IAAI,UAAU;AACZ,WAAO,gBAAgB;;GAEzB,IAAI,OAAO;AACT,WAAO,aAAa;;GAEtB,MAAM,SAAS;AACb,WAAO;;GAET,MAAM,QAAQ;GACf;EAED,IAAI,YAAY;AACd,UAAO,aAAa;;EAEtB,IAAI,aAAa;AACf,UAAO,cAAc;;EAGvB,IAAI,WAAW;AACb,UAAO,YAAY;;EAErB,IAAI,YAAY;AACd,UAAO,aAAa;;EAEtB,aAAa,SAAkB;AAC7B,UAAO,aAAa,aAAa,QAAQ;;EAG3C,IAAI,YAAY;AACd,UAAO,aAAa;;EAEtB,IAAI,kBAAkB;AACpB,UAAO,mBAAmB;;EAE5B,YAAY,YAAoB;AAC9B,UAAO,aAAa,YAAY,WAAW;;EAE7C,mBAAmB,MAAc;AAC/B,UAAO,aAAa,mBAAmB,KAAK;;EAE9C,sBAAsB,WAAmB;AACvC,UAAO,aAAa,sBAAsB,UAAU;;EAEvD"}
1
+ {"version":3,"file":"stream.custom.js","names":[],"sources":["../src/stream.custom.ts"],"sourcesContent":["import { writable, derived, fromStore } from \"svelte/store\";\nimport { onDestroy } from \"svelte\";\nimport {\n CustomStreamOrchestrator,\n type AnyStreamCustomOptions,\n type CustomSubmitOptions,\n type GetUpdateType,\n type GetInterruptType,\n type GetConfigurableType,\n type MessageMetadata,\n} from \"@langchain/langgraph-sdk/ui\";\nimport type { BagTemplate, Message, Interrupt } from \"@langchain/langgraph-sdk\";\n\nexport function useStreamCustom<\n StateType extends Record<string, unknown> = Record<string, unknown>,\n Bag extends BagTemplate = BagTemplate,\n>(options: AnyStreamCustomOptions<StateType, Bag>) {\n type UpdateType = GetUpdateType<Bag, StateType>;\n type InterruptType = GetInterruptType<Bag>;\n type ConfigurableType = GetConfigurableType<Bag>;\n const orchestrator = new CustomStreamOrchestrator<StateType, Bag>(options);\n\n const version = writable(0);\n const branch = writable<string>(\"\");\n\n const unsubscribe = orchestrator.subscribe(() => {\n version.update((v) => v + 1);\n });\n\n onDestroy(() => {\n unsubscribe();\n orchestrator.dispose();\n });\n\n const valuesStore = derived(version, () => orchestrator.values);\n\n const messagesStore = derived(version, () => orchestrator.messages);\n\n const toolCallsStore = derived(version, () => orchestrator.toolCalls);\n\n const interruptStore = derived(\n version,\n () => orchestrator.interrupt as Interrupt<InterruptType> | undefined\n );\n\n const interruptsStore = derived(\n version,\n () => orchestrator.interrupts as Interrupt<InterruptType>[]\n );\n\n const subagentsStore = derived(version, () => orchestrator.subagents);\n const activeSubagentsStore = derived(\n version,\n () => orchestrator.activeSubagents\n );\n\n const emptyEntries = writable<never[]>([]);\n const emptySize = writable(0);\n\n const valuesRef = fromStore(valuesStore);\n const errorRef = fromStore(derived(version, () => orchestrator.error));\n const isLoadingRef = fromStore(\n derived(version, () => orchestrator.isLoading)\n );\n const branchRef = fromStore(branch);\n const messagesRef = fromStore(messagesStore);\n const toolCallsRef = fromStore(toolCallsStore);\n const interruptRef = fromStore(interruptStore);\n const interruptsRef = fromStore(interruptsStore);\n const subagentsRef = fromStore(subagentsStore);\n const activeSubagentsRef = fromStore(activeSubagentsStore);\n const emptyEntriesRef = fromStore(emptyEntries);\n const emptySizeRef = fromStore(emptySize);\n\n return {\n get values() {\n return valuesRef.current;\n },\n get error() {\n return errorRef.current;\n },\n get isLoading() {\n return isLoadingRef.current;\n },\n\n stop: () => orchestrator.stop(),\n\n async submit(\n values: UpdateType | null | undefined,\n submitOptions?: CustomSubmitOptions<StateType, ConfigurableType>\n ) {\n await orchestrator.submit(values, submitOptions);\n },\n\n switchThread(newThreadId: string | null) {\n orchestrator.switchThread(newThreadId);\n },\n\n get branch() {\n return branchRef.current;\n },\n setBranch(value: string) {\n branch.set(value);\n orchestrator.setBranch(value);\n },\n\n getMessagesMetadata(\n message: Message,\n index?: number\n ): MessageMetadata<StateType> | undefined {\n return orchestrator.getMessagesMetadata(message, index);\n },\n\n queue: {\n get entries() {\n return emptyEntriesRef.current;\n },\n get size() {\n return emptySizeRef.current;\n },\n async cancel() {\n return false;\n },\n async clear() {},\n },\n\n get interrupt() {\n return interruptRef.current;\n },\n get interrupts() {\n return interruptsRef.current;\n },\n\n get messages() {\n return messagesRef.current;\n },\n get toolCalls() {\n return toolCallsRef.current;\n },\n getToolCalls(message: Message) {\n return orchestrator.getToolCalls(message);\n },\n\n get subagents() {\n return subagentsRef.current;\n },\n get activeSubagents() {\n return activeSubagentsRef.current;\n },\n getSubagent(toolCallId: string) {\n return orchestrator.getSubagent(toolCallId);\n },\n getSubagentsByType(type: string) {\n return orchestrator.getSubagentsByType(type);\n },\n getSubagentsByMessage(messageId: string) {\n return orchestrator.getSubagentsByMessage(messageId);\n },\n };\n}\n"],"mappings":";;;;AAaA,SAAgB,gBAGd,SAAiD;CAIjD,MAAM,eAAe,IAAI,yBAAyC,QAAQ;CAE1E,MAAM,UAAU,SAAS,EAAE;CAC3B,MAAM,SAAS,SAAiB,GAAG;CAEnC,MAAM,cAAc,aAAa,gBAAgB;AAC/C,UAAQ,QAAQ,MAAM,IAAI,EAAE;GAC5B;AAEF,iBAAgB;AACd,eAAa;AACb,eAAa,SAAS;GACtB;CAEF,MAAM,cAAc,QAAQ,eAAe,aAAa,OAAO;CAE/D,MAAM,gBAAgB,QAAQ,eAAe,aAAa,SAAS;CAEnE,MAAM,iBAAiB,QAAQ,eAAe,aAAa,UAAU;CAErE,MAAM,iBAAiB,QACrB,eACM,aAAa,UACpB;CAED,MAAM,kBAAkB,QACtB,eACM,aAAa,WACpB;CAED,MAAM,iBAAiB,QAAQ,eAAe,aAAa,UAAU;CACrE,MAAM,uBAAuB,QAC3B,eACM,aAAa,gBACpB;CAED,MAAM,eAAe,SAAkB,EAAE,CAAC;CAC1C,MAAM,YAAY,SAAS,EAAE;CAE7B,MAAM,YAAY,UAAU,YAAY;CACxC,MAAM,WAAW,UAAU,QAAQ,eAAe,aAAa,MAAM,CAAC;CACtE,MAAM,eAAe,UACnB,QAAQ,eAAe,aAAa,UAAU,CAC/C;CACD,MAAM,YAAY,UAAU,OAAO;CACnC,MAAM,cAAc,UAAU,cAAc;CAC5C,MAAM,eAAe,UAAU,eAAe;CAC9C,MAAM,eAAe,UAAU,eAAe;CAC9C,MAAM,gBAAgB,UAAU,gBAAgB;CAChD,MAAM,eAAe,UAAU,eAAe;CAC9C,MAAM,qBAAqB,UAAU,qBAAqB;CAC1D,MAAM,kBAAkB,UAAU,aAAa;CAC/C,MAAM,eAAe,UAAU,UAAU;AAEzC,QAAO;EACL,IAAI,SAAS;AACX,UAAO,UAAU;;EAEnB,IAAI,QAAQ;AACV,UAAO,SAAS;;EAElB,IAAI,YAAY;AACd,UAAO,aAAa;;EAGtB,YAAY,aAAa,MAAM;EAE/B,MAAM,OACJ,QACA,eACA;AACA,SAAM,aAAa,OAAO,QAAQ,cAAc;;EAGlD,aAAa,aAA4B;AACvC,gBAAa,aAAa,YAAY;;EAGxC,IAAI,SAAS;AACX,UAAO,UAAU;;EAEnB,UAAU,OAAe;AACvB,UAAO,IAAI,MAAM;AACjB,gBAAa,UAAU,MAAM;;EAG/B,oBACE,SACA,OACwC;AACxC,UAAO,aAAa,oBAAoB,SAAS,MAAM;;EAGzD,OAAO;GACL,IAAI,UAAU;AACZ,WAAO,gBAAgB;;GAEzB,IAAI,OAAO;AACT,WAAO,aAAa;;GAEtB,MAAM,SAAS;AACb,WAAO;;GAET,MAAM,QAAQ;GACf;EAED,IAAI,YAAY;AACd,UAAO,aAAa;;EAEtB,IAAI,aAAa;AACf,UAAO,cAAc;;EAGvB,IAAI,WAAW;AACb,UAAO,YAAY;;EAErB,IAAI,YAAY;AACd,UAAO,aAAa;;EAEtB,aAAa,SAAkB;AAC7B,UAAO,aAAa,aAAa,QAAQ;;EAG3C,IAAI,YAAY;AACd,UAAO,aAAa;;EAEtB,IAAI,kBAAkB;AACpB,UAAO,mBAAmB;;EAE5B,YAAY,YAAoB;AAC9B,UAAO,aAAa,YAAY,WAAW;;EAE7C,mBAAmB,MAAc;AAC/B,UAAO,aAAa,mBAAmB,KAAK;;EAE9C,sBAAsB,WAAmB;AACvC,UAAO,aAAa,sBAAsB,UAAU;;EAEvD"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@langchain/svelte",
3
- "version": "0.3.0",
3
+ "version": "0.3.2",
4
4
  "description": "Svelte integration for LangGraph & LangChain",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -10,35 +10,26 @@
10
10
  "directory": "libs/sdk-svelte"
11
11
  },
12
12
  "dependencies": {
13
- "@langchain/langgraph-sdk": "^1.8.0"
13
+ "@langchain/langgraph-sdk": "^1.8.5"
14
14
  },
15
15
  "devDependencies": {
16
16
  "@hono/node-server": "^1.19.11",
17
- "@langchain/core": "^1.1.31",
18
- "@sveltejs/vite-plugin-svelte": "^6.2.4",
17
+ "@langchain/core": "^1.1.38",
18
+ "@sveltejs/vite-plugin-svelte": "^7.0.0",
19
19
  "@types/node": "^25.4.0",
20
- "@typescript-eslint/eslint-plugin": "^6.12.0",
21
- "@typescript-eslint/parser": "^6.12.0",
22
20
  "@vitest/browser": "^4.0.18",
23
21
  "@vitest/browser-webdriverio": "^4.0.18",
24
22
  "deepagents": "^1.8.3",
25
- "eslint": "^8.33.0",
26
- "eslint-config-airbnb-base": "^15.0.0",
27
- "eslint-config-prettier": "^8.6.0",
28
- "eslint-plugin-import": "^2.29.1",
29
- "eslint-plugin-no-instanceof": "^1.0.1",
30
- "eslint-plugin-prettier": "^4.2.1",
31
23
  "hono": "^4.12.7",
32
- "langchain": "^1.2.30",
33
- "prettier": "^3.8.1",
34
- "svelte": "^5.53.9",
24
+ "langchain": "^1.2.39",
25
+ "svelte": "^5.55.1",
35
26
  "typescript": "^5.9.3",
36
27
  "vitest": "^4.0.18",
37
- "vitest-browser-svelte": "^2.0.2",
28
+ "vitest-browser-svelte": "^2.1.0",
38
29
  "webdriverio": "^9.25.0",
39
30
  "zod": "^4.3.6",
40
- "@langchain/langgraph": "^1.2.5",
41
- "@langchain/langgraph-api": "^1.1.16",
31
+ "@langchain/langgraph": "^1.2.6",
32
+ "@langchain/langgraph-api": "^1.1.17",
42
33
  "@langchain/langgraph-checkpoint": "^1.0.1"
43
34
  },
44
35
  "peerDependencies": {
@@ -70,11 +61,7 @@
70
61
  "build": "pnpm turbo build:internal --filter=@langchain/svelte",
71
62
  "build:internal": "pnpm --filter @langchain/build compile @langchain/svelte",
72
63
  "prepublish": "pnpm build",
73
- "format:check": "prettier --check src",
74
- "format": "prettier --write src",
75
64
  "lint:eslint": "NODE_OPTIONS=--max-old-space-size=4096 eslint --cache --ext .ts,.js,.jsx,.tsx src/",
76
- "lint": "pnpm lint:eslint",
77
- "lint:fix": "pnpm lint:eslint --fix",
78
65
  "test": "vitest run"
79
66
  }
80
67
  }