import { Interrupt } from "../schema.js"; import { DefaultToolCall, Message, ToolCallWithResult } from "../types.messages.js"; import { StreamMode } from "../types.stream.js"; import { BagTemplate } from "../types.template.js"; import { AnyStreamCustomOptions, CustomSubmitOptions, GetConfigurableType, GetInterruptType, GetUpdateType, MessageMetadata, SubagentStreamInterface } from "./types.js"; import { MessageTupleManager } from "./messages.js"; import { StreamManager } from "./manager.js"; import { BaseMessage } from "@langchain/core/messages"; //#region src/ui/orchestrator-custom.d.ts /** * Framework-agnostic orchestrator for custom transport streams. * * Encapsulates all business logic shared across React, Vue, Svelte, and Angular * for custom transport (non-LGP) streaming. */ declare class CustomStreamOrchestrator = Record, Bag extends BagTemplate = BagTemplate> { #private; readonly stream: StreamManager; readonly messageManager: MessageTupleManager; /** * Create a new {@link CustomStreamOrchestrator} instance. * * @param options - Configuration options for the custom transport stream, * including thread ID, transport, callbacks, and subagent settings. */ constructor(options: AnyStreamCustomOptions); /** * Register a listener that is called whenever the orchestrator state changes. * * @param listener - Callback invoked on each state change. * @returns An unsubscribe function that removes the listener. */ subscribe: (listener: () => void) => () => void; /** * Return the current version number, incremented on each state change. * Useful as a cache key for external sync (e.g. `useSyncExternalStore`). * * @returns The current version counter. */ getSnapshot: () => number; /** * Custom transports do not negotiate stream modes with the server the way * LangGraph Platform streams do, but framework adapters call this method on * both orchestrator variants. Keep the API surface aligned as a no-op. */ trackStreamMode(..._modes: StreamMode[]): void; /** * Synchronize the external thread ID with the orchestrator. * If the ID has changed, the current stream is cleared and listeners * are notified. * * @param newId - The new thread ID, or `null` to clear. */ syncThreadId(newId: string | null): void; /** * The current stream state values, falling back to an empty object * when no stream values are available. */ get values(): StateType; /** * The raw stream state values, or `null` if no stream has been started * or values have not yet been received. */ get streamValues(): StateType | null; /** The most recent stream error, or `undefined` if no error occurred. */ get error(): unknown; /** Whether a stream is currently in progress. */ get isLoading(): boolean; /** The current branch identifier. */ get branch(): string; /** * Update the current branch and notify listeners. * * @param value - The new branch identifier. */ setBranch(value: string): void; /** * All messages from the current stream values, converted to * {@link BaseMessage} instances. Returns an empty array when no * stream values are available. */ get messages(): BaseMessage[]; /** * All tool calls paired with their results extracted from the * current stream messages. */ get toolCalls(): ToolCallWithResult[]; /** * Get tool calls (with results) that belong to a specific AI message. * * @param message - The AI message whose tool calls to retrieve. * @returns Tool calls associated with the given message. */ getToolCalls(message: Message): ToolCallWithResult[]; /** * All active interrupts from the current stream values. * Returns a single breakpoint interrupt when the interrupt array is * present but empty, or an empty array when no interrupts exist. */ get interrupts(): Interrupt>[]; /** * The first active interrupt extracted from the current stream values, * or `undefined` if there are no interrupts. */ get interrupt(): Interrupt> | undefined; /** * Retrieve stream-level metadata for a given message. * * @param message - The message to look up metadata for. * @param index - Optional positional index used as fallback message ID. * @returns The metadata associated with the message, or `undefined` * if no stream metadata is available. */ getMessagesMetadata(message: Message, index?: number): MessageMetadata | undefined; /** A map of all tracked subagent streams, keyed by tool call ID. */ get subagents(): Map; /** The subset of subagent streams that are currently active (loading). */ get activeSubagents(): SubagentStreamInterface[]; /** * Look up a single subagent stream by its tool call ID. * * @param toolCallId - The tool call ID that initiated the subagent. * @returns The subagent stream, or `undefined` if not found. */ getSubagent(toolCallId: string): SubagentStreamInterface, DefaultToolCall, string> | undefined; /** * Retrieve all subagent streams matching a given tool name / type. * * @param type - The subagent type (tool name) to filter by. * @returns An array of matching subagent streams. */ getSubagentsByType(type: string): SubagentStreamInterface, DefaultToolCall, string>[]; /** * Retrieve all subagent streams associated with a specific AI message. * * @param messageId - The ID of the parent AI message. * @returns An array of subagent streams linked to the message. */ getSubagentsByMessage(messageId: string): SubagentStreamInterface, DefaultToolCall, string>[]; /** * Reconstruct subagent streams from history values when subagent * filtering is enabled and the stream is not currently loading. * This is a no-op if subagents are already populated. */ reconstructSubagentsIfNeeded(): void; /** * Abort the current stream and invoke the `onStop` callback * if one was provided in the options. */ stop(): void; /** * Switch to a different thread. If the thread ID actually changed, * the current stream is cleared and listeners are notified. * * @param newThreadId - The thread ID to switch to, or `null` to clear. */ switchThread(newThreadId: string | null): void; /** * Start a new stream run against the custom transport. * * This is the low-level submit entry point that handles thread ID * resolution, optimistic value merging, and transport invocation. * Prefer {@link submit} unless you need to bypass higher-level wrappers. * * @param values - The input values to send, or `null`/`undefined` for * a resume-style invocation. * @param submitOptions - Optional per-call overrides such as * `optimisticValues`, `config`, `command`, and error callbacks. */ submitDirect(values: GetUpdateType | null | undefined, submitOptions?: CustomSubmitOptions>): Promise; /** * Submit input values and start a new stream run. * * Delegates to {@link submitDirect}. Override or wrap this method * in framework adapters to add queuing or other middleware. * * @param values - The input values to send, or `null`/`undefined` for * a resume-style invocation. * @param submitOptions - Optional per-call overrides. */ submit(values: GetUpdateType | null | undefined, submitOptions?: CustomSubmitOptions>): Promise; /** * Tear down the orchestrator. Marks the instance as disposed, * unsubscribes from the stream, and aborts any in-progress stream. * After calling this method, no further notifications will be emitted. */ dispose(): void; } //#endregion export { CustomStreamOrchestrator }; //# sourceMappingURL=orchestrator-custom.d.ts.map