@langchain/angular 0.3.0 → 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/context.cjs +6 -3
- package/dist/context.cjs.map +1 -1
- package/dist/context.d.cts +54 -25
- package/dist/context.d.cts.map +1 -1
- package/dist/context.d.ts +50 -21
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +6 -3
- package/dist/context.js.map +1 -1
- package/dist/index.cjs +3 -156
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +7 -90
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.ts +6 -89
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -156
- package/dist/index.js.map +1 -1
- package/dist/stream-service-instance.d.cts +70 -0
- package/dist/stream-service-instance.d.cts.map +1 -0
- package/dist/stream-service-instance.d.ts +70 -0
- package/dist/stream-service-instance.d.ts.map +1 -0
- package/dist/stream.custom.cjs +7 -5
- package/dist/stream.custom.cjs.map +1 -1
- package/dist/stream.custom.d.cts +5 -5
- package/dist/stream.custom.d.cts.map +1 -1
- package/dist/stream.custom.d.ts +2 -2
- package/dist/stream.custom.d.ts.map +1 -1
- package/dist/stream.custom.js +7 -5
- package/dist/stream.custom.js.map +1 -1
- package/dist/stream.lgp.cjs +163 -0
- package/dist/stream.lgp.cjs.map +1 -0
- package/dist/stream.lgp.d.cts +57 -0
- package/dist/stream.lgp.d.cts.map +1 -0
- package/dist/stream.lgp.d.ts +57 -0
- package/dist/stream.lgp.d.ts.map +1 -0
- package/dist/stream.lgp.js +163 -0
- package/dist/stream.lgp.js.map +1 -0
- package/package.json +4 -17
- package/dist/subagent-types.d.cts +0 -15
- package/dist/subagent-types.d.cts.map +0 -1
- package/dist/subagent-types.d.ts +0 -15
- package/dist/subagent-types.d.ts.map +0 -1
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","names":["STREAM_INSTANCE","injectStreamCustom","Client","StreamOrchestrator"],"sources":["../src/index.ts"],"sourcesContent":["import {\n signal,\n computed,\n effect,\n Injectable,\n inject as angularInject,\n} from \"@angular/core\";\nimport type { Signal, WritableSignal } from \"@angular/core\";\nimport type {\n BaseMessage,\n ToolMessage as CoreToolMessage,\n AIMessage as CoreAIMessage,\n} from \"@langchain/core/messages\";\nimport {\n StreamOrchestrator,\n ensureMessageInstances,\n type MessageMetadata,\n type AnyStreamOptions,\n type SubmitOptions,\n type ResolveStreamOptions,\n type ResolveStreamInterface,\n type InferBag,\n type InferStateType,\n type AcceptBaseMessages,\n type UseStreamCustomOptions,\n type SubagentStreamInterface,\n type HistoryWithBaseMessages,\n type GetConfigurableType,\n type GetInterruptType,\n} from \"@langchain/langgraph-sdk/ui\";\n\nimport {\n Client,\n type StreamEvent,\n type StreamMode,\n type Message,\n type Interrupt,\n type BagTemplate,\n type ToolCallWithResult as SdkToolCallWithResult,\n type DefaultToolCall,\n} from \"@langchain/langgraph-sdk\";\nimport type { ClassSubagentStreamInterface } from \"./subagent-types.js\";\nimport type { StreamServiceInstance } from \"./stream-service-instance.js\";\nimport { injectStreamCustom } from \"./stream.custom.js\";\nimport { STREAM_INSTANCE } from \"./context.js\";\n\nexport { injectStreamCustom, useStreamCustom } from \"./stream.custom.js\";\nexport { FetchStreamTransport } from \"@langchain/langgraph-sdk/ui\";\nexport {\n provideStreamDefaults,\n provideStream,\n STREAM_DEFAULTS,\n STREAM_INSTANCE,\n} from \"./context.js\";\nexport type { StreamDefaults } from \"./context.js\";\nexport type { ClassSubagentStreamInterface } from \"./subagent-types.js\";\n\ntype ClassToolCallWithResult<T> =\n T extends SdkToolCallWithResult<infer TC, unknown, unknown>\n ? SdkToolCallWithResult<TC, CoreToolMessage, CoreAIMessage>\n : T;\n\ntype WithClassMessages<T> = Omit<\n T,\n | \"messages\"\n | \"history\"\n | \"getMessagesMetadata\"\n | \"toolCalls\"\n | \"getToolCalls\"\n | \"submit\"\n | \"subagents\"\n | \"activeSubagents\"\n | \"getSubagent\"\n | \"getSubagentsByType\"\n | \"getSubagentsByMessage\"\n> & {\n messages: BaseMessage[];\n getMessagesMetadata: (\n message: BaseMessage,\n index?: number,\n ) => MessageMetadata<Record<string, unknown>> | undefined;\n} & (\"history\" extends keyof T\n ? { history: HistoryWithBaseMessages<T[\"history\"]> }\n : unknown) &\n (\"submit\" extends keyof T\n ? {\n submit: T extends {\n submit: (values: infer V, options?: infer O) => infer Ret;\n }\n ? (\n values:\n | AcceptBaseMessages<Exclude<V, null | undefined>>\n | null\n | undefined,\n options?: O,\n ) => Ret\n : never;\n }\n : unknown) &\n (\"toolCalls\" extends keyof T\n ? {\n toolCalls: T extends { toolCalls: (infer TC)[] }\n ? ClassToolCallWithResult<TC>[]\n : never;\n }\n : unknown) &\n (\"getToolCalls\" extends keyof T\n ? {\n getToolCalls: T extends {\n getToolCalls: (message: infer _M) => (infer TC)[];\n }\n ? (message: CoreAIMessage) => ClassToolCallWithResult<TC>[]\n : never;\n }\n : unknown) &\n (\"subagents\" extends keyof T\n ? {\n subagents: T extends {\n subagents: Map<\n string,\n SubagentStreamInterface<infer S, infer TC, infer N>\n >;\n }\n ? Map<string, ClassSubagentStreamInterface<S, TC, N>>\n : never;\n activeSubagents: T extends {\n activeSubagents: SubagentStreamInterface<\n infer S,\n infer TC,\n infer N\n >[];\n }\n ? ClassSubagentStreamInterface<S, TC, N>[]\n : never;\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\ntype AngularWritableKeys = \"isLoading\" | \"branch\";\n\ntype AngularPlainKeys =\n | \"submit\"\n | \"stop\"\n | \"joinStream\"\n | \"switchThread\"\n | \"setBranch\"\n | \"getMessagesMetadata\"\n | \"getToolCalls\"\n | \"getSubagent\"\n | \"getSubagentsByType\"\n | \"getSubagentsByMessage\"\n | \"subagents\"\n | \"activeSubagents\"\n | \"client\"\n | \"assistantId\";\n\ntype AngularQueueInterface<T> = T extends {\n entries: infer E;\n size: infer S;\n cancel: infer C;\n clear: infer Cl;\n}\n ? {\n entries: WritableSignal<E>;\n size: WritableSignal<S>;\n cancel: C;\n clear: Cl;\n }\n : T;\n\ntype AngularSignalWrap<T> = {\n [K in keyof T]: K extends AngularPlainKeys\n ? T[K]\n : K extends AngularWritableKeys\n ? WritableSignal<T[K]>\n : K extends \"queue\"\n ? AngularQueueInterface<T[K]>\n : Signal<T[K]>;\n};\n\n/**\n * Injects the shared stream instance from the nearest ancestor that provided\n * one via {@link provideStream}. Throws if no ancestor provides a stream\n * instance.\n *\n * @example\n * ```typescript\n * import { Component } from \"@angular/core\";\n * import { injectStream } from \"@langchain/angular\";\n *\n * @Component({\n * template: `\n * @for (msg of stream.messages(); track msg.id) {\n * <div>{{ msg.content }}</div>\n * }\n * <button\n * [disabled]=\"stream.isLoading()\"\n * (click)=\"onSubmit()\"\n * >Send</button>\n * `,\n * })\n * export class ChatComponent {\n * stream = injectStream();\n *\n * onSubmit() {\n * void this.stream.submit({\n * messages: [{ type: \"human\", content: \"Hello!\" }],\n * });\n * }\n * }\n * ```\n *\n * @example With type parameters for full type safety:\n * ```typescript\n * import type { agent } from \"./agent\";\n *\n * export class ChatComponent {\n * stream = injectStream<typeof agent>();\n * // stream.messages() returns typed messages\n * }\n * ```\n */\nfunction injectStream<\n T = Record<string, unknown>,\n Bag extends BagTemplate = BagTemplate,\n>(): AngularSignalWrap<\n WithClassMessages<ResolveStreamInterface<T, InferBag<T, Bag>>>\n>;\n\n/**\n * Angular entry point for LangGraph streaming. Call from a component, directive,\n * or service field initializer to get a **Signals-based** stream controller\n * connected to the LangGraph Platform (HTTP + threads API).\n *\n * The returned object mirrors the shared `useStream` API from\n * `@langchain/langgraph-sdk/ui`, but reactive fields are\n * {@link https://angular.dev/guide/signals | Angular `Signal`s}:\n * read state with calls like `stream.messages()`, `stream.values()`, and\n * `stream.isLoading()`, and use `WritableSignal` setters where exposed (for\n * example `stream.branch` for branch selection).\n *\n * ## Typing with `createDeepAgent`\n *\n * Expect `export const agent = createDeepAgent({ ... })` from `deepagents`. In\n * UI code, `import { type agent } from \"./agent\"` (or `import type { agent }`)\n * is a **type-only** import: it is erased when compiling, so the agent module\n * does not run in the browser. You still pass **`typeof agent`** to\n * `injectStream`, not `agent` alone — `agent` is a value; TypeScript only\n * accepts it in a type position via `typeof` (otherwise: *refers to a value,\n * but is being used as a type*). If you prefer a named type in generics, add\n * `export type Agent = typeof agent` next to the const and use\n * `injectStream<Agent>(...)`.\n *\n * @example\n * ```typescript\n * // agent.ts\n * import { createDeepAgent } from \"deepagents\";\n * import { tool } from \"langchain\";\n * import { z } from \"zod\";\n *\n * const getWeather = tool(\n * async ({ location }) => `Weather in ${location}`,\n * { name: \"get_weather\", schema: z.object({ location: z.string() }) },\n * );\n *\n * export const agent = createDeepAgent({\n * model: \"openai:gpt-4o\",\n * tools: [getWeather],\n * });\n *\n * // chat.component.ts — type-only import; no agent runtime in the frontend\n * import { Component } from \"@angular/core\";\n * import { injectStream } from \"@langchain/angular\";\n * import { type agent } from \"./agent\";\n *\n * @Component({\n * standalone: true,\n * template: `\n * @for (msg of stream.messages(); track msg.id ?? $index) {\n * <p>{{ msg.content }}</p>\n * }\n * `,\n * })\n * export class ChatComponent {\n * readonly stream = injectStream<typeof agent>({\n * assistantId: \"agent\",\n * apiUrl: \"http://localhost:2024\",\n * });\n * // stream.toolCalls()[0].call.name is typed as \"get_weather\"\n * }\n * ```\n *\n * ## Typing with `StateGraph` / custom graph state\n *\n * Use your graph state interface as `T` and embed tool call unions in\n * `Message<...>[]` when you need discriminated tool types.\n *\n * @example\n * ```typescript\n * import { Message } from \"@langchain/langgraph-sdk\";\n * import { Component } from \"@angular/core\";\n * import { injectStream } from \"@langchain/angular\";\n *\n * type MyToolCalls =\n * | { name: \"search\"; args: { query: string }; id?: string }\n * | { name: \"calculate\"; args: { expression: string }; id?: string };\n *\n * interface MyGraphState {\n * messages: Message<MyToolCalls>[];\n * context?: string;\n * }\n *\n * @Component({ standalone: true, template: \"\" })\n * export class ChatComponent {\n * readonly stream = injectStream<MyGraphState>({\n * assistantId: \"my-graph\",\n * apiUrl: \"http://localhost:2024\",\n * });\n * // stream.values() is typed as MyGraphState | null\n * }\n * ```\n *\n * @example\n * ```typescript\n * // Optional bag for interrupts, configurable, custom events, and updates\n * import { Component } from \"@angular/core\";\n * import { injectStream } from \"@langchain/angular\";\n * import type { Message } from \"@langchain/langgraph-sdk\";\n *\n * interface MyGraphState {\n * messages: Message[];\n * }\n *\n * @Component({ standalone: true, template: \"\" })\n * export class ChatComponent {\n * readonly stream = injectStream<\n * MyGraphState,\n * {\n * InterruptType: { question: string };\n * ConfigurableType: { userId: string };\n * }\n * >({\n * assistantId: \"my-graph\",\n * apiUrl: \"http://localhost:2024\",\n * });\n * // stream.interrupt() is typed as { question: string } | undefined\n * }\n * ```\n *\n * ## Subagent streaming\n *\n * For `createDeepAgent` agents with `subagents`, set `filterSubagentMessages`\n * and use `streamSubgraphs` on `submit` to populate `stream.subagents` and\n * related helpers.\n *\n * @example\n * ```typescript\n * import { Component } from \"@angular/core\";\n * import { injectStream } from \"@langchain/angular\";\n * import { type agent } from \"./agent\";\n *\n * @Component({ standalone: true, template: \"\" })\n * export class DeepAgentChatComponent {\n * readonly stream = injectStream<typeof agent>({\n * assistantId: \"deepagent\",\n * apiUrl: \"http://localhost:2024\",\n * filterSubagentMessages: true,\n * });\n *\n * send(content: string) {\n * void this.stream.submit(\n * { messages: [{ content, type: \"human\" }] },\n * { streamSubgraphs: true },\n * );\n * }\n * }\n * ```\n *\n * @param options - LangGraph Platform client options (`apiUrl` or `client`),\n * `assistantId`, stream modes, history, reconnect, subagent settings, etc.\n *\n * @returns A stream controller backed by Signals: graph values, messages,\n * loading and error state, interrupts, tool calls, branching, queue, and\n * `submit` / `stop` / `switchThread` helpers (writable where the UI layer\n * requires mutation).\n *\n * @template T Agent type (with `~agentTypes`) from `createDeepAgent` or\n * `createAgent`, or a state shape extending `Record<string, unknown>`.\n * @template Bag Optional configuration bag:\n * - `ConfigurableType` — `config.configurable` typing\n * - `InterruptType` — human-in-the-loop interrupt payloads\n * - `CustomEventType` — custom stream events\n * - `UpdateType` — payload typing for `submit`\n *\n * @see {@link https://docs.langchain.com/oss/javascript/langgraph/overview | LangGraph JavaScript overview}\n * @see {@link https://docs.langchain.com/oss/javascript/langchain/overview | LangChain JavaScript overview}\n * @see {@link https://docs.langchain.com/oss/javascript/deepagents/overview | Deep Agents JavaScript overview}\n */\nfunction injectStream<\n T = Record<string, unknown>,\n Bag extends BagTemplate = BagTemplate,\n>(\n options: ResolveStreamOptions<T, InferBag<T, Bag>>,\n): AngularSignalWrap<\n WithClassMessages<ResolveStreamInterface<T, InferBag<T, Bag>>>\n>;\n\n/**\n * Overload for a **custom transport** (`options.transport`), for example\n * {@link FetchStreamTransport} or any implementation compatible with\n * {@link injectStreamCustom}. Prefer {@link injectStreamCustom} directly when\n * you only use custom transports and want a narrower import.\n *\n * @param options - Custom transport and stream options (must include\n * `transport`).\n *\n * @returns The same Signals-based controller shape as the LangGraph Platform\n * overload.\n *\n * @template T Agent type or state shape, matching the custom transport.\n * @template Bag Same optional bag as the platform overload.\n *\n * @see {@link injectStreamCustom}\n */\nfunction injectStream<\n T = Record<string, unknown>,\n Bag extends BagTemplate = BagTemplate,\n>(\n options: UseStreamCustomOptions<InferStateType<T>, InferBag<T, Bag>>,\n): AngularSignalWrap<\n WithClassMessages<ResolveStreamInterface<T, InferBag<T, Bag>>>\n>;\n\n/**\n * @internal Merges DI, LangGraph Platform, and custom transport overloads.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction injectStream(options?: any): any {\n if (arguments.length === 0) {\n const instance = angularInject(STREAM_INSTANCE, { optional: true });\n if (instance == null) {\n throw new Error(\n \"injectStream() requires an ancestor component to provide a stream via provideStream(). \" +\n \"Add provideStream({ assistantId: '...' }) to the providers array of a parent component, \" +\n \"or use injectStream(options) directly.\",\n );\n }\n return instance;\n }\n if (\"transport\" in options) {\n return injectStreamCustom(options);\n }\n return useStreamLGP(options);\n}\n\nexport { injectStream };\n\n/**\n * @deprecated Use `injectStream` instead. `useStream` will be removed in a\n * future major version. `injectStream` follows Angular's `inject*` naming\n * convention for injection-based patterns.\n */\nexport const useStream = injectStream;\n\nexport function useStreamLGP<\n StateType extends Record<string, unknown> = Record<string, unknown>,\n Bag extends {\n ConfigurableType?: Record<string, unknown>;\n InterruptType?: unknown;\n CustomEventType?: unknown;\n UpdateType?: unknown;\n } = BagTemplate,\n>(options: AnyStreamOptions<StateType, Bag>) {\n type ConfigurableType = GetConfigurableType<Bag>;\n type InterruptType = GetInterruptType<Bag>;\n\n const client = options.client ?? new Client({ apiUrl: options.apiUrl });\n\n const orchestrator = new StreamOrchestrator<StateType, Bag>(options, {\n getClient: () => client,\n getAssistantId: () => options.assistantId,\n getMessagesKey: () => options.messagesKey ?? \"messages\",\n });\n\n orchestrator.initThreadId(options.threadId ?? undefined);\n\n const version = signal(0);\n const subagentVersion = signal(0);\n\n effect((onCleanup) => {\n const unsubscribe = orchestrator.subscribe(() => {\n version.update((v) => v + 1);\n subagentVersion.update((v) => v + 1);\n });\n onCleanup(() => unsubscribe());\n });\n\n // Subagent reconstruction\n effect((onCleanup) => {\n void version();\n const hvMessages = orchestrator.messages;\n const should =\n options.filterSubagentMessages &&\n !orchestrator.isLoading &&\n !orchestrator.historyData.isLoading &&\n hvMessages.length > 0;\n if (should) {\n const controller = orchestrator.reconstructSubagentsIfNeeded();\n if (controller) {\n onCleanup(() => controller.abort());\n }\n }\n });\n\n // Queue draining - track isLoading changes specifically so the drain\n // fires exactly when stream transitions from loading → idle\n const isLoadingForDrain = computed(() => {\n void version();\n return orchestrator.isLoading;\n });\n effect(() => {\n void isLoadingForDrain();\n orchestrator.drainQueue();\n });\n\n // Auto-reconnect\n const { shouldReconnect } = orchestrator;\n let hasReconnected = false;\n\n effect(() => {\n void version();\n const tid = orchestrator.threadId;\n if (!hasReconnected && shouldReconnect && tid && !orchestrator.isLoading) {\n const reconnected = orchestrator.tryReconnect();\n if (reconnected) hasReconnected = true;\n }\n });\n\n const values = computed(() => {\n void version();\n orchestrator.trackStreamMode(\"values\");\n return orchestrator.values;\n });\n\n const error = computed(() => {\n void version();\n return orchestrator.error;\n });\n\n const isLoading = signal(orchestrator.isLoading);\n effect(() => {\n void version();\n isLoading.set(orchestrator.isLoading);\n });\n\n const branch = signal<string>(\"\");\n effect(() => {\n void version();\n const b = orchestrator.branch;\n if (branch() !== b) branch.set(b);\n });\n\n const messages = computed(() => {\n void version();\n orchestrator.trackStreamMode(\"messages-tuple\", \"values\");\n return ensureMessageInstances(orchestrator.messages);\n });\n\n const toolCalls = computed(() => {\n void version();\n orchestrator.trackStreamMode(\"messages-tuple\", \"values\");\n return orchestrator.toolCalls;\n });\n\n const interrupt = computed(() => {\n void version();\n return orchestrator.interrupt;\n });\n\n const interrupts = computed((): Interrupt<InterruptType>[] => {\n void version();\n return orchestrator.interrupts as Interrupt<InterruptType>[];\n });\n\n const historyList = computed(() => {\n void version();\n return orchestrator.flatHistory;\n });\n\n const isThreadLoading = computed(() => {\n void version();\n return orchestrator.isThreadLoading;\n });\n\n const experimentalBranchTree = computed(() => {\n void version();\n return orchestrator.experimental_branchTree;\n });\n\n const queueEntries = signal(orchestrator.queueEntries);\n const queueSize = signal(orchestrator.queueSize);\n effect(() => {\n void version();\n queueEntries.set(orchestrator.queueEntries);\n queueSize.set(orchestrator.queueSize);\n });\n\n return {\n assistantId: options.assistantId,\n client,\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 getToolCalls(message: Message) {\n return orchestrator.getToolCalls(message);\n },\n\n interrupt,\n interrupts,\n\n history: historyList,\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: (\n values: StateType,\n submitOptions?: SubmitOptions<StateType, ConfigurableType>,\n ) => orchestrator.submit(values, submitOptions),\n stop: () => orchestrator.stop(),\n joinStream: (...args: Parameters<typeof orchestrator.joinStream>) =>\n orchestrator.joinStream(...args),\n\n queue: {\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 subagentVersion();\n return orchestrator.subagents;\n },\n get activeSubagents() {\n void subagentVersion();\n return orchestrator.activeSubagents;\n },\n getSubagent(toolCallId: string) {\n return orchestrator.getSubagent(toolCallId);\n },\n getSubagentsByType(type: string) {\n return orchestrator.getSubagentsByType(type);\n },\n getSubagentsByMessage(messageId: string) {\n return orchestrator.getSubagentsByMessage(messageId);\n },\n };\n}\n\n/**\n * Injectable Angular service that wraps {@link injectStream}.\n *\n * Extend this class with your own `@Injectable()` service and call\n * `super(options)` in the constructor:\n *\n * ```ts\n * \\@Injectable({ providedIn: 'root' })\n * export class ChatService extends StreamService {\n * constructor() {\n * super({ assistantId: 'agent', apiUrl: '...' });\n * }\n * }\n * ```\n *\n * The service exposes the same signals and methods as `injectStream`\n * (e.g. `values`, `messages`, `isLoading`, `submit`, `stop`).\n *\n * Must be created within an Angular injection context (via DI or\n * `runInInjectionContext`).\n */\n@Injectable()\nexport class StreamService<\n T = Record<string, unknown>,\n Bag extends BagTemplate = BagTemplate,\n> {\n private readonly _stream: StreamServiceInstance<T, Bag>;\n\n constructor(\n options:\n | ResolveStreamOptions<T, InferBag<T, Bag>>\n | UseStreamCustomOptions<InferStateType<T>, InferBag<T, Bag>>,\n ) {\n this._stream = injectStream(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n options as any,\n ) as unknown as StreamServiceInstance<T, Bag>;\n }\n\n get values(): Signal<T> {\n return this._stream.values;\n }\n\n get messages(): Signal<BaseMessage[]> {\n return this._stream.messages;\n }\n\n get isLoading(): WritableSignal<boolean> {\n return this._stream.isLoading;\n }\n\n get error(): Signal<unknown> {\n return this._stream.error;\n }\n\n get branch(): WritableSignal<string> {\n return this._stream.branch;\n }\n\n get interrupt(): Signal<Interrupt<GetInterruptType<Bag>> | undefined> {\n return this._stream.interrupt;\n }\n\n get interrupts(): Signal<Interrupt<GetInterruptType<Bag>>[]> {\n return this._stream.interrupts;\n }\n\n get toolCalls(): Signal<SdkToolCallWithResult<DefaultToolCall>[]> {\n return this._stream.toolCalls;\n }\n\n get queue(): AngularQueueInterface<{\n entries: readonly { id: string; values: Partial<T> | null | undefined }[];\n size: number;\n cancel: (id: string) => Promise<boolean>;\n clear: () => Promise<void>;\n }> {\n return this._stream.queue;\n }\n\n get subagents(): Map<string, SubagentStreamInterface> {\n return this._stream.subagents;\n }\n\n get activeSubagents(): SubagentStreamInterface[] {\n return this._stream.activeSubagents;\n }\n\n get history(): Signal<unknown> {\n return this._stream.history;\n }\n\n get isThreadLoading(): Signal<boolean> {\n return this._stream.isThreadLoading;\n }\n\n get experimental_branchTree(): Signal<unknown> {\n return this._stream.experimental_branchTree;\n }\n\n get client(): Client {\n return this._stream.client;\n }\n\n get assistantId(): string {\n return this._stream.assistantId;\n }\n\n submit(\n values: AcceptBaseMessages<Exclude<T, null | undefined>> | null | undefined,\n options?: SubmitOptions<\n T extends Record<string, unknown> ? T : Record<string, unknown>,\n GetConfigurableType<Bag>\n >,\n ): ReturnType<typeof this._stream.submit> {\n return this._stream.submit(values, options);\n }\n\n async stop(): Promise<void> {\n await this._stream.stop();\n }\n\n setBranch(value: string): void {\n this._stream.setBranch(value);\n }\n\n switchThread(newThreadId: string | null): void {\n this._stream.switchThread(newThreadId);\n }\n\n joinStream(\n runId: string,\n lastEventId?: string,\n options?: {\n streamMode?: StreamMode | StreamMode[];\n filter?: (event: {\n id?: string;\n event: StreamEvent;\n data: unknown;\n }) => boolean;\n },\n ): Promise<void> {\n return this._stream.joinStream(runId, lastEventId, options);\n }\n\n getMessagesMetadata(\n message: BaseMessage,\n index?: number,\n ):\n | MessageMetadata<\n T extends Record<string, unknown> ? T : Record<string, unknown>\n >\n | undefined {\n return this._stream.getMessagesMetadata(message as Message, index);\n }\n\n getToolCalls(message: BaseMessage): SdkToolCallWithResult<DefaultToolCall>[] {\n return this._stream.getToolCalls(message as Message);\n }\n\n getSubagent(toolCallId: string): SubagentStreamInterface | undefined {\n return this._stream.getSubagent(toolCallId);\n }\n\n getSubagentsByType(type: string): SubagentStreamInterface[] {\n return this._stream.getSubagentsByType(type);\n }\n\n getSubagentsByMessage(messageId: string): SubagentStreamInterface[] {\n return this._stream.getSubagentsByMessage(messageId);\n }\n}\n\nexport type {\n BaseStream,\n UseAgentStream,\n UseAgentStreamOptions,\n UseDeepAgentStream,\n UseDeepAgentStreamOptions,\n ResolveStreamInterface,\n ResolveStreamOptions,\n InferStateType,\n InferToolCalls,\n InferSubagentStates,\n InferNodeNames,\n InferBag,\n MessageMetadata,\n UseStreamOptions,\n UseStreamCustomOptions,\n UseStreamTransport,\n UseStreamThread,\n GetToolCallsType,\n AgentTypeConfigLike,\n IsAgentLike,\n ExtractAgentConfig,\n InferAgentToolCalls,\n SubagentToolCall,\n SubagentStatus,\n SubagentApi,\n SubagentStream,\n SubagentStreamInterface,\n SubAgentLike,\n CompiledSubAgentLike,\n DeepAgentTypeConfigLike,\n IsDeepAgentLike,\n ExtractDeepAgentConfig,\n ExtractSubAgentMiddleware,\n InferDeepAgentSubagents,\n InferSubagentByName,\n InferSubagentState,\n InferSubagentNames,\n SubagentStateMap,\n DefaultSubagentStates,\n BaseSubagentState,\n QueueEntry,\n QueueInterface,\n} from \"@langchain/langgraph-sdk/ui\";\n\nexport type ToolCallWithResult<ToolCall = DefaultToolCall> =\n SdkToolCallWithResult<ToolCall, CoreToolMessage, CoreAIMessage>;\nexport type {\n ToolCallState,\n DefaultToolCall,\n ToolCallFromTool,\n ToolCallsFromTools,\n} from \"@langchain/langgraph-sdk\";\n\nexport {\n SubagentManager,\n extractToolCallIdFromNamespace,\n calculateDepthFromNamespace,\n extractParentIdFromNamespace,\n isSubagentNamespace,\n} from \"@langchain/langgraph-sdk/ui\";\n"],"mappings":";;;;;;;;;;;AA2cA,SAAS,aAAa,SAAoB;AACxC,KAAI,UAAU,WAAW,GAAG;EAC1B,MAAM,YAAA,GAAA,cAAA,QAAyBA,gBAAAA,iBAAiB,EAAE,UAAU,MAAM,CAAC;AACnE,MAAI,YAAY,KACd,OAAM,IAAI,MACR,wNAGD;AAEH,SAAO;;AAET,KAAI,eAAe,QACjB,QAAOC,sBAAAA,mBAAmB,QAAQ;AAEpC,QAAO,aAAa,QAAQ;;;;;;;AAU9B,MAAa,YAAY;AAEzB,SAAgB,aAQd,SAA2C;CAI3C,MAAM,SAAS,QAAQ,UAAU,IAAIC,yBAAAA,OAAO,EAAE,QAAQ,QAAQ,QAAQ,CAAC;CAEvE,MAAM,eAAe,IAAIC,4BAAAA,mBAAmC,SAAS;EACnE,iBAAiB;EACjB,sBAAsB,QAAQ;EAC9B,sBAAsB,QAAQ,eAAe;EAC9C,CAAC;AAEF,cAAa,aAAa,QAAQ,YAAY,KAAA,EAAU;CAExD,MAAM,WAAA,GAAA,cAAA,QAAiB,EAAE;CACzB,MAAM,mBAAA,GAAA,cAAA,QAAyB,EAAE;AAEjC,EAAA,GAAA,cAAA,SAAQ,cAAc;EACpB,MAAM,cAAc,aAAa,gBAAgB;AAC/C,WAAQ,QAAQ,MAAM,IAAI,EAAE;AAC5B,mBAAgB,QAAQ,MAAM,IAAI,EAAE;IACpC;AACF,kBAAgB,aAAa,CAAC;GAC9B;AAGF,EAAA,GAAA,cAAA,SAAQ,cAAc;AACf,WAAS;EACd,MAAM,aAAa,aAAa;AAMhC,MAJE,QAAQ,0BACR,CAAC,aAAa,aACd,CAAC,aAAa,YAAY,aAC1B,WAAW,SAAS,GACV;GACV,MAAM,aAAa,aAAa,8BAA8B;AAC9D,OAAI,WACF,iBAAgB,WAAW,OAAO,CAAC;;GAGvC;CAIF,MAAM,qBAAA,GAAA,cAAA,gBAAmC;AAClC,WAAS;AACd,SAAO,aAAa;GACpB;AACF,EAAA,GAAA,cAAA,cAAa;AACN,qBAAmB;AACxB,eAAa,YAAY;GACzB;CAGF,MAAM,EAAE,oBAAoB;CAC5B,IAAI,iBAAiB;AAErB,EAAA,GAAA,cAAA,cAAa;AACN,WAAS;EACd,MAAM,MAAM,aAAa;AACzB,MAAI,CAAC,kBAAkB,mBAAmB,OAAO,CAAC,aAAa;OACzC,aAAa,cAAc,CAC9B,kBAAiB;;GAEpC;CAEF,MAAM,UAAA,GAAA,cAAA,gBAAwB;AACvB,WAAS;AACd,eAAa,gBAAgB,SAAS;AACtC,SAAO,aAAa;GACpB;CAEF,MAAM,SAAA,GAAA,cAAA,gBAAuB;AACtB,WAAS;AACd,SAAO,aAAa;GACpB;CAEF,MAAM,aAAA,GAAA,cAAA,QAAmB,aAAa,UAAU;AAChD,EAAA,GAAA,cAAA,cAAa;AACN,WAAS;AACd,YAAU,IAAI,aAAa,UAAU;GACrC;CAEF,MAAM,UAAA,GAAA,cAAA,QAAwB,GAAG;AACjC,EAAA,GAAA,cAAA,cAAa;AACN,WAAS;EACd,MAAM,IAAI,aAAa;AACvB,MAAI,QAAQ,KAAK,EAAG,QAAO,IAAI,EAAE;GACjC;CAEF,MAAM,YAAA,GAAA,cAAA,gBAA0B;AACzB,WAAS;AACd,eAAa,gBAAgB,kBAAkB,SAAS;AACxD,UAAA,GAAA,4BAAA,wBAA8B,aAAa,SAAS;GACpD;CAEF,MAAM,aAAA,GAAA,cAAA,gBAA2B;AAC1B,WAAS;AACd,eAAa,gBAAgB,kBAAkB,SAAS;AACxD,SAAO,aAAa;GACpB;CAEF,MAAM,aAAA,GAAA,cAAA,gBAA2B;AAC1B,WAAS;AACd,SAAO,aAAa;GACpB;CAEF,MAAM,cAAA,GAAA,cAAA,gBAAwD;AACvD,WAAS;AACd,SAAO,aAAa;GACpB;CAEF,MAAM,eAAA,GAAA,cAAA,gBAA6B;AAC5B,WAAS;AACd,SAAO,aAAa;GACpB;CAEF,MAAM,mBAAA,GAAA,cAAA,gBAAiC;AAChC,WAAS;AACd,SAAO,aAAa;GACpB;CAEF,MAAM,0BAAA,GAAA,cAAA,gBAAwC;AACvC,WAAS;AACd,SAAO,aAAa;GACpB;CAEF,MAAM,gBAAA,GAAA,cAAA,QAAsB,aAAa,aAAa;CACtD,MAAM,aAAA,GAAA,cAAA,QAAmB,aAAa,UAAU;AAChD,EAAA,GAAA,cAAA,cAAa;AACN,WAAS;AACd,eAAa,IAAI,aAAa,aAAa;AAC3C,YAAU,IAAI,aAAa,UAAU;GACrC;AAEF,QAAO;EACL,aAAa,QAAQ;EACrB;EAEA;EACA;EACA;EAEA;EACA,UAAU,OAAe;AACvB,gBAAa,UAAU,MAAM;;EAG/B;EACA;EACA,aAAa,SAAkB;AAC7B,UAAO,aAAa,aAAa,QAAQ;;EAG3C;EACA;EAEA,SAAS;EACT;EACA,yBAAyB;EAEzB,oBACE,SACA,OACwC;AACxC,UAAO,aAAa,oBAAoB,SAAS,MAAM;;EAGzD,SACE,QACA,kBACG,aAAa,OAAO,QAAQ,cAAc;EAC/C,YAAY,aAAa,MAAM;EAC/B,aAAa,GAAG,SACd,aAAa,WAAW,GAAG,KAAK;EAElC,OAAO;GACL,SAAS;GACT,MAAM;GACN,SAAS,OAAe,aAAa,gBAAgB,GAAG;GACxD,aAAa,aAAa,YAAY;GACvC;EAED,aAAa,aAA4B;AACvC,gBAAa,aAAa,YAAY;;EAGxC,IAAI,YAAY;AACT,oBAAiB;AACtB,UAAO,aAAa;;EAEtB,IAAI,kBAAkB;AACf,oBAAiB;AACtB,UAAO,aAAa;;EAEtB,YAAY,YAAoB;AAC9B,UAAO,aAAa,YAAY,WAAW;;EAE7C,mBAAmB,MAAc;AAC/B,UAAO,aAAa,mBAAmB,KAAK;;EAE9C,sBAAsB,WAAmB;AACvC,UAAO,aAAa,sBAAsB,UAAU;;EAEvD;;AAyBI,IAAA,gBAAA,MAAM,cAGX;CACA;CAEA,YACE,SAGA;AACA,OAAK,UAAU,aAEb,QACD;;CAGH,IAAI,SAAoB;AACtB,SAAO,KAAK,QAAQ;;CAGtB,IAAI,WAAkC;AACpC,SAAO,KAAK,QAAQ;;CAGtB,IAAI,YAAqC;AACvC,SAAO,KAAK,QAAQ;;CAGtB,IAAI,QAAyB;AAC3B,SAAO,KAAK,QAAQ;;CAGtB,IAAI,SAAiC;AACnC,SAAO,KAAK,QAAQ;;CAGtB,IAAI,YAAkE;AACpE,SAAO,KAAK,QAAQ;;CAGtB,IAAI,aAAyD;AAC3D,SAAO,KAAK,QAAQ;;CAGtB,IAAI,YAA8D;AAChE,SAAO,KAAK,QAAQ;;CAGtB,IAAI,QAKD;AACD,SAAO,KAAK,QAAQ;;CAGtB,IAAI,YAAkD;AACpD,SAAO,KAAK,QAAQ;;CAGtB,IAAI,kBAA6C;AAC/C,SAAO,KAAK,QAAQ;;CAGtB,IAAI,UAA2B;AAC7B,SAAO,KAAK,QAAQ;;CAGtB,IAAI,kBAAmC;AACrC,SAAO,KAAK,QAAQ;;CAGtB,IAAI,0BAA2C;AAC7C,SAAO,KAAK,QAAQ;;CAGtB,IAAI,SAAiB;AACnB,SAAO,KAAK,QAAQ;;CAGtB,IAAI,cAAsB;AACxB,SAAO,KAAK,QAAQ;;CAGtB,OACE,QACA,SAIwC;AACxC,SAAO,KAAK,QAAQ,OAAO,QAAQ,QAAQ;;CAG7C,MAAM,OAAsB;AAC1B,QAAM,KAAK,QAAQ,MAAM;;CAG3B,UAAU,OAAqB;AAC7B,OAAK,QAAQ,UAAU,MAAM;;CAG/B,aAAa,aAAkC;AAC7C,OAAK,QAAQ,aAAa,YAAY;;CAGxC,WACE,OACA,aACA,SAQe;AACf,SAAO,KAAK,QAAQ,WAAW,OAAO,aAAa,QAAQ;;CAG7D,oBACE,SACA,OAKY;AACZ,SAAO,KAAK,QAAQ,oBAAoB,SAAoB,MAAM;;CAGpE,aAAa,SAAgE;AAC3E,SAAO,KAAK,QAAQ,aAAa,QAAmB;;CAGtD,YAAY,YAAyD;AACnE,SAAO,KAAK,QAAQ,YAAY,WAAW;;CAG7C,mBAAmB,MAAyC;AAC1D,SAAO,KAAK,QAAQ,mBAAmB,KAAK;;CAG9C,sBAAsB,WAA8C;AAClE,SAAO,KAAK,QAAQ,sBAAsB,UAAU;;;4EApJ3C,CAAA,EAAA,cAAA"}
|
|
1
|
+
{"version":3,"file":"index.cjs","names":["STREAM_INSTANCE","injectStreamCustom","useStreamLGP"],"sources":["../src/index.ts"],"sourcesContent":["import { Injectable, inject as angularInject } from \"@angular/core\";\nimport type { Signal, WritableSignal } from \"@angular/core\";\nimport type {\n BaseMessage,\n ToolMessage as CoreToolMessage,\n AIMessage as CoreAIMessage,\n} from \"@langchain/core/messages\";\nimport type {\n MessageMetadata,\n SubmitOptions,\n ResolveStreamOptions,\n ResolveStreamInterface,\n InferBag,\n InferStateType,\n AcceptBaseMessages,\n UseStreamCustomOptions,\n SubagentStreamInterface,\n WithClassMessages,\n GetConfigurableType,\n GetInterruptType,\n} from \"@langchain/langgraph-sdk/ui\";\n\nimport {\n Client,\n type StreamEvent,\n type StreamMode,\n type Message,\n type Interrupt,\n type BagTemplate,\n type ToolCallWithResult as SdkToolCallWithResult,\n type DefaultToolCall,\n} from \"@langchain/langgraph-sdk\";\nimport type { StreamServiceInstance } from \"./stream-service-instance.js\";\nimport { injectStreamCustom } from \"./stream.custom.js\";\nimport { useStreamLGP } from \"./stream.lgp.js\";\nimport { STREAM_INSTANCE } from \"./context.js\";\n\nexport { injectStreamCustom, useStreamCustom } from \"./stream.custom.js\";\nexport { FetchStreamTransport } from \"@langchain/langgraph-sdk/ui\";\nexport {\n provideStreamDefaults,\n provideStream,\n STREAM_DEFAULTS,\n STREAM_INSTANCE,\n} from \"./context.js\";\nexport type { StreamDefaults } from \"./context.js\";\nexport type { ClassSubagentStreamInterface } from \"@langchain/langgraph-sdk/ui\";\n\ntype AngularWritableKeys = \"isLoading\" | \"branch\";\n\ntype AngularPlainKeys =\n | \"submit\"\n | \"stop\"\n | \"joinStream\"\n | \"switchThread\"\n | \"setBranch\"\n | \"getMessagesMetadata\"\n | \"getToolCalls\"\n | \"getSubagent\"\n | \"getSubagentsByType\"\n | \"getSubagentsByMessage\"\n | \"client\"\n | \"assistantId\";\n\ntype AngularQueueInterface<T> = T extends {\n entries: infer E;\n size: infer S;\n cancel: infer C;\n clear: infer Cl;\n}\n ? {\n entries: WritableSignal<E>;\n size: WritableSignal<S>;\n cancel: C;\n clear: Cl;\n }\n : T;\n\ntype AngularSignalWrap<T> = {\n [K in keyof T]: K extends AngularPlainKeys\n ? T[K]\n : K extends AngularWritableKeys\n ? WritableSignal<T[K]>\n : K extends \"queue\"\n ? AngularQueueInterface<T[K]>\n : Signal<T[K]>;\n};\n\n/**\n * Injects the shared stream instance from the nearest ancestor that provided\n * one via {@link provideStream}. Throws if no ancestor provides a stream\n * instance.\n *\n * @example\n * ```typescript\n * import { Component } from \"@angular/core\";\n * import { injectStream } from \"@langchain/angular\";\n *\n * @Component({\n * template: `\n * @for (msg of stream.messages(); track msg.id) {\n * <div>{{ msg.content }}</div>\n * }\n * <button\n * [disabled]=\"stream.isLoading()\"\n * (click)=\"onSubmit()\"\n * >Send</button>\n * `,\n * })\n * export class ChatComponent {\n * stream = injectStream();\n *\n * onSubmit() {\n * void this.stream.submit({\n * messages: [{ type: \"human\", content: \"Hello!\" }],\n * });\n * }\n * }\n * ```\n *\n * @example With type parameters for full type safety:\n * ```typescript\n * import type { agent } from \"./agent\";\n *\n * export class ChatComponent {\n * stream = injectStream<typeof agent>();\n * // stream.messages() returns typed messages\n * }\n * ```\n */\nfunction injectStream<\n T = Record<string, unknown>,\n Bag extends BagTemplate = BagTemplate,\n>(): AngularSignalWrap<\n WithClassMessages<ResolveStreamInterface<T, InferBag<T, Bag>>>\n>;\n\n/**\n * Angular entry point for LangGraph streaming. Call from a component, directive,\n * or service field initializer to get a **Signals-based** stream controller\n * connected to the LangGraph Platform (HTTP + threads API).\n *\n * The returned object mirrors the shared `useStream` API from\n * `@langchain/langgraph-sdk/ui`, but reactive fields are\n * {@link https://angular.dev/guide/signals | Angular `Signal`s}:\n * read state with calls like `stream.messages()`, `stream.values()`, and\n * `stream.isLoading()`, and use `WritableSignal` setters where exposed (for\n * example `stream.branch` for branch selection).\n *\n * ## Typing with `createDeepAgent`\n *\n * Expect `export const agent = createDeepAgent({ ... })` from `deepagents`. In\n * UI code, `import { type agent } from \"./agent\"` (or `import type { agent }`)\n * is a **type-only** import: it is erased when compiling, so the agent module\n * does not run in the browser. You still pass **`typeof agent`** to\n * `injectStream`, not `agent` alone — `agent` is a value; TypeScript only\n * accepts it in a type position via `typeof` (otherwise: *refers to a value,\n * but is being used as a type*). If you prefer a named type in generics, add\n * `export type Agent = typeof agent` next to the const and use\n * `injectStream<Agent>(...)`.\n *\n * @example\n * ```typescript\n * // agent.ts\n * import { createDeepAgent } from \"deepagents\";\n * import { tool } from \"langchain\";\n * import { z } from \"zod\";\n *\n * const getWeather = tool(\n * async ({ location }) => `Weather in ${location}`,\n * { name: \"get_weather\", schema: z.object({ location: z.string() }) },\n * );\n *\n * export const agent = createDeepAgent({\n * model: \"openai:gpt-4o\",\n * tools: [getWeather],\n * });\n *\n * // chat.component.ts — type-only import; no agent runtime in the frontend\n * import { Component } from \"@angular/core\";\n * import { injectStream } from \"@langchain/angular\";\n * import { type agent } from \"./agent\";\n *\n * @Component({\n * standalone: true,\n * template: `\n * @for (msg of stream.messages(); track msg.id ?? $index) {\n * <p>{{ msg.content }}</p>\n * }\n * `,\n * })\n * export class ChatComponent {\n * readonly stream = injectStream<typeof agent>({\n * assistantId: \"agent\",\n * apiUrl: \"http://localhost:2024\",\n * });\n * // stream.toolCalls()[0].call.name is typed as \"get_weather\"\n * }\n * ```\n *\n * ## Typing with `StateGraph` / custom graph state\n *\n * Use your graph state interface as `T` and embed tool call unions in\n * `Message<...>[]` when you need discriminated tool types.\n *\n * @example\n * ```typescript\n * import { Message } from \"@langchain/langgraph-sdk\";\n * import { Component } from \"@angular/core\";\n * import { injectStream } from \"@langchain/angular\";\n *\n * type MyToolCalls =\n * | { name: \"search\"; args: { query: string }; id?: string }\n * | { name: \"calculate\"; args: { expression: string }; id?: string };\n *\n * interface MyGraphState {\n * messages: Message<MyToolCalls>[];\n * context?: string;\n * }\n *\n * @Component({ standalone: true, template: \"\" })\n * export class ChatComponent {\n * readonly stream = injectStream<MyGraphState>({\n * assistantId: \"my-graph\",\n * apiUrl: \"http://localhost:2024\",\n * });\n * // stream.values() is typed as MyGraphState | null\n * }\n * ```\n *\n * @example\n * ```typescript\n * // Optional bag for interrupts, configurable, custom events, and updates\n * import { Component } from \"@angular/core\";\n * import { injectStream } from \"@langchain/angular\";\n * import type { Message } from \"@langchain/langgraph-sdk\";\n *\n * interface MyGraphState {\n * messages: Message[];\n * }\n *\n * @Component({ standalone: true, template: \"\" })\n * export class ChatComponent {\n * readonly stream = injectStream<\n * MyGraphState,\n * {\n * InterruptType: { question: string };\n * ConfigurableType: { userId: string };\n * }\n * >({\n * assistantId: \"my-graph\",\n * apiUrl: \"http://localhost:2024\",\n * });\n * // stream.interrupt() is typed as { question: string } | undefined\n * }\n * ```\n *\n * ## Subagent streaming\n *\n * For `createDeepAgent` agents with `subagents`, set `filterSubagentMessages`\n * and use `streamSubgraphs` on `submit` to populate `stream.subagents` and\n * related helpers.\n *\n * @example\n * ```typescript\n * import { Component } from \"@angular/core\";\n * import { injectStream } from \"@langchain/angular\";\n * import { type agent } from \"./agent\";\n *\n * @Component({ standalone: true, template: \"\" })\n * export class DeepAgentChatComponent {\n * readonly stream = injectStream<typeof agent>({\n * assistantId: \"deepagent\",\n * apiUrl: \"http://localhost:2024\",\n * filterSubagentMessages: true,\n * });\n *\n * send(content: string) {\n * void this.stream.submit(\n * { messages: [{ content, type: \"human\" }] },\n * { streamSubgraphs: true },\n * );\n * }\n * }\n * ```\n *\n * @param options - LangGraph Platform client options (`apiUrl` or `client`),\n * `assistantId`, stream modes, history, reconnect, subagent settings, etc.\n *\n * @returns A stream controller backed by Signals: graph values, messages,\n * loading and error state, interrupts, tool calls, branching, queue, and\n * `submit` / `stop` / `switchThread` helpers (writable where the UI layer\n * requires mutation).\n *\n * @template T Agent type (with `~agentTypes`) from `createDeepAgent` or\n * `createAgent`, or a state shape extending `Record<string, unknown>`.\n * @template Bag Optional configuration bag:\n * - `ConfigurableType` — `config.configurable` typing\n * - `InterruptType` — human-in-the-loop interrupt payloads\n * - `CustomEventType` — custom stream events\n * - `UpdateType` — payload typing for `submit`\n *\n * @see {@link https://docs.langchain.com/oss/javascript/langgraph/overview | LangGraph JavaScript overview}\n * @see {@link https://docs.langchain.com/oss/javascript/langchain/overview | LangChain JavaScript overview}\n * @see {@link https://docs.langchain.com/oss/javascript/deepagents/overview | Deep Agents JavaScript overview}\n */\nfunction injectStream<\n T = Record<string, unknown>,\n Bag extends BagTemplate = BagTemplate,\n>(\n options: ResolveStreamOptions<T, InferBag<T, Bag>>\n): AngularSignalWrap<\n WithClassMessages<ResolveStreamInterface<T, InferBag<T, Bag>>>\n>;\n\n/**\n * Overload for a **custom transport** (`options.transport`), for example\n * {@link FetchStreamTransport} or any implementation compatible with\n * {@link injectStreamCustom}. Prefer {@link injectStreamCustom} directly when\n * you only use custom transports and want a narrower import.\n *\n * @param options - Custom transport and stream options (must include\n * `transport`).\n *\n * @returns The same Signals-based controller shape as the LangGraph Platform\n * overload.\n *\n * @template T Agent type or state shape, matching the custom transport.\n * @template Bag Same optional bag as the platform overload.\n *\n * @see {@link injectStreamCustom}\n */\nfunction injectStream<\n T = Record<string, unknown>,\n Bag extends BagTemplate = BagTemplate,\n>(\n options: UseStreamCustomOptions<InferStateType<T>, InferBag<T, Bag>>\n): AngularSignalWrap<\n WithClassMessages<ResolveStreamInterface<T, InferBag<T, Bag>>>\n>;\n\n/**\n * @internal Merges DI, LangGraph Platform, and custom transport overloads.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction injectStream(options?: any): any {\n if (arguments.length === 0) {\n const instance = angularInject(STREAM_INSTANCE, { optional: true });\n if (instance == null) {\n throw new Error(\n \"injectStream() requires an ancestor component to provide a stream via provideStream(). \" +\n \"Add provideStream({ assistantId: '...' }) to the providers array of a parent component, \" +\n \"or use injectStream(options) directly.\"\n );\n }\n return instance;\n }\n if (\"transport\" in options) {\n return injectStreamCustom(options);\n }\n return useStreamLGP(options);\n}\n\nexport { injectStream };\n\n/**\n * @deprecated Use `injectStream` instead. `useStream` will be removed in a\n * future major version. `injectStream` follows Angular's `inject*` naming\n * convention for injection-based patterns.\n */\nexport const useStream = injectStream;\n\nexport { useStreamLGP } from \"./stream.lgp.js\";\n\n/**\n * Injectable Angular service that wraps {@link injectStream}.\n *\n * Extend this class with your own `@Injectable()` service and call\n * `super(options)` in the constructor:\n *\n * ```ts\n * \\@Injectable({ providedIn: 'root' })\n * export class ChatService extends StreamService {\n * constructor() {\n * super({ assistantId: 'agent', apiUrl: '...' });\n * }\n * }\n * ```\n *\n * The service exposes the same signals and methods as `injectStream`\n * (e.g. `values`, `messages`, `isLoading`, `submit`, `stop`).\n *\n * Must be created within an Angular injection context (via DI or\n * `runInInjectionContext`).\n */\n@Injectable()\nexport class StreamService<\n T = Record<string, unknown>,\n Bag extends BagTemplate = BagTemplate,\n> {\n private readonly _stream: StreamServiceInstance<T, Bag>;\n\n constructor(\n options:\n | ResolveStreamOptions<T, InferBag<T, Bag>>\n | UseStreamCustomOptions<InferStateType<T>, InferBag<T, Bag>>\n ) {\n this._stream = injectStream(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n options as any\n ) as unknown as StreamServiceInstance<T, Bag>;\n }\n\n get values(): Signal<T> {\n return this._stream.values;\n }\n\n get messages(): Signal<BaseMessage[]> {\n return this._stream.messages;\n }\n\n get isLoading(): WritableSignal<boolean> {\n return this._stream.isLoading;\n }\n\n get error(): Signal<unknown> {\n return this._stream.error;\n }\n\n get branch(): WritableSignal<string> {\n return this._stream.branch;\n }\n\n get interrupt(): Signal<Interrupt<GetInterruptType<Bag>> | undefined> {\n return this._stream.interrupt;\n }\n\n get interrupts(): Signal<Interrupt<GetInterruptType<Bag>>[]> {\n return this._stream.interrupts;\n }\n\n get toolCalls(): Signal<SdkToolCallWithResult<DefaultToolCall>[]> {\n return this._stream.toolCalls;\n }\n\n get queue(): AngularQueueInterface<{\n entries: readonly { id: string; values: Partial<T> | null | undefined }[];\n size: number;\n cancel: (id: string) => Promise<boolean>;\n clear: () => Promise<void>;\n }> {\n return this._stream.queue;\n }\n\n get subagents(): Signal<ReadonlyMap<string, SubagentStreamInterface>> {\n return this._stream.subagents;\n }\n\n get activeSubagents(): Signal<readonly SubagentStreamInterface[]> {\n return this._stream.activeSubagents;\n }\n\n get history(): Signal<unknown> {\n return this._stream.history;\n }\n\n get isThreadLoading(): Signal<boolean> {\n return this._stream.isThreadLoading;\n }\n\n get experimental_branchTree(): Signal<unknown> {\n return this._stream.experimental_branchTree;\n }\n\n get client(): Client {\n return this._stream.client;\n }\n\n get assistantId(): string {\n return this._stream.assistantId;\n }\n\n submit(\n values: AcceptBaseMessages<Exclude<T, null | undefined>> | null | undefined,\n options?: SubmitOptions<\n T extends Record<string, unknown> ? T : Record<string, unknown>,\n GetConfigurableType<Bag>\n >\n ): ReturnType<typeof this._stream.submit> {\n return this._stream.submit(values, options);\n }\n\n async stop(): Promise<void> {\n await this._stream.stop();\n }\n\n setBranch(value: string): void {\n this._stream.setBranch(value);\n }\n\n switchThread(newThreadId: string | null): void {\n this._stream.switchThread(newThreadId);\n }\n\n joinStream(\n runId: string,\n lastEventId?: string,\n options?: {\n streamMode?: StreamMode | StreamMode[];\n filter?: (event: {\n id?: string;\n event: StreamEvent;\n data: unknown;\n }) => boolean;\n }\n ): Promise<void> {\n return this._stream.joinStream(runId, lastEventId, options);\n }\n\n getMessagesMetadata(\n message: BaseMessage,\n index?: number\n ):\n | MessageMetadata<\n T extends Record<string, unknown> ? T : Record<string, unknown>\n >\n | undefined {\n return this._stream.getMessagesMetadata(message as Message, index);\n }\n\n getToolCalls(message: BaseMessage): SdkToolCallWithResult<DefaultToolCall>[] {\n return this._stream.getToolCalls(message as Message);\n }\n\n getSubagent(toolCallId: string): SubagentStreamInterface | undefined {\n return this._stream.getSubagent(toolCallId);\n }\n\n getSubagentsByType(type: string): SubagentStreamInterface[] {\n return this._stream.getSubagentsByType(type);\n }\n\n getSubagentsByMessage(messageId: string): SubagentStreamInterface[] {\n return this._stream.getSubagentsByMessage(messageId);\n }\n}\n\nexport type {\n BaseStream,\n UseAgentStream,\n UseAgentStreamOptions,\n UseDeepAgentStream,\n UseDeepAgentStreamOptions,\n ResolveStreamInterface,\n ResolveStreamOptions,\n InferStateType,\n InferToolCalls,\n InferSubagentStates,\n InferNodeNames,\n InferBag,\n MessageMetadata,\n UseStreamOptions,\n UseStreamCustomOptions,\n UseStreamTransport,\n UseStreamThread,\n GetToolCallsType,\n AgentTypeConfigLike,\n IsAgentLike,\n ExtractAgentConfig,\n InferAgentToolCalls,\n SubagentToolCall,\n SubagentStatus,\n SubagentApi,\n SubagentStream,\n SubagentStreamInterface,\n SubAgentLike,\n CompiledSubAgentLike,\n DeepAgentTypeConfigLike,\n IsDeepAgentLike,\n ExtractDeepAgentConfig,\n ExtractSubAgentMiddleware,\n InferDeepAgentSubagents,\n InferSubagentByName,\n InferSubagentState,\n InferSubagentNames,\n SubagentStateMap,\n DefaultSubagentStates,\n BaseSubagentState,\n QueueEntry,\n QueueInterface,\n} from \"@langchain/langgraph-sdk/ui\";\n\nexport type ToolCallWithResult<ToolCall = DefaultToolCall> =\n SdkToolCallWithResult<ToolCall, CoreToolMessage, CoreAIMessage>;\nexport type {\n ToolCallState,\n DefaultToolCall,\n ToolCallFromTool,\n ToolCallsFromTools,\n} from \"@langchain/langgraph-sdk\";\n\nexport {\n SubagentManager,\n extractToolCallIdFromNamespace,\n calculateDepthFromNamespace,\n extractParentIdFromNamespace,\n isSubagentNamespace,\n} from \"@langchain/langgraph-sdk/ui\";\n"],"mappings":";;;;;;;;;;;AAyVA,SAAS,aAAa,SAAoB;AACxC,KAAI,UAAU,WAAW,GAAG;EAC1B,MAAM,YAAA,GAAA,cAAA,QAAyBA,gBAAAA,iBAAiB,EAAE,UAAU,MAAM,CAAC;AACnE,MAAI,YAAY,KACd,OAAM,IAAI,MACR,wNAGD;AAEH,SAAO;;AAET,KAAI,eAAe,QACjB,QAAOC,sBAAAA,mBAAmB,QAAQ;AAEpC,QAAOC,mBAAAA,aAAa,QAAQ;;;;;;;AAU9B,MAAa,YAAY;AA0BlB,IAAA,gBAAA,MAAM,cAGX;CACA;CAEA,YACE,SAGA;AACA,OAAK,UAAU,aAEb,QACD;;CAGH,IAAI,SAAoB;AACtB,SAAO,KAAK,QAAQ;;CAGtB,IAAI,WAAkC;AACpC,SAAO,KAAK,QAAQ;;CAGtB,IAAI,YAAqC;AACvC,SAAO,KAAK,QAAQ;;CAGtB,IAAI,QAAyB;AAC3B,SAAO,KAAK,QAAQ;;CAGtB,IAAI,SAAiC;AACnC,SAAO,KAAK,QAAQ;;CAGtB,IAAI,YAAkE;AACpE,SAAO,KAAK,QAAQ;;CAGtB,IAAI,aAAyD;AAC3D,SAAO,KAAK,QAAQ;;CAGtB,IAAI,YAA8D;AAChE,SAAO,KAAK,QAAQ;;CAGtB,IAAI,QAKD;AACD,SAAO,KAAK,QAAQ;;CAGtB,IAAI,YAAkE;AACpE,SAAO,KAAK,QAAQ;;CAGtB,IAAI,kBAA8D;AAChE,SAAO,KAAK,QAAQ;;CAGtB,IAAI,UAA2B;AAC7B,SAAO,KAAK,QAAQ;;CAGtB,IAAI,kBAAmC;AACrC,SAAO,KAAK,QAAQ;;CAGtB,IAAI,0BAA2C;AAC7C,SAAO,KAAK,QAAQ;;CAGtB,IAAI,SAAiB;AACnB,SAAO,KAAK,QAAQ;;CAGtB,IAAI,cAAsB;AACxB,SAAO,KAAK,QAAQ;;CAGtB,OACE,QACA,SAIwC;AACxC,SAAO,KAAK,QAAQ,OAAO,QAAQ,QAAQ;;CAG7C,MAAM,OAAsB;AAC1B,QAAM,KAAK,QAAQ,MAAM;;CAG3B,UAAU,OAAqB;AAC7B,OAAK,QAAQ,UAAU,MAAM;;CAG/B,aAAa,aAAkC;AAC7C,OAAK,QAAQ,aAAa,YAAY;;CAGxC,WACE,OACA,aACA,SAQe;AACf,SAAO,KAAK,QAAQ,WAAW,OAAO,aAAa,QAAQ;;CAG7D,oBACE,SACA,OAKY;AACZ,SAAO,KAAK,QAAQ,oBAAoB,SAAoB,MAAM;;CAGpE,aAAa,SAAgE;AAC3E,SAAO,KAAK,QAAQ,aAAa,QAAmB;;CAGtD,YAAY,YAAyD;AACnE,SAAO,KAAK,QAAQ,YAAY,WAAW;;CAG7C,mBAAmB,MAAyC;AAC1D,SAAO,KAAK,QAAQ,mBAAmB,KAAK;;CAG9C,sBAAsB,WAA8C;AAClE,SAAO,KAAK,QAAQ,sBAAsB,UAAU;;;4EApJ3C,CAAA,EAAA,cAAA"}
|
package/dist/index.d.cts
CHANGED
|
@@ -1,52 +1,14 @@
|
|
|
1
|
-
import { ClassSubagentStreamInterface } from "./subagent-types.cjs";
|
|
2
1
|
import { injectStreamCustom, useStreamCustom } from "./stream.custom.cjs";
|
|
3
2
|
import { STREAM_DEFAULTS, STREAM_INSTANCE, StreamDefaults, provideStream, provideStreamDefaults } from "./context.cjs";
|
|
4
|
-
import
|
|
5
|
-
import { BagTemplate, Client, DefaultToolCall, DefaultToolCall as DefaultToolCall$1, Interrupt, Message, StreamEvent, StreamMode, ToolCallFromTool, ToolCallState, ToolCallWithResult as ToolCallWithResult$1, ToolCallsFromTools } from "@langchain/langgraph-sdk";
|
|
6
|
-
import * as _langchain_core_messages0 from "@langchain/core/messages";
|
|
7
|
-
import { AIMessage, BaseMessage, ToolMessage } from "@langchain/core/messages";
|
|
8
|
-
import * as _langchain_langgraph_sdk_ui0 from "@langchain/langgraph-sdk/ui";
|
|
9
|
-
import { AcceptBaseMessages, AgentTypeConfigLike, AnyStreamOptions, BaseStream, BaseSubagentState, CompiledSubAgentLike, DeepAgentTypeConfigLike, DefaultSubagentStates, ExtractAgentConfig, ExtractDeepAgentConfig, ExtractSubAgentMiddleware, FetchStreamTransport, GetConfigurableType, GetInterruptType, GetToolCallsType, HistoryWithBaseMessages, InferAgentToolCalls, InferBag, InferBag as InferBag$1, InferDeepAgentSubagents, InferNodeNames, InferStateType, InferStateType as InferStateType$1, InferSubagentByName, InferSubagentNames, InferSubagentState, InferSubagentStates, InferToolCalls, IsAgentLike, IsDeepAgentLike, MessageMetadata, MessageMetadata as MessageMetadata$1, QueueEntry, QueueInterface, ResolveStreamInterface, ResolveStreamInterface as ResolveStreamInterface$1, ResolveStreamOptions, ResolveStreamOptions as ResolveStreamOptions$1, SubAgentLike, SubagentApi, SubagentManager, SubagentStateMap, SubagentStatus, SubagentStream, SubagentStreamInterface, SubagentStreamInterface as SubagentStreamInterface$1, SubagentToolCall, SubmitOptions, UseAgentStream, UseAgentStreamOptions, UseDeepAgentStream, UseDeepAgentStreamOptions, UseStreamCustomOptions, UseStreamCustomOptions as UseStreamCustomOptions$1, UseStreamOptions, UseStreamThread, UseStreamTransport, calculateDepthFromNamespace, extractParentIdFromNamespace, extractToolCallIdFromNamespace, isSubagentNamespace } from "@langchain/langgraph-sdk/ui";
|
|
3
|
+
import { useStreamLGP } from "./stream.lgp.cjs";
|
|
10
4
|
import { Signal, WritableSignal } from "@angular/core";
|
|
5
|
+
import { AIMessage, BaseMessage, ToolMessage } from "@langchain/core/messages";
|
|
6
|
+
import { AcceptBaseMessages, AgentTypeConfigLike, BaseStream, BaseSubagentState, ClassSubagentStreamInterface, CompiledSubAgentLike, DeepAgentTypeConfigLike, DefaultSubagentStates, ExtractAgentConfig, ExtractDeepAgentConfig, ExtractSubAgentMiddleware, FetchStreamTransport, GetConfigurableType, GetInterruptType, GetToolCallsType, InferAgentToolCalls, InferBag, InferBag as InferBag$1, InferDeepAgentSubagents, InferNodeNames, InferStateType, InferStateType as InferStateType$1, InferSubagentByName, InferSubagentNames, InferSubagentState, InferSubagentStates, InferToolCalls, IsAgentLike, IsDeepAgentLike, MessageMetadata, MessageMetadata as MessageMetadata$1, QueueEntry, QueueInterface, ResolveStreamInterface, ResolveStreamInterface as ResolveStreamInterface$1, ResolveStreamOptions, ResolveStreamOptions as ResolveStreamOptions$1, SubAgentLike, SubagentApi, SubagentManager, SubagentStateMap, SubagentStatus, SubagentStream, SubagentStreamInterface, SubagentStreamInterface as SubagentStreamInterface$1, SubagentToolCall, SubmitOptions, UseAgentStream, UseAgentStreamOptions, UseDeepAgentStream, UseDeepAgentStreamOptions, UseStreamCustomOptions, UseStreamCustomOptions as UseStreamCustomOptions$1, UseStreamOptions, UseStreamThread, UseStreamTransport, WithClassMessages, calculateDepthFromNamespace, extractParentIdFromNamespace, extractToolCallIdFromNamespace, isSubagentNamespace } from "@langchain/langgraph-sdk/ui";
|
|
7
|
+
import { BagTemplate, Client, DefaultToolCall, DefaultToolCall as DefaultToolCall$1, Interrupt, StreamEvent, StreamMode, ToolCallFromTool, ToolCallState, ToolCallWithResult as ToolCallWithResult$1, ToolCallsFromTools } from "@langchain/langgraph-sdk";
|
|
11
8
|
|
|
12
9
|
//#region src/index.d.ts
|
|
13
|
-
type ClassToolCallWithResult<T> = T extends ToolCallWithResult$1<infer TC, unknown, unknown> ? ToolCallWithResult$1<TC, ToolMessage, AIMessage> : T;
|
|
14
|
-
type WithClassMessages<T> = Omit<T, "messages" | "history" | "getMessagesMetadata" | "toolCalls" | "getToolCalls" | "submit" | "subagents" | "activeSubagents" | "getSubagent" | "getSubagentsByType" | "getSubagentsByMessage"> & {
|
|
15
|
-
messages: BaseMessage[];
|
|
16
|
-
getMessagesMetadata: (message: BaseMessage, index?: number) => MessageMetadata$1<Record<string, unknown>> | undefined;
|
|
17
|
-
} & ("history" extends keyof T ? {
|
|
18
|
-
history: HistoryWithBaseMessages<T["history"]>;
|
|
19
|
-
} : unknown) & ("submit" extends keyof T ? {
|
|
20
|
-
submit: T extends {
|
|
21
|
-
submit: (values: infer V, options?: infer O) => infer Ret;
|
|
22
|
-
} ? (values: AcceptBaseMessages<Exclude<V, null | undefined>> | null | undefined, options?: O) => Ret : never;
|
|
23
|
-
} : unknown) & ("toolCalls" extends keyof T ? {
|
|
24
|
-
toolCalls: T extends {
|
|
25
|
-
toolCalls: (infer TC)[];
|
|
26
|
-
} ? ClassToolCallWithResult<TC>[] : never;
|
|
27
|
-
} : unknown) & ("getToolCalls" extends keyof T ? {
|
|
28
|
-
getToolCalls: T extends {
|
|
29
|
-
getToolCalls: (message: infer _M) => (infer TC)[];
|
|
30
|
-
} ? (message: AIMessage) => ClassToolCallWithResult<TC>[] : never;
|
|
31
|
-
} : unknown) & ("subagents" extends keyof T ? {
|
|
32
|
-
subagents: T extends {
|
|
33
|
-
subagents: Map<string, SubagentStreamInterface$1<infer S, infer TC, infer N>>;
|
|
34
|
-
} ? Map<string, ClassSubagentStreamInterface<S, TC, N>> : never;
|
|
35
|
-
activeSubagents: T extends {
|
|
36
|
-
activeSubagents: SubagentStreamInterface$1<infer S, infer TC, infer N>[];
|
|
37
|
-
} ? ClassSubagentStreamInterface<S, TC, N>[] : never;
|
|
38
|
-
getSubagent: T extends {
|
|
39
|
-
getSubagent: (id: string) => SubagentStreamInterface$1<infer S, infer TC, infer N> | undefined;
|
|
40
|
-
} ? (toolCallId: string) => ClassSubagentStreamInterface<S, TC, N> | undefined : never;
|
|
41
|
-
getSubagentsByType: T extends {
|
|
42
|
-
getSubagentsByType: (type: string) => SubagentStreamInterface$1<infer S, infer TC, infer N>[];
|
|
43
|
-
} ? (type: string) => ClassSubagentStreamInterface<S, TC, N>[] : never;
|
|
44
|
-
getSubagentsByMessage: T extends {
|
|
45
|
-
getSubagentsByMessage: (id: string) => SubagentStreamInterface$1<infer S, infer TC, infer N>[];
|
|
46
|
-
} ? (messageId: string) => ClassSubagentStreamInterface<S, TC, N>[] : never;
|
|
47
|
-
} : unknown);
|
|
48
10
|
type AngularWritableKeys = "isLoading" | "branch";
|
|
49
|
-
type AngularPlainKeys = "submit" | "stop" | "joinStream" | "switchThread" | "setBranch" | "getMessagesMetadata" | "getToolCalls" | "getSubagent" | "getSubagentsByType" | "getSubagentsByMessage" | "
|
|
11
|
+
type AngularPlainKeys = "submit" | "stop" | "joinStream" | "switchThread" | "setBranch" | "getMessagesMetadata" | "getToolCalls" | "getSubagent" | "getSubagentsByType" | "getSubagentsByMessage" | "client" | "assistantId";
|
|
50
12
|
type AngularQueueInterface<T> = T extends {
|
|
51
13
|
entries: infer E;
|
|
52
14
|
size: infer S;
|
|
@@ -296,51 +258,6 @@ declare function injectStream<T = Record<string, unknown>, Bag extends BagTempla
|
|
|
296
258
|
* convention for injection-based patterns.
|
|
297
259
|
*/
|
|
298
260
|
declare const useStream: typeof injectStream;
|
|
299
|
-
declare function useStreamLGP<StateType extends Record<string, unknown> = Record<string, unknown>, Bag extends {
|
|
300
|
-
ConfigurableType?: Record<string, unknown>;
|
|
301
|
-
InterruptType?: unknown;
|
|
302
|
-
CustomEventType?: unknown;
|
|
303
|
-
UpdateType?: unknown;
|
|
304
|
-
} = BagTemplate>(options: AnyStreamOptions<StateType, Bag>): {
|
|
305
|
-
assistantId: string;
|
|
306
|
-
client: Client<_langchain_langgraph_sdk0.DefaultValues, _langchain_langgraph_sdk0.DefaultValues, unknown>;
|
|
307
|
-
values: Signal<StateType>;
|
|
308
|
-
error: Signal<unknown>;
|
|
309
|
-
isLoading: WritableSignal<boolean>;
|
|
310
|
-
branch: WritableSignal<string>;
|
|
311
|
-
setBranch(value: string): void;
|
|
312
|
-
messages: Signal<(BaseMessage<_langchain_core_messages0.MessageStructure<_langchain_core_messages0.MessageToolSet>, _langchain_core_messages0.MessageType> | _langchain_core_messages0.BaseMessageChunk<_langchain_core_messages0.MessageStructure<_langchain_core_messages0.MessageToolSet>, _langchain_core_messages0.MessageType>)[]>;
|
|
313
|
-
toolCalls: Signal<ToolCallWithResult$1<DefaultToolCall$1>[]>;
|
|
314
|
-
getToolCalls(message: Message): ToolCallWithResult$1<DefaultToolCall$1>[];
|
|
315
|
-
interrupt: Signal<Interrupt<GetInterruptType<Bag>> | undefined>;
|
|
316
|
-
interrupts: Signal<Interrupt<GetInterruptType<Bag>>[]>;
|
|
317
|
-
history: Signal<_langchain_langgraph_sdk0.ThreadState<any>[]>;
|
|
318
|
-
isThreadLoading: Signal<boolean>;
|
|
319
|
-
experimental_branchTree: Signal<_langchain_langgraph_sdk_ui0.Sequence<any>>;
|
|
320
|
-
getMessagesMetadata(message: Message, index?: number | undefined): MessageMetadata$1<StateType> | undefined;
|
|
321
|
-
submit: (values: StateType, submitOptions?: SubmitOptions<StateType, GetConfigurableType<Bag>> | undefined) => Promise<void | Promise<void>>;
|
|
322
|
-
stop: () => void;
|
|
323
|
-
joinStream: (runId: string, lastEventId?: string | undefined, joinOptions?: {
|
|
324
|
-
streamMode?: StreamMode[] | StreamMode | undefined;
|
|
325
|
-
filter?: ((event: {
|
|
326
|
-
id?: string | undefined;
|
|
327
|
-
event: StreamEvent;
|
|
328
|
-
data: unknown;
|
|
329
|
-
}) => boolean) | undefined;
|
|
330
|
-
} | undefined) => Promise<void>;
|
|
331
|
-
queue: {
|
|
332
|
-
entries: WritableSignal<readonly _langchain_langgraph_sdk_ui0.QueueEntry<StateType, SubmitOptions<StateType, GetConfigurableType<Bag>>>[]>;
|
|
333
|
-
size: WritableSignal<number>;
|
|
334
|
-
cancel: (id: string) => Promise<boolean>;
|
|
335
|
-
clear: () => Promise<void>;
|
|
336
|
-
};
|
|
337
|
-
switchThread(newThreadId: string | null): void;
|
|
338
|
-
readonly subagents: Map<string, SubagentStreamInterface$1<Record<string, unknown>, DefaultToolCall$1, string>>;
|
|
339
|
-
readonly activeSubagents: SubagentStreamInterface$1<Record<string, unknown>, DefaultToolCall$1, string>[];
|
|
340
|
-
getSubagent(toolCallId: string): SubagentStreamInterface$1<Record<string, unknown>, DefaultToolCall$1, string> | undefined;
|
|
341
|
-
getSubagentsByType(type: string): SubagentStreamInterface$1<Record<string, unknown>, DefaultToolCall$1, string>[];
|
|
342
|
-
getSubagentsByMessage(messageId: string): SubagentStreamInterface$1<Record<string, unknown>, DefaultToolCall$1, string>[];
|
|
343
|
-
};
|
|
344
261
|
/**
|
|
345
262
|
* Injectable Angular service that wraps {@link injectStream}.
|
|
346
263
|
*
|
|
@@ -382,8 +299,8 @@ declare class StreamService<T = Record<string, unknown>, Bag extends BagTemplate
|
|
|
382
299
|
cancel: (id: string) => Promise<boolean>;
|
|
383
300
|
clear: () => Promise<void>;
|
|
384
301
|
}>;
|
|
385
|
-
get subagents():
|
|
386
|
-
get activeSubagents(): SubagentStreamInterface$1[]
|
|
302
|
+
get subagents(): Signal<ReadonlyMap<string, SubagentStreamInterface$1>>;
|
|
303
|
+
get activeSubagents(): Signal<readonly SubagentStreamInterface$1[]>;
|
|
387
304
|
get history(): Signal<unknown>;
|
|
388
305
|
get isThreadLoading(): Signal<boolean>;
|
|
389
306
|
get experimental_branchTree(): Signal<unknown>;
|
package/dist/index.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.cts","names":[],"sources":["../src/index.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.cts","names":[],"sources":["../src/index.ts"],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,52 +1,14 @@
|
|
|
1
|
-
import { ClassSubagentStreamInterface } from "./subagent-types.js";
|
|
2
1
|
import { injectStreamCustom, useStreamCustom } from "./stream.custom.js";
|
|
3
2
|
import { STREAM_DEFAULTS, STREAM_INSTANCE, StreamDefaults, provideStream, provideStreamDefaults } from "./context.js";
|
|
3
|
+
import { useStreamLGP } from "./stream.lgp.js";
|
|
4
4
|
import { Signal, WritableSignal } from "@angular/core";
|
|
5
|
-
import
|
|
6
|
-
import {
|
|
7
|
-
import * as _langchain_langgraph_sdk0 from "@langchain/langgraph-sdk";
|
|
8
|
-
import { BagTemplate, Client, DefaultToolCall, DefaultToolCall as DefaultToolCall$1, Interrupt, Message, StreamEvent, StreamMode, ToolCallFromTool, ToolCallState, ToolCallWithResult as ToolCallWithResult$1, ToolCallsFromTools } from "@langchain/langgraph-sdk";
|
|
9
|
-
import * as _langchain_core_messages0 from "@langchain/core/messages";
|
|
5
|
+
import { AcceptBaseMessages, AgentTypeConfigLike, BaseStream, BaseSubagentState, ClassSubagentStreamInterface, CompiledSubAgentLike, DeepAgentTypeConfigLike, DefaultSubagentStates, ExtractAgentConfig, ExtractDeepAgentConfig, ExtractSubAgentMiddleware, FetchStreamTransport, GetConfigurableType, GetInterruptType, GetToolCallsType, InferAgentToolCalls, InferBag, InferBag as InferBag$1, InferDeepAgentSubagents, InferNodeNames, InferStateType, InferStateType as InferStateType$1, InferSubagentByName, InferSubagentNames, InferSubagentState, InferSubagentStates, InferToolCalls, IsAgentLike, IsDeepAgentLike, MessageMetadata, MessageMetadata as MessageMetadata$1, QueueEntry, QueueInterface, ResolveStreamInterface, ResolveStreamInterface as ResolveStreamInterface$1, ResolveStreamOptions, ResolveStreamOptions as ResolveStreamOptions$1, SubAgentLike, SubagentApi, SubagentManager, SubagentStateMap, SubagentStatus, SubagentStream, SubagentStreamInterface, SubagentStreamInterface as SubagentStreamInterface$1, SubagentToolCall, SubmitOptions, UseAgentStream, UseAgentStreamOptions, UseDeepAgentStream, UseDeepAgentStreamOptions, UseStreamCustomOptions, UseStreamCustomOptions as UseStreamCustomOptions$1, UseStreamOptions, UseStreamThread, UseStreamTransport, WithClassMessages, calculateDepthFromNamespace, extractParentIdFromNamespace, extractToolCallIdFromNamespace, isSubagentNamespace } from "@langchain/langgraph-sdk/ui";
|
|
6
|
+
import { BagTemplate, Client, DefaultToolCall, DefaultToolCall as DefaultToolCall$1, Interrupt, StreamEvent, StreamMode, ToolCallFromTool, ToolCallState, ToolCallWithResult as ToolCallWithResult$1, ToolCallsFromTools } from "@langchain/langgraph-sdk";
|
|
10
7
|
import { AIMessage, BaseMessage, ToolMessage } from "@langchain/core/messages";
|
|
11
8
|
|
|
12
9
|
//#region src/index.d.ts
|
|
13
|
-
type ClassToolCallWithResult<T> = T extends ToolCallWithResult$1<infer TC, unknown, unknown> ? ToolCallWithResult$1<TC, ToolMessage, AIMessage> : T;
|
|
14
|
-
type WithClassMessages<T> = Omit<T, "messages" | "history" | "getMessagesMetadata" | "toolCalls" | "getToolCalls" | "submit" | "subagents" | "activeSubagents" | "getSubagent" | "getSubagentsByType" | "getSubagentsByMessage"> & {
|
|
15
|
-
messages: BaseMessage[];
|
|
16
|
-
getMessagesMetadata: (message: BaseMessage, index?: number) => MessageMetadata$1<Record<string, unknown>> | undefined;
|
|
17
|
-
} & ("history" extends keyof T ? {
|
|
18
|
-
history: HistoryWithBaseMessages<T["history"]>;
|
|
19
|
-
} : unknown) & ("submit" extends keyof T ? {
|
|
20
|
-
submit: T extends {
|
|
21
|
-
submit: (values: infer V, options?: infer O) => infer Ret;
|
|
22
|
-
} ? (values: AcceptBaseMessages<Exclude<V, null | undefined>> | null | undefined, options?: O) => Ret : never;
|
|
23
|
-
} : unknown) & ("toolCalls" extends keyof T ? {
|
|
24
|
-
toolCalls: T extends {
|
|
25
|
-
toolCalls: (infer TC)[];
|
|
26
|
-
} ? ClassToolCallWithResult<TC>[] : never;
|
|
27
|
-
} : unknown) & ("getToolCalls" extends keyof T ? {
|
|
28
|
-
getToolCalls: T extends {
|
|
29
|
-
getToolCalls: (message: infer _M) => (infer TC)[];
|
|
30
|
-
} ? (message: AIMessage) => ClassToolCallWithResult<TC>[] : never;
|
|
31
|
-
} : unknown) & ("subagents" extends keyof T ? {
|
|
32
|
-
subagents: T extends {
|
|
33
|
-
subagents: Map<string, SubagentStreamInterface$1<infer S, infer TC, infer N>>;
|
|
34
|
-
} ? Map<string, ClassSubagentStreamInterface<S, TC, N>> : never;
|
|
35
|
-
activeSubagents: T extends {
|
|
36
|
-
activeSubagents: SubagentStreamInterface$1<infer S, infer TC, infer N>[];
|
|
37
|
-
} ? ClassSubagentStreamInterface<S, TC, N>[] : never;
|
|
38
|
-
getSubagent: T extends {
|
|
39
|
-
getSubagent: (id: string) => SubagentStreamInterface$1<infer S, infer TC, infer N> | undefined;
|
|
40
|
-
} ? (toolCallId: string) => ClassSubagentStreamInterface<S, TC, N> | undefined : never;
|
|
41
|
-
getSubagentsByType: T extends {
|
|
42
|
-
getSubagentsByType: (type: string) => SubagentStreamInterface$1<infer S, infer TC, infer N>[];
|
|
43
|
-
} ? (type: string) => ClassSubagentStreamInterface<S, TC, N>[] : never;
|
|
44
|
-
getSubagentsByMessage: T extends {
|
|
45
|
-
getSubagentsByMessage: (id: string) => SubagentStreamInterface$1<infer S, infer TC, infer N>[];
|
|
46
|
-
} ? (messageId: string) => ClassSubagentStreamInterface<S, TC, N>[] : never;
|
|
47
|
-
} : unknown);
|
|
48
10
|
type AngularWritableKeys = "isLoading" | "branch";
|
|
49
|
-
type AngularPlainKeys = "submit" | "stop" | "joinStream" | "switchThread" | "setBranch" | "getMessagesMetadata" | "getToolCalls" | "getSubagent" | "getSubagentsByType" | "getSubagentsByMessage" | "
|
|
11
|
+
type AngularPlainKeys = "submit" | "stop" | "joinStream" | "switchThread" | "setBranch" | "getMessagesMetadata" | "getToolCalls" | "getSubagent" | "getSubagentsByType" | "getSubagentsByMessage" | "client" | "assistantId";
|
|
50
12
|
type AngularQueueInterface<T> = T extends {
|
|
51
13
|
entries: infer E;
|
|
52
14
|
size: infer S;
|
|
@@ -296,51 +258,6 @@ declare function injectStream<T = Record<string, unknown>, Bag extends BagTempla
|
|
|
296
258
|
* convention for injection-based patterns.
|
|
297
259
|
*/
|
|
298
260
|
declare const useStream: typeof injectStream;
|
|
299
|
-
declare function useStreamLGP<StateType extends Record<string, unknown> = Record<string, unknown>, Bag extends {
|
|
300
|
-
ConfigurableType?: Record<string, unknown>;
|
|
301
|
-
InterruptType?: unknown;
|
|
302
|
-
CustomEventType?: unknown;
|
|
303
|
-
UpdateType?: unknown;
|
|
304
|
-
} = BagTemplate>(options: AnyStreamOptions<StateType, Bag>): {
|
|
305
|
-
assistantId: string;
|
|
306
|
-
client: Client<_langchain_langgraph_sdk0.DefaultValues, _langchain_langgraph_sdk0.DefaultValues, unknown>;
|
|
307
|
-
values: Signal<StateType>;
|
|
308
|
-
error: Signal<unknown>;
|
|
309
|
-
isLoading: WritableSignal<boolean>;
|
|
310
|
-
branch: WritableSignal<string>;
|
|
311
|
-
setBranch(value: string): void;
|
|
312
|
-
messages: Signal<(BaseMessage<_langchain_core_messages0.MessageStructure<_langchain_core_messages0.MessageToolSet>, _langchain_core_messages0.MessageType> | _langchain_core_messages0.BaseMessageChunk<_langchain_core_messages0.MessageStructure<_langchain_core_messages0.MessageToolSet>, _langchain_core_messages0.MessageType>)[]>;
|
|
313
|
-
toolCalls: Signal<ToolCallWithResult$1<DefaultToolCall$1>[]>;
|
|
314
|
-
getToolCalls(message: Message): ToolCallWithResult$1<DefaultToolCall$1>[];
|
|
315
|
-
interrupt: Signal<Interrupt<GetInterruptType<Bag>> | undefined>;
|
|
316
|
-
interrupts: Signal<Interrupt<GetInterruptType<Bag>>[]>;
|
|
317
|
-
history: Signal<_langchain_langgraph_sdk0.ThreadState<any>[]>;
|
|
318
|
-
isThreadLoading: Signal<boolean>;
|
|
319
|
-
experimental_branchTree: Signal<_langchain_langgraph_sdk_ui0.Sequence<any>>;
|
|
320
|
-
getMessagesMetadata(message: Message, index?: number | undefined): MessageMetadata$1<StateType> | undefined;
|
|
321
|
-
submit: (values: StateType, submitOptions?: SubmitOptions<StateType, GetConfigurableType<Bag>> | undefined) => Promise<void | Promise<void>>;
|
|
322
|
-
stop: () => void;
|
|
323
|
-
joinStream: (runId: string, lastEventId?: string | undefined, joinOptions?: {
|
|
324
|
-
streamMode?: StreamMode[] | StreamMode | undefined;
|
|
325
|
-
filter?: ((event: {
|
|
326
|
-
id?: string | undefined;
|
|
327
|
-
event: StreamEvent;
|
|
328
|
-
data: unknown;
|
|
329
|
-
}) => boolean) | undefined;
|
|
330
|
-
} | undefined) => Promise<void>;
|
|
331
|
-
queue: {
|
|
332
|
-
entries: WritableSignal<readonly _langchain_langgraph_sdk_ui0.QueueEntry<StateType, SubmitOptions<StateType, GetConfigurableType<Bag>>>[]>;
|
|
333
|
-
size: WritableSignal<number>;
|
|
334
|
-
cancel: (id: string) => Promise<boolean>;
|
|
335
|
-
clear: () => Promise<void>;
|
|
336
|
-
};
|
|
337
|
-
switchThread(newThreadId: string | null): void;
|
|
338
|
-
readonly subagents: Map<string, SubagentStreamInterface$1<Record<string, unknown>, DefaultToolCall$1, string>>;
|
|
339
|
-
readonly activeSubagents: SubagentStreamInterface$1<Record<string, unknown>, DefaultToolCall$1, string>[];
|
|
340
|
-
getSubagent(toolCallId: string): SubagentStreamInterface$1<Record<string, unknown>, DefaultToolCall$1, string> | undefined;
|
|
341
|
-
getSubagentsByType(type: string): SubagentStreamInterface$1<Record<string, unknown>, DefaultToolCall$1, string>[];
|
|
342
|
-
getSubagentsByMessage(messageId: string): SubagentStreamInterface$1<Record<string, unknown>, DefaultToolCall$1, string>[];
|
|
343
|
-
};
|
|
344
261
|
/**
|
|
345
262
|
* Injectable Angular service that wraps {@link injectStream}.
|
|
346
263
|
*
|
|
@@ -382,8 +299,8 @@ declare class StreamService<T = Record<string, unknown>, Bag extends BagTemplate
|
|
|
382
299
|
cancel: (id: string) => Promise<boolean>;
|
|
383
300
|
clear: () => Promise<void>;
|
|
384
301
|
}>;
|
|
385
|
-
get subagents():
|
|
386
|
-
get activeSubagents(): SubagentStreamInterface$1[]
|
|
302
|
+
get subagents(): Signal<ReadonlyMap<string, SubagentStreamInterface$1>>;
|
|
303
|
+
get activeSubagents(): Signal<readonly SubagentStreamInterface$1[]>;
|
|
387
304
|
get history(): Signal<unknown>;
|
|
388
305
|
get isThreadLoading(): Signal<boolean>;
|
|
389
306
|
get experimental_branchTree(): Signal<unknown>;
|
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":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { injectStreamCustom, useStreamCustom } from "./stream.custom.js";
|
|
2
|
+
import { useStreamLGP } from "./stream.lgp.js";
|
|
2
3
|
import { STREAM_DEFAULTS, STREAM_INSTANCE, provideStream, provideStreamDefaults } from "./context.js";
|
|
3
4
|
import { __decorate } from "./_virtual/_@oxc-project_runtime@0.115.0/helpers/decorate.js";
|
|
4
|
-
import { Injectable,
|
|
5
|
-
import { FetchStreamTransport,
|
|
6
|
-
import { Client } from "@langchain/langgraph-sdk";
|
|
5
|
+
import { Injectable, inject } from "@angular/core";
|
|
6
|
+
import { FetchStreamTransport, SubagentManager, calculateDepthFromNamespace, extractParentIdFromNamespace, extractToolCallIdFromNamespace, isSubagentNamespace } from "@langchain/langgraph-sdk/ui";
|
|
7
7
|
//#region src/index.ts
|
|
8
8
|
/**
|
|
9
9
|
* @internal Merges DI, LangGraph Platform, and custom transport overloads.
|
|
@@ -23,159 +23,6 @@ function injectStream(options) {
|
|
|
23
23
|
* convention for injection-based patterns.
|
|
24
24
|
*/
|
|
25
25
|
const useStream = injectStream;
|
|
26
|
-
function useStreamLGP(options) {
|
|
27
|
-
const client = options.client ?? new Client({ apiUrl: options.apiUrl });
|
|
28
|
-
const orchestrator = new StreamOrchestrator(options, {
|
|
29
|
-
getClient: () => client,
|
|
30
|
-
getAssistantId: () => options.assistantId,
|
|
31
|
-
getMessagesKey: () => options.messagesKey ?? "messages"
|
|
32
|
-
});
|
|
33
|
-
orchestrator.initThreadId(options.threadId ?? void 0);
|
|
34
|
-
const version = signal(0);
|
|
35
|
-
const subagentVersion = signal(0);
|
|
36
|
-
effect((onCleanup) => {
|
|
37
|
-
const unsubscribe = orchestrator.subscribe(() => {
|
|
38
|
-
version.update((v) => v + 1);
|
|
39
|
-
subagentVersion.update((v) => v + 1);
|
|
40
|
-
});
|
|
41
|
-
onCleanup(() => unsubscribe());
|
|
42
|
-
});
|
|
43
|
-
effect((onCleanup) => {
|
|
44
|
-
version();
|
|
45
|
-
const hvMessages = orchestrator.messages;
|
|
46
|
-
if (options.filterSubagentMessages && !orchestrator.isLoading && !orchestrator.historyData.isLoading && hvMessages.length > 0) {
|
|
47
|
-
const controller = orchestrator.reconstructSubagentsIfNeeded();
|
|
48
|
-
if (controller) onCleanup(() => controller.abort());
|
|
49
|
-
}
|
|
50
|
-
});
|
|
51
|
-
const isLoadingForDrain = computed(() => {
|
|
52
|
-
version();
|
|
53
|
-
return orchestrator.isLoading;
|
|
54
|
-
});
|
|
55
|
-
effect(() => {
|
|
56
|
-
isLoadingForDrain();
|
|
57
|
-
orchestrator.drainQueue();
|
|
58
|
-
});
|
|
59
|
-
const { shouldReconnect } = orchestrator;
|
|
60
|
-
let hasReconnected = false;
|
|
61
|
-
effect(() => {
|
|
62
|
-
version();
|
|
63
|
-
const tid = orchestrator.threadId;
|
|
64
|
-
if (!hasReconnected && shouldReconnect && tid && !orchestrator.isLoading) {
|
|
65
|
-
if (orchestrator.tryReconnect()) hasReconnected = true;
|
|
66
|
-
}
|
|
67
|
-
});
|
|
68
|
-
const values = computed(() => {
|
|
69
|
-
version();
|
|
70
|
-
orchestrator.trackStreamMode("values");
|
|
71
|
-
return orchestrator.values;
|
|
72
|
-
});
|
|
73
|
-
const error = computed(() => {
|
|
74
|
-
version();
|
|
75
|
-
return orchestrator.error;
|
|
76
|
-
});
|
|
77
|
-
const isLoading = signal(orchestrator.isLoading);
|
|
78
|
-
effect(() => {
|
|
79
|
-
version();
|
|
80
|
-
isLoading.set(orchestrator.isLoading);
|
|
81
|
-
});
|
|
82
|
-
const branch = signal("");
|
|
83
|
-
effect(() => {
|
|
84
|
-
version();
|
|
85
|
-
const b = orchestrator.branch;
|
|
86
|
-
if (branch() !== b) branch.set(b);
|
|
87
|
-
});
|
|
88
|
-
const messages = computed(() => {
|
|
89
|
-
version();
|
|
90
|
-
orchestrator.trackStreamMode("messages-tuple", "values");
|
|
91
|
-
return ensureMessageInstances(orchestrator.messages);
|
|
92
|
-
});
|
|
93
|
-
const toolCalls = computed(() => {
|
|
94
|
-
version();
|
|
95
|
-
orchestrator.trackStreamMode("messages-tuple", "values");
|
|
96
|
-
return orchestrator.toolCalls;
|
|
97
|
-
});
|
|
98
|
-
const interrupt = computed(() => {
|
|
99
|
-
version();
|
|
100
|
-
return orchestrator.interrupt;
|
|
101
|
-
});
|
|
102
|
-
const interrupts = computed(() => {
|
|
103
|
-
version();
|
|
104
|
-
return orchestrator.interrupts;
|
|
105
|
-
});
|
|
106
|
-
const historyList = computed(() => {
|
|
107
|
-
version();
|
|
108
|
-
return orchestrator.flatHistory;
|
|
109
|
-
});
|
|
110
|
-
const isThreadLoading = computed(() => {
|
|
111
|
-
version();
|
|
112
|
-
return orchestrator.isThreadLoading;
|
|
113
|
-
});
|
|
114
|
-
const experimentalBranchTree = computed(() => {
|
|
115
|
-
version();
|
|
116
|
-
return orchestrator.experimental_branchTree;
|
|
117
|
-
});
|
|
118
|
-
const queueEntries = signal(orchestrator.queueEntries);
|
|
119
|
-
const queueSize = signal(orchestrator.queueSize);
|
|
120
|
-
effect(() => {
|
|
121
|
-
version();
|
|
122
|
-
queueEntries.set(orchestrator.queueEntries);
|
|
123
|
-
queueSize.set(orchestrator.queueSize);
|
|
124
|
-
});
|
|
125
|
-
return {
|
|
126
|
-
assistantId: options.assistantId,
|
|
127
|
-
client,
|
|
128
|
-
values,
|
|
129
|
-
error,
|
|
130
|
-
isLoading,
|
|
131
|
-
branch,
|
|
132
|
-
setBranch(value) {
|
|
133
|
-
orchestrator.setBranch(value);
|
|
134
|
-
},
|
|
135
|
-
messages,
|
|
136
|
-
toolCalls,
|
|
137
|
-
getToolCalls(message) {
|
|
138
|
-
return orchestrator.getToolCalls(message);
|
|
139
|
-
},
|
|
140
|
-
interrupt,
|
|
141
|
-
interrupts,
|
|
142
|
-
history: historyList,
|
|
143
|
-
isThreadLoading,
|
|
144
|
-
experimental_branchTree: experimentalBranchTree,
|
|
145
|
-
getMessagesMetadata(message, index) {
|
|
146
|
-
return orchestrator.getMessagesMetadata(message, index);
|
|
147
|
-
},
|
|
148
|
-
submit: (values, submitOptions) => orchestrator.submit(values, submitOptions),
|
|
149
|
-
stop: () => orchestrator.stop(),
|
|
150
|
-
joinStream: (...args) => orchestrator.joinStream(...args),
|
|
151
|
-
queue: {
|
|
152
|
-
entries: queueEntries,
|
|
153
|
-
size: queueSize,
|
|
154
|
-
cancel: (id) => orchestrator.cancelQueueItem(id),
|
|
155
|
-
clear: () => orchestrator.clearQueue()
|
|
156
|
-
},
|
|
157
|
-
switchThread(newThreadId) {
|
|
158
|
-
orchestrator.switchThread(newThreadId);
|
|
159
|
-
},
|
|
160
|
-
get subagents() {
|
|
161
|
-
subagentVersion();
|
|
162
|
-
return orchestrator.subagents;
|
|
163
|
-
},
|
|
164
|
-
get activeSubagents() {
|
|
165
|
-
subagentVersion();
|
|
166
|
-
return orchestrator.activeSubagents;
|
|
167
|
-
},
|
|
168
|
-
getSubagent(toolCallId) {
|
|
169
|
-
return orchestrator.getSubagent(toolCallId);
|
|
170
|
-
},
|
|
171
|
-
getSubagentsByType(type) {
|
|
172
|
-
return orchestrator.getSubagentsByType(type);
|
|
173
|
-
},
|
|
174
|
-
getSubagentsByMessage(messageId) {
|
|
175
|
-
return orchestrator.getSubagentsByMessage(messageId);
|
|
176
|
-
}
|
|
177
|
-
};
|
|
178
|
-
}
|
|
179
26
|
let StreamService = class StreamService {
|
|
180
27
|
_stream;
|
|
181
28
|
constructor(options) {
|