langchain.js
    Preparing search index...

    Interface UseStream<StateType, Bag, SubagentStates>

    interface UseStream<
        StateType extends Record<string, unknown> = Record<string, unknown>,
        Bag extends BagTemplate = BagTemplate,
        SubagentStates extends Record<string, unknown> = DefaultSubagentStates,
    > {
        activeSubagents: SubagentStreamInterface<
            SubagentStates[keyof SubagentStates],
            GetToolCallsType<StateType>,
            keyof SubagentStates & string,
        >[];
        assistantId: string;
        branch: string;
        client: Client;
        error: unknown;
        experimental_branchTree: Sequence<StateType>;
        getMessagesMetadata: (
            message: Message<GetToolCallsType<StateType>>,
            index?: number,
        ) => undefined | MessageMetadata<StateType>;
        getSubagent: (
            toolCallId: string,
        ) =>
            | undefined
            | SubagentStreamInterface<
                SubagentStates[keyof SubagentStates],
                GetToolCallsType<StateType>,
                keyof SubagentStates & string,
            >;
        getSubagentsByMessage: (
            messageId: string,
        ) => SubagentStreamInterface<
            SubagentStates[keyof SubagentStates],
            GetToolCallsType<StateType>,
            keyof SubagentStates & string,
        >[];
        getSubagentsByType: {
            <TName extends string>(
                type: TName,
            ): SubagentStreamInterface<
                SubagentStates[TName],
                GetToolCallsType<StateType>,
                TName,
            >[];
            (
                type: string,
            ): SubagentStreamInterface<
                Record<string, unknown>,
                GetToolCallsType<StateType>,
                string,
            >[];
        };
        getToolCalls: (
            message: AIMessage<GetToolCallsType<StateType>>,
        ) => ToolCallWithResult<GetToolCallsType<StateType>>[];
        history: ThreadState<StateType>[];
        interrupt: undefined | Interrupt<GetInterruptType<Bag>>;
        interrupts: Interrupt<GetInterruptType<Bag>>[];
        isLoading: boolean;
        isThreadLoading: boolean;
        joinStream: (
            runId: string,
            lastEventId?: string,
            options?: {
                filter?: (
                    event: { data: unknown; event: StreamEvent; id?: string },
                ) => boolean;
                streamMode?: StreamMode | StreamMode[];
            },
        ) => Promise<void>;
        messages: Message<GetToolCallsType<StateType>>[];
        setBranch: (branch: string) => void;
        stop: () => Promise<void>;
        subagents: Map<
            string,
            SubagentStreamInterface<
                SubagentStates[keyof SubagentStates],
                GetToolCallsType<StateType>,
                keyof SubagentStates & string,
            >,
        >;
        submit: (
            values: undefined | null | GetUpdateType<Bag, StateType>,
            options?: SubmitOptions<StateType, GetConfigurableType<Bag>>,
        ) => Promise<void>;
        toolCalls: ToolCallWithResult<GetToolCallsType<StateType>>[];
        values: StateType;
    }

    Type Parameters

    Hierarchy

    Index

    Properties

    activeSubagents: SubagentStreamInterface<
        SubagentStates[keyof SubagentStates],
        GetToolCallsType<StateType>,
        keyof SubagentStates & string,
    >[]

    Currently active subagents (where status === "running").

    assistantId: string

    The ID of the assistant to use.

    branch: string

    The current branch of the thread.

    client: Client

    LangGraph SDK client used to send request and receive responses.

    error: unknown

    Last seen error from the stream.

    experimental_branchTree: Sequence<StateType>

    Tree of all branches for the thread.

    getMessagesMetadata: (
        message: Message<GetToolCallsType<StateType>>,
        index?: number,
    ) => undefined | MessageMetadata<StateType>

    Get the metadata for a message, such as first thread state the message was seen in and branch information.

    Type Declaration

    getSubagent: (
        toolCallId: string,
    ) =>
        | undefined
        | SubagentStreamInterface<
            SubagentStates[keyof SubagentStates],
            GetToolCallsType<StateType>,
            keyof SubagentStates & string,
        >

    Get subagent stream by tool call ID.

    Type Declaration

    getSubagentsByMessage: (
        messageId: string,
    ) => SubagentStreamInterface<
        SubagentStates[keyof SubagentStates],
        GetToolCallsType<StateType>,
        keyof SubagentStates & string,
    >[]

    Get all subagents triggered by a specific AI message.

    Useful for rendering subagent activities grouped by the AI message (and therefore conversation turn) that spawned them.

    Type Declaration

    // Render subagents after each AI message that triggered them
    {stream.messages.map((msg) => (
    <div key={msg.id}>
    <MessageBubble message={msg} />
    {msg.type === "ai" && "tool_calls" in msg && (
    <SubagentPipeline
    subagents={stream.getSubagentsByMessage(msg.id)}
    />
    )}
    </div>
    ))}
    getSubagentsByType: {
        <TName extends string>(
            type: TName,
        ): SubagentStreamInterface<
            SubagentStates[TName],
            GetToolCallsType<StateType>,
            TName,
        >[];
        (
            type: string,
        ): SubagentStreamInterface<
            Record<string, unknown>,
            GetToolCallsType<StateType>,
            string,
        >[];
    }

    Get all subagents of a specific type. When called with a literal type name that matches a key in SubagentStates, returns streams with properly inferred state types.

    The subagent_type to filter by.

    Array of matching subagent streams with inferred state types.

    // With DeepAgent type inference
    const stream = useStream<typeof agent>(...);
    const researchers = stream.getSubagentsByType("researcher");
    // researchers[0].values is typed with ResearcherMiddleware state

    Get tool calls for a specific AI message.

    Type Declaration

    Flattened history of thread states of a thread.

    interrupt: undefined | Interrupt<GetInterruptType<Bag>>

    Get the interrupt value for the stream if interrupted. Convenience alias for interrupts[0].

    interrupts: Interrupt<GetInterruptType<Bag>>[]

    All current interrupts from the stream. When using Send() fan-out with per-task interrupt() calls, multiple interrupts may be pending simultaneously.

    isLoading: boolean

    Whether the stream is currently running.

    isThreadLoading: boolean

    Whether the thread is currently being loaded.

    joinStream: (
        runId: string,
        lastEventId?: string,
        options?: {
            filter?: (
                event: { data: unknown; event: StreamEvent; id?: string },
            ) => boolean;
            streamMode?: StreamMode | StreamMode[];
        },
    ) => Promise<void>

    Join an active stream.

    Messages accumulated during the stream.

    setBranch: (branch: string) => void

    Set the branch of the thread.

    stop: () => Promise<void>

    Stops the stream.

    subagents: Map<
        string,
        SubagentStreamInterface<
            SubagentStates[keyof SubagentStates],
            GetToolCallsType<StateType>,
            keyof SubagentStates & string,
        >,
    >

    All currently active and completed subagent streams. Keyed by tool call ID for easy lookup.

    submit: (
        values: undefined | null | GetUpdateType<Bag, StateType>,
        options?: SubmitOptions<StateType, GetConfigurableType<Bag>>,
    ) => Promise<void>

    Create and stream a run to the thread.

    Tool calls paired with their results. Useful for rendering tool invocations and their outputs together.

    values: StateType

    The current state values of the stream.