@langchain/vue 0.4.3 → 0.4.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +17 -7
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -7
- package/dist/index.js.map +1 -1
- package/dist/stream.custom.cjs +12 -3
- package/dist/stream.custom.cjs.map +1 -1
- package/dist/stream.custom.js +12 -3
- package/dist/stream.custom.js.map +1 -1
- package/package.json +2 -2
package/dist/index.cjs
CHANGED
|
@@ -94,6 +94,11 @@ function useStreamLGP(options) {
|
|
|
94
94
|
}, (newBranch) => {
|
|
95
95
|
if (branch.value !== newBranch) branch.value = newBranch;
|
|
96
96
|
}, { immediate: true });
|
|
97
|
+
const messages = (0, vue.computed)(() => {
|
|
98
|
+
version.value;
|
|
99
|
+
orchestrator.trackStreamMode("messages-tuple");
|
|
100
|
+
return (0, _langchain_langgraph_sdk_ui.ensureMessageInstances)(orchestrator.messages);
|
|
101
|
+
});
|
|
97
102
|
return {
|
|
98
103
|
get assistantId() {
|
|
99
104
|
return (0, vue.toValue)(options.assistantId);
|
|
@@ -108,11 +113,7 @@ function useStreamLGP(options) {
|
|
|
108
113
|
setBranch(value) {
|
|
109
114
|
orchestrator.setBranch(value);
|
|
110
115
|
},
|
|
111
|
-
messages
|
|
112
|
-
version.value;
|
|
113
|
-
orchestrator.trackStreamMode("messages-tuple");
|
|
114
|
-
return (0, _langchain_langgraph_sdk_ui.ensureMessageInstances)(orchestrator.messages);
|
|
115
|
-
}),
|
|
116
|
+
messages,
|
|
116
117
|
toolCalls: (0, vue.computed)(() => {
|
|
117
118
|
version.value;
|
|
118
119
|
return orchestrator.toolCalls;
|
|
@@ -163,19 +164,28 @@ function useStreamLGP(options) {
|
|
|
163
164
|
orchestrator.switchThread(newThreadId);
|
|
164
165
|
},
|
|
165
166
|
get subagents() {
|
|
166
|
-
|
|
167
|
+
messages.value.length;
|
|
168
|
+
version.value;
|
|
169
|
+
return reactiveSubagents.mapSubagents(orchestrator.subagents);
|
|
167
170
|
},
|
|
168
171
|
get activeSubagents() {
|
|
169
|
-
|
|
172
|
+
messages.value.length;
|
|
173
|
+
version.value;
|
|
174
|
+
return reactiveSubagents.mapActiveSubagents(orchestrator.activeSubagents);
|
|
170
175
|
},
|
|
171
176
|
getSubagent(toolCallId) {
|
|
177
|
+
messages.value.length;
|
|
172
178
|
version.value;
|
|
173
179
|
return reactiveSubagents.getSubagent(toolCallId);
|
|
174
180
|
},
|
|
175
181
|
getSubagentsByType(type) {
|
|
182
|
+
messages.value.length;
|
|
183
|
+
version.value;
|
|
176
184
|
return reactiveSubagents.getSubagentsByType(type);
|
|
177
185
|
},
|
|
178
186
|
getSubagentsByMessage(messageId) {
|
|
187
|
+
messages.value.length;
|
|
188
|
+
version.value;
|
|
179
189
|
return reactiveSubagents.getSubagentsByMessage(messageId);
|
|
180
190
|
}
|
|
181
191
|
};
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","names":["LANGCHAIN_OPTIONS","Client","StreamOrchestrator","createReactiveSubagentAccessors","useStreamCustom"],"sources":["../src/index.ts"],"sourcesContent":["import {\n computed,\n inject,\n onScopeDispose,\n reactive,\n ref,\n shallowRef,\n toValue,\n watch,\n type ComputedRef,\n type Ref,\n} from \"vue\";\nimport type {\n BaseMessage,\n ToolMessage as CoreToolMessage,\n AIMessage as CoreAIMessage,\n} from \"@langchain/core/messages\";\nimport {\n 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 type ClassToolCallWithResult,\n type ClassSubagentStreamInterface,\n} from \"@langchain/langgraph-sdk/ui\";\n\nimport {\n Client,\n type Message,\n type BagTemplate,\n type ToolCallWithResult as _ToolCallWithResult,\n type DefaultToolCall,\n} from \"@langchain/langgraph-sdk\";\n\nimport { useStreamCustom } from \"./stream.custom.js\";\nimport type { VueReactiveOptions } from \"./types.js\";\nimport { LANGCHAIN_OPTIONS, type LangChainPluginOptions } from \"./context.js\";\nimport { createReactiveSubagentAccessors } from \"./subagents.js\";\n\nexport { FetchStreamTransport };\nexport type { VueReactiveOptions } from \"./types.js\";\nexport {\n LangChainPlugin,\n provideStream,\n useStreamContext,\n LANGCHAIN_OPTIONS,\n} from \"./context.js\";\nexport type { LangChainPluginOptions } from \"./context.js\";\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: VueReactiveOptions<AnyStreamOptions<StateType, Bag>>) {\n const pluginOptions: LangChainPluginOptions = inject(LANGCHAIN_OPTIONS, {});\n\n const client = computed(() => {\n const c = toValue(options.client) ?? pluginOptions.client;\n if (c) return c;\n return new Client({\n apiUrl: toValue(options.apiUrl) ?? pluginOptions.apiUrl,\n apiKey: toValue(options.apiKey) ?? pluginOptions.apiKey,\n callerOptions: toValue(options.callerOptions),\n defaultHeaders: toValue(options.defaultHeaders),\n });\n });\n\n const orchestrator = new StreamOrchestrator<StateType, Bag>(\n options as unknown as AnyStreamOptions<StateType, Bag>,\n {\n getClient: () => client.value,\n getAssistantId: () => toValue(options.assistantId),\n getMessagesKey: () => toValue(options.messagesKey) ?? \"messages\",\n }\n );\n\n const initialThreadId = toValue(options.threadId) ?? undefined;\n orchestrator.initThreadId(initialThreadId);\n\n watch(\n () => toValue(options.threadId),\n (newId) => {\n const resolved = newId ?? undefined;\n orchestrator.setThreadId(resolved);\n },\n { flush: \"sync\" }\n );\n\n // Monotonically increasing counter bumped on every orchestrator update.\n // Computed properties read `version.value` (via `void version.value`)\n // solely to register a reactive dependency, so Vue knows to invalidate\n // their cached values when the orchestrator state changes.\n const version = shallowRef(0);\n const reactiveSubagents = createReactiveSubagentAccessors(\n {\n getSubagent: (toolCallId) => orchestrator.getSubagent(toolCallId),\n getSubagentsByType: (type) => orchestrator.getSubagentsByType(type),\n getSubagentsByMessage: (messageId) =>\n orchestrator.getSubagentsByMessage(messageId),\n },\n version\n );\n const subagentsRef = shallowRef(\n reactiveSubagents.mapSubagents(orchestrator.subagents)\n );\n const activeSubagentsRef = shallowRef(\n reactiveSubagents.mapActiveSubagents(orchestrator.activeSubagents)\n );\n\n const unsubscribe = orchestrator.subscribe(() => {\n version.value += 1;\n subagentsRef.value = reactiveSubagents.mapSubagents(orchestrator.subagents);\n activeSubagentsRef.value = reactiveSubagents.mapActiveSubagents(\n orchestrator.activeSubagents\n );\n });\n\n onScopeDispose(() => {\n unsubscribe();\n orchestrator.dispose();\n });\n\n // Subagent reconstruction\n watch(\n () => {\n void version.value;\n const hvMessages = orchestrator.messages;\n return {\n should:\n options.filterSubagentMessages &&\n !orchestrator.isLoading &&\n !orchestrator.historyData.isLoading &&\n hvMessages.length > 0,\n len: hvMessages.length,\n };\n },\n ({ should }, _prev, onCleanup) => {\n if (should) {\n const controller = orchestrator.reconstructSubagentsIfNeeded();\n if (controller) {\n onCleanup(() => controller.abort());\n }\n }\n },\n { immediate: true }\n );\n\n // Queue draining\n watch(\n () => ({\n loading: orchestrator.isLoading,\n size: orchestrator.queueSize,\n v: version.value,\n }),\n () => {\n orchestrator.drainQueue();\n }\n );\n\n // Auto-reconnect\n let { shouldReconnect } = orchestrator;\n if (shouldReconnect) {\n orchestrator.tryReconnect();\n }\n\n watch(\n () => {\n void version.value;\n return orchestrator.threadId;\n },\n () => {\n ({ shouldReconnect } = orchestrator);\n if (shouldReconnect) {\n orchestrator.tryReconnect();\n }\n }\n );\n\n // Cached computed properties derived from the orchestrator.\n //\n // The orchestrator is not itself reactive — it is a plain object whose\n // state is mutated in place. To bridge it into Vue's reactivity system\n // we bump `version` (a shallowRef) inside the orchestrator's subscribe\n // callback. Each computed below reads `version.value` (via `void`) to\n // register it as a dependency. When `version` increments, Vue marks\n // every computed that depends on it as dirty, causing a re-evaluation\n // on the next access. The `void` operator discards the unused value\n // and signals this intent to future readers.\n const values = computed(() => {\n void version.value;\n return orchestrator.values;\n });\n\n const error = computed(() => {\n void version.value;\n return orchestrator.error;\n });\n\n const isLoading = computed(() => {\n void version.value;\n return orchestrator.isLoading;\n });\n\n const branch = ref<string>(\"\");\n watch(\n () => {\n void version.value;\n return orchestrator.branch;\n },\n (newBranch) => {\n if (branch.value !== newBranch) branch.value = newBranch;\n },\n { immediate: true }\n );\n\n const messages = computed(() => {\n void version.value;\n orchestrator.trackStreamMode(\"messages-tuple\");\n return ensureMessageInstances(orchestrator.messages);\n });\n\n const toolCalls = computed(() => {\n void version.value;\n return orchestrator.toolCalls;\n });\n\n const interrupt = computed(() => {\n void version.value;\n return orchestrator.interrupt;\n });\n\n const interrupts = computed(() => {\n void version.value;\n return orchestrator.interrupts;\n });\n\n const flatHistory = computed(() => {\n void version.value;\n return orchestrator.flatHistory;\n });\n\n const isThreadLoading = computed(() => {\n void version.value;\n return orchestrator.isThreadLoading;\n });\n\n const experimentalBranchTree = computed(() => {\n void version.value;\n return orchestrator.experimental_branchTree;\n });\n\n const queueEntries = computed(() => {\n void version.value;\n return orchestrator.queueEntries;\n });\n\n const queueSize = computed(() => {\n void version.value;\n return orchestrator.queueSize;\n });\n\n return {\n get assistantId() {\n return toValue(options.assistantId);\n },\n get client() {\n return client.value;\n },\n\n values,\n error,\n isLoading,\n\n branch,\n setBranch(value: string) {\n orchestrator.setBranch(value);\n },\n\n messages,\n toolCalls,\n\n getToolCalls(message: Message) {\n orchestrator.trackStreamMode(\"messages-tuple\");\n return orchestrator.getToolCalls(message);\n },\n\n interrupt,\n interrupts,\n history: flatHistory,\n isThreadLoading,\n experimental_branchTree: experimentalBranchTree,\n\n getMessagesMetadata: (\n message: Message,\n index?: number\n ): MessageMetadata<StateType> | undefined => {\n 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: reactive({\n entries: queueEntries,\n size: queueSize,\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.value;\n },\n get activeSubagents() {\n return activeSubagentsRef.value;\n },\n getSubagent(toolCallId: string) {\n void version.value;\n return reactiveSubagents.getSubagent(toolCallId);\n },\n getSubagentsByType(type: string) {\n return reactiveSubagents.getSubagentsByType(type);\n },\n getSubagentsByMessage(messageId: string) {\n return reactiveSubagents.getSubagentsByMessage(messageId);\n },\n };\n}\n\nexport type { ClassSubagentStreamInterface } from \"@langchain/langgraph-sdk/ui\";\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 ? ComputedRef<BaseMessage[]>\n : K extends \"getMessagesMetadata\"\n ? (\n message: BaseMessage,\n index?: number\n ) => MessageMetadata<Record<string, unknown>> | undefined\n : K extends \"toolCalls\"\n ? T[K] extends (infer TC)[]\n ? Ref<ClassToolCallWithResult<TC>[]>\n : Ref<T[K]>\n : K extends \"getToolCalls\"\n ? T[K] extends (message: infer _M) => (infer TC)[]\n ? (message: CoreAIMessage) => ClassToolCallWithResult<TC>[]\n : T[K]\n : 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 ? ComputedRef<HistoryWithBaseMessages<T[K]>>\n : T[K] extends (...args: infer A) => infer R\n ? (...args: A) => R\n : Ref<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: VueReactiveOptions<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: VueReactiveOptions<\n UseStreamCustomOptions<InferStateType<T>, InferBag<T, Bag>>\n >\n): WithClassMessages<ResolveStreamInterface<T, InferBag<T, Bag>>>;\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function useStream(options: any): any {\n if (\"transport\" in options) {\n return useStreamCustom(options);\n }\n return useStreamLGP(options);\n}\n\nexport type { MaybeRefOrGetter } from \"vue\";\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\";\nexport type {\n HeadlessToolImplementation,\n AnyHeadlessToolImplementation,\n ToolEvent,\n HeadlessToolInterrupt,\n OnToolCallback,\n FlushPendingHeadlessToolInterruptsOptions,\n} from \"@langchain/langgraph-sdk\";\n\nexport {\n SubagentManager,\n extractToolCallIdFromNamespace,\n calculateDepthFromNamespace,\n extractParentIdFromNamespace,\n isSubagentNamespace,\n} from \"@langchain/langgraph-sdk/ui\";\nexport {\n isHeadlessToolInterrupt,\n parseHeadlessToolInterruptPayload,\n filterOutHeadlessToolInterrupts,\n findHeadlessTool,\n executeHeadlessTool,\n handleHeadlessToolInterrupt,\n headlessToolResumeCommand,\n flushPendingHeadlessToolInterrupts,\n} from \"@langchain/langgraph-sdk\";\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","names":["LANGCHAIN_OPTIONS","Client","StreamOrchestrator","createReactiveSubagentAccessors","useStreamCustom"],"sources":["../src/index.ts"],"sourcesContent":["import {\n computed,\n inject,\n onScopeDispose,\n reactive,\n ref,\n shallowRef,\n toValue,\n watch,\n type ComputedRef,\n type Ref,\n} from \"vue\";\nimport type {\n BaseMessage,\n ToolMessage as CoreToolMessage,\n AIMessage as CoreAIMessage,\n} from \"@langchain/core/messages\";\nimport {\n 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 type ClassToolCallWithResult,\n type ClassSubagentStreamInterface,\n} from \"@langchain/langgraph-sdk/ui\";\n\nimport {\n Client,\n type Message,\n type BagTemplate,\n type ToolCallWithResult as _ToolCallWithResult,\n type DefaultToolCall,\n} from \"@langchain/langgraph-sdk\";\n\nimport { useStreamCustom } from \"./stream.custom.js\";\nimport type { VueReactiveOptions } from \"./types.js\";\nimport { LANGCHAIN_OPTIONS, type LangChainPluginOptions } from \"./context.js\";\nimport { createReactiveSubagentAccessors } from \"./subagents.js\";\n\nexport { FetchStreamTransport };\nexport type { VueReactiveOptions } from \"./types.js\";\nexport {\n LangChainPlugin,\n provideStream,\n useStreamContext,\n LANGCHAIN_OPTIONS,\n} from \"./context.js\";\nexport type { LangChainPluginOptions } from \"./context.js\";\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: VueReactiveOptions<AnyStreamOptions<StateType, Bag>>) {\n const pluginOptions: LangChainPluginOptions = inject(LANGCHAIN_OPTIONS, {});\n\n const client = computed(() => {\n const c = toValue(options.client) ?? pluginOptions.client;\n if (c) return c;\n return new Client({\n apiUrl: toValue(options.apiUrl) ?? pluginOptions.apiUrl,\n apiKey: toValue(options.apiKey) ?? pluginOptions.apiKey,\n callerOptions: toValue(options.callerOptions),\n defaultHeaders: toValue(options.defaultHeaders),\n });\n });\n\n const orchestrator = new StreamOrchestrator<StateType, Bag>(\n options as unknown as AnyStreamOptions<StateType, Bag>,\n {\n getClient: () => client.value,\n getAssistantId: () => toValue(options.assistantId),\n getMessagesKey: () => toValue(options.messagesKey) ?? \"messages\",\n }\n );\n\n const initialThreadId = toValue(options.threadId) ?? undefined;\n orchestrator.initThreadId(initialThreadId);\n\n watch(\n () => toValue(options.threadId),\n (newId) => {\n const resolved = newId ?? undefined;\n orchestrator.setThreadId(resolved);\n },\n { flush: \"sync\" }\n );\n\n // Monotonically increasing counter bumped on every orchestrator update.\n // Computed properties read `version.value` (via `void version.value`)\n // solely to register a reactive dependency, so Vue knows to invalidate\n // their cached values when the orchestrator state changes.\n const version = shallowRef(0);\n const reactiveSubagents = createReactiveSubagentAccessors(\n {\n getSubagent: (toolCallId) => orchestrator.getSubagent(toolCallId),\n getSubagentsByType: (type) => orchestrator.getSubagentsByType(type),\n getSubagentsByMessage: (messageId) =>\n orchestrator.getSubagentsByMessage(messageId),\n },\n version\n );\n const subagentsRef = shallowRef(\n reactiveSubagents.mapSubagents(orchestrator.subagents)\n );\n const activeSubagentsRef = shallowRef(\n reactiveSubagents.mapActiveSubagents(orchestrator.activeSubagents)\n );\n\n const unsubscribe = orchestrator.subscribe(() => {\n version.value += 1;\n subagentsRef.value = reactiveSubagents.mapSubagents(orchestrator.subagents);\n activeSubagentsRef.value = reactiveSubagents.mapActiveSubagents(\n orchestrator.activeSubagents\n );\n });\n\n onScopeDispose(() => {\n unsubscribe();\n orchestrator.dispose();\n });\n\n // Subagent reconstruction\n watch(\n () => {\n void version.value;\n const hvMessages = orchestrator.messages;\n return {\n should:\n options.filterSubagentMessages &&\n !orchestrator.isLoading &&\n !orchestrator.historyData.isLoading &&\n hvMessages.length > 0,\n len: hvMessages.length,\n };\n },\n ({ should }, _prev, onCleanup) => {\n if (should) {\n const controller = orchestrator.reconstructSubagentsIfNeeded();\n if (controller) {\n onCleanup(() => controller.abort());\n }\n }\n },\n { immediate: true }\n );\n\n // Queue draining\n watch(\n () => ({\n loading: orchestrator.isLoading,\n size: orchestrator.queueSize,\n v: version.value,\n }),\n () => {\n orchestrator.drainQueue();\n }\n );\n\n // Auto-reconnect\n let { shouldReconnect } = orchestrator;\n if (shouldReconnect) {\n orchestrator.tryReconnect();\n }\n\n watch(\n () => {\n void version.value;\n return orchestrator.threadId;\n },\n () => {\n ({ shouldReconnect } = orchestrator);\n if (shouldReconnect) {\n orchestrator.tryReconnect();\n }\n }\n );\n\n // Cached computed properties derived from the orchestrator.\n //\n // The orchestrator is not itself reactive — it is a plain object whose\n // state is mutated in place. To bridge it into Vue's reactivity system\n // we bump `version` (a shallowRef) inside the orchestrator's subscribe\n // callback. Each computed below reads `version.value` (via `void`) to\n // register it as a dependency. When `version` increments, Vue marks\n // every computed that depends on it as dirty, causing a re-evaluation\n // on the next access. The `void` operator discards the unused value\n // and signals this intent to future readers.\n const values = computed(() => {\n void version.value;\n return orchestrator.values;\n });\n\n const error = computed(() => {\n void version.value;\n return orchestrator.error;\n });\n\n const isLoading = computed(() => {\n void version.value;\n return orchestrator.isLoading;\n });\n\n const branch = ref<string>(\"\");\n watch(\n () => {\n void version.value;\n return orchestrator.branch;\n },\n (newBranch) => {\n if (branch.value !== newBranch) branch.value = newBranch;\n },\n { immediate: true }\n );\n\n const messages = computed(() => {\n void version.value;\n orchestrator.trackStreamMode(\"messages-tuple\");\n return ensureMessageInstances(orchestrator.messages);\n });\n\n const toolCalls = computed(() => {\n void version.value;\n return orchestrator.toolCalls;\n });\n\n const interrupt = computed(() => {\n void version.value;\n return orchestrator.interrupt;\n });\n\n const interrupts = computed(() => {\n void version.value;\n return orchestrator.interrupts;\n });\n\n const flatHistory = computed(() => {\n void version.value;\n return orchestrator.flatHistory;\n });\n\n const isThreadLoading = computed(() => {\n void version.value;\n return orchestrator.isThreadLoading;\n });\n\n const experimentalBranchTree = computed(() => {\n void version.value;\n return orchestrator.experimental_branchTree;\n });\n\n const queueEntries = computed(() => {\n void version.value;\n return orchestrator.queueEntries;\n });\n\n const queueSize = computed(() => {\n void version.value;\n return orchestrator.queueSize;\n });\n\n return {\n get assistantId() {\n return toValue(options.assistantId);\n },\n get client() {\n return client.value;\n },\n\n values,\n error,\n isLoading,\n\n branch,\n setBranch(value: string) {\n orchestrator.setBranch(value);\n },\n\n messages,\n toolCalls,\n\n getToolCalls(message: Message) {\n orchestrator.trackStreamMode(\"messages-tuple\");\n return orchestrator.getToolCalls(message);\n },\n\n interrupt,\n interrupts,\n history: flatHistory,\n isThreadLoading,\n experimental_branchTree: experimentalBranchTree,\n\n getMessagesMetadata: (\n message: Message,\n index?: number\n ): MessageMetadata<StateType> | undefined => {\n 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: reactive({\n entries: queueEntries,\n size: queueSize,\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 void messages.value.length;\n void version.value;\n return reactiveSubagents.mapSubagents(orchestrator.subagents);\n },\n get activeSubagents() {\n void messages.value.length;\n void version.value;\n return reactiveSubagents.mapActiveSubagents(orchestrator.activeSubagents);\n },\n getSubagent(toolCallId: string) {\n void messages.value.length;\n void version.value;\n return reactiveSubagents.getSubagent(toolCallId);\n },\n getSubagentsByType(type: string) {\n void messages.value.length;\n void version.value;\n return reactiveSubagents.getSubagentsByType(type);\n },\n getSubagentsByMessage(messageId: string) {\n void messages.value.length;\n void version.value;\n return reactiveSubagents.getSubagentsByMessage(messageId);\n },\n };\n}\n\nexport type { ClassSubagentStreamInterface } from \"@langchain/langgraph-sdk/ui\";\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 ? ComputedRef<BaseMessage[]>\n : K extends \"getMessagesMetadata\"\n ? (\n message: BaseMessage,\n index?: number\n ) => MessageMetadata<Record<string, unknown>> | undefined\n : K extends \"toolCalls\"\n ? T[K] extends (infer TC)[]\n ? Ref<ClassToolCallWithResult<TC>[]>\n : Ref<T[K]>\n : K extends \"getToolCalls\"\n ? T[K] extends (message: infer _M) => (infer TC)[]\n ? (message: CoreAIMessage) => ClassToolCallWithResult<TC>[]\n : T[K]\n : 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 ? ComputedRef<HistoryWithBaseMessages<T[K]>>\n : T[K] extends (...args: infer A) => infer R\n ? (...args: A) => R\n : Ref<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: VueReactiveOptions<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: VueReactiveOptions<\n UseStreamCustomOptions<InferStateType<T>, InferBag<T, Bag>>\n >\n): WithClassMessages<ResolveStreamInterface<T, InferBag<T, Bag>>>;\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function useStream(options: any): any {\n if (\"transport\" in options) {\n return useStreamCustom(options);\n }\n return useStreamLGP(options);\n}\n\nexport type { MaybeRefOrGetter } from \"vue\";\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\";\nexport type {\n HeadlessToolImplementation,\n AnyHeadlessToolImplementation,\n ToolEvent,\n HeadlessToolInterrupt,\n OnToolCallback,\n FlushPendingHeadlessToolInterruptsOptions,\n} from \"@langchain/langgraph-sdk\";\n\nexport {\n SubagentManager,\n extractToolCallIdFromNamespace,\n calculateDepthFromNamespace,\n extractParentIdFromNamespace,\n isSubagentNamespace,\n} from \"@langchain/langgraph-sdk/ui\";\nexport {\n isHeadlessToolInterrupt,\n parseHeadlessToolInterruptPayload,\n filterOutHeadlessToolInterrupts,\n findHeadlessTool,\n executeHeadlessTool,\n handleHeadlessToolInterrupt,\n headlessToolResumeCommand,\n flushPendingHeadlessToolInterrupts,\n} from \"@langchain/langgraph-sdk\";\n"],"mappings":"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"}
|
package/dist/index.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.cts","names":[],"sources":["../src/index.ts"],"mappings":";;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.d.cts","names":[],"sources":["../src/index.ts"],"mappings":";;;;;;;;KAuWK,iBAAA,oBACS,CAAA,IAAK,CAAA,kFAKb,CAAA,GAAI,CAAA,sBACJ,WAAA,CAAY,WAAA,MACZ,CAAA,kCAEI,OAAA,EAAS,WAAA,EACT,KAAA,cACG,iBAAA,CAAgB,MAAA,iCACrB,CAAA,uBACE,CAAA,CAAE,CAAA,yBACA,GAAA,CAAI,uBAAA,CAAwB,EAAA,OAC5B,GAAA,CAAI,CAAA,CAAE,CAAA,KACR,CAAA,0BACE,CAAA,CAAE,CAAA,YAAY,OAAA,gCACX,OAAA,EAAS,SAAA,KAAkB,uBAAA,CAAwB,EAAA,MACpD,CAAA,CAAE,CAAA,IACJ,CAAA,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,8BAAA,CAA6B,CAAA,EAAG,EAAA,EAAI,CAAA,KAChD,CAAA,CAAE,CAAA,IACJ,CAAA,6BACE,CAAA,CAAE,CAAA,UAAW,yBAAA,iCAKX,8BAAA,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,WAAA,CAAY,uBAAA,CAAwB,CAAA,CAAE,CAAA,MACtC,CAAA,CAAE,CAAA,eAAe,IAAA,6BACX,IAAA,EAAM,CAAA,KAAM,CAAA,GAChB,GAAA,CAAI,CAAA,CAAE,CAAA,kCACD,CAAA;EAEzB,WAAA,EAAa,CAAA;IACX,WAAA,GACE,EAAA,aACG,yBAAA;EAAA,KAGD,UAAA,aACG,8BAAA,CAA6B,CAAA,EAAG,EAAA,EAAI,CAAA;EAE7C,kBAAA,EAAoB,CAAA;IAClB,kBAAA,GACE,IAAA,aACG,yBAAA;EAAA,KAEF,IAAA,aAAiB,8BAAA,CAA6B,CAAA,EAAG,EAAA,EAAI,CAAA;EAE1D,qBAAA,EAAuB,CAAA;IACrB,qBAAA,GACE,EAAA,aACG,yBAAA;EAAA,KAEF,SAAA,aAAsB,8BAAA,CAA6B,CAAA,EAAG,EAAA,EAAI,CAAA;AAAA;AAAA,iBAKrD,SAAA,KACV,MAAA,+BACQ,WAAA,GAAc,WAAA,CAAA,CAE1B,OAAA,EAAS,kBAAA,CAAmB,sBAAA,CAAqB,CAAA,EAAG,UAAA,CAAS,CAAA,EAAG,GAAA,MAC/D,iBAAA,CAAkB,wBAAA,CAAuB,CAAA,EAAG,UAAA,CAAS,CAAA,EAAG,GAAA;AAAA,iBAE3C,SAAA,KACV,MAAA,+BACQ,WAAA,GAAc,WAAA,CAAA,CAE1B,OAAA,EAAS,kBAAA,CACP,wBAAA,CAAuB,gBAAA,CAAe,CAAA,GAAI,UAAA,CAAS,CAAA,EAAG,GAAA,MAEvD,iBAAA,CAAkB,wBAAA,CAAuB,CAAA,EAAG,UAAA,CAAS,CAAA,EAAG,GAAA;AAAA,KAyD/C,kBAAA,YAA8B,iBAAA,IACxC,oBAAA,CAAoB,QAAA,EAAU,WAAA,EAAiB,SAAA"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../src/index.ts"],"mappings":";;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../src/index.ts"],"mappings":";;;;;;;;KAuWK,iBAAA,oBACS,CAAA,IAAK,CAAA,kFAKb,CAAA,GAAI,CAAA,sBACJ,WAAA,CAAY,WAAA,MACZ,CAAA,kCAEI,OAAA,EAAS,WAAA,EACT,KAAA,cACG,iBAAA,CAAgB,MAAA,iCACrB,CAAA,uBACE,CAAA,CAAE,CAAA,yBACA,GAAA,CAAI,uBAAA,CAAwB,EAAA,OAC5B,GAAA,CAAI,CAAA,CAAE,CAAA,KACR,CAAA,0BACE,CAAA,CAAE,CAAA,YAAY,OAAA,gCACX,OAAA,EAAS,SAAA,KAAkB,uBAAA,CAAwB,EAAA,MACpD,CAAA,CAAE,CAAA,IACJ,CAAA,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,8BAAA,CAA6B,CAAA,EAAG,EAAA,EAAI,CAAA,KAChD,CAAA,CAAE,CAAA,IACJ,CAAA,6BACE,CAAA,CAAE,CAAA,UAAW,yBAAA,iCAKX,8BAAA,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,WAAA,CAAY,uBAAA,CAAwB,CAAA,CAAE,CAAA,MACtC,CAAA,CAAE,CAAA,eAAe,IAAA,6BACX,IAAA,EAAM,CAAA,KAAM,CAAA,GAChB,GAAA,CAAI,CAAA,CAAE,CAAA,kCACD,CAAA;EAEzB,WAAA,EAAa,CAAA;IACX,WAAA,GACE,EAAA,aACG,yBAAA;EAAA,KAGD,UAAA,aACG,8BAAA,CAA6B,CAAA,EAAG,EAAA,EAAI,CAAA;EAE7C,kBAAA,EAAoB,CAAA;IAClB,kBAAA,GACE,IAAA,aACG,yBAAA;EAAA,KAEF,IAAA,aAAiB,8BAAA,CAA6B,CAAA,EAAG,EAAA,EAAI,CAAA;EAE1D,qBAAA,EAAuB,CAAA;IACrB,qBAAA,GACE,EAAA,aACG,yBAAA;EAAA,KAEF,SAAA,aAAsB,8BAAA,CAA6B,CAAA,EAAG,EAAA,EAAI,CAAA;AAAA;AAAA,iBAKrD,SAAA,KACV,MAAA,+BACQ,WAAA,GAAc,WAAA,CAAA,CAE1B,OAAA,EAAS,kBAAA,CAAmB,sBAAA,CAAqB,CAAA,EAAG,UAAA,CAAS,CAAA,EAAG,GAAA,MAC/D,iBAAA,CAAkB,wBAAA,CAAuB,CAAA,EAAG,UAAA,CAAS,CAAA,EAAG,GAAA;AAAA,iBAE3C,SAAA,KACV,MAAA,+BACQ,WAAA,GAAc,WAAA,CAAA,CAE1B,OAAA,EAAS,kBAAA,CACP,wBAAA,CAAuB,gBAAA,CAAe,CAAA,GAAI,UAAA,CAAS,CAAA,EAAG,GAAA,MAEvD,iBAAA,CAAkB,wBAAA,CAAuB,CAAA,EAAG,UAAA,CAAS,CAAA,EAAG,GAAA;AAAA,KAyD/C,kBAAA,YAA8B,iBAAA,IACxC,oBAAA,CAAoB,QAAA,EAAU,WAAA,EAAiB,SAAA"}
|
package/dist/index.js
CHANGED
|
@@ -93,6 +93,11 @@ function useStreamLGP(options) {
|
|
|
93
93
|
}, (newBranch) => {
|
|
94
94
|
if (branch.value !== newBranch) branch.value = newBranch;
|
|
95
95
|
}, { immediate: true });
|
|
96
|
+
const messages = computed(() => {
|
|
97
|
+
version.value;
|
|
98
|
+
orchestrator.trackStreamMode("messages-tuple");
|
|
99
|
+
return ensureMessageInstances(orchestrator.messages);
|
|
100
|
+
});
|
|
96
101
|
return {
|
|
97
102
|
get assistantId() {
|
|
98
103
|
return toValue(options.assistantId);
|
|
@@ -107,11 +112,7 @@ function useStreamLGP(options) {
|
|
|
107
112
|
setBranch(value) {
|
|
108
113
|
orchestrator.setBranch(value);
|
|
109
114
|
},
|
|
110
|
-
messages
|
|
111
|
-
version.value;
|
|
112
|
-
orchestrator.trackStreamMode("messages-tuple");
|
|
113
|
-
return ensureMessageInstances(orchestrator.messages);
|
|
114
|
-
}),
|
|
115
|
+
messages,
|
|
115
116
|
toolCalls: computed(() => {
|
|
116
117
|
version.value;
|
|
117
118
|
return orchestrator.toolCalls;
|
|
@@ -162,19 +163,28 @@ function useStreamLGP(options) {
|
|
|
162
163
|
orchestrator.switchThread(newThreadId);
|
|
163
164
|
},
|
|
164
165
|
get subagents() {
|
|
165
|
-
|
|
166
|
+
messages.value.length;
|
|
167
|
+
version.value;
|
|
168
|
+
return reactiveSubagents.mapSubagents(orchestrator.subagents);
|
|
166
169
|
},
|
|
167
170
|
get activeSubagents() {
|
|
168
|
-
|
|
171
|
+
messages.value.length;
|
|
172
|
+
version.value;
|
|
173
|
+
return reactiveSubagents.mapActiveSubagents(orchestrator.activeSubagents);
|
|
169
174
|
},
|
|
170
175
|
getSubagent(toolCallId) {
|
|
176
|
+
messages.value.length;
|
|
171
177
|
version.value;
|
|
172
178
|
return reactiveSubagents.getSubagent(toolCallId);
|
|
173
179
|
},
|
|
174
180
|
getSubagentsByType(type) {
|
|
181
|
+
messages.value.length;
|
|
182
|
+
version.value;
|
|
175
183
|
return reactiveSubagents.getSubagentsByType(type);
|
|
176
184
|
},
|
|
177
185
|
getSubagentsByMessage(messageId) {
|
|
186
|
+
messages.value.length;
|
|
187
|
+
version.value;
|
|
178
188
|
return reactiveSubagents.getSubagentsByMessage(messageId);
|
|
179
189
|
}
|
|
180
190
|
};
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../src/index.ts"],"sourcesContent":["import {\n computed,\n inject,\n onScopeDispose,\n reactive,\n ref,\n shallowRef,\n toValue,\n watch,\n type ComputedRef,\n type Ref,\n} from \"vue\";\nimport type {\n BaseMessage,\n ToolMessage as CoreToolMessage,\n AIMessage as CoreAIMessage,\n} from \"@langchain/core/messages\";\nimport {\n 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 type ClassToolCallWithResult,\n type ClassSubagentStreamInterface,\n} from \"@langchain/langgraph-sdk/ui\";\n\nimport {\n Client,\n type Message,\n type BagTemplate,\n type ToolCallWithResult as _ToolCallWithResult,\n type DefaultToolCall,\n} from \"@langchain/langgraph-sdk\";\n\nimport { useStreamCustom } from \"./stream.custom.js\";\nimport type { VueReactiveOptions } from \"./types.js\";\nimport { LANGCHAIN_OPTIONS, type LangChainPluginOptions } from \"./context.js\";\nimport { createReactiveSubagentAccessors } from \"./subagents.js\";\n\nexport { FetchStreamTransport };\nexport type { VueReactiveOptions } from \"./types.js\";\nexport {\n LangChainPlugin,\n provideStream,\n useStreamContext,\n LANGCHAIN_OPTIONS,\n} from \"./context.js\";\nexport type { LangChainPluginOptions } from \"./context.js\";\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: VueReactiveOptions<AnyStreamOptions<StateType, Bag>>) {\n const pluginOptions: LangChainPluginOptions = inject(LANGCHAIN_OPTIONS, {});\n\n const client = computed(() => {\n const c = toValue(options.client) ?? pluginOptions.client;\n if (c) return c;\n return new Client({\n apiUrl: toValue(options.apiUrl) ?? pluginOptions.apiUrl,\n apiKey: toValue(options.apiKey) ?? pluginOptions.apiKey,\n callerOptions: toValue(options.callerOptions),\n defaultHeaders: toValue(options.defaultHeaders),\n });\n });\n\n const orchestrator = new StreamOrchestrator<StateType, Bag>(\n options as unknown as AnyStreamOptions<StateType, Bag>,\n {\n getClient: () => client.value,\n getAssistantId: () => toValue(options.assistantId),\n getMessagesKey: () => toValue(options.messagesKey) ?? \"messages\",\n }\n );\n\n const initialThreadId = toValue(options.threadId) ?? undefined;\n orchestrator.initThreadId(initialThreadId);\n\n watch(\n () => toValue(options.threadId),\n (newId) => {\n const resolved = newId ?? undefined;\n orchestrator.setThreadId(resolved);\n },\n { flush: \"sync\" }\n );\n\n // Monotonically increasing counter bumped on every orchestrator update.\n // Computed properties read `version.value` (via `void version.value`)\n // solely to register a reactive dependency, so Vue knows to invalidate\n // their cached values when the orchestrator state changes.\n const version = shallowRef(0);\n const reactiveSubagents = createReactiveSubagentAccessors(\n {\n getSubagent: (toolCallId) => orchestrator.getSubagent(toolCallId),\n getSubagentsByType: (type) => orchestrator.getSubagentsByType(type),\n getSubagentsByMessage: (messageId) =>\n orchestrator.getSubagentsByMessage(messageId),\n },\n version\n );\n const subagentsRef = shallowRef(\n reactiveSubagents.mapSubagents(orchestrator.subagents)\n );\n const activeSubagentsRef = shallowRef(\n reactiveSubagents.mapActiveSubagents(orchestrator.activeSubagents)\n );\n\n const unsubscribe = orchestrator.subscribe(() => {\n version.value += 1;\n subagentsRef.value = reactiveSubagents.mapSubagents(orchestrator.subagents);\n activeSubagentsRef.value = reactiveSubagents.mapActiveSubagents(\n orchestrator.activeSubagents\n );\n });\n\n onScopeDispose(() => {\n unsubscribe();\n orchestrator.dispose();\n });\n\n // Subagent reconstruction\n watch(\n () => {\n void version.value;\n const hvMessages = orchestrator.messages;\n return {\n should:\n options.filterSubagentMessages &&\n !orchestrator.isLoading &&\n !orchestrator.historyData.isLoading &&\n hvMessages.length > 0,\n len: hvMessages.length,\n };\n },\n ({ should }, _prev, onCleanup) => {\n if (should) {\n const controller = orchestrator.reconstructSubagentsIfNeeded();\n if (controller) {\n onCleanup(() => controller.abort());\n }\n }\n },\n { immediate: true }\n );\n\n // Queue draining\n watch(\n () => ({\n loading: orchestrator.isLoading,\n size: orchestrator.queueSize,\n v: version.value,\n }),\n () => {\n orchestrator.drainQueue();\n }\n );\n\n // Auto-reconnect\n let { shouldReconnect } = orchestrator;\n if (shouldReconnect) {\n orchestrator.tryReconnect();\n }\n\n watch(\n () => {\n void version.value;\n return orchestrator.threadId;\n },\n () => {\n ({ shouldReconnect } = orchestrator);\n if (shouldReconnect) {\n orchestrator.tryReconnect();\n }\n }\n );\n\n // Cached computed properties derived from the orchestrator.\n //\n // The orchestrator is not itself reactive — it is a plain object whose\n // state is mutated in place. To bridge it into Vue's reactivity system\n // we bump `version` (a shallowRef) inside the orchestrator's subscribe\n // callback. Each computed below reads `version.value` (via `void`) to\n // register it as a dependency. When `version` increments, Vue marks\n // every computed that depends on it as dirty, causing a re-evaluation\n // on the next access. The `void` operator discards the unused value\n // and signals this intent to future readers.\n const values = computed(() => {\n void version.value;\n return orchestrator.values;\n });\n\n const error = computed(() => {\n void version.value;\n return orchestrator.error;\n });\n\n const isLoading = computed(() => {\n void version.value;\n return orchestrator.isLoading;\n });\n\n const branch = ref<string>(\"\");\n watch(\n () => {\n void version.value;\n return orchestrator.branch;\n },\n (newBranch) => {\n if (branch.value !== newBranch) branch.value = newBranch;\n },\n { immediate: true }\n );\n\n const messages = computed(() => {\n void version.value;\n orchestrator.trackStreamMode(\"messages-tuple\");\n return ensureMessageInstances(orchestrator.messages);\n });\n\n const toolCalls = computed(() => {\n void version.value;\n return orchestrator.toolCalls;\n });\n\n const interrupt = computed(() => {\n void version.value;\n return orchestrator.interrupt;\n });\n\n const interrupts = computed(() => {\n void version.value;\n return orchestrator.interrupts;\n });\n\n const flatHistory = computed(() => {\n void version.value;\n return orchestrator.flatHistory;\n });\n\n const isThreadLoading = computed(() => {\n void version.value;\n return orchestrator.isThreadLoading;\n });\n\n const experimentalBranchTree = computed(() => {\n void version.value;\n return orchestrator.experimental_branchTree;\n });\n\n const queueEntries = computed(() => {\n void version.value;\n return orchestrator.queueEntries;\n });\n\n const queueSize = computed(() => {\n void version.value;\n return orchestrator.queueSize;\n });\n\n return {\n get assistantId() {\n return toValue(options.assistantId);\n },\n get client() {\n return client.value;\n },\n\n values,\n error,\n isLoading,\n\n branch,\n setBranch(value: string) {\n orchestrator.setBranch(value);\n },\n\n messages,\n toolCalls,\n\n getToolCalls(message: Message) {\n orchestrator.trackStreamMode(\"messages-tuple\");\n return orchestrator.getToolCalls(message);\n },\n\n interrupt,\n interrupts,\n history: flatHistory,\n isThreadLoading,\n experimental_branchTree: experimentalBranchTree,\n\n getMessagesMetadata: (\n message: Message,\n index?: number\n ): MessageMetadata<StateType> | undefined => {\n 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: reactive({\n entries: queueEntries,\n size: queueSize,\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.value;\n },\n get activeSubagents() {\n return activeSubagentsRef.value;\n },\n getSubagent(toolCallId: string) {\n void version.value;\n return reactiveSubagents.getSubagent(toolCallId);\n },\n getSubagentsByType(type: string) {\n return reactiveSubagents.getSubagentsByType(type);\n },\n getSubagentsByMessage(messageId: string) {\n return reactiveSubagents.getSubagentsByMessage(messageId);\n },\n };\n}\n\nexport type { ClassSubagentStreamInterface } from \"@langchain/langgraph-sdk/ui\";\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 ? ComputedRef<BaseMessage[]>\n : K extends \"getMessagesMetadata\"\n ? (\n message: BaseMessage,\n index?: number\n ) => MessageMetadata<Record<string, unknown>> | undefined\n : K extends \"toolCalls\"\n ? T[K] extends (infer TC)[]\n ? Ref<ClassToolCallWithResult<TC>[]>\n : Ref<T[K]>\n : K extends \"getToolCalls\"\n ? T[K] extends (message: infer _M) => (infer TC)[]\n ? (message: CoreAIMessage) => ClassToolCallWithResult<TC>[]\n : T[K]\n : 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 ? ComputedRef<HistoryWithBaseMessages<T[K]>>\n : T[K] extends (...args: infer A) => infer R\n ? (...args: A) => R\n : Ref<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: VueReactiveOptions<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: VueReactiveOptions<\n UseStreamCustomOptions<InferStateType<T>, InferBag<T, Bag>>\n >\n): WithClassMessages<ResolveStreamInterface<T, InferBag<T, Bag>>>;\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function useStream(options: any): any {\n if (\"transport\" in options) {\n return useStreamCustom(options);\n }\n return useStreamLGP(options);\n}\n\nexport type { MaybeRefOrGetter } from \"vue\";\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\";\nexport type {\n HeadlessToolImplementation,\n AnyHeadlessToolImplementation,\n ToolEvent,\n HeadlessToolInterrupt,\n OnToolCallback,\n FlushPendingHeadlessToolInterruptsOptions,\n} from \"@langchain/langgraph-sdk\";\n\nexport {\n SubagentManager,\n extractToolCallIdFromNamespace,\n calculateDepthFromNamespace,\n extractParentIdFromNamespace,\n isSubagentNamespace,\n} from \"@langchain/langgraph-sdk/ui\";\nexport {\n isHeadlessToolInterrupt,\n parseHeadlessToolInterruptPayload,\n filterOutHeadlessToolInterrupts,\n findHeadlessTool,\n executeHeadlessTool,\n handleHeadlessToolInterrupt,\n headlessToolResumeCommand,\n flushPendingHeadlessToolInterrupts,\n} from \"@langchain/langgraph-sdk\";\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../src/index.ts"],"sourcesContent":["import {\n computed,\n inject,\n onScopeDispose,\n reactive,\n ref,\n shallowRef,\n toValue,\n watch,\n type ComputedRef,\n type Ref,\n} from \"vue\";\nimport type {\n BaseMessage,\n ToolMessage as CoreToolMessage,\n AIMessage as CoreAIMessage,\n} from \"@langchain/core/messages\";\nimport {\n 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 type ClassToolCallWithResult,\n type ClassSubagentStreamInterface,\n} from \"@langchain/langgraph-sdk/ui\";\n\nimport {\n Client,\n type Message,\n type BagTemplate,\n type ToolCallWithResult as _ToolCallWithResult,\n type DefaultToolCall,\n} from \"@langchain/langgraph-sdk\";\n\nimport { useStreamCustom } from \"./stream.custom.js\";\nimport type { VueReactiveOptions } from \"./types.js\";\nimport { LANGCHAIN_OPTIONS, type LangChainPluginOptions } from \"./context.js\";\nimport { createReactiveSubagentAccessors } from \"./subagents.js\";\n\nexport { FetchStreamTransport };\nexport type { VueReactiveOptions } from \"./types.js\";\nexport {\n LangChainPlugin,\n provideStream,\n useStreamContext,\n LANGCHAIN_OPTIONS,\n} from \"./context.js\";\nexport type { LangChainPluginOptions } from \"./context.js\";\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: VueReactiveOptions<AnyStreamOptions<StateType, Bag>>) {\n const pluginOptions: LangChainPluginOptions = inject(LANGCHAIN_OPTIONS, {});\n\n const client = computed(() => {\n const c = toValue(options.client) ?? pluginOptions.client;\n if (c) return c;\n return new Client({\n apiUrl: toValue(options.apiUrl) ?? pluginOptions.apiUrl,\n apiKey: toValue(options.apiKey) ?? pluginOptions.apiKey,\n callerOptions: toValue(options.callerOptions),\n defaultHeaders: toValue(options.defaultHeaders),\n });\n });\n\n const orchestrator = new StreamOrchestrator<StateType, Bag>(\n options as unknown as AnyStreamOptions<StateType, Bag>,\n {\n getClient: () => client.value,\n getAssistantId: () => toValue(options.assistantId),\n getMessagesKey: () => toValue(options.messagesKey) ?? \"messages\",\n }\n );\n\n const initialThreadId = toValue(options.threadId) ?? undefined;\n orchestrator.initThreadId(initialThreadId);\n\n watch(\n () => toValue(options.threadId),\n (newId) => {\n const resolved = newId ?? undefined;\n orchestrator.setThreadId(resolved);\n },\n { flush: \"sync\" }\n );\n\n // Monotonically increasing counter bumped on every orchestrator update.\n // Computed properties read `version.value` (via `void version.value`)\n // solely to register a reactive dependency, so Vue knows to invalidate\n // their cached values when the orchestrator state changes.\n const version = shallowRef(0);\n const reactiveSubagents = createReactiveSubagentAccessors(\n {\n getSubagent: (toolCallId) => orchestrator.getSubagent(toolCallId),\n getSubagentsByType: (type) => orchestrator.getSubagentsByType(type),\n getSubagentsByMessage: (messageId) =>\n orchestrator.getSubagentsByMessage(messageId),\n },\n version\n );\n const subagentsRef = shallowRef(\n reactiveSubagents.mapSubagents(orchestrator.subagents)\n );\n const activeSubagentsRef = shallowRef(\n reactiveSubagents.mapActiveSubagents(orchestrator.activeSubagents)\n );\n\n const unsubscribe = orchestrator.subscribe(() => {\n version.value += 1;\n subagentsRef.value = reactiveSubagents.mapSubagents(orchestrator.subagents);\n activeSubagentsRef.value = reactiveSubagents.mapActiveSubagents(\n orchestrator.activeSubagents\n );\n });\n\n onScopeDispose(() => {\n unsubscribe();\n orchestrator.dispose();\n });\n\n // Subagent reconstruction\n watch(\n () => {\n void version.value;\n const hvMessages = orchestrator.messages;\n return {\n should:\n options.filterSubagentMessages &&\n !orchestrator.isLoading &&\n !orchestrator.historyData.isLoading &&\n hvMessages.length > 0,\n len: hvMessages.length,\n };\n },\n ({ should }, _prev, onCleanup) => {\n if (should) {\n const controller = orchestrator.reconstructSubagentsIfNeeded();\n if (controller) {\n onCleanup(() => controller.abort());\n }\n }\n },\n { immediate: true }\n );\n\n // Queue draining\n watch(\n () => ({\n loading: orchestrator.isLoading,\n size: orchestrator.queueSize,\n v: version.value,\n }),\n () => {\n orchestrator.drainQueue();\n }\n );\n\n // Auto-reconnect\n let { shouldReconnect } = orchestrator;\n if (shouldReconnect) {\n orchestrator.tryReconnect();\n }\n\n watch(\n () => {\n void version.value;\n return orchestrator.threadId;\n },\n () => {\n ({ shouldReconnect } = orchestrator);\n if (shouldReconnect) {\n orchestrator.tryReconnect();\n }\n }\n );\n\n // Cached computed properties derived from the orchestrator.\n //\n // The orchestrator is not itself reactive — it is a plain object whose\n // state is mutated in place. To bridge it into Vue's reactivity system\n // we bump `version` (a shallowRef) inside the orchestrator's subscribe\n // callback. Each computed below reads `version.value` (via `void`) to\n // register it as a dependency. When `version` increments, Vue marks\n // every computed that depends on it as dirty, causing a re-evaluation\n // on the next access. The `void` operator discards the unused value\n // and signals this intent to future readers.\n const values = computed(() => {\n void version.value;\n return orchestrator.values;\n });\n\n const error = computed(() => {\n void version.value;\n return orchestrator.error;\n });\n\n const isLoading = computed(() => {\n void version.value;\n return orchestrator.isLoading;\n });\n\n const branch = ref<string>(\"\");\n watch(\n () => {\n void version.value;\n return orchestrator.branch;\n },\n (newBranch) => {\n if (branch.value !== newBranch) branch.value = newBranch;\n },\n { immediate: true }\n );\n\n const messages = computed(() => {\n void version.value;\n orchestrator.trackStreamMode(\"messages-tuple\");\n return ensureMessageInstances(orchestrator.messages);\n });\n\n const toolCalls = computed(() => {\n void version.value;\n return orchestrator.toolCalls;\n });\n\n const interrupt = computed(() => {\n void version.value;\n return orchestrator.interrupt;\n });\n\n const interrupts = computed(() => {\n void version.value;\n return orchestrator.interrupts;\n });\n\n const flatHistory = computed(() => {\n void version.value;\n return orchestrator.flatHistory;\n });\n\n const isThreadLoading = computed(() => {\n void version.value;\n return orchestrator.isThreadLoading;\n });\n\n const experimentalBranchTree = computed(() => {\n void version.value;\n return orchestrator.experimental_branchTree;\n });\n\n const queueEntries = computed(() => {\n void version.value;\n return orchestrator.queueEntries;\n });\n\n const queueSize = computed(() => {\n void version.value;\n return orchestrator.queueSize;\n });\n\n return {\n get assistantId() {\n return toValue(options.assistantId);\n },\n get client() {\n return client.value;\n },\n\n values,\n error,\n isLoading,\n\n branch,\n setBranch(value: string) {\n orchestrator.setBranch(value);\n },\n\n messages,\n toolCalls,\n\n getToolCalls(message: Message) {\n orchestrator.trackStreamMode(\"messages-tuple\");\n return orchestrator.getToolCalls(message);\n },\n\n interrupt,\n interrupts,\n history: flatHistory,\n isThreadLoading,\n experimental_branchTree: experimentalBranchTree,\n\n getMessagesMetadata: (\n message: Message,\n index?: number\n ): MessageMetadata<StateType> | undefined => {\n 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: reactive({\n entries: queueEntries,\n size: queueSize,\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 void messages.value.length;\n void version.value;\n return reactiveSubagents.mapSubagents(orchestrator.subagents);\n },\n get activeSubagents() {\n void messages.value.length;\n void version.value;\n return reactiveSubagents.mapActiveSubagents(orchestrator.activeSubagents);\n },\n getSubagent(toolCallId: string) {\n void messages.value.length;\n void version.value;\n return reactiveSubagents.getSubagent(toolCallId);\n },\n getSubagentsByType(type: string) {\n void messages.value.length;\n void version.value;\n return reactiveSubagents.getSubagentsByType(type);\n },\n getSubagentsByMessage(messageId: string) {\n void messages.value.length;\n void version.value;\n return reactiveSubagents.getSubagentsByMessage(messageId);\n },\n };\n}\n\nexport type { ClassSubagentStreamInterface } from \"@langchain/langgraph-sdk/ui\";\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 ? ComputedRef<BaseMessage[]>\n : K extends \"getMessagesMetadata\"\n ? (\n message: BaseMessage,\n index?: number\n ) => MessageMetadata<Record<string, unknown>> | undefined\n : K extends \"toolCalls\"\n ? T[K] extends (infer TC)[]\n ? Ref<ClassToolCallWithResult<TC>[]>\n : Ref<T[K]>\n : K extends \"getToolCalls\"\n ? T[K] extends (message: infer _M) => (infer TC)[]\n ? (message: CoreAIMessage) => ClassToolCallWithResult<TC>[]\n : T[K]\n : 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 ? ComputedRef<HistoryWithBaseMessages<T[K]>>\n : T[K] extends (...args: infer A) => infer R\n ? (...args: A) => R\n : Ref<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: VueReactiveOptions<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: VueReactiveOptions<\n UseStreamCustomOptions<InferStateType<T>, InferBag<T, Bag>>\n >\n): WithClassMessages<ResolveStreamInterface<T, InferBag<T, Bag>>>;\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function useStream(options: any): any {\n if (\"transport\" in options) {\n return useStreamCustom(options);\n }\n return useStreamLGP(options);\n}\n\nexport type { MaybeRefOrGetter } from \"vue\";\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\";\nexport type {\n HeadlessToolImplementation,\n AnyHeadlessToolImplementation,\n ToolEvent,\n HeadlessToolInterrupt,\n OnToolCallback,\n FlushPendingHeadlessToolInterruptsOptions,\n} from \"@langchain/langgraph-sdk\";\n\nexport {\n SubagentManager,\n extractToolCallIdFromNamespace,\n calculateDepthFromNamespace,\n extractParentIdFromNamespace,\n isSubagentNamespace,\n} from \"@langchain/langgraph-sdk/ui\";\nexport {\n isHeadlessToolInterrupt,\n parseHeadlessToolInterruptPayload,\n filterOutHeadlessToolInterrupts,\n findHeadlessTool,\n executeHeadlessTool,\n handleHeadlessToolInterrupt,\n headlessToolResumeCommand,\n flushPendingHeadlessToolInterrupts,\n} from \"@langchain/langgraph-sdk\";\n"],"mappings":"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"}
|
package/dist/stream.custom.cjs
CHANGED
|
@@ -101,19 +101,28 @@ function useStreamCustom(options) {
|
|
|
101
101
|
return orchestrator.getToolCalls(message);
|
|
102
102
|
},
|
|
103
103
|
get subagents() {
|
|
104
|
-
|
|
104
|
+
messagesComputed.value.length;
|
|
105
|
+
version.value;
|
|
106
|
+
return reactiveSubagents.mapSubagents(orchestrator.subagents);
|
|
105
107
|
},
|
|
106
108
|
get activeSubagents() {
|
|
107
|
-
|
|
109
|
+
messagesComputed.value.length;
|
|
110
|
+
version.value;
|
|
111
|
+
return reactiveSubagents.mapActiveSubagents(orchestrator.activeSubagents);
|
|
108
112
|
},
|
|
109
113
|
getSubagent(toolCallId) {
|
|
110
|
-
|
|
114
|
+
messagesComputed.value.length;
|
|
115
|
+
version.value;
|
|
111
116
|
return reactiveSubagents.getSubagent(toolCallId);
|
|
112
117
|
},
|
|
113
118
|
getSubagentsByType(type) {
|
|
119
|
+
messagesComputed.value.length;
|
|
120
|
+
version.value;
|
|
114
121
|
return reactiveSubagents.getSubagentsByType(type);
|
|
115
122
|
},
|
|
116
123
|
getSubagentsByMessage(messageId) {
|
|
124
|
+
messagesComputed.value.length;
|
|
125
|
+
version.value;
|
|
117
126
|
return reactiveSubagents.getSubagentsByMessage(messageId);
|
|
118
127
|
}
|
|
119
128
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream.custom.cjs","names":["CustomStreamOrchestrator","createReactiveSubagentAccessors"],"sources":["../src/stream.custom.ts"],"sourcesContent":["import {\n computed,\n onScopeDispose,\n reactive,\n ref,\n shallowRef,\n toValue,\n watch,\n} from \"vue\";\nimport {\n CustomStreamOrchestrator,\n ensureMessageInstances,\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\";\nimport type { VueReactiveOptions } from \"./types.js\";\nimport { createReactiveSubagentAccessors } from \"./subagents.js\";\n\nexport function useStreamCustom<\n StateType extends Record<string, unknown> = Record<string, unknown>,\n Bag extends BagTemplate = BagTemplate,\n>(options: VueReactiveOptions<AnyStreamCustomOptions<StateType, Bag>>) {\n type UpdateType = GetUpdateType<Bag, StateType>;\n type InterruptType = GetInterruptType<Bag>;\n type ConfigurableType = GetConfigurableType<Bag>;\n\n const orchestrator = new CustomStreamOrchestrator<StateType, Bag>(\n options as unknown as AnyStreamCustomOptions<StateType, Bag>\n );\n\n const branch = ref<string>(\"\");\n\n let threadId: string | null = toValue(options.threadId) ?? null;\n\n watch(\n () => toValue(options.threadId),\n (newId) => {\n const resolved = newId ?? null;\n if (resolved !== threadId) {\n threadId = resolved;\n orchestrator.syncThreadId(resolved);\n }\n },\n { flush: \"sync\" }\n );\n\n const streamValues = shallowRef<StateType | null>(null);\n const streamError = shallowRef<unknown>(undefined);\n const isLoading = shallowRef(false);\n const version = shallowRef(0);\n const reactiveSubagents = createReactiveSubagentAccessors(\n {\n getSubagent: (toolCallId) => orchestrator.getSubagent(toolCallId),\n getSubagentsByType: (type) => orchestrator.getSubagentsByType(type),\n getSubagentsByMessage: (messageId) =>\n orchestrator.getSubagentsByMessage(messageId),\n },\n version\n );\n const subagentsRef = shallowRef(\n reactiveSubagents.mapSubagents(orchestrator.subagents)\n );\n const activeSubagentsRef = shallowRef(\n reactiveSubagents.mapActiveSubagents(orchestrator.activeSubagents)\n );\n\n const unsubscribe = orchestrator.subscribe(() => {\n version.value += 1;\n streamValues.value = orchestrator.streamValues;\n streamError.value = orchestrator.error;\n isLoading.value = orchestrator.isLoading;\n subagentsRef.value = reactiveSubagents.mapSubagents(orchestrator.subagents);\n activeSubagentsRef.value = reactiveSubagents.mapActiveSubagents(\n orchestrator.activeSubagents\n );\n });\n\n onScopeDispose(() => {\n unsubscribe();\n orchestrator.dispose();\n });\n\n watch(\n () => ({\n should:\n options.filterSubagentMessages &&\n !isLoading.value &&\n streamValues.value != null &&\n orchestrator.messages.length > 0,\n len: orchestrator.messages.length,\n }),\n ({ should }) => {\n if (should) {\n orchestrator.reconstructSubagentsIfNeeded();\n }\n },\n { immediate: true }\n );\n\n // Cached computed properties — unlike plain getters, `computed()` only\n // recomputes when a tracked dependency changes, and caches the result\n // between reads. Getters below unwrap `.value` so callers see plain\n // values (matching the original API surface).\n //\n // `void isLoading.value` / reading `streamValues.value` accesses the\n // ref solely to register it as a dependency of the computed, so Vue\n // knows to invalidate the cached value when the orchestrator pushes an\n // update. The `void` operator discards the unused value and signals\n // intent to future readers.\n const interruptsComputed = computed(() => {\n void isLoading.value;\n return orchestrator.interrupts as Interrupt<InterruptType>[];\n });\n\n const interruptComputed = computed(() => {\n void isLoading.value;\n return orchestrator.interrupt as Interrupt<InterruptType> | undefined;\n });\n\n const messagesComputed = computed(() => {\n if (!streamValues.value) return [];\n return ensureMessageInstances(orchestrator.messages);\n });\n\n const toolCallsComputed = computed(() => {\n if (!streamValues.value) return [];\n return orchestrator.toolCalls;\n });\n\n const queueEntries = shallowRef<unknown[]>([]);\n const queueSize = shallowRef(0);\n\n return {\n get values() {\n return streamValues.value ?? ({} as StateType);\n },\n\n error: streamError,\n isLoading,\n\n stop: () => orchestrator.stop(),\n\n submit: async (\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 branch,\n setBranch(value: string) {\n branch.value = 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: reactive({\n entries: queueEntries,\n size: queueSize,\n cancel: async () => false,\n clear: async () => {},\n }),\n\n get interrupts(): Interrupt<InterruptType>[] {\n return interruptsComputed.value;\n },\n get interrupt(): Interrupt<InterruptType> | undefined {\n return interruptComputed.value;\n },\n get messages() {\n return messagesComputed.value;\n },\n get toolCalls() {\n return toolCallsComputed.value;\n },\n\n getToolCalls(message: Message) {\n return orchestrator.getToolCalls(message);\n },\n\n get subagents() {\n
|
|
1
|
+
{"version":3,"file":"stream.custom.cjs","names":["CustomStreamOrchestrator","createReactiveSubagentAccessors"],"sources":["../src/stream.custom.ts"],"sourcesContent":["import {\n computed,\n onScopeDispose,\n reactive,\n ref,\n shallowRef,\n toValue,\n watch,\n} from \"vue\";\nimport {\n CustomStreamOrchestrator,\n ensureMessageInstances,\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\";\nimport type { VueReactiveOptions } from \"./types.js\";\nimport { createReactiveSubagentAccessors } from \"./subagents.js\";\n\nexport function useStreamCustom<\n StateType extends Record<string, unknown> = Record<string, unknown>,\n Bag extends BagTemplate = BagTemplate,\n>(options: VueReactiveOptions<AnyStreamCustomOptions<StateType, Bag>>) {\n type UpdateType = GetUpdateType<Bag, StateType>;\n type InterruptType = GetInterruptType<Bag>;\n type ConfigurableType = GetConfigurableType<Bag>;\n\n const orchestrator = new CustomStreamOrchestrator<StateType, Bag>(\n options as unknown as AnyStreamCustomOptions<StateType, Bag>\n );\n\n const branch = ref<string>(\"\");\n\n let threadId: string | null = toValue(options.threadId) ?? null;\n\n watch(\n () => toValue(options.threadId),\n (newId) => {\n const resolved = newId ?? null;\n if (resolved !== threadId) {\n threadId = resolved;\n orchestrator.syncThreadId(resolved);\n }\n },\n { flush: \"sync\" }\n );\n\n const streamValues = shallowRef<StateType | null>(null);\n const streamError = shallowRef<unknown>(undefined);\n const isLoading = shallowRef(false);\n const version = shallowRef(0);\n const reactiveSubagents = createReactiveSubagentAccessors(\n {\n getSubagent: (toolCallId) => orchestrator.getSubagent(toolCallId),\n getSubagentsByType: (type) => orchestrator.getSubagentsByType(type),\n getSubagentsByMessage: (messageId) =>\n orchestrator.getSubagentsByMessage(messageId),\n },\n version\n );\n const subagentsRef = shallowRef(\n reactiveSubagents.mapSubagents(orchestrator.subagents)\n );\n const activeSubagentsRef = shallowRef(\n reactiveSubagents.mapActiveSubagents(orchestrator.activeSubagents)\n );\n\n const unsubscribe = orchestrator.subscribe(() => {\n version.value += 1;\n streamValues.value = orchestrator.streamValues;\n streamError.value = orchestrator.error;\n isLoading.value = orchestrator.isLoading;\n subagentsRef.value = reactiveSubagents.mapSubagents(orchestrator.subagents);\n activeSubagentsRef.value = reactiveSubagents.mapActiveSubagents(\n orchestrator.activeSubagents\n );\n });\n\n onScopeDispose(() => {\n unsubscribe();\n orchestrator.dispose();\n });\n\n watch(\n () => ({\n should:\n options.filterSubagentMessages &&\n !isLoading.value &&\n streamValues.value != null &&\n orchestrator.messages.length > 0,\n len: orchestrator.messages.length,\n }),\n ({ should }) => {\n if (should) {\n orchestrator.reconstructSubagentsIfNeeded();\n }\n },\n { immediate: true }\n );\n\n // Cached computed properties — unlike plain getters, `computed()` only\n // recomputes when a tracked dependency changes, and caches the result\n // between reads. Getters below unwrap `.value` so callers see plain\n // values (matching the original API surface).\n //\n // `void isLoading.value` / reading `streamValues.value` accesses the\n // ref solely to register it as a dependency of the computed, so Vue\n // knows to invalidate the cached value when the orchestrator pushes an\n // update. The `void` operator discards the unused value and signals\n // intent to future readers.\n const interruptsComputed = computed(() => {\n void isLoading.value;\n return orchestrator.interrupts as Interrupt<InterruptType>[];\n });\n\n const interruptComputed = computed(() => {\n void isLoading.value;\n return orchestrator.interrupt as Interrupt<InterruptType> | undefined;\n });\n\n const messagesComputed = computed(() => {\n if (!streamValues.value) return [];\n return ensureMessageInstances(orchestrator.messages);\n });\n\n const toolCallsComputed = computed(() => {\n if (!streamValues.value) return [];\n return orchestrator.toolCalls;\n });\n\n const queueEntries = shallowRef<unknown[]>([]);\n const queueSize = shallowRef(0);\n\n return {\n get values() {\n return streamValues.value ?? ({} as StateType);\n },\n\n error: streamError,\n isLoading,\n\n stop: () => orchestrator.stop(),\n\n submit: async (\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 branch,\n setBranch(value: string) {\n branch.value = 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: reactive({\n entries: queueEntries,\n size: queueSize,\n cancel: async () => false,\n clear: async () => {},\n }),\n\n get interrupts(): Interrupt<InterruptType>[] {\n return interruptsComputed.value;\n },\n get interrupt(): Interrupt<InterruptType> | undefined {\n return interruptComputed.value;\n },\n get messages() {\n return messagesComputed.value;\n },\n get toolCalls() {\n return toolCallsComputed.value;\n },\n\n getToolCalls(message: Message) {\n return orchestrator.getToolCalls(message);\n },\n\n get subagents() {\n void messagesComputed.value.length;\n void version.value;\n return reactiveSubagents.mapSubagents(orchestrator.subagents);\n },\n\n get activeSubagents() {\n void messagesComputed.value.length;\n void version.value;\n return reactiveSubagents.mapActiveSubagents(orchestrator.activeSubagents);\n },\n\n getSubagent(toolCallId: string) {\n void messagesComputed.value.length;\n void version.value;\n return reactiveSubagents.getSubagent(toolCallId);\n },\n getSubagentsByType(type: string) {\n void messagesComputed.value.length;\n void version.value;\n return reactiveSubagents.getSubagentsByType(type);\n },\n getSubagentsByMessage(messageId: string) {\n void messagesComputed.value.length;\n void version.value;\n return reactiveSubagents.getSubagentsByMessage(messageId);\n },\n };\n}\n"],"mappings":";;;;AAuBA,SAAgB,gBAGd,SAAqE;CAKrE,MAAM,eAAe,IAAIA,4BAAAA,yBACvB,QACD;CAED,MAAM,UAAA,GAAA,IAAA,KAAqB,GAAG;CAE9B,IAAI,YAAA,GAAA,IAAA,SAAkC,QAAQ,SAAS,IAAI;AAE3D,EAAA,GAAA,IAAA,cAAA,GAAA,IAAA,SACgB,QAAQ,SAAS,GAC9B,UAAU;EACT,MAAM,WAAW,SAAS;AAC1B,MAAI,aAAa,UAAU;AACzB,cAAW;AACX,gBAAa,aAAa,SAAS;;IAGvC,EAAE,OAAO,QAAQ,CAClB;CAED,MAAM,gBAAA,GAAA,IAAA,YAA4C,KAAK;CACvD,MAAM,eAAA,GAAA,IAAA,YAAkC,KAAA,EAAU;CAClD,MAAM,aAAA,GAAA,IAAA,YAAuB,MAAM;CACnC,MAAM,WAAA,GAAA,IAAA,YAAqB,EAAE;CAC7B,MAAM,oBAAoBC,kBAAAA,gCACxB;EACE,cAAc,eAAe,aAAa,YAAY,WAAW;EACjE,qBAAqB,SAAS,aAAa,mBAAmB,KAAK;EACnE,wBAAwB,cACtB,aAAa,sBAAsB,UAAU;EAChD,EACD,QACD;CACD,MAAM,gBAAA,GAAA,IAAA,YACJ,kBAAkB,aAAa,aAAa,UAAU,CACvD;CACD,MAAM,sBAAA,GAAA,IAAA,YACJ,kBAAkB,mBAAmB,aAAa,gBAAgB,CACnE;CAED,MAAM,cAAc,aAAa,gBAAgB;AAC/C,UAAQ,SAAS;AACjB,eAAa,QAAQ,aAAa;AAClC,cAAY,QAAQ,aAAa;AACjC,YAAU,QAAQ,aAAa;AAC/B,eAAa,QAAQ,kBAAkB,aAAa,aAAa,UAAU;AAC3E,qBAAmB,QAAQ,kBAAkB,mBAC3C,aAAa,gBACd;GACD;AAEF,EAAA,GAAA,IAAA,sBAAqB;AACnB,eAAa;AACb,eAAa,SAAS;GACtB;AAEF,EAAA,GAAA,IAAA,cACS;EACL,QACE,QAAQ,0BACR,CAAC,UAAU,SACX,aAAa,SAAS,QACtB,aAAa,SAAS,SAAS;EACjC,KAAK,aAAa,SAAS;EAC5B,IACA,EAAE,aAAa;AACd,MAAI,OACF,cAAa,8BAA8B;IAG/C,EAAE,WAAW,MAAM,CACpB;CAYD,MAAM,sBAAA,GAAA,IAAA,gBAAoC;AACnC,YAAU;AACf,SAAO,aAAa;GACpB;CAEF,MAAM,qBAAA,GAAA,IAAA,gBAAmC;AAClC,YAAU;AACf,SAAO,aAAa;GACpB;CAEF,MAAM,oBAAA,GAAA,IAAA,gBAAkC;AACtC,MAAI,CAAC,aAAa,MAAO,QAAO,EAAE;AAClC,UAAA,GAAA,4BAAA,wBAA8B,aAAa,SAAS;GACpD;CAEF,MAAM,qBAAA,GAAA,IAAA,gBAAmC;AACvC,MAAI,CAAC,aAAa,MAAO,QAAO,EAAE;AAClC,SAAO,aAAa;GACpB;AAKF,QAAO;EACL,IAAI,SAAS;AACX,UAAO,aAAa,SAAU,EAAE;;EAGlC,OAAO;EACP;EAEA,YAAY,aAAa,MAAM;EAE/B,QAAQ,OACN,QACA,kBACG;AACH,SAAM,aAAa,OAAO,QAAQ,cAAc;;EAGlD,aAAa,aAA4B;AACvC,gBAAa,aAAa,YAAY;;EAGxC;EACA,UAAU,OAAe;AACvB,UAAO,QAAQ;AACf,gBAAa,UAAU,MAAM;;EAG/B,oBACE,SACA,OACwC;AACxC,UAAO,aAAa,oBAAoB,SAAS,MAAM;;EAGzD,QAAA,GAAA,IAAA,UAAgB;GACd,UAAA,GAAA,IAAA,YAtCuC,EAAE,CAAC;GAuC1C,OAAA,GAAA,IAAA,YAtCyB,EAAE;GAuC3B,QAAQ,YAAY;GACpB,OAAO,YAAY;GACpB,CAAC;EAEF,IAAI,aAAyC;AAC3C,UAAO,mBAAmB;;EAE5B,IAAI,YAAkD;AACpD,UAAO,kBAAkB;;EAE3B,IAAI,WAAW;AACb,UAAO,iBAAiB;;EAE1B,IAAI,YAAY;AACd,UAAO,kBAAkB;;EAG3B,aAAa,SAAkB;AAC7B,UAAO,aAAa,aAAa,QAAQ;;EAG3C,IAAI,YAAY;AACT,oBAAiB,MAAM;AACvB,WAAQ;AACb,UAAO,kBAAkB,aAAa,aAAa,UAAU;;EAG/D,IAAI,kBAAkB;AACf,oBAAiB,MAAM;AACvB,WAAQ;AACb,UAAO,kBAAkB,mBAAmB,aAAa,gBAAgB;;EAG3E,YAAY,YAAoB;AACzB,oBAAiB,MAAM;AACvB,WAAQ;AACb,UAAO,kBAAkB,YAAY,WAAW;;EAElD,mBAAmB,MAAc;AAC1B,oBAAiB,MAAM;AACvB,WAAQ;AACb,UAAO,kBAAkB,mBAAmB,KAAK;;EAEnD,sBAAsB,WAAmB;AAClC,oBAAiB,MAAM;AACvB,WAAQ;AACb,UAAO,kBAAkB,sBAAsB,UAAU;;EAE5D"}
|
package/dist/stream.custom.js
CHANGED
|
@@ -101,19 +101,28 @@ function useStreamCustom(options) {
|
|
|
101
101
|
return orchestrator.getToolCalls(message);
|
|
102
102
|
},
|
|
103
103
|
get subagents() {
|
|
104
|
-
|
|
104
|
+
messagesComputed.value.length;
|
|
105
|
+
version.value;
|
|
106
|
+
return reactiveSubagents.mapSubagents(orchestrator.subagents);
|
|
105
107
|
},
|
|
106
108
|
get activeSubagents() {
|
|
107
|
-
|
|
109
|
+
messagesComputed.value.length;
|
|
110
|
+
version.value;
|
|
111
|
+
return reactiveSubagents.mapActiveSubagents(orchestrator.activeSubagents);
|
|
108
112
|
},
|
|
109
113
|
getSubagent(toolCallId) {
|
|
110
|
-
|
|
114
|
+
messagesComputed.value.length;
|
|
115
|
+
version.value;
|
|
111
116
|
return reactiveSubagents.getSubagent(toolCallId);
|
|
112
117
|
},
|
|
113
118
|
getSubagentsByType(type) {
|
|
119
|
+
messagesComputed.value.length;
|
|
120
|
+
version.value;
|
|
114
121
|
return reactiveSubagents.getSubagentsByType(type);
|
|
115
122
|
},
|
|
116
123
|
getSubagentsByMessage(messageId) {
|
|
124
|
+
messagesComputed.value.length;
|
|
125
|
+
version.value;
|
|
117
126
|
return reactiveSubagents.getSubagentsByMessage(messageId);
|
|
118
127
|
}
|
|
119
128
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream.custom.js","names":[],"sources":["../src/stream.custom.ts"],"sourcesContent":["import {\n computed,\n onScopeDispose,\n reactive,\n ref,\n shallowRef,\n toValue,\n watch,\n} from \"vue\";\nimport {\n CustomStreamOrchestrator,\n ensureMessageInstances,\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\";\nimport type { VueReactiveOptions } from \"./types.js\";\nimport { createReactiveSubagentAccessors } from \"./subagents.js\";\n\nexport function useStreamCustom<\n StateType extends Record<string, unknown> = Record<string, unknown>,\n Bag extends BagTemplate = BagTemplate,\n>(options: VueReactiveOptions<AnyStreamCustomOptions<StateType, Bag>>) {\n type UpdateType = GetUpdateType<Bag, StateType>;\n type InterruptType = GetInterruptType<Bag>;\n type ConfigurableType = GetConfigurableType<Bag>;\n\n const orchestrator = new CustomStreamOrchestrator<StateType, Bag>(\n options as unknown as AnyStreamCustomOptions<StateType, Bag>\n );\n\n const branch = ref<string>(\"\");\n\n let threadId: string | null = toValue(options.threadId) ?? null;\n\n watch(\n () => toValue(options.threadId),\n (newId) => {\n const resolved = newId ?? null;\n if (resolved !== threadId) {\n threadId = resolved;\n orchestrator.syncThreadId(resolved);\n }\n },\n { flush: \"sync\" }\n );\n\n const streamValues = shallowRef<StateType | null>(null);\n const streamError = shallowRef<unknown>(undefined);\n const isLoading = shallowRef(false);\n const version = shallowRef(0);\n const reactiveSubagents = createReactiveSubagentAccessors(\n {\n getSubagent: (toolCallId) => orchestrator.getSubagent(toolCallId),\n getSubagentsByType: (type) => orchestrator.getSubagentsByType(type),\n getSubagentsByMessage: (messageId) =>\n orchestrator.getSubagentsByMessage(messageId),\n },\n version\n );\n const subagentsRef = shallowRef(\n reactiveSubagents.mapSubagents(orchestrator.subagents)\n );\n const activeSubagentsRef = shallowRef(\n reactiveSubagents.mapActiveSubagents(orchestrator.activeSubagents)\n );\n\n const unsubscribe = orchestrator.subscribe(() => {\n version.value += 1;\n streamValues.value = orchestrator.streamValues;\n streamError.value = orchestrator.error;\n isLoading.value = orchestrator.isLoading;\n subagentsRef.value = reactiveSubagents.mapSubagents(orchestrator.subagents);\n activeSubagentsRef.value = reactiveSubagents.mapActiveSubagents(\n orchestrator.activeSubagents\n );\n });\n\n onScopeDispose(() => {\n unsubscribe();\n orchestrator.dispose();\n });\n\n watch(\n () => ({\n should:\n options.filterSubagentMessages &&\n !isLoading.value &&\n streamValues.value != null &&\n orchestrator.messages.length > 0,\n len: orchestrator.messages.length,\n }),\n ({ should }) => {\n if (should) {\n orchestrator.reconstructSubagentsIfNeeded();\n }\n },\n { immediate: true }\n );\n\n // Cached computed properties — unlike plain getters, `computed()` only\n // recomputes when a tracked dependency changes, and caches the result\n // between reads. Getters below unwrap `.value` so callers see plain\n // values (matching the original API surface).\n //\n // `void isLoading.value` / reading `streamValues.value` accesses the\n // ref solely to register it as a dependency of the computed, so Vue\n // knows to invalidate the cached value when the orchestrator pushes an\n // update. The `void` operator discards the unused value and signals\n // intent to future readers.\n const interruptsComputed = computed(() => {\n void isLoading.value;\n return orchestrator.interrupts as Interrupt<InterruptType>[];\n });\n\n const interruptComputed = computed(() => {\n void isLoading.value;\n return orchestrator.interrupt as Interrupt<InterruptType> | undefined;\n });\n\n const messagesComputed = computed(() => {\n if (!streamValues.value) return [];\n return ensureMessageInstances(orchestrator.messages);\n });\n\n const toolCallsComputed = computed(() => {\n if (!streamValues.value) return [];\n return orchestrator.toolCalls;\n });\n\n const queueEntries = shallowRef<unknown[]>([]);\n const queueSize = shallowRef(0);\n\n return {\n get values() {\n return streamValues.value ?? ({} as StateType);\n },\n\n error: streamError,\n isLoading,\n\n stop: () => orchestrator.stop(),\n\n submit: async (\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 branch,\n setBranch(value: string) {\n branch.value = 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: reactive({\n entries: queueEntries,\n size: queueSize,\n cancel: async () => false,\n clear: async () => {},\n }),\n\n get interrupts(): Interrupt<InterruptType>[] {\n return interruptsComputed.value;\n },\n get interrupt(): Interrupt<InterruptType> | undefined {\n return interruptComputed.value;\n },\n get messages() {\n return messagesComputed.value;\n },\n get toolCalls() {\n return toolCallsComputed.value;\n },\n\n getToolCalls(message: Message) {\n return orchestrator.getToolCalls(message);\n },\n\n get subagents() {\n
|
|
1
|
+
{"version":3,"file":"stream.custom.js","names":[],"sources":["../src/stream.custom.ts"],"sourcesContent":["import {\n computed,\n onScopeDispose,\n reactive,\n ref,\n shallowRef,\n toValue,\n watch,\n} from \"vue\";\nimport {\n CustomStreamOrchestrator,\n ensureMessageInstances,\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\";\nimport type { VueReactiveOptions } from \"./types.js\";\nimport { createReactiveSubagentAccessors } from \"./subagents.js\";\n\nexport function useStreamCustom<\n StateType extends Record<string, unknown> = Record<string, unknown>,\n Bag extends BagTemplate = BagTemplate,\n>(options: VueReactiveOptions<AnyStreamCustomOptions<StateType, Bag>>) {\n type UpdateType = GetUpdateType<Bag, StateType>;\n type InterruptType = GetInterruptType<Bag>;\n type ConfigurableType = GetConfigurableType<Bag>;\n\n const orchestrator = new CustomStreamOrchestrator<StateType, Bag>(\n options as unknown as AnyStreamCustomOptions<StateType, Bag>\n );\n\n const branch = ref<string>(\"\");\n\n let threadId: string | null = toValue(options.threadId) ?? null;\n\n watch(\n () => toValue(options.threadId),\n (newId) => {\n const resolved = newId ?? null;\n if (resolved !== threadId) {\n threadId = resolved;\n orchestrator.syncThreadId(resolved);\n }\n },\n { flush: \"sync\" }\n );\n\n const streamValues = shallowRef<StateType | null>(null);\n const streamError = shallowRef<unknown>(undefined);\n const isLoading = shallowRef(false);\n const version = shallowRef(0);\n const reactiveSubagents = createReactiveSubagentAccessors(\n {\n getSubagent: (toolCallId) => orchestrator.getSubagent(toolCallId),\n getSubagentsByType: (type) => orchestrator.getSubagentsByType(type),\n getSubagentsByMessage: (messageId) =>\n orchestrator.getSubagentsByMessage(messageId),\n },\n version\n );\n const subagentsRef = shallowRef(\n reactiveSubagents.mapSubagents(orchestrator.subagents)\n );\n const activeSubagentsRef = shallowRef(\n reactiveSubagents.mapActiveSubagents(orchestrator.activeSubagents)\n );\n\n const unsubscribe = orchestrator.subscribe(() => {\n version.value += 1;\n streamValues.value = orchestrator.streamValues;\n streamError.value = orchestrator.error;\n isLoading.value = orchestrator.isLoading;\n subagentsRef.value = reactiveSubagents.mapSubagents(orchestrator.subagents);\n activeSubagentsRef.value = reactiveSubagents.mapActiveSubagents(\n orchestrator.activeSubagents\n );\n });\n\n onScopeDispose(() => {\n unsubscribe();\n orchestrator.dispose();\n });\n\n watch(\n () => ({\n should:\n options.filterSubagentMessages &&\n !isLoading.value &&\n streamValues.value != null &&\n orchestrator.messages.length > 0,\n len: orchestrator.messages.length,\n }),\n ({ should }) => {\n if (should) {\n orchestrator.reconstructSubagentsIfNeeded();\n }\n },\n { immediate: true }\n );\n\n // Cached computed properties — unlike plain getters, `computed()` only\n // recomputes when a tracked dependency changes, and caches the result\n // between reads. Getters below unwrap `.value` so callers see plain\n // values (matching the original API surface).\n //\n // `void isLoading.value` / reading `streamValues.value` accesses the\n // ref solely to register it as a dependency of the computed, so Vue\n // knows to invalidate the cached value when the orchestrator pushes an\n // update. The `void` operator discards the unused value and signals\n // intent to future readers.\n const interruptsComputed = computed(() => {\n void isLoading.value;\n return orchestrator.interrupts as Interrupt<InterruptType>[];\n });\n\n const interruptComputed = computed(() => {\n void isLoading.value;\n return orchestrator.interrupt as Interrupt<InterruptType> | undefined;\n });\n\n const messagesComputed = computed(() => {\n if (!streamValues.value) return [];\n return ensureMessageInstances(orchestrator.messages);\n });\n\n const toolCallsComputed = computed(() => {\n if (!streamValues.value) return [];\n return orchestrator.toolCalls;\n });\n\n const queueEntries = shallowRef<unknown[]>([]);\n const queueSize = shallowRef(0);\n\n return {\n get values() {\n return streamValues.value ?? ({} as StateType);\n },\n\n error: streamError,\n isLoading,\n\n stop: () => orchestrator.stop(),\n\n submit: async (\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 branch,\n setBranch(value: string) {\n branch.value = 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: reactive({\n entries: queueEntries,\n size: queueSize,\n cancel: async () => false,\n clear: async () => {},\n }),\n\n get interrupts(): Interrupt<InterruptType>[] {\n return interruptsComputed.value;\n },\n get interrupt(): Interrupt<InterruptType> | undefined {\n return interruptComputed.value;\n },\n get messages() {\n return messagesComputed.value;\n },\n get toolCalls() {\n return toolCallsComputed.value;\n },\n\n getToolCalls(message: Message) {\n return orchestrator.getToolCalls(message);\n },\n\n get subagents() {\n void messagesComputed.value.length;\n void version.value;\n return reactiveSubagents.mapSubagents(orchestrator.subagents);\n },\n\n get activeSubagents() {\n void messagesComputed.value.length;\n void version.value;\n return reactiveSubagents.mapActiveSubagents(orchestrator.activeSubagents);\n },\n\n getSubagent(toolCallId: string) {\n void messagesComputed.value.length;\n void version.value;\n return reactiveSubagents.getSubagent(toolCallId);\n },\n getSubagentsByType(type: string) {\n void messagesComputed.value.length;\n void version.value;\n return reactiveSubagents.getSubagentsByType(type);\n },\n getSubagentsByMessage(messageId: string) {\n void messagesComputed.value.length;\n void version.value;\n return reactiveSubagents.getSubagentsByMessage(messageId);\n },\n };\n}\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@langchain/vue",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.5",
|
|
4
4
|
"description": "Vue integration for LangGraph & LangChain",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
"directory": "libs/sdk-vue"
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
|
-
"@langchain/langgraph-sdk": "^1.8.
|
|
13
|
+
"@langchain/langgraph-sdk": "^1.8.8"
|
|
14
14
|
},
|
|
15
15
|
"devDependencies": {
|
|
16
16
|
"@hono/node-server": "^1.19.11",
|