@langchain/react 0.0.1 → 0.1.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/README.md +60 -3
- package/dist/_virtual/_rolldown/runtime.cjs +7 -13
- package/dist/index.cjs +30 -31
- package/dist/index.d.cts +3 -3
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -2
- package/dist/node_modules/.pnpm/{@langchain_langgraph@1.1.5_@langchain_core@1.1.28_openai@6.16.0_ws@8.19.0_zod@4.3.5___z_0d5e45651b6fb9f696195862204d53c7 → @langchain_langgraph@1.2.1_@langchain_core@1.1.31_openai@6.27.0_ws@8.19.0_zod@4.3.6___z_dc6decfb18baf112a7d3c3203e2e3228}/node_modules/@langchain/langgraph/dist/channels/base.d.cts +1 -1
- package/dist/node_modules/.pnpm/{@langchain_langgraph@1.1.5_@langchain_core@1.1.28_openai@6.16.0_ws@8.19.0_zod@4.3.5___z_0d5e45651b6fb9f696195862204d53c7 → @langchain_langgraph@1.2.1_@langchain_core@1.1.31_openai@6.27.0_ws@8.19.0_zod@4.3.6___z_dc6decfb18baf112a7d3c3203e2e3228}/node_modules/@langchain/langgraph/dist/channels/base.d.cts.map +1 -1
- package/dist/node_modules/.pnpm/{@langchain_langgraph@1.1.5_@langchain_core@1.1.28_openai@6.16.0_ws@8.19.0_zod@4.3.5___z_0d5e45651b6fb9f696195862204d53c7 → @langchain_langgraph@1.2.1_@langchain_core@1.1.31_openai@6.27.0_ws@8.19.0_zod@4.3.6___z_dc6decfb18baf112a7d3c3203e2e3228}/node_modules/@langchain/langgraph/dist/channels/base.d.ts +1 -1
- package/dist/node_modules/.pnpm/{@langchain_langgraph@1.1.5_@langchain_core@1.1.28_openai@6.16.0_ws@8.19.0_zod@4.3.5___z_0d5e45651b6fb9f696195862204d53c7 → @langchain_langgraph@1.2.1_@langchain_core@1.1.31_openai@6.27.0_ws@8.19.0_zod@4.3.6___z_dc6decfb18baf112a7d3c3203e2e3228}/node_modules/@langchain/langgraph/dist/channels/base.d.ts.map +1 -1
- package/dist/node_modules/.pnpm/@langchain_langgraph@1.2.1_@langchain_core@1.1.31_openai@6.27.0_ws@8.19.0_zod@4.3.6___z_dc6decfb18baf112a7d3c3203e2e3228/node_modules/@langchain/langgraph/dist/constants.d.cts +42 -0
- package/dist/node_modules/.pnpm/@langchain_langgraph@1.2.1_@langchain_core@1.1.31_openai@6.27.0_ws@8.19.0_zod@4.3.6___z_dc6decfb18baf112a7d3c3203e2e3228/node_modules/@langchain/langgraph/dist/constants.d.cts.map +1 -0
- package/dist/node_modules/.pnpm/@langchain_langgraph@1.2.1_@langchain_core@1.1.31_openai@6.27.0_ws@8.19.0_zod@4.3.6___z_dc6decfb18baf112a7d3c3203e2e3228/node_modules/@langchain/langgraph/dist/constants.d.ts +42 -0
- package/dist/node_modules/.pnpm/@langchain_langgraph@1.2.1_@langchain_core@1.1.31_openai@6.27.0_ws@8.19.0_zod@4.3.6___z_dc6decfb18baf112a7d3c3203e2e3228/node_modules/@langchain/langgraph/dist/constants.d.ts.map +1 -0
- package/dist/node_modules/.pnpm/{@langchain_langgraph@1.1.5_@langchain_core@1.1.28_openai@6.16.0_ws@8.19.0_zod@4.3.5___z_0d5e45651b6fb9f696195862204d53c7 → @langchain_langgraph@1.2.1_@langchain_core@1.1.31_openai@6.27.0_ws@8.19.0_zod@4.3.6___z_dc6decfb18baf112a7d3c3203e2e3228}/node_modules/@langchain/langgraph/dist/graph/zod/index.d.cts +0 -1
- package/dist/node_modules/.pnpm/{@langchain_langgraph@1.1.5_@langchain_core@1.1.28_openai@6.16.0_ws@8.19.0_zod@4.3.5___z_0d5e45651b6fb9f696195862204d53c7 → @langchain_langgraph@1.2.1_@langchain_core@1.1.31_openai@6.27.0_ws@8.19.0_zod@4.3.6___z_dc6decfb18baf112a7d3c3203e2e3228}/node_modules/@langchain/langgraph/dist/graph/zod/index.d.ts +0 -1
- package/dist/node_modules/.pnpm/{@langchain_langgraph@1.1.5_@langchain_core@1.1.28_openai@6.16.0_ws@8.19.0_zod@4.3.5___z_0d5e45651b6fb9f696195862204d53c7 → @langchain_langgraph@1.2.1_@langchain_core@1.1.31_openai@6.27.0_ws@8.19.0_zod@4.3.6___z_dc6decfb18baf112a7d3c3203e2e3228}/node_modules/@langchain/langgraph/dist/graph/zod/meta.d.cts +3 -2
- package/dist/node_modules/.pnpm/@langchain_langgraph@1.2.1_@langchain_core@1.1.31_openai@6.27.0_ws@8.19.0_zod@4.3.6___z_dc6decfb18baf112a7d3c3203e2e3228/node_modules/@langchain/langgraph/dist/graph/zod/meta.d.cts.map +1 -0
- package/dist/node_modules/.pnpm/{@langchain_langgraph@1.1.5_@langchain_core@1.1.28_openai@6.16.0_ws@8.19.0_zod@4.3.5___z_0d5e45651b6fb9f696195862204d53c7 → @langchain_langgraph@1.2.1_@langchain_core@1.1.31_openai@6.27.0_ws@8.19.0_zod@4.3.6___z_dc6decfb18baf112a7d3c3203e2e3228}/node_modules/@langchain/langgraph/dist/graph/zod/meta.d.ts +3 -2
- package/dist/node_modules/.pnpm/@langchain_langgraph@1.2.1_@langchain_core@1.1.31_openai@6.27.0_ws@8.19.0_zod@4.3.6___z_dc6decfb18baf112a7d3c3203e2e3228/node_modules/@langchain/langgraph/dist/graph/zod/meta.d.ts.map +1 -0
- package/dist/node_modules/.pnpm/{@langchain_langgraph@1.1.5_@langchain_core@1.1.28_openai@6.16.0_ws@8.19.0_zod@4.3.5___z_0d5e45651b6fb9f696195862204d53c7 → @langchain_langgraph@1.2.1_@langchain_core@1.1.31_openai@6.27.0_ws@8.19.0_zod@4.3.6___z_dc6decfb18baf112a7d3c3203e2e3228}/node_modules/@langchain/langgraph/dist/graph/zod/plugin.d.cts +2 -2
- package/dist/node_modules/.pnpm/{@langchain_langgraph@1.1.5_@langchain_core@1.1.28_openai@6.16.0_ws@8.19.0_zod@4.3.5___z_0d5e45651b6fb9f696195862204d53c7 → @langchain_langgraph@1.2.1_@langchain_core@1.1.31_openai@6.27.0_ws@8.19.0_zod@4.3.6___z_dc6decfb18baf112a7d3c3203e2e3228}/node_modules/@langchain/langgraph/dist/graph/zod/plugin.d.cts.map +1 -1
- package/dist/node_modules/.pnpm/{@langchain_langgraph@1.1.5_@langchain_core@1.1.28_openai@6.16.0_ws@8.19.0_zod@4.3.5___z_0d5e45651b6fb9f696195862204d53c7 → @langchain_langgraph@1.2.1_@langchain_core@1.1.31_openai@6.27.0_ws@8.19.0_zod@4.3.6___z_dc6decfb18baf112a7d3c3203e2e3228}/node_modules/@langchain/langgraph/dist/graph/zod/plugin.d.ts +2 -2
- package/dist/node_modules/.pnpm/{@langchain_langgraph@1.1.5_@langchain_core@1.1.28_openai@6.16.0_ws@8.19.0_zod@4.3.5___z_0d5e45651b6fb9f696195862204d53c7 → @langchain_langgraph@1.2.1_@langchain_core@1.1.31_openai@6.27.0_ws@8.19.0_zod@4.3.6___z_dc6decfb18baf112a7d3c3203e2e3228}/node_modules/@langchain/langgraph/dist/graph/zod/plugin.d.ts.map +1 -1
- package/dist/node_modules/.pnpm/{@langchain_langgraph@1.1.5_@langchain_core@1.1.28_openai@6.16.0_ws@8.19.0_zod@4.3.5___z_0d5e45651b6fb9f696195862204d53c7 → @langchain_langgraph@1.2.1_@langchain_core@1.1.31_openai@6.27.0_ws@8.19.0_zod@4.3.6___z_dc6decfb18baf112a7d3c3203e2e3228}/node_modules/@langchain/langgraph/dist/graph/zod/zod-registry.d.cts +4 -4
- package/dist/node_modules/.pnpm/{@langchain_langgraph@1.1.5_@langchain_core@1.1.28_openai@6.16.0_ws@8.19.0_zod@4.3.5___z_0d5e45651b6fb9f696195862204d53c7 → @langchain_langgraph@1.2.1_@langchain_core@1.1.31_openai@6.27.0_ws@8.19.0_zod@4.3.6___z_dc6decfb18baf112a7d3c3203e2e3228}/node_modules/@langchain/langgraph/dist/graph/zod/zod-registry.d.cts.map +1 -1
- package/dist/node_modules/.pnpm/{@langchain_langgraph@1.1.5_@langchain_core@1.1.28_openai@6.16.0_ws@8.19.0_zod@4.3.5___z_0d5e45651b6fb9f696195862204d53c7 → @langchain_langgraph@1.2.1_@langchain_core@1.1.31_openai@6.27.0_ws@8.19.0_zod@4.3.6___z_dc6decfb18baf112a7d3c3203e2e3228}/node_modules/@langchain/langgraph/dist/graph/zod/zod-registry.d.ts +4 -4
- package/dist/node_modules/.pnpm/{@langchain_langgraph@1.1.5_@langchain_core@1.1.28_openai@6.16.0_ws@8.19.0_zod@4.3.5___z_0d5e45651b6fb9f696195862204d53c7 → @langchain_langgraph@1.2.1_@langchain_core@1.1.31_openai@6.27.0_ws@8.19.0_zod@4.3.6___z_dc6decfb18baf112a7d3c3203e2e3228}/node_modules/@langchain/langgraph/dist/graph/zod/zod-registry.d.ts.map +1 -1
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_openai@6.27.0_ws@8.19.0_zod@4.3.6___openai@6.27_afd3ba7574abac8ef5d4f1eb16ab2ab0/node_modules/langchain/dist/agents/ReactAgent.d.cts +1 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_openai@6.27.0_ws@8.19.0_zod@4.3.6___openai@6.27_afd3ba7574abac8ef5d4f1eb16ab2ab0/node_modules/langchain/dist/agents/ReactAgent.d.ts +1 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_openai@6.27.0_ws@8.19.0_zod@4.3.6___openai@6.27_afd3ba7574abac8ef5d4f1eb16ab2ab0/node_modules/langchain/dist/agents/index.d.cts +1 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_openai@6.27.0_ws@8.19.0_zod@4.3.6___openai@6.27_afd3ba7574abac8ef5d4f1eb16ab2ab0/node_modules/langchain/dist/agents/index.d.ts +1 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_openai@6.27.0_ws@8.19.0_zod@4.3.6___openai@6.27_afd3ba7574abac8ef5d4f1eb16ab2ab0/node_modules/langchain/dist/agents/middleware/contextEditing.d.cts +1 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_openai@6.27.0_ws@8.19.0_zod@4.3.6___openai@6.27_afd3ba7574abac8ef5d4f1eb16ab2ab0/node_modules/langchain/dist/agents/middleware/contextEditing.d.ts +1 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_openai@6.27.0_ws@8.19.0_zod@4.3.6___openai@6.27_afd3ba7574abac8ef5d4f1eb16ab2ab0/node_modules/langchain/dist/agents/middleware/dynamicSystemPrompt.d.cts +1 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_openai@6.27.0_ws@8.19.0_zod@4.3.6___openai@6.27_afd3ba7574abac8ef5d4f1eb16ab2ab0/node_modules/langchain/dist/agents/middleware/dynamicSystemPrompt.d.ts +1 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_openai@6.27.0_ws@8.19.0_zod@4.3.6___openai@6.27_afd3ba7574abac8ef5d4f1eb16ab2ab0/node_modules/langchain/dist/agents/middleware/hitl.d.cts +1 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_openai@6.27.0_ws@8.19.0_zod@4.3.6___openai@6.27_afd3ba7574abac8ef5d4f1eb16ab2ab0/node_modules/langchain/dist/agents/middleware/hitl.d.ts +1 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_openai@6.27.0_ws@8.19.0_zod@4.3.6___openai@6.27_afd3ba7574abac8ef5d4f1eb16ab2ab0/node_modules/langchain/dist/agents/middleware/llmToolSelector.d.cts +1 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_openai@6.27.0_ws@8.19.0_zod@4.3.6___openai@6.27_afd3ba7574abac8ef5d4f1eb16ab2ab0/node_modules/langchain/dist/agents/middleware/llmToolSelector.d.ts +1 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_openai@6.27.0_ws@8.19.0_zod@4.3.6___openai@6.27_afd3ba7574abac8ef5d4f1eb16ab2ab0/node_modules/langchain/dist/agents/middleware/modelCallLimit.d.cts +1 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_openai@6.27.0_ws@8.19.0_zod@4.3.6___openai@6.27_afd3ba7574abac8ef5d4f1eb16ab2ab0/node_modules/langchain/dist/agents/middleware/modelCallLimit.d.ts +1 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_openai@6.27.0_ws@8.19.0_zod@4.3.6___openai@6.27_afd3ba7574abac8ef5d4f1eb16ab2ab0/node_modules/langchain/dist/agents/middleware/modelFallback.d.cts +1 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_openai@6.27.0_ws@8.19.0_zod@4.3.6___openai@6.27_afd3ba7574abac8ef5d4f1eb16ab2ab0/node_modules/langchain/dist/agents/middleware/modelFallback.d.ts +1 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_openai@6.27.0_ws@8.19.0_zod@4.3.6___openai@6.27_afd3ba7574abac8ef5d4f1eb16ab2ab0/node_modules/langchain/dist/agents/middleware/modelRetry.d.cts +1 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_openai@6.27.0_ws@8.19.0_zod@4.3.6___openai@6.27_afd3ba7574abac8ef5d4f1eb16ab2ab0/node_modules/langchain/dist/agents/middleware/modelRetry.d.ts +1 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_openai@6.27.0_ws@8.19.0_zod@4.3.6___openai@6.27_afd3ba7574abac8ef5d4f1eb16ab2ab0/node_modules/langchain/dist/agents/middleware/pii.d.cts +1 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_openai@6.27.0_ws@8.19.0_zod@4.3.6___openai@6.27_afd3ba7574abac8ef5d4f1eb16ab2ab0/node_modules/langchain/dist/agents/middleware/pii.d.ts +1 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_openai@6.27.0_ws@8.19.0_zod@4.3.6___openai@6.27_afd3ba7574abac8ef5d4f1eb16ab2ab0/node_modules/langchain/dist/agents/middleware/piiRedaction.d.cts +1 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_openai@6.27.0_ws@8.19.0_zod@4.3.6___openai@6.27_afd3ba7574abac8ef5d4f1eb16ab2ab0/node_modules/langchain/dist/agents/middleware/piiRedaction.d.ts +1 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_openai@6.27.0_ws@8.19.0_zod@4.3.6___openai@6.27_afd3ba7574abac8ef5d4f1eb16ab2ab0/node_modules/langchain/dist/agents/middleware/provider/anthropic/promptCaching.d.cts +1 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_openai@6.27.0_ws@8.19.0_zod@4.3.6___openai@6.27_afd3ba7574abac8ef5d4f1eb16ab2ab0/node_modules/langchain/dist/agents/middleware/provider/anthropic/promptCaching.d.ts +1 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_openai@6.27.0_ws@8.19.0_zod@4.3.6___openai@6.27_afd3ba7574abac8ef5d4f1eb16ab2ab0/node_modules/langchain/dist/agents/middleware/provider/openai/moderation.d.cts +1 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_openai@6.27.0_ws@8.19.0_zod@4.3.6___openai@6.27_afd3ba7574abac8ef5d4f1eb16ab2ab0/node_modules/langchain/dist/agents/middleware/provider/openai/moderation.d.ts +1 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_openai@6.27.0_ws@8.19.0_zod@4.3.6___openai@6.27_afd3ba7574abac8ef5d4f1eb16ab2ab0/node_modules/langchain/dist/agents/middleware/summarization.d.cts +1 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_openai@6.27.0_ws@8.19.0_zod@4.3.6___openai@6.27_afd3ba7574abac8ef5d4f1eb16ab2ab0/node_modules/langchain/dist/agents/middleware/summarization.d.ts +1 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_openai@6.27.0_ws@8.19.0_zod@4.3.6___openai@6.27_afd3ba7574abac8ef5d4f1eb16ab2ab0/node_modules/langchain/dist/agents/middleware/todoListMiddleware.d.cts +1 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_openai@6.27.0_ws@8.19.0_zod@4.3.6___openai@6.27_afd3ba7574abac8ef5d4f1eb16ab2ab0/node_modules/langchain/dist/agents/middleware/todoListMiddleware.d.ts +1 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_openai@6.27.0_ws@8.19.0_zod@4.3.6___openai@6.27_afd3ba7574abac8ef5d4f1eb16ab2ab0/node_modules/langchain/dist/agents/middleware/toolCallLimit.d.cts +1 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_openai@6.27.0_ws@8.19.0_zod@4.3.6___openai@6.27_afd3ba7574abac8ef5d4f1eb16ab2ab0/node_modules/langchain/dist/agents/middleware/toolCallLimit.d.ts +1 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_openai@6.27.0_ws@8.19.0_zod@4.3.6___openai@6.27_afd3ba7574abac8ef5d4f1eb16ab2ab0/node_modules/langchain/dist/agents/middleware/toolEmulator.d.cts +1 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_openai@6.27.0_ws@8.19.0_zod@4.3.6___openai@6.27_afd3ba7574abac8ef5d4f1eb16ab2ab0/node_modules/langchain/dist/agents/middleware/toolEmulator.d.ts +1 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_openai@6.27.0_ws@8.19.0_zod@4.3.6___openai@6.27_afd3ba7574abac8ef5d4f1eb16ab2ab0/node_modules/langchain/dist/agents/middleware/toolRetry.d.cts +1 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_openai@6.27.0_ws@8.19.0_zod@4.3.6___openai@6.27_afd3ba7574abac8ef5d4f1eb16ab2ab0/node_modules/langchain/dist/agents/middleware/toolRetry.d.ts +1 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_openai@6.27.0_ws@8.19.0_zod@4.3.6___openai@6.27_afd3ba7574abac8ef5d4f1eb16ab2ab0/node_modules/langchain/dist/agents/middleware/types.d.cts +2 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_openai@6.27.0_ws@8.19.0_zod@4.3.6___openai@6.27_afd3ba7574abac8ef5d4f1eb16ab2ab0/node_modules/langchain/dist/agents/middleware/types.d.ts +2 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_openai@6.27.0_ws@8.19.0_zod@4.3.6___openai@6.27_afd3ba7574abac8ef5d4f1eb16ab2ab0/node_modules/langchain/dist/agents/middleware.d.cts +1 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_openai@6.27.0_ws@8.19.0_zod@4.3.6___openai@6.27_afd3ba7574abac8ef5d4f1eb16ab2ab0/node_modules/langchain/dist/agents/middleware.d.ts +1 -0
- package/dist/node_modules/.pnpm/{langchain@1.2.27_@langchain_core@1.1.28_openai@6.16.0_ws@8.19.0_zod@4.3.5___openai@6.16_37b31122102851880bcc0afaeba68edd → langchain@1.2.30_@langchain_core@1.1.31_openai@6.27.0_ws@8.19.0_zod@4.3.6___openai@6.27_afd3ba7574abac8ef5d4f1eb16ab2ab0}/node_modules/langchain/dist/agents/types.d.cts +0 -1
- package/dist/node_modules/.pnpm/{langchain@1.2.27_@langchain_core@1.1.28_openai@6.16.0_ws@8.19.0_zod@4.3.5___openai@6.16_37b31122102851880bcc0afaeba68edd → langchain@1.2.30_@langchain_core@1.1.31_openai@6.27.0_ws@8.19.0_zod@4.3.6___openai@6.27_afd3ba7574abac8ef5d4f1eb16ab2ab0}/node_modules/langchain/dist/agents/types.d.ts +0 -1
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_openai@6.27.0_ws@8.19.0_zod@4.3.6___openai@6.27_afd3ba7574abac8ef5d4f1eb16ab2ab0/node_modules/langchain/dist/index.d.cts +2 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_openai@6.27.0_ws@8.19.0_zod@4.3.6___openai@6.27_afd3ba7574abac8ef5d4f1eb16ab2ab0/node_modules/langchain/dist/index.d.ts +2 -0
- package/dist/node_modules/.pnpm/{zod@4.3.5 → zod@4.3.6}/node_modules/zod/v3/ZodError.d.cts +1 -1
- package/dist/node_modules/.pnpm/{zod@4.3.5 → zod@4.3.6}/node_modules/zod/v3/ZodError.d.cts.map +1 -1
- package/dist/node_modules/.pnpm/{zod@4.3.5 → zod@4.3.6}/node_modules/zod/v3/ZodError.d.ts +1 -1
- package/dist/node_modules/.pnpm/{zod@4.3.5 → zod@4.3.6}/node_modules/zod/v3/ZodError.d.ts.map +1 -1
- package/dist/node_modules/.pnpm/{zod@4.3.5 → zod@4.3.6}/node_modules/zod/v3/helpers/errorUtil.d.cts +1 -1
- package/dist/node_modules/.pnpm/{zod@4.3.5 → zod@4.3.6}/node_modules/zod/v3/helpers/errorUtil.d.cts.map +1 -1
- package/dist/node_modules/.pnpm/{zod@4.3.5 → zod@4.3.6}/node_modules/zod/v3/helpers/errorUtil.d.ts +1 -1
- package/dist/node_modules/.pnpm/{zod@4.3.5 → zod@4.3.6}/node_modules/zod/v3/helpers/errorUtil.d.ts.map +1 -1
- package/dist/node_modules/.pnpm/{zod@4.3.5 → zod@4.3.6}/node_modules/zod/v3/helpers/parseUtil.d.cts +1 -1
- package/dist/node_modules/.pnpm/{zod@4.3.5 → zod@4.3.6}/node_modules/zod/v3/helpers/parseUtil.d.cts.map +1 -1
- package/dist/node_modules/.pnpm/{zod@4.3.5 → zod@4.3.6}/node_modules/zod/v3/helpers/parseUtil.d.ts +1 -1
- package/dist/node_modules/.pnpm/{zod@4.3.5 → zod@4.3.6}/node_modules/zod/v3/helpers/parseUtil.d.ts.map +1 -1
- package/dist/node_modules/.pnpm/{zod@4.3.5 → zod@4.3.6}/node_modules/zod/v3/helpers/typeAliases.d.cts +1 -1
- package/dist/node_modules/.pnpm/{zod@4.3.5 → zod@4.3.6}/node_modules/zod/v3/helpers/typeAliases.d.cts.map +1 -1
- package/dist/node_modules/.pnpm/{zod@4.3.5 → zod@4.3.6}/node_modules/zod/v3/helpers/typeAliases.d.ts +1 -1
- package/dist/node_modules/.pnpm/{zod@4.3.5 → zod@4.3.6}/node_modules/zod/v3/helpers/typeAliases.d.ts.map +1 -1
- package/dist/node_modules/.pnpm/{zod@4.3.5 → zod@4.3.6}/node_modules/zod/v3/helpers/util.d.cts +1 -1
- package/dist/node_modules/.pnpm/{zod@4.3.5 → zod@4.3.6}/node_modules/zod/v3/helpers/util.d.cts.map +1 -1
- package/dist/node_modules/.pnpm/{zod@4.3.5 → zod@4.3.6}/node_modules/zod/v3/helpers/util.d.ts +1 -1
- package/dist/node_modules/.pnpm/{zod@4.3.5 → zod@4.3.6}/node_modules/zod/v3/helpers/util.d.ts.map +1 -1
- package/dist/node_modules/.pnpm/{zod@4.3.5 → zod@4.3.6}/node_modules/zod/v3/standard-schema.d.cts +1 -1
- package/dist/node_modules/.pnpm/{zod@4.3.5 → zod@4.3.6}/node_modules/zod/v3/standard-schema.d.cts.map +1 -1
- package/dist/node_modules/.pnpm/{zod@4.3.5 → zod@4.3.6}/node_modules/zod/v3/standard-schema.d.ts +1 -1
- package/dist/node_modules/.pnpm/{zod@4.3.5 → zod@4.3.6}/node_modules/zod/v3/standard-schema.d.ts.map +1 -1
- package/dist/node_modules/.pnpm/{zod@4.3.5 → zod@4.3.6}/node_modules/zod/v3/types.d.cts +1 -1
- package/dist/node_modules/.pnpm/{zod@4.3.5 → zod@4.3.6}/node_modules/zod/v3/types.d.cts.map +1 -1
- package/dist/node_modules/.pnpm/{zod@4.3.5 → zod@4.3.6}/node_modules/zod/v3/types.d.ts +1 -1
- package/dist/node_modules/.pnpm/{zod@4.3.5 → zod@4.3.6}/node_modules/zod/v3/types.d.ts.map +1 -1
- package/dist/node_modules/.pnpm/{zod@4.3.5 → zod@4.3.6}/node_modules/zod/v4/core/checks.d.cts +1 -1
- package/dist/node_modules/.pnpm/{zod@4.3.5 → zod@4.3.6}/node_modules/zod/v4/core/checks.d.cts.map +1 -1
- package/dist/node_modules/.pnpm/{zod@4.3.5 → zod@4.3.6}/node_modules/zod/v4/core/checks.d.ts +1 -1
- package/dist/node_modules/.pnpm/{zod@4.3.5 → zod@4.3.6}/node_modules/zod/v4/core/checks.d.ts.map +1 -1
- package/dist/node_modules/.pnpm/{zod@4.3.5 → zod@4.3.6}/node_modules/zod/v4/core/core.d.cts +1 -1
- package/dist/node_modules/.pnpm/{zod@4.3.5 → zod@4.3.6}/node_modules/zod/v4/core/core.d.cts.map +1 -1
- package/dist/node_modules/.pnpm/{zod@4.3.5 → zod@4.3.6}/node_modules/zod/v4/core/core.d.ts +1 -1
- package/dist/node_modules/.pnpm/{zod@4.3.5 → zod@4.3.6}/node_modules/zod/v4/core/core.d.ts.map +1 -1
- package/dist/node_modules/.pnpm/{zod@4.3.5 → zod@4.3.6}/node_modules/zod/v4/core/errors.d.cts +1 -1
- package/dist/node_modules/.pnpm/{zod@4.3.5 → zod@4.3.6}/node_modules/zod/v4/core/errors.d.cts.map +1 -1
- package/dist/node_modules/.pnpm/{zod@4.3.5 → zod@4.3.6}/node_modules/zod/v4/core/errors.d.ts +1 -1
- package/dist/node_modules/.pnpm/{zod@4.3.5 → zod@4.3.6}/node_modules/zod/v4/core/errors.d.ts.map +1 -1
- package/dist/node_modules/.pnpm/{zod@4.3.5 → zod@4.3.6}/node_modules/zod/v4/core/json-schema.d.cts +1 -1
- package/dist/node_modules/.pnpm/{zod@4.3.5 → zod@4.3.6}/node_modules/zod/v4/core/json-schema.d.cts.map +1 -1
- package/dist/node_modules/.pnpm/{zod@4.3.5 → zod@4.3.6}/node_modules/zod/v4/core/json-schema.d.ts +1 -1
- package/dist/node_modules/.pnpm/{zod@4.3.5 → zod@4.3.6}/node_modules/zod/v4/core/json-schema.d.ts.map +1 -1
- package/dist/node_modules/.pnpm/{zod@4.3.5 → zod@4.3.6}/node_modules/zod/v4/core/registries.d.cts +1 -1
- package/dist/node_modules/.pnpm/{zod@4.3.5 → zod@4.3.6}/node_modules/zod/v4/core/registries.d.cts.map +1 -1
- package/dist/node_modules/.pnpm/{zod@4.3.5 → zod@4.3.6}/node_modules/zod/v4/core/registries.d.ts +1 -1
- package/dist/node_modules/.pnpm/{zod@4.3.5 → zod@4.3.6}/node_modules/zod/v4/core/registries.d.ts.map +1 -1
- package/dist/node_modules/.pnpm/{zod@4.3.5 → zod@4.3.6}/node_modules/zod/v4/core/schemas.d.cts +1 -1
- package/dist/node_modules/.pnpm/{zod@4.3.5 → zod@4.3.6}/node_modules/zod/v4/core/schemas.d.cts.map +1 -1
- package/dist/node_modules/.pnpm/{zod@4.3.5 → zod@4.3.6}/node_modules/zod/v4/core/schemas.d.ts +1 -1
- package/dist/node_modules/.pnpm/{zod@4.3.5 → zod@4.3.6}/node_modules/zod/v4/core/schemas.d.ts.map +1 -1
- package/dist/node_modules/.pnpm/{zod@4.3.5 → zod@4.3.6}/node_modules/zod/v4/core/standard-schema.d.cts +1 -1
- package/dist/node_modules/.pnpm/{zod@4.3.5 → zod@4.3.6}/node_modules/zod/v4/core/standard-schema.d.cts.map +1 -1
- package/dist/node_modules/.pnpm/{zod@4.3.5 → zod@4.3.6}/node_modules/zod/v4/core/standard-schema.d.ts +1 -1
- package/dist/node_modules/.pnpm/{zod@4.3.5 → zod@4.3.6}/node_modules/zod/v4/core/standard-schema.d.ts.map +1 -1
- package/dist/node_modules/.pnpm/{zod@4.3.5 → zod@4.3.6}/node_modules/zod/v4/core/to-json-schema.d.cts +1 -1
- package/dist/node_modules/.pnpm/{zod@4.3.5 → zod@4.3.6}/node_modules/zod/v4/core/to-json-schema.d.cts.map +1 -1
- package/dist/node_modules/.pnpm/{zod@4.3.5 → zod@4.3.6}/node_modules/zod/v4/core/to-json-schema.d.ts +1 -1
- package/dist/node_modules/.pnpm/{zod@4.3.5 → zod@4.3.6}/node_modules/zod/v4/core/to-json-schema.d.ts.map +1 -1
- package/dist/node_modules/.pnpm/{zod@4.3.5 → zod@4.3.6}/node_modules/zod/v4/core/util.d.cts +1 -1
- package/dist/node_modules/.pnpm/{zod@4.3.5 → zod@4.3.6}/node_modules/zod/v4/core/util.d.cts.map +1 -1
- package/dist/node_modules/.pnpm/{zod@4.3.5 → zod@4.3.6}/node_modules/zod/v4/core/util.d.ts +1 -1
- package/dist/node_modules/.pnpm/{zod@4.3.5 → zod@4.3.6}/node_modules/zod/v4/core/util.d.ts.map +1 -1
- package/dist/node_modules/.pnpm/{zod@4.3.5 → zod@4.3.6}/node_modules/zod/v4/core/versions.d.cts +1 -1
- package/dist/node_modules/.pnpm/{zod@4.3.5 → zod@4.3.6}/node_modules/zod/v4/core/versions.d.cts.map +1 -1
- package/dist/node_modules/.pnpm/{zod@4.3.5 → zod@4.3.6}/node_modules/zod/v4/core/versions.d.ts +1 -1
- package/dist/node_modules/.pnpm/{zod@4.3.5 → zod@4.3.6}/node_modules/zod/v4/core/versions.d.ts.map +1 -1
- package/dist/react-ui/client.cjs +4 -6
- package/dist/react-ui/client.cjs.map +1 -1
- package/dist/react-ui/client.d.cts +7 -3
- package/dist/react-ui/client.d.cts.map +1 -1
- package/dist/react-ui/client.d.ts +7 -3
- package/dist/react-ui/client.d.ts.map +1 -1
- package/dist/react-ui/client.js +1 -3
- package/dist/react-ui/client.js.map +1 -1
- package/dist/react-ui/index.cjs +4 -5
- package/dist/react-ui/index.cjs.map +1 -1
- package/dist/react-ui/index.js +1 -2
- package/dist/react-ui/index.js.map +1 -1
- package/dist/react-ui/server/index.cjs +4 -5
- package/dist/react-ui/server/index.js +1 -2
- package/dist/react-ui/server/server.cjs +2 -3
- package/dist/react-ui/server/server.cjs.map +1 -1
- package/dist/react-ui/server/server.js +1 -2
- package/dist/react-ui/server/server.js.map +1 -1
- package/dist/react-ui/types.cjs +1 -2
- package/dist/react-ui/types.cjs.map +1 -1
- package/dist/react-ui/types.js +1 -1
- package/dist/stream.cjs +4 -5
- package/dist/stream.cjs.map +1 -1
- package/dist/stream.custom.cjs +18 -6
- package/dist/stream.custom.cjs.map +1 -1
- package/dist/stream.custom.d.ts +0 -1
- package/dist/stream.custom.js +17 -5
- package/dist/stream.custom.js.map +1 -1
- package/dist/stream.d.cts +28 -5
- package/dist/stream.d.cts.map +1 -1
- package/dist/stream.d.ts +28 -5
- package/dist/stream.d.ts.map +1 -1
- package/dist/stream.js +1 -2
- package/dist/stream.js.map +1 -1
- package/dist/stream.lgp.cjs +44 -29
- package/dist/stream.lgp.cjs.map +1 -1
- package/dist/stream.lgp.js +43 -28
- package/dist/stream.lgp.js.map +1 -1
- package/dist/thread.cjs +2 -4
- package/dist/thread.cjs.map +1 -1
- package/dist/thread.js +1 -3
- package/dist/thread.js.map +1 -1
- package/dist/types.d.cts +3 -3
- package/dist/types.d.cts.map +1 -1
- package/dist/types.d.ts +3 -3
- package/dist/types.d.ts.map +1 -1
- package/package.json +27 -21
- package/dist/node_modules/.pnpm/@langchain_langgraph@1.1.5_@langchain_core@1.1.28_openai@6.16.0_ws@8.19.0_zod@4.3.5___z_0d5e45651b6fb9f696195862204d53c7/node_modules/@langchain/langgraph/dist/graph/zod/meta.d.cts.map +0 -1
- package/dist/node_modules/.pnpm/@langchain_langgraph@1.1.5_@langchain_core@1.1.28_openai@6.16.0_ws@8.19.0_zod@4.3.5___z_0d5e45651b6fb9f696195862204d53c7/node_modules/@langchain/langgraph/dist/graph/zod/meta.d.ts.map +0 -1
- package/dist/node_modules/.pnpm/langchain@1.2.27_@langchain_core@1.1.28_openai@6.16.0_ws@8.19.0_zod@4.3.5___openai@6.16_37b31122102851880bcc0afaeba68edd/node_modules/langchain/dist/agents/ReactAgent.d.cts +0 -3
- package/dist/node_modules/.pnpm/langchain@1.2.27_@langchain_core@1.1.28_openai@6.16.0_ws@8.19.0_zod@4.3.5___openai@6.16_37b31122102851880bcc0afaeba68edd/node_modules/langchain/dist/agents/ReactAgent.d.ts +0 -3
- package/dist/node_modules/.pnpm/langchain@1.2.27_@langchain_core@1.1.28_openai@6.16.0_ws@8.19.0_zod@4.3.5___openai@6.16_37b31122102851880bcc0afaeba68edd/node_modules/langchain/dist/agents/index.d.cts +0 -4
- package/dist/node_modules/.pnpm/langchain@1.2.27_@langchain_core@1.1.28_openai@6.16.0_ws@8.19.0_zod@4.3.5___openai@6.16_37b31122102851880bcc0afaeba68edd/node_modules/langchain/dist/agents/index.d.ts +0 -4
- package/dist/node_modules/.pnpm/langchain@1.2.27_@langchain_core@1.1.28_openai@6.16.0_ws@8.19.0_zod@4.3.5___openai@6.16_37b31122102851880bcc0afaeba68edd/node_modules/langchain/dist/agents/middleware/contextEditing.d.cts +0 -3
- package/dist/node_modules/.pnpm/langchain@1.2.27_@langchain_core@1.1.28_openai@6.16.0_ws@8.19.0_zod@4.3.5___openai@6.16_37b31122102851880bcc0afaeba68edd/node_modules/langchain/dist/agents/middleware/contextEditing.d.ts +0 -3
- package/dist/node_modules/.pnpm/langchain@1.2.27_@langchain_core@1.1.28_openai@6.16.0_ws@8.19.0_zod@4.3.5___openai@6.16_37b31122102851880bcc0afaeba68edd/node_modules/langchain/dist/agents/middleware/dynamicSystemPrompt.d.cts +0 -1
- package/dist/node_modules/.pnpm/langchain@1.2.27_@langchain_core@1.1.28_openai@6.16.0_ws@8.19.0_zod@4.3.5___openai@6.16_37b31122102851880bcc0afaeba68edd/node_modules/langchain/dist/agents/middleware/dynamicSystemPrompt.d.ts +0 -1
- package/dist/node_modules/.pnpm/langchain@1.2.27_@langchain_core@1.1.28_openai@6.16.0_ws@8.19.0_zod@4.3.5___openai@6.16_37b31122102851880bcc0afaeba68edd/node_modules/langchain/dist/agents/middleware/hitl.d.cts +0 -1
- package/dist/node_modules/.pnpm/langchain@1.2.27_@langchain_core@1.1.28_openai@6.16.0_ws@8.19.0_zod@4.3.5___openai@6.16_37b31122102851880bcc0afaeba68edd/node_modules/langchain/dist/agents/middleware/hitl.d.ts +0 -1
- package/dist/node_modules/.pnpm/langchain@1.2.27_@langchain_core@1.1.28_openai@6.16.0_ws@8.19.0_zod@4.3.5___openai@6.16_37b31122102851880bcc0afaeba68edd/node_modules/langchain/dist/agents/middleware/llmToolSelector.d.cts +0 -1
- package/dist/node_modules/.pnpm/langchain@1.2.27_@langchain_core@1.1.28_openai@6.16.0_ws@8.19.0_zod@4.3.5___openai@6.16_37b31122102851880bcc0afaeba68edd/node_modules/langchain/dist/agents/middleware/llmToolSelector.d.ts +0 -1
- package/dist/node_modules/.pnpm/langchain@1.2.27_@langchain_core@1.1.28_openai@6.16.0_ws@8.19.0_zod@4.3.5___openai@6.16_37b31122102851880bcc0afaeba68edd/node_modules/langchain/dist/agents/middleware/modelCallLimit.d.cts +0 -1
- package/dist/node_modules/.pnpm/langchain@1.2.27_@langchain_core@1.1.28_openai@6.16.0_ws@8.19.0_zod@4.3.5___openai@6.16_37b31122102851880bcc0afaeba68edd/node_modules/langchain/dist/agents/middleware/modelCallLimit.d.ts +0 -1
- package/dist/node_modules/.pnpm/langchain@1.2.27_@langchain_core@1.1.28_openai@6.16.0_ws@8.19.0_zod@4.3.5___openai@6.16_37b31122102851880bcc0afaeba68edd/node_modules/langchain/dist/agents/middleware/modelFallback.d.cts +0 -1
- package/dist/node_modules/.pnpm/langchain@1.2.27_@langchain_core@1.1.28_openai@6.16.0_ws@8.19.0_zod@4.3.5___openai@6.16_37b31122102851880bcc0afaeba68edd/node_modules/langchain/dist/agents/middleware/modelFallback.d.ts +0 -1
- package/dist/node_modules/.pnpm/langchain@1.2.27_@langchain_core@1.1.28_openai@6.16.0_ws@8.19.0_zod@4.3.5___openai@6.16_37b31122102851880bcc0afaeba68edd/node_modules/langchain/dist/agents/middleware/modelRetry.d.cts +0 -1
- package/dist/node_modules/.pnpm/langchain@1.2.27_@langchain_core@1.1.28_openai@6.16.0_ws@8.19.0_zod@4.3.5___openai@6.16_37b31122102851880bcc0afaeba68edd/node_modules/langchain/dist/agents/middleware/modelRetry.d.ts +0 -1
- package/dist/node_modules/.pnpm/langchain@1.2.27_@langchain_core@1.1.28_openai@6.16.0_ws@8.19.0_zod@4.3.5___openai@6.16_37b31122102851880bcc0afaeba68edd/node_modules/langchain/dist/agents/middleware/pii.d.cts +0 -1
- package/dist/node_modules/.pnpm/langchain@1.2.27_@langchain_core@1.1.28_openai@6.16.0_ws@8.19.0_zod@4.3.5___openai@6.16_37b31122102851880bcc0afaeba68edd/node_modules/langchain/dist/agents/middleware/pii.d.ts +0 -1
- package/dist/node_modules/.pnpm/langchain@1.2.27_@langchain_core@1.1.28_openai@6.16.0_ws@8.19.0_zod@4.3.5___openai@6.16_37b31122102851880bcc0afaeba68edd/node_modules/langchain/dist/agents/middleware/piiRedaction.d.cts +0 -1
- package/dist/node_modules/.pnpm/langchain@1.2.27_@langchain_core@1.1.28_openai@6.16.0_ws@8.19.0_zod@4.3.5___openai@6.16_37b31122102851880bcc0afaeba68edd/node_modules/langchain/dist/agents/middleware/piiRedaction.d.ts +0 -1
- package/dist/node_modules/.pnpm/langchain@1.2.27_@langchain_core@1.1.28_openai@6.16.0_ws@8.19.0_zod@4.3.5___openai@6.16_37b31122102851880bcc0afaeba68edd/node_modules/langchain/dist/agents/middleware/provider/anthropic/promptCaching.d.cts +0 -1
- package/dist/node_modules/.pnpm/langchain@1.2.27_@langchain_core@1.1.28_openai@6.16.0_ws@8.19.0_zod@4.3.5___openai@6.16_37b31122102851880bcc0afaeba68edd/node_modules/langchain/dist/agents/middleware/provider/anthropic/promptCaching.d.ts +0 -1
- package/dist/node_modules/.pnpm/langchain@1.2.27_@langchain_core@1.1.28_openai@6.16.0_ws@8.19.0_zod@4.3.5___openai@6.16_37b31122102851880bcc0afaeba68edd/node_modules/langchain/dist/agents/middleware/provider/openai/moderation.d.cts +0 -1
- package/dist/node_modules/.pnpm/langchain@1.2.27_@langchain_core@1.1.28_openai@6.16.0_ws@8.19.0_zod@4.3.5___openai@6.16_37b31122102851880bcc0afaeba68edd/node_modules/langchain/dist/agents/middleware/provider/openai/moderation.d.ts +0 -1
- package/dist/node_modules/.pnpm/langchain@1.2.27_@langchain_core@1.1.28_openai@6.16.0_ws@8.19.0_zod@4.3.5___openai@6.16_37b31122102851880bcc0afaeba68edd/node_modules/langchain/dist/agents/middleware/summarization.d.cts +0 -2
- package/dist/node_modules/.pnpm/langchain@1.2.27_@langchain_core@1.1.28_openai@6.16.0_ws@8.19.0_zod@4.3.5___openai@6.16_37b31122102851880bcc0afaeba68edd/node_modules/langchain/dist/agents/middleware/summarization.d.ts +0 -2
- package/dist/node_modules/.pnpm/langchain@1.2.27_@langchain_core@1.1.28_openai@6.16.0_ws@8.19.0_zod@4.3.5___openai@6.16_37b31122102851880bcc0afaeba68edd/node_modules/langchain/dist/agents/middleware/todoListMiddleware.d.cts +0 -2
- package/dist/node_modules/.pnpm/langchain@1.2.27_@langchain_core@1.1.28_openai@6.16.0_ws@8.19.0_zod@4.3.5___openai@6.16_37b31122102851880bcc0afaeba68edd/node_modules/langchain/dist/agents/middleware/todoListMiddleware.d.ts +0 -2
- package/dist/node_modules/.pnpm/langchain@1.2.27_@langchain_core@1.1.28_openai@6.16.0_ws@8.19.0_zod@4.3.5___openai@6.16_37b31122102851880bcc0afaeba68edd/node_modules/langchain/dist/agents/middleware/toolCallLimit.d.cts +0 -1
- package/dist/node_modules/.pnpm/langchain@1.2.27_@langchain_core@1.1.28_openai@6.16.0_ws@8.19.0_zod@4.3.5___openai@6.16_37b31122102851880bcc0afaeba68edd/node_modules/langchain/dist/agents/middleware/toolCallLimit.d.ts +0 -1
- package/dist/node_modules/.pnpm/langchain@1.2.27_@langchain_core@1.1.28_openai@6.16.0_ws@8.19.0_zod@4.3.5___openai@6.16_37b31122102851880bcc0afaeba68edd/node_modules/langchain/dist/agents/middleware/toolEmulator.d.cts +0 -1
- package/dist/node_modules/.pnpm/langchain@1.2.27_@langchain_core@1.1.28_openai@6.16.0_ws@8.19.0_zod@4.3.5___openai@6.16_37b31122102851880bcc0afaeba68edd/node_modules/langchain/dist/agents/middleware/toolEmulator.d.ts +0 -1
- package/dist/node_modules/.pnpm/langchain@1.2.27_@langchain_core@1.1.28_openai@6.16.0_ws@8.19.0_zod@4.3.5___openai@6.16_37b31122102851880bcc0afaeba68edd/node_modules/langchain/dist/agents/middleware/toolRetry.d.cts +0 -1
- package/dist/node_modules/.pnpm/langchain@1.2.27_@langchain_core@1.1.28_openai@6.16.0_ws@8.19.0_zod@4.3.5___openai@6.16_37b31122102851880bcc0afaeba68edd/node_modules/langchain/dist/agents/middleware/toolRetry.d.ts +0 -1
- package/dist/node_modules/.pnpm/langchain@1.2.27_@langchain_core@1.1.28_openai@6.16.0_ws@8.19.0_zod@4.3.5___openai@6.16_37b31122102851880bcc0afaeba68edd/node_modules/langchain/dist/agents/middleware/types.d.cts +0 -3
- package/dist/node_modules/.pnpm/langchain@1.2.27_@langchain_core@1.1.28_openai@6.16.0_ws@8.19.0_zod@4.3.5___openai@6.16_37b31122102851880bcc0afaeba68edd/node_modules/langchain/dist/agents/middleware/types.d.ts +0 -3
- package/dist/node_modules/.pnpm/langchain@1.2.27_@langchain_core@1.1.28_openai@6.16.0_ws@8.19.0_zod@4.3.5___openai@6.16_37b31122102851880bcc0afaeba68edd/node_modules/langchain/dist/agents/middleware.d.cts +0 -2
- package/dist/node_modules/.pnpm/langchain@1.2.27_@langchain_core@1.1.28_openai@6.16.0_ws@8.19.0_zod@4.3.5___openai@6.16_37b31122102851880bcc0afaeba68edd/node_modules/langchain/dist/agents/middleware.d.ts +0 -2
- package/dist/node_modules/.pnpm/langchain@1.2.27_@langchain_core@1.1.28_openai@6.16.0_ws@8.19.0_zod@4.3.5___openai@6.16_37b31122102851880bcc0afaeba68edd/node_modules/langchain/dist/index.d.cts +0 -23
- package/dist/node_modules/.pnpm/langchain@1.2.27_@langchain_core@1.1.28_openai@6.16.0_ws@8.19.0_zod@4.3.5___openai@6.16_37b31122102851880bcc0afaeba68edd/node_modules/langchain/dist/index.d.ts +0 -23
package/dist/stream.lgp.cjs
CHANGED
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
|
|
3
|
-
const
|
|
4
|
-
const require_thread = require('./thread.cjs');
|
|
2
|
+
require("./_virtual/_rolldown/runtime.cjs");
|
|
3
|
+
const require_thread = require("./thread.cjs");
|
|
5
4
|
let react = require("react");
|
|
6
5
|
let _langchain_langgraph_sdk_client = require("@langchain/langgraph-sdk/client");
|
|
7
6
|
let _langchain_langgraph_sdk_ui = require("@langchain/langgraph-sdk/ui");
|
|
8
7
|
let _langchain_langgraph_sdk_utils = require("@langchain/langgraph-sdk/utils");
|
|
9
|
-
|
|
10
8
|
//#region src/stream.lgp.tsx
|
|
11
9
|
function getFetchHistoryKey(client, threadId, limit) {
|
|
12
10
|
return [
|
|
@@ -175,6 +173,7 @@ function useStreamLGP(options) {
|
|
|
175
173
|
const [threadId, onThreadId] = require_thread.useControllableThreadId(options);
|
|
176
174
|
const threadIdRef = (0, react.useRef)(threadId);
|
|
177
175
|
const threadIdStreamingRef = (0, react.useRef)(null);
|
|
176
|
+
const threadIdPromiseRef = (0, react.useRef)(null);
|
|
178
177
|
(0, react.useEffect)(() => {
|
|
179
178
|
if (threadIdRef.current !== threadId) {
|
|
180
179
|
threadIdRef.current = threadId;
|
|
@@ -299,11 +298,13 @@ function useStreamLGP(options) {
|
|
|
299
298
|
return { ...prev };
|
|
300
299
|
});
|
|
301
300
|
if (!usableThreadId) {
|
|
302
|
-
|
|
301
|
+
const threadPromise = client.threads.create({
|
|
303
302
|
threadId: submitOptions?.threadId,
|
|
304
303
|
metadata: submitOptions?.metadata,
|
|
305
304
|
signal
|
|
306
|
-
})
|
|
305
|
+
});
|
|
306
|
+
threadIdPromiseRef.current = threadPromise.then((t) => t.thread_id);
|
|
307
|
+
usableThreadId = (await threadPromise).thread_id;
|
|
307
308
|
threadIdRef.current = usableThreadId;
|
|
308
309
|
threadIdStreamingRef.current = usableThreadId;
|
|
309
310
|
onThreadId(usableThreadId);
|
|
@@ -371,6 +372,7 @@ function useStreamLGP(options) {
|
|
|
371
372
|
},
|
|
372
373
|
onError(error) {
|
|
373
374
|
options.onError?.(error, callbackMeta);
|
|
375
|
+
submitOptions?.onError?.(error, callbackMeta);
|
|
374
376
|
},
|
|
375
377
|
onFinish() {
|
|
376
378
|
threadIdStreamingRef.current = null;
|
|
@@ -380,6 +382,7 @@ function useStreamLGP(options) {
|
|
|
380
382
|
const submitDirectRef = (0, react.useRef)(submitDirect);
|
|
381
383
|
submitDirectRef.current = submitDirect;
|
|
382
384
|
const submittingRef = (0, react.useRef)(false);
|
|
385
|
+
const drainQueueRef = (0, react.useRef)(() => {});
|
|
383
386
|
const submit = async (values, submitOptions) => {
|
|
384
387
|
if (stream.isLoading || submittingRef.current) {
|
|
385
388
|
if (submitOptions?.multitaskStrategy === "interrupt" || submitOptions?.multitaskStrategy === "rollback") {
|
|
@@ -391,27 +394,33 @@ function useStreamLGP(options) {
|
|
|
391
394
|
}
|
|
392
395
|
return;
|
|
393
396
|
}
|
|
394
|
-
|
|
397
|
+
let usableThreadId = threadIdRef.current ?? threadId;
|
|
398
|
+
if (!usableThreadId && threadIdPromiseRef.current) usableThreadId = await threadIdPromiseRef.current;
|
|
395
399
|
if (usableThreadId) {
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
400
|
+
try {
|
|
401
|
+
const run = await client.runs.create(usableThreadId, options.assistantId, {
|
|
402
|
+
input: values,
|
|
403
|
+
config: submitOptions?.config,
|
|
404
|
+
context: submitOptions?.context,
|
|
405
|
+
command: submitOptions?.command,
|
|
406
|
+
interruptBefore: submitOptions?.interruptBefore,
|
|
407
|
+
interruptAfter: submitOptions?.interruptAfter,
|
|
408
|
+
metadata: submitOptions?.metadata,
|
|
409
|
+
multitaskStrategy: "enqueue",
|
|
410
|
+
streamResumable: true,
|
|
411
|
+
streamSubgraphs: submitOptions?.streamSubgraphs,
|
|
412
|
+
durability: submitOptions?.durability
|
|
413
|
+
});
|
|
414
|
+
pendingRuns.add({
|
|
415
|
+
id: run.run_id,
|
|
416
|
+
values,
|
|
417
|
+
options: submitOptions,
|
|
418
|
+
createdAt: new Date(run.created_at)
|
|
419
|
+
});
|
|
420
|
+
} catch (error) {
|
|
421
|
+
options.onError?.(error, void 0);
|
|
422
|
+
submitOptions?.onError?.(error, void 0);
|
|
423
|
+
}
|
|
415
424
|
return;
|
|
416
425
|
}
|
|
417
426
|
}
|
|
@@ -420,6 +429,7 @@ function useStreamLGP(options) {
|
|
|
420
429
|
await submitDirect(values, submitOptions);
|
|
421
430
|
} finally {
|
|
422
431
|
submittingRef.current = false;
|
|
432
|
+
drainQueueRef.current();
|
|
423
433
|
}
|
|
424
434
|
};
|
|
425
435
|
const joinStream = async (runId, lastEventId, joinOptions) => {
|
|
@@ -464,16 +474,21 @@ function useStreamLGP(options) {
|
|
|
464
474
|
};
|
|
465
475
|
const joinStreamRef = (0, react.useRef)(joinStream);
|
|
466
476
|
joinStreamRef.current = joinStream;
|
|
467
|
-
|
|
477
|
+
const drainQueue = () => {
|
|
468
478
|
if (!stream.isLoading && !submittingRef.current && pendingRuns.size > 0) {
|
|
469
479
|
const next = pendingRuns.shift();
|
|
470
480
|
if (next) {
|
|
471
481
|
submittingRef.current = true;
|
|
472
482
|
joinStreamRef.current(next.id).finally(() => {
|
|
473
483
|
submittingRef.current = false;
|
|
484
|
+
drainQueue();
|
|
474
485
|
});
|
|
475
486
|
}
|
|
476
487
|
}
|
|
488
|
+
};
|
|
489
|
+
drainQueueRef.current = drainQueue;
|
|
490
|
+
(0, react.useEffect)(() => {
|
|
491
|
+
drainQueueRef.current();
|
|
477
492
|
}, [stream.isLoading, pendingRuns.size]);
|
|
478
493
|
const reconnectKey = (0, react.useMemo)(() => {
|
|
479
494
|
if (!runMetadataStorage || stream.isLoading) return void 0;
|
|
@@ -553,7 +568,7 @@ function useStreamLGP(options) {
|
|
|
553
568
|
},
|
|
554
569
|
get messages() {
|
|
555
570
|
trackStreamMode("messages-tuple", "values");
|
|
556
|
-
return getMessages(values);
|
|
571
|
+
return (0, _langchain_langgraph_sdk_ui.ensureMessageInstances)(getMessages(values));
|
|
557
572
|
},
|
|
558
573
|
get toolCalls() {
|
|
559
574
|
trackStreamMode("messages-tuple", "values");
|
|
@@ -617,7 +632,7 @@ function useStreamLGP(options) {
|
|
|
617
632
|
}
|
|
618
633
|
};
|
|
619
634
|
}
|
|
620
|
-
|
|
621
635
|
//#endregion
|
|
622
636
|
exports.useStreamLGP = useStreamLGP;
|
|
637
|
+
|
|
623
638
|
//# sourceMappingURL=stream.lgp.cjs.map
|
package/dist/stream.lgp.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream.lgp.cjs","names":["Client","MessageTupleManager","StreamManager","toMessageClass","PendingRunsTracker","useControllableThreadId","StreamError"],"sources":["../src/stream.lgp.tsx"],"sourcesContent":["/* __LC_ALLOW_ENTRYPOINT_SIDE_EFFECTS__ */\n\n\"use client\";\n\nimport {\n type RefObject,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n useSyncExternalStore,\n} from \"react\";\nimport type { BaseMessage } from \"@langchain/core/messages\";\nimport type {\n Message,\n ThreadState,\n Interrupt,\n StreamMode,\n StreamEvent,\n BagTemplate,\n ToolProgress,\n ToolsStreamEvent,\n} from \"@langchain/langgraph-sdk\";\nimport { Client, getClientConfigHash } from \"@langchain/langgraph-sdk/client\";\nimport {\n filterStream,\n unique,\n StreamError,\n getBranchContext,\n getMessagesMetadataMap,\n StreamManager,\n MessageTupleManager,\n extractInterrupts,\n toMessageClass,\n PendingRunsTracker,\n type EventStreamEvent,\n type AnyStreamOptions,\n type UseStreamOptions,\n type GetUpdateType,\n type GetCustomEventType,\n type GetInterruptType,\n type GetConfigurableType,\n type GetToolCallsType,\n type RunCallbackMeta,\n type MessageMetadata,\n type UseStreamThread,\n} from \"@langchain/langgraph-sdk/ui\";\nimport { getToolCallsWithResults } from \"@langchain/langgraph-sdk/utils\";\nimport { useControllableThreadId } from \"./thread.js\";\nimport type { UseStream, SubmitOptions } from \"./types.js\";\n\nfunction getFetchHistoryKey(\n client: Client,\n threadId: string | undefined | null,\n limit: boolean | number,\n) {\n return [getClientConfigHash(client), threadId, limit].join(\":\");\n}\n\nfunction fetchHistory<StateType extends Record<string, unknown>>(\n client: Client,\n threadId: string,\n options?: { limit?: boolean | number },\n) {\n if (options?.limit === false) {\n return client.threads.getState<StateType>(threadId).then((state) => {\n if (state.checkpoint == null) return [];\n return [state];\n });\n }\n\n const limit = typeof options?.limit === \"number\" ? options.limit : 10;\n return client.threads.getHistory<StateType>(threadId, { limit });\n}\n\nfunction useThreadHistory<StateType extends Record<string, unknown>>(\n client: Client,\n threadId: string | undefined | null,\n limit: boolean | number,\n options: {\n passthrough: boolean;\n submittingRef: RefObject<string | null>;\n onError?: (error: unknown, run?: RunCallbackMeta) => void;\n },\n): UseStreamThread<StateType> {\n const key = getFetchHistoryKey(client, threadId, limit);\n const [state, setState] = useState<{\n key: string | undefined;\n data: ThreadState<StateType>[] | undefined;\n error: unknown | undefined;\n isLoading: boolean;\n }>(() => ({\n key: undefined,\n data: undefined,\n error: undefined,\n isLoading: threadId != null,\n }));\n\n const clientRef = useRef(client);\n clientRef.current = client;\n\n const onErrorRef = useRef(options?.onError);\n onErrorRef.current = options?.onError;\n\n const fetcher = useCallback(\n (\n threadId: string | undefined | null,\n limit: boolean | number,\n ): Promise<ThreadState<StateType>[]> => {\n // If only passthrough is enabled, don't fetch history\n if (options.passthrough) return Promise.resolve([]);\n\n const client = clientRef.current;\n const key = getFetchHistoryKey(client, threadId, limit);\n\n if (threadId != null) {\n setState((state) => {\n if (state.key === key) return { ...state, isLoading: true };\n return { key, data: undefined, error: undefined, isLoading: true };\n });\n return fetchHistory<StateType>(client, threadId, { limit }).then(\n (data) => {\n setState((state) => {\n if (state.key !== key) return state;\n return { key, data, error: undefined, isLoading: false };\n });\n return data;\n },\n (error) => {\n setState((state) => {\n if (state.key !== key) return state;\n return { key, data: state.data, error, isLoading: false };\n });\n onErrorRef.current?.(error);\n return Promise.reject(error);\n },\n );\n }\n\n setState({ key, data: undefined, error: undefined, isLoading: false });\n return Promise.resolve([]);\n },\n [options.passthrough],\n );\n\n useEffect(() => {\n // Skip if a stream is already in progress, no need to fetch history\n if (\n options.submittingRef.current != null &&\n options.submittingRef.current === threadId\n ) {\n return;\n }\n\n void fetcher(threadId, limit);\n // The `threadId` and `limit` arguments are already present in `key`\n // Thus we don't need to include them in the dependency array\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [fetcher, key]);\n\n return {\n data: state.data,\n error: state.error,\n isLoading: state.isLoading,\n mutate: (mutateId?: string) => fetcher(mutateId ?? threadId, limit),\n };\n}\n\nfunction useTrackStreamMode() {\n const trackStreamModeRef = useRef<Exclude<StreamMode, \"messages\">[]>([]);\n\n const trackStreamMode = useCallback(\n (...mode: Exclude<StreamMode, \"messages\">[]) => {\n const ref = trackStreamModeRef.current;\n for (const m of mode) {\n if (!ref.includes(m)) ref.push(m);\n }\n },\n [],\n );\n\n return [trackStreamModeRef, trackStreamMode] as [\n typeof trackStreamModeRef,\n typeof trackStreamMode,\n ];\n}\n\nfunction useCallbackStreamMode<\n StateType extends Record<string, unknown> = Record<string, unknown>,\n Bag extends BagTemplate = BagTemplate,\n>(options: UseStreamOptions<StateType, Bag>) {\n const hasUpdateListener = options.onUpdateEvent != null;\n const hasCustomListener = options.onCustomEvent != null;\n const hasLangChainListener = options.onLangChainEvent != null;\n const hasDebugListener = options.onDebugEvent != null;\n const hasCheckpointListener = options.onCheckpointEvent != null;\n const hasTaskListener = options.onTaskEvent != null;\n\n return useMemo(() => {\n const modes: Exclude<StreamMode, \"messages\">[] = [];\n if (hasUpdateListener) modes.push(\"updates\");\n if (hasCustomListener) modes.push(\"custom\");\n if (hasLangChainListener) modes.push(\"events\");\n if (hasDebugListener) modes.push(\"debug\");\n if (hasCheckpointListener) modes.push(\"checkpoints\");\n if (hasTaskListener) modes.push(\"tasks\");\n return modes;\n }, [\n hasUpdateListener,\n hasCustomListener,\n hasLangChainListener,\n hasDebugListener,\n hasCheckpointListener,\n hasTaskListener,\n ]);\n}\n\nexport function useStreamLGP<\n StateType extends Record<string, unknown> = Record<string, unknown>,\n Bag extends BagTemplate = BagTemplate,\n>(options: AnyStreamOptions<StateType, Bag>): UseStream<StateType, Bag> {\n type UpdateType = GetUpdateType<Bag, StateType>;\n type CustomType = GetCustomEventType<Bag>;\n type InterruptType = GetInterruptType<Bag>;\n type ConfigurableType = GetConfigurableType<Bag>;\n type ToolCallType = GetToolCallsType<StateType>;\n\n const reconnectOnMountRef = useRef(options.reconnectOnMount);\n const runMetadataStorage = useMemo(() => {\n if (typeof window === \"undefined\") return null;\n const storage = reconnectOnMountRef.current;\n if (storage === true) return window.sessionStorage;\n if (typeof storage === \"function\") return storage();\n return null;\n }, []);\n\n const client = useMemo(\n () =>\n options.client ??\n new Client({\n apiUrl: options.apiUrl,\n apiKey: options.apiKey,\n callerOptions: options.callerOptions,\n defaultHeaders: options.defaultHeaders,\n }),\n [\n options.client,\n options.apiKey,\n options.apiUrl,\n options.callerOptions,\n options.defaultHeaders,\n ],\n );\n\n const [messageManager] = useState(() => new MessageTupleManager());\n const [stream] = useState(\n () =>\n new StreamManager<StateType, Bag>(messageManager, {\n throttle: options.throttle ?? false,\n subagentToolNames: options.subagentToolNames,\n filterSubagentMessages: options.filterSubagentMessages,\n toMessage: options.toMessage ?? toMessageClass,\n }),\n );\n\n const [pendingRuns] = useState(\n () =>\n new PendingRunsTracker<\n StateType,\n SubmitOptions<StateType, ConfigurableType>\n >(),\n );\n\n useSyncExternalStore(\n pendingRuns.subscribe,\n pendingRuns.getSnapshot,\n pendingRuns.getSnapshot,\n );\n\n const [trackStreamModeRef, trackStreamMode] = useTrackStreamMode();\n const callbackStreamMode = useCallbackStreamMode(options);\n\n const getMessages = (value: StateType): Message[] => {\n const messagesKey = options.messagesKey ?? \"messages\";\n return Array.isArray(value[messagesKey]) ? value[messagesKey] : [];\n };\n\n const setMessages = (current: StateType, messages: Message[]): StateType => {\n const messagesKey = options.messagesKey ?? \"messages\";\n return { ...current, [messagesKey]: messages };\n };\n\n useSyncExternalStore(\n stream.subscribe,\n stream.getSnapshot,\n stream.getSnapshot,\n );\n\n const [threadId, onThreadId] = useControllableThreadId(options);\n\n const threadIdRef = useRef<string | null>(threadId);\n const threadIdStreamingRef = useRef<string | null>(null);\n\n // Cancel the stream if thread ID has changed\n useEffect(() => {\n if (threadIdRef.current !== threadId) {\n threadIdRef.current = threadId;\n stream.clear();\n }\n }, [threadId, stream]);\n\n const switchThread = useCallback(\n (newThreadId: string | null) => {\n if (newThreadId !== threadIdRef.current) {\n const prevThreadId = threadIdRef.current;\n threadIdRef.current = newThreadId;\n stream.clear();\n\n const removed = pendingRuns.removeAll();\n if (prevThreadId && removed.length > 0) {\n void Promise.all(\n removed.map((e) => client.runs.cancel(prevThreadId, e.id)),\n );\n }\n\n onThreadId(newThreadId);\n }\n },\n [stream, pendingRuns, onThreadId, client],\n );\n\n const historyLimit =\n typeof options.fetchStateHistory === \"object\" &&\n options.fetchStateHistory != null\n ? (options.fetchStateHistory.limit ?? false)\n : (options.fetchStateHistory ?? false);\n\n const builtInHistory = useThreadHistory<StateType>(\n client,\n threadId,\n historyLimit,\n {\n passthrough: options.thread != null,\n submittingRef: threadIdStreamingRef,\n onError: options.onError,\n },\n );\n const history = options.thread ?? builtInHistory;\n\n const [branch, setBranch] = useState<string>(\"\");\n const branchContext = getBranchContext(branch, history.data ?? undefined);\n\n const [toolProgressMap, setToolProgressMap] = useState<\n Map<string, ToolProgress>\n >(new Map());\n\n const handleToolEvent = useCallback((data: ToolsStreamEvent[\"data\"]) => {\n setToolProgressMap((prev) => {\n const next = new Map(prev);\n const key = data.toolCallId ?? data.name;\n const existing = next.get(key);\n\n switch (data.event) {\n case \"on_tool_start\": {\n next.set(key, {\n toolCallId: data.toolCallId,\n name: data.name,\n state: \"starting\",\n input: data.input,\n });\n break;\n }\n case \"on_tool_event\": {\n if (existing) {\n next.set(key, { ...existing, state: \"running\", data: data.data });\n }\n break;\n }\n case \"on_tool_end\": {\n if (existing) {\n next.set(key, {\n ...existing,\n state: \"completed\",\n result: data.output,\n });\n }\n break;\n }\n case \"on_tool_error\": {\n if (existing) {\n next.set(key, { ...existing, state: \"error\", error: data.error });\n }\n break;\n }\n default: {\n throw new Error(\n `Unexpected tool event: ${(data as { event: string }).event}`,\n );\n }\n }\n\n return next;\n });\n }, []);\n\n const historyValues =\n branchContext.threadHead?.values ??\n options.initialValues ??\n ({} as StateType);\n\n // Reconstruct subagents from history when:\n // 1. History is loaded (not loading, has data)\n // 2. No active stream is running\n // 3. Subagent filtering is enabled (otherwise subagents aren't tracked)\n // This ensures subagent visualization persists after page refresh or stream completion\n const historyMessages = getMessages(historyValues);\n const shouldReconstructSubagents =\n options.filterSubagentMessages &&\n !stream.isLoading &&\n !history.isLoading &&\n historyMessages.length > 0;\n\n useEffect(() => {\n if (shouldReconstructSubagents) {\n // skipIfPopulated: true ensures we don't overwrite subagents from active streaming\n stream.reconstructSubagents(historyMessages, { skipIfPopulated: true });\n }\n // We intentionally only run this when shouldReconstructSubagents changes\n // to avoid unnecessary reconstructions during streaming\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [shouldReconstructSubagents, historyMessages.length]);\n\n const historyError = (() => {\n const error = branchContext.threadHead?.tasks?.at(-1)?.error;\n if (error == null) return undefined;\n try {\n const parsed = JSON.parse(error) as unknown;\n if (StreamError.isStructuredError(parsed)) return new StreamError(parsed);\n return parsed;\n } catch {\n // do nothing\n }\n return error;\n })();\n\n const messageMetadata = getMessagesMetadataMap({\n initialValues: options.initialValues,\n history: history.data,\n getMessages,\n branchContext,\n });\n\n const stop = () =>\n stream.stop(historyValues, {\n onStop: (args) => {\n if (runMetadataStorage && threadId) {\n const runId = runMetadataStorage.getItem(`lg:stream:${threadId}`);\n if (runId) void client.runs.cancel(threadId, runId);\n runMetadataStorage.removeItem(`lg:stream:${threadId}`);\n }\n\n options.onStop?.(args);\n },\n });\n\n // --- TRANSPORT ---\n const submitDirect = async (\n values: UpdateType | null | undefined,\n submitOptions?: SubmitOptions<StateType, ConfigurableType>,\n ) => {\n setToolProgressMap(new Map());\n\n // Unbranch things\n const checkpointId = submitOptions?.checkpoint?.checkpoint_id;\n setBranch(\n checkpointId != null\n ? (branchContext.branchByCheckpoint[checkpointId]?.branch ?? \"\")\n : \"\",\n );\n\n // When `fetchStateHistory` is requested, thus we assume that branching\n // is enabled. We then need to include the implicit branch.\n const includeImplicitBranch =\n historyLimit === true || typeof historyLimit === \"number\";\n\n const shouldRefetch =\n // We're expecting the whole thread state in onFinish\n options.onFinish != null ||\n // We're fetching history, thus we need the latest checkpoint\n // to ensure we're not accidentally submitting to a wrong branch\n includeImplicitBranch;\n\n let callbackMeta: RunCallbackMeta | undefined;\n let rejoinKey: `lg:stream:${string}` | undefined;\n let usableThreadId = threadId;\n\n const shouldAbortPrevious =\n (submitOptions?.multitaskStrategy === \"interrupt\" ||\n submitOptions?.multitaskStrategy === \"rollback\") &&\n stream.isLoading;\n\n await stream.start(\n async (signal: AbortSignal) => {\n stream.setStreamValues((values) => {\n const prev = { ...historyValues, ...values };\n if (submitOptions?.optimisticValues != null) {\n return {\n ...prev,\n ...(typeof submitOptions.optimisticValues === \"function\"\n ? submitOptions.optimisticValues(prev)\n : submitOptions.optimisticValues),\n };\n }\n\n return { ...prev };\n });\n\n if (!usableThreadId) {\n const thread = await client.threads.create({\n threadId: submitOptions?.threadId,\n metadata: submitOptions?.metadata,\n signal,\n });\n\n usableThreadId = thread.thread_id;\n\n // Pre-emptively update the thread ID before\n // stream cancellation is kicked off and thread\n // is being refetched\n threadIdRef.current = usableThreadId;\n threadIdStreamingRef.current = usableThreadId;\n\n onThreadId(usableThreadId);\n }\n\n if (!usableThreadId) {\n throw new Error(\"Failed to obtain valid thread ID.\");\n }\n\n threadIdStreamingRef.current = usableThreadId;\n\n const streamMode = unique([\n ...(submitOptions?.streamMode ?? []),\n ...trackStreamModeRef.current,\n ...callbackStreamMode,\n ]);\n\n let checkpoint =\n submitOptions?.checkpoint ??\n (includeImplicitBranch\n ? branchContext.threadHead?.checkpoint\n : undefined) ??\n undefined;\n\n // Avoid specifying a checkpoint if user explicitly set it to null\n if (submitOptions?.checkpoint === null) checkpoint = undefined;\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n if (checkpoint != null) delete checkpoint.thread_id;\n const streamResumable =\n submitOptions?.streamResumable ?? !!runMetadataStorage;\n\n return client.runs.stream(usableThreadId, options.assistantId, {\n input: values as Record<string, unknown>,\n config: submitOptions?.config,\n context: submitOptions?.context,\n command: submitOptions?.command,\n\n interruptBefore: submitOptions?.interruptBefore,\n interruptAfter: submitOptions?.interruptAfter,\n metadata: submitOptions?.metadata,\n multitaskStrategy: submitOptions?.multitaskStrategy,\n onCompletion: submitOptions?.onCompletion,\n onDisconnect:\n submitOptions?.onDisconnect ??\n (streamResumable ? \"continue\" : \"cancel\"),\n\n signal,\n\n checkpoint,\n streamMode,\n streamSubgraphs: submitOptions?.streamSubgraphs,\n streamResumable,\n durability: submitOptions?.durability,\n onRunCreated(params) {\n callbackMeta = {\n run_id: params.run_id,\n thread_id: params.thread_id ?? usableThreadId!,\n };\n\n if (runMetadataStorage) {\n rejoinKey = `lg:stream:${usableThreadId}`;\n runMetadataStorage.setItem(rejoinKey, callbackMeta.run_id);\n }\n\n options.onCreated?.(callbackMeta);\n },\n }) as AsyncGenerator<\n EventStreamEvent<StateType, UpdateType, CustomType>\n >;\n },\n {\n getMessages,\n setMessages,\n\n initialValues: historyValues,\n callbacks: {\n ...options,\n onToolEvent: (data, opts) => {\n handleToolEvent(data);\n options.onToolEvent?.(data, opts);\n },\n },\n\n async onSuccess() {\n if (rejoinKey) runMetadataStorage?.removeItem(rejoinKey);\n\n if (shouldRefetch) {\n const newHistory = await history.mutate(usableThreadId!);\n const lastHead = newHistory?.at(0);\n if (lastHead) {\n // We now have the latest update from /history\n // Thus we can clear the local stream state\n options.onFinish?.(lastHead, callbackMeta);\n return null;\n }\n }\n\n return undefined;\n },\n onError(error) {\n options.onError?.(error, callbackMeta);\n },\n onFinish() {\n threadIdStreamingRef.current = null;\n },\n },\n { abortPrevious: shouldAbortPrevious },\n );\n };\n\n const submitDirectRef = useRef(submitDirect);\n submitDirectRef.current = submitDirect;\n\n const submittingRef = useRef(false);\n\n const submit = async (\n values: UpdateType | null | undefined,\n submitOptions?: SubmitOptions<StateType, ConfigurableType>,\n ) => {\n if (stream.isLoading || submittingRef.current) {\n const shouldAbort =\n submitOptions?.multitaskStrategy === \"interrupt\" ||\n submitOptions?.multitaskStrategy === \"rollback\";\n\n if (shouldAbort) {\n submittingRef.current = true;\n try {\n await submitDirect(values, submitOptions);\n } finally {\n submittingRef.current = false;\n }\n return;\n }\n\n const usableThreadId = threadIdRef.current ?? threadId;\n if (usableThreadId) {\n const run = await client.runs.create(\n usableThreadId,\n options.assistantId,\n {\n input: values as Record<string, unknown>,\n config: submitOptions?.config,\n context: submitOptions?.context,\n command: submitOptions?.command,\n interruptBefore: submitOptions?.interruptBefore,\n interruptAfter: submitOptions?.interruptAfter,\n metadata: submitOptions?.metadata,\n multitaskStrategy: \"enqueue\",\n streamResumable: true,\n streamSubgraphs: submitOptions?.streamSubgraphs,\n durability: submitOptions?.durability,\n },\n );\n\n pendingRuns.add({\n id: run.run_id,\n values: values as Partial<StateType> | null | undefined,\n options: submitOptions,\n createdAt: new Date(run.created_at),\n });\n return;\n }\n }\n\n submittingRef.current = true;\n try {\n await submitDirect(values, submitOptions);\n } finally {\n submittingRef.current = false;\n }\n };\n\n const joinStream = async (\n runId: string,\n lastEventId?: string,\n joinOptions?: {\n streamMode?: StreamMode | StreamMode[];\n filter?: (event: {\n id?: string;\n event: StreamEvent;\n data: unknown;\n }) => boolean;\n },\n ) => {\n setToolProgressMap(new Map());\n\n // eslint-disable-next-line no-param-reassign\n lastEventId ??= \"-1\";\n if (!threadId) return;\n\n const callbackMeta: RunCallbackMeta = {\n thread_id: threadId,\n run_id: runId,\n };\n\n await stream.start(\n async (signal: AbortSignal) => {\n threadIdStreamingRef.current = threadId;\n const stream = client.runs.joinStream(threadId, runId, {\n signal,\n lastEventId,\n streamMode: joinOptions?.streamMode,\n }) as AsyncGenerator<\n EventStreamEvent<StateType, UpdateType, CustomType>\n >;\n\n return joinOptions?.filter != null\n ? filterStream(stream, joinOptions.filter)\n : stream;\n },\n {\n getMessages,\n setMessages,\n\n initialValues: historyValues,\n callbacks: {\n ...options,\n onToolEvent: (data, opts) => {\n handleToolEvent(data);\n options.onToolEvent?.(data, opts);\n },\n },\n async onSuccess() {\n runMetadataStorage?.removeItem(`lg:stream:${threadId}`);\n const newHistory = await history.mutate(threadId);\n const lastHead = newHistory?.at(0);\n if (lastHead) options.onFinish?.(lastHead, callbackMeta);\n },\n onError(error) {\n options.onError?.(error, callbackMeta);\n },\n onFinish() {\n threadIdStreamingRef.current = null;\n },\n },\n );\n };\n\n const joinStreamRef = useRef<typeof joinStream>(joinStream);\n joinStreamRef.current = joinStream;\n\n // Drain pending server-side runs when the stream finishes\n useEffect(() => {\n if (!stream.isLoading && !submittingRef.current && pendingRuns.size > 0) {\n const next = pendingRuns.shift();\n if (next) {\n submittingRef.current = true;\n void joinStreamRef.current(next.id).finally(() => {\n submittingRef.current = false;\n });\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [stream.isLoading, pendingRuns.size]);\n\n const reconnectKey = useMemo(() => {\n if (!runMetadataStorage || stream.isLoading) return undefined;\n if (typeof window === \"undefined\") return undefined;\n const runId = runMetadataStorage?.getItem(`lg:stream:${threadId}`);\n if (!runId) return undefined;\n return { runId, threadId };\n }, [runMetadataStorage, stream.isLoading, threadId]);\n\n const shouldReconnect = !!runMetadataStorage;\n const reconnectRef = useRef({ threadId, shouldReconnect });\n\n useEffect(() => {\n // reset shouldReconnect when switching threads\n if (reconnectRef.current.threadId !== threadId) {\n reconnectRef.current = { threadId, shouldReconnect };\n }\n }, [threadId, shouldReconnect]);\n\n useEffect(() => {\n if (reconnectKey && reconnectRef.current.shouldReconnect) {\n reconnectRef.current.shouldReconnect = false;\n void joinStreamRef.current?.(reconnectKey.runId);\n }\n }, [reconnectKey]);\n\n const error = stream.error ?? historyError ?? history.error;\n const values = stream.values ?? historyValues;\n\n return {\n get values() {\n trackStreamMode(\"values\");\n return values;\n },\n\n client,\n assistantId: options.assistantId,\n\n error,\n isLoading: stream.isLoading,\n\n stop,\n submit,\n switchThread,\n\n joinStream,\n\n branch,\n setBranch,\n\n get history() {\n if (historyLimit === false) {\n throw new Error(\n \"`fetchStateHistory` must be set to `true` to use `history`\",\n );\n }\n\n return branchContext.flatHistory;\n },\n\n isThreadLoading: history.isLoading && history.data == null,\n\n get experimental_branchTree() {\n if (historyLimit === false) {\n throw new Error(\n \"`fetchStateHistory` must be set to `true` to use `experimental_branchTree`\",\n );\n }\n\n return branchContext.branchTree;\n },\n\n get interrupts(): Interrupt<InterruptType>[] {\n if (\n values != null &&\n \"__interrupt__\" in values &&\n Array.isArray(values.__interrupt__)\n ) {\n const valueInterrupts = values.__interrupt__;\n if (valueInterrupts.length === 0) return [{ when: \"breakpoint\" }];\n return valueInterrupts;\n }\n\n // If we're deferring to old interrupt detection logic, don't show the interrupt if the stream is loading\n if (stream.isLoading) return [];\n\n // Collect interrupts from ALL tasks (not just the last one)\n const allTasks = branchContext.threadHead?.tasks ?? [];\n const allInterrupts = allTasks.flatMap((t) => t.interrupts ?? []);\n\n if (allInterrupts.length > 0) {\n return allInterrupts as Interrupt<InterruptType>[];\n }\n\n // check if there's a next task present (breakpoint-style interrupt)\n const next = branchContext.threadHead?.next ?? [];\n if (!next.length || error != null) return [];\n return [{ when: \"breakpoint\" }];\n },\n\n get interrupt() {\n return extractInterrupts<InterruptType>(values, {\n error,\n isLoading: stream.isLoading,\n threadState: branchContext.threadHead,\n });\n },\n\n get messages(): BaseMessage[] {\n trackStreamMode(\"messages-tuple\", \"values\");\n return getMessages(values) as unknown as BaseMessage[];\n },\n\n get toolCalls() {\n trackStreamMode(\"messages-tuple\", \"values\");\n const msgs = getMessages(values) as Message<ToolCallType>[];\n return getToolCallsWithResults<ToolCallType>(msgs);\n },\n\n get toolProgress(): ToolProgress[] {\n trackStreamMode(\"tools\");\n return Array.from(toolProgressMap.values());\n },\n\n getToolCalls(message) {\n trackStreamMode(\"messages-tuple\", \"values\");\n const msgs = getMessages(values) as Message<ToolCallType>[];\n const allToolCalls = getToolCallsWithResults<ToolCallType>(msgs);\n return allToolCalls.filter((tc) => tc.aiMessage.id === message.id);\n },\n\n getMessagesMetadata(\n message: BaseMessage,\n index?: number,\n ): MessageMetadata<StateType> | undefined {\n trackStreamMode(\"values\");\n\n const streamMetadata = messageManager.get(message.id)?.metadata;\n const historyMetadata = messageMetadata?.find(\n (m) => m.messageId === (message.id ?? index),\n );\n\n if (streamMetadata != null || historyMetadata != null) {\n return {\n ...historyMetadata,\n streamMetadata,\n } as MessageMetadata<StateType>;\n }\n\n return undefined;\n },\n\n get subagents() {\n trackStreamMode(\"updates\", \"messages-tuple\");\n return stream.getSubagents();\n },\n\n get activeSubagents() {\n trackStreamMode(\"updates\", \"messages-tuple\");\n return stream.getActiveSubagents();\n },\n\n getSubagent(toolCallId: string) {\n trackStreamMode(\"updates\", \"messages-tuple\");\n return stream.getSubagent(toolCallId);\n },\n\n getSubagentsByType(type: string) {\n trackStreamMode(\"updates\", \"messages-tuple\");\n return stream.getSubagentsByType(type);\n },\n\n getSubagentsByMessage(messageId: string) {\n trackStreamMode(\"updates\", \"messages-tuple\");\n return stream.getSubagentsByMessage(messageId);\n },\n\n queue: {\n get entries() {\n return pendingRuns.entries;\n },\n get size() {\n return pendingRuns.size;\n },\n async cancel(id: string) {\n const usableThreadId = threadIdRef.current ?? threadId;\n const removed = pendingRuns.remove(id);\n if (removed && usableThreadId) {\n await client.runs.cancel(usableThreadId, id);\n }\n return removed;\n },\n async clear() {\n const usableThreadId = threadIdRef.current ?? threadId;\n const removed = pendingRuns.removeAll();\n if (usableThreadId && removed.length > 0) {\n await Promise.all(\n removed.map((e) => client.runs.cancel(usableThreadId!, e.id)),\n );\n }\n },\n },\n };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"stream.lgp.cjs","names":["Client","MessageTupleManager","StreamManager","toMessageClass","PendingRunsTracker","useControllableThreadId","StreamError"],"sources":["../src/stream.lgp.tsx"],"sourcesContent":["/* __LC_ALLOW_ENTRYPOINT_SIDE_EFFECTS__ */\n\n\"use client\";\n\nimport {\n type RefObject,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n useSyncExternalStore,\n} from \"react\";\nimport type { BaseMessage } from \"@langchain/core/messages\";\nimport type {\n Message,\n ThreadState,\n Interrupt,\n StreamMode,\n StreamEvent,\n BagTemplate,\n ToolProgress,\n ToolsStreamEvent,\n} from \"@langchain/langgraph-sdk\";\nimport { Client, getClientConfigHash } from \"@langchain/langgraph-sdk/client\";\nimport {\n filterStream,\n unique,\n StreamError,\n getBranchContext,\n getMessagesMetadataMap,\n StreamManager,\n MessageTupleManager,\n extractInterrupts,\n toMessageClass,\n ensureMessageInstances,\n PendingRunsTracker,\n type EventStreamEvent,\n type AnyStreamOptions,\n type UseStreamOptions,\n type GetUpdateType,\n type GetCustomEventType,\n type GetInterruptType,\n type GetConfigurableType,\n type GetToolCallsType,\n type RunCallbackMeta,\n type MessageMetadata,\n type UseStreamThread,\n} from \"@langchain/langgraph-sdk/ui\";\nimport { getToolCallsWithResults } from \"@langchain/langgraph-sdk/utils\";\nimport { useControllableThreadId } from \"./thread.js\";\nimport type { UseStream, SubmitOptions } from \"./types.js\";\n\nfunction getFetchHistoryKey(\n client: Client,\n threadId: string | undefined | null,\n limit: boolean | number,\n) {\n return [getClientConfigHash(client), threadId, limit].join(\":\");\n}\n\nfunction fetchHistory<StateType extends Record<string, unknown>>(\n client: Client,\n threadId: string,\n options?: { limit?: boolean | number },\n) {\n if (options?.limit === false) {\n return client.threads.getState<StateType>(threadId).then((state) => {\n if (state.checkpoint == null) return [];\n return [state];\n });\n }\n\n const limit = typeof options?.limit === \"number\" ? options.limit : 10;\n return client.threads.getHistory<StateType>(threadId, { limit });\n}\n\nfunction useThreadHistory<StateType extends Record<string, unknown>>(\n client: Client,\n threadId: string | undefined | null,\n limit: boolean | number,\n options: {\n passthrough: boolean;\n submittingRef: RefObject<string | null>;\n onError?: (error: unknown, run?: RunCallbackMeta) => void;\n },\n): UseStreamThread<StateType> {\n const key = getFetchHistoryKey(client, threadId, limit);\n const [state, setState] = useState<{\n key: string | undefined;\n data: ThreadState<StateType>[] | undefined;\n error: unknown | undefined;\n isLoading: boolean;\n }>(() => ({\n key: undefined,\n data: undefined,\n error: undefined,\n isLoading: threadId != null,\n }));\n\n const clientRef = useRef(client);\n clientRef.current = client;\n\n const onErrorRef = useRef(options?.onError);\n onErrorRef.current = options?.onError;\n\n const fetcher = useCallback(\n (\n threadId: string | undefined | null,\n limit: boolean | number,\n ): Promise<ThreadState<StateType>[]> => {\n // If only passthrough is enabled, don't fetch history\n if (options.passthrough) return Promise.resolve([]);\n\n const client = clientRef.current;\n const key = getFetchHistoryKey(client, threadId, limit);\n\n if (threadId != null) {\n setState((state) => {\n if (state.key === key) return { ...state, isLoading: true };\n return { key, data: undefined, error: undefined, isLoading: true };\n });\n return fetchHistory<StateType>(client, threadId, { limit }).then(\n (data) => {\n setState((state) => {\n if (state.key !== key) return state;\n return { key, data, error: undefined, isLoading: false };\n });\n return data;\n },\n (error) => {\n setState((state) => {\n if (state.key !== key) return state;\n return { key, data: state.data, error, isLoading: false };\n });\n onErrorRef.current?.(error);\n return Promise.reject(error);\n },\n );\n }\n\n setState({ key, data: undefined, error: undefined, isLoading: false });\n return Promise.resolve([]);\n },\n [options.passthrough],\n );\n\n useEffect(() => {\n // Skip if a stream is already in progress, no need to fetch history\n if (\n options.submittingRef.current != null &&\n options.submittingRef.current === threadId\n ) {\n return;\n }\n\n void fetcher(threadId, limit);\n // The `threadId` and `limit` arguments are already present in `key`\n // Thus we don't need to include them in the dependency array\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [fetcher, key]);\n\n return {\n data: state.data,\n error: state.error,\n isLoading: state.isLoading,\n mutate: (mutateId?: string) => fetcher(mutateId ?? threadId, limit),\n };\n}\n\nfunction useTrackStreamMode() {\n const trackStreamModeRef = useRef<Exclude<StreamMode, \"messages\">[]>([]);\n\n const trackStreamMode = useCallback(\n (...mode: Exclude<StreamMode, \"messages\">[]) => {\n const ref = trackStreamModeRef.current;\n for (const m of mode) {\n if (!ref.includes(m)) ref.push(m);\n }\n },\n [],\n );\n\n return [trackStreamModeRef, trackStreamMode] as [\n typeof trackStreamModeRef,\n typeof trackStreamMode,\n ];\n}\n\nfunction useCallbackStreamMode<\n StateType extends Record<string, unknown> = Record<string, unknown>,\n Bag extends BagTemplate = BagTemplate,\n>(options: UseStreamOptions<StateType, Bag>) {\n const hasUpdateListener = options.onUpdateEvent != null;\n const hasCustomListener = options.onCustomEvent != null;\n const hasLangChainListener = options.onLangChainEvent != null;\n const hasDebugListener = options.onDebugEvent != null;\n const hasCheckpointListener = options.onCheckpointEvent != null;\n const hasTaskListener = options.onTaskEvent != null;\n\n return useMemo(() => {\n const modes: Exclude<StreamMode, \"messages\">[] = [];\n if (hasUpdateListener) modes.push(\"updates\");\n if (hasCustomListener) modes.push(\"custom\");\n if (hasLangChainListener) modes.push(\"events\");\n if (hasDebugListener) modes.push(\"debug\");\n if (hasCheckpointListener) modes.push(\"checkpoints\");\n if (hasTaskListener) modes.push(\"tasks\");\n return modes;\n }, [\n hasUpdateListener,\n hasCustomListener,\n hasLangChainListener,\n hasDebugListener,\n hasCheckpointListener,\n hasTaskListener,\n ]);\n}\n\nexport function useStreamLGP<\n StateType extends Record<string, unknown> = Record<string, unknown>,\n Bag extends BagTemplate = BagTemplate,\n>(options: AnyStreamOptions<StateType, Bag>): UseStream<StateType, Bag> {\n type UpdateType = GetUpdateType<Bag, StateType>;\n type CustomType = GetCustomEventType<Bag>;\n type InterruptType = GetInterruptType<Bag>;\n type ConfigurableType = GetConfigurableType<Bag>;\n type ToolCallType = GetToolCallsType<StateType>;\n\n const reconnectOnMountRef = useRef(options.reconnectOnMount);\n const runMetadataStorage = useMemo(() => {\n if (typeof window === \"undefined\") return null;\n const storage = reconnectOnMountRef.current;\n if (storage === true) return window.sessionStorage;\n if (typeof storage === \"function\") return storage();\n return null;\n }, []);\n\n const client = useMemo(\n () =>\n options.client ??\n new Client({\n apiUrl: options.apiUrl,\n apiKey: options.apiKey,\n callerOptions: options.callerOptions,\n defaultHeaders: options.defaultHeaders,\n }),\n [\n options.client,\n options.apiKey,\n options.apiUrl,\n options.callerOptions,\n options.defaultHeaders,\n ],\n );\n\n const [messageManager] = useState(() => new MessageTupleManager());\n const [stream] = useState(\n () =>\n new StreamManager<StateType, Bag>(messageManager, {\n throttle: options.throttle ?? false,\n subagentToolNames: options.subagentToolNames,\n filterSubagentMessages: options.filterSubagentMessages,\n toMessage: options.toMessage ?? toMessageClass,\n }),\n );\n\n const [pendingRuns] = useState(\n () =>\n new PendingRunsTracker<\n StateType,\n SubmitOptions<StateType, ConfigurableType>\n >(),\n );\n\n useSyncExternalStore(\n pendingRuns.subscribe,\n pendingRuns.getSnapshot,\n pendingRuns.getSnapshot,\n );\n\n const [trackStreamModeRef, trackStreamMode] = useTrackStreamMode();\n const callbackStreamMode = useCallbackStreamMode(options);\n\n const getMessages = (value: StateType): Message[] => {\n const messagesKey = options.messagesKey ?? \"messages\";\n return Array.isArray(value[messagesKey]) ? value[messagesKey] : [];\n };\n\n const setMessages = (current: StateType, messages: Message[]): StateType => {\n const messagesKey = options.messagesKey ?? \"messages\";\n return { ...current, [messagesKey]: messages };\n };\n\n useSyncExternalStore(\n stream.subscribe,\n stream.getSnapshot,\n stream.getSnapshot,\n );\n\n const [threadId, onThreadId] = useControllableThreadId(options);\n\n const threadIdRef = useRef<string | null>(threadId);\n const threadIdStreamingRef = useRef<string | null>(null);\n const threadIdPromiseRef = useRef<Promise<string> | null>(null);\n\n // Cancel the stream if thread ID has changed\n useEffect(() => {\n if (threadIdRef.current !== threadId) {\n threadIdRef.current = threadId;\n stream.clear();\n }\n }, [threadId, stream]);\n\n const switchThread = useCallback(\n (newThreadId: string | null) => {\n if (newThreadId !== threadIdRef.current) {\n const prevThreadId = threadIdRef.current;\n threadIdRef.current = newThreadId;\n stream.clear();\n\n const removed = pendingRuns.removeAll();\n if (prevThreadId && removed.length > 0) {\n void Promise.all(\n removed.map((e) => client.runs.cancel(prevThreadId, e.id)),\n );\n }\n\n onThreadId(newThreadId);\n }\n },\n [stream, pendingRuns, onThreadId, client],\n );\n\n const historyLimit =\n typeof options.fetchStateHistory === \"object\" &&\n options.fetchStateHistory != null\n ? (options.fetchStateHistory.limit ?? false)\n : (options.fetchStateHistory ?? false);\n\n const builtInHistory = useThreadHistory<StateType>(\n client,\n threadId,\n historyLimit,\n {\n passthrough: options.thread != null,\n submittingRef: threadIdStreamingRef,\n onError: options.onError,\n },\n );\n const history = options.thread ?? builtInHistory;\n\n const [branch, setBranch] = useState<string>(\"\");\n const branchContext = getBranchContext(branch, history.data ?? undefined);\n\n const [toolProgressMap, setToolProgressMap] = useState<\n Map<string, ToolProgress>\n >(new Map());\n\n const handleToolEvent = useCallback((data: ToolsStreamEvent[\"data\"]) => {\n setToolProgressMap((prev) => {\n const next = new Map(prev);\n const key = data.toolCallId ?? data.name;\n const existing = next.get(key);\n\n switch (data.event) {\n case \"on_tool_start\": {\n next.set(key, {\n toolCallId: data.toolCallId,\n name: data.name,\n state: \"starting\",\n input: data.input,\n });\n break;\n }\n case \"on_tool_event\": {\n if (existing) {\n next.set(key, { ...existing, state: \"running\", data: data.data });\n }\n break;\n }\n case \"on_tool_end\": {\n if (existing) {\n next.set(key, {\n ...existing,\n state: \"completed\",\n result: data.output,\n });\n }\n break;\n }\n case \"on_tool_error\": {\n if (existing) {\n next.set(key, { ...existing, state: \"error\", error: data.error });\n }\n break;\n }\n default: {\n throw new Error(\n `Unexpected tool event: ${(data as { event: string }).event}`,\n );\n }\n }\n\n return next;\n });\n }, []);\n\n const historyValues =\n branchContext.threadHead?.values ??\n options.initialValues ??\n ({} as StateType);\n\n // Reconstruct subagents from history when:\n // 1. History is loaded (not loading, has data)\n // 2. No active stream is running\n // 3. Subagent filtering is enabled (otherwise subagents aren't tracked)\n // This ensures subagent visualization persists after page refresh or stream completion\n const historyMessages = getMessages(historyValues);\n const shouldReconstructSubagents =\n options.filterSubagentMessages &&\n !stream.isLoading &&\n !history.isLoading &&\n historyMessages.length > 0;\n\n useEffect(() => {\n if (shouldReconstructSubagents) {\n // skipIfPopulated: true ensures we don't overwrite subagents from active streaming\n stream.reconstructSubagents(historyMessages, { skipIfPopulated: true });\n }\n // We intentionally only run this when shouldReconstructSubagents changes\n // to avoid unnecessary reconstructions during streaming\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [shouldReconstructSubagents, historyMessages.length]);\n\n const historyError = (() => {\n const error = branchContext.threadHead?.tasks?.at(-1)?.error;\n if (error == null) return undefined;\n try {\n const parsed = JSON.parse(error) as unknown;\n if (StreamError.isStructuredError(parsed)) return new StreamError(parsed);\n return parsed;\n } catch {\n // do nothing\n }\n return error;\n })();\n\n const messageMetadata = getMessagesMetadataMap({\n initialValues: options.initialValues,\n history: history.data,\n getMessages,\n branchContext,\n });\n\n const stop = () =>\n stream.stop(historyValues, {\n onStop: (args) => {\n if (runMetadataStorage && threadId) {\n const runId = runMetadataStorage.getItem(`lg:stream:${threadId}`);\n if (runId) void client.runs.cancel(threadId, runId);\n runMetadataStorage.removeItem(`lg:stream:${threadId}`);\n }\n\n options.onStop?.(args);\n },\n });\n\n // --- TRANSPORT ---\n const submitDirect = async (\n values: UpdateType | null | undefined,\n submitOptions?: SubmitOptions<StateType, ConfigurableType>,\n ) => {\n setToolProgressMap(new Map());\n\n // Unbranch things\n const checkpointId = submitOptions?.checkpoint?.checkpoint_id;\n setBranch(\n checkpointId != null\n ? (branchContext.branchByCheckpoint[checkpointId]?.branch ?? \"\")\n : \"\",\n );\n\n // When `fetchStateHistory` is requested, thus we assume that branching\n // is enabled. We then need to include the implicit branch.\n const includeImplicitBranch =\n historyLimit === true || typeof historyLimit === \"number\";\n\n const shouldRefetch =\n // We're expecting the whole thread state in onFinish\n options.onFinish != null ||\n // We're fetching history, thus we need the latest checkpoint\n // to ensure we're not accidentally submitting to a wrong branch\n includeImplicitBranch;\n\n let callbackMeta: RunCallbackMeta | undefined;\n let rejoinKey: `lg:stream:${string}` | undefined;\n let usableThreadId = threadId;\n\n const shouldAbortPrevious =\n (submitOptions?.multitaskStrategy === \"interrupt\" ||\n submitOptions?.multitaskStrategy === \"rollback\") &&\n stream.isLoading;\n\n await stream.start(\n async (signal: AbortSignal) => {\n stream.setStreamValues((values) => {\n const prev = { ...historyValues, ...values };\n if (submitOptions?.optimisticValues != null) {\n return {\n ...prev,\n ...(typeof submitOptions.optimisticValues === \"function\"\n ? submitOptions.optimisticValues(prev)\n : submitOptions.optimisticValues),\n };\n }\n\n return { ...prev };\n });\n\n if (!usableThreadId) {\n const threadPromise = client.threads.create({\n threadId: submitOptions?.threadId,\n metadata: submitOptions?.metadata,\n signal,\n });\n\n threadIdPromiseRef.current = threadPromise.then((t) => t.thread_id);\n\n const thread = await threadPromise;\n\n usableThreadId = thread.thread_id;\n\n // Pre-emptively update the thread ID before\n // stream cancellation is kicked off and thread\n // is being refetched\n threadIdRef.current = usableThreadId;\n threadIdStreamingRef.current = usableThreadId;\n\n onThreadId(usableThreadId);\n }\n\n if (!usableThreadId) {\n throw new Error(\"Failed to obtain valid thread ID.\");\n }\n\n threadIdStreamingRef.current = usableThreadId;\n\n const streamMode = unique([\n ...(submitOptions?.streamMode ?? []),\n ...trackStreamModeRef.current,\n ...callbackStreamMode,\n ]);\n\n let checkpoint =\n submitOptions?.checkpoint ??\n (includeImplicitBranch\n ? branchContext.threadHead?.checkpoint\n : undefined) ??\n undefined;\n\n // Avoid specifying a checkpoint if user explicitly set it to null\n if (submitOptions?.checkpoint === null) checkpoint = undefined;\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n if (checkpoint != null) delete checkpoint.thread_id;\n const streamResumable =\n submitOptions?.streamResumable ?? !!runMetadataStorage;\n\n return client.runs.stream(usableThreadId, options.assistantId, {\n input: values as Record<string, unknown>,\n config: submitOptions?.config,\n context: submitOptions?.context,\n command: submitOptions?.command,\n\n interruptBefore: submitOptions?.interruptBefore,\n interruptAfter: submitOptions?.interruptAfter,\n metadata: submitOptions?.metadata,\n multitaskStrategy: submitOptions?.multitaskStrategy,\n onCompletion: submitOptions?.onCompletion,\n onDisconnect:\n submitOptions?.onDisconnect ??\n (streamResumable ? \"continue\" : \"cancel\"),\n\n signal,\n\n checkpoint,\n streamMode,\n streamSubgraphs: submitOptions?.streamSubgraphs,\n streamResumable,\n durability: submitOptions?.durability,\n onRunCreated(params) {\n callbackMeta = {\n run_id: params.run_id,\n thread_id: params.thread_id ?? usableThreadId!,\n };\n\n if (runMetadataStorage) {\n rejoinKey = `lg:stream:${usableThreadId}`;\n runMetadataStorage.setItem(rejoinKey, callbackMeta.run_id);\n }\n\n options.onCreated?.(callbackMeta);\n },\n }) as AsyncGenerator<\n EventStreamEvent<StateType, UpdateType, CustomType>\n >;\n },\n {\n getMessages,\n setMessages,\n\n initialValues: historyValues,\n callbacks: {\n ...options,\n onToolEvent: (data, opts) => {\n handleToolEvent(data);\n options.onToolEvent?.(data, opts);\n },\n },\n\n async onSuccess() {\n if (rejoinKey) runMetadataStorage?.removeItem(rejoinKey);\n\n if (shouldRefetch) {\n const newHistory = await history.mutate(usableThreadId!);\n const lastHead = newHistory?.at(0);\n if (lastHead) {\n // We now have the latest update from /history\n // Thus we can clear the local stream state\n options.onFinish?.(lastHead, callbackMeta);\n return null;\n }\n }\n\n return undefined;\n },\n onError(error) {\n options.onError?.(error, callbackMeta);\n submitOptions?.onError?.(error, callbackMeta);\n },\n onFinish() {\n threadIdStreamingRef.current = null;\n },\n },\n { abortPrevious: shouldAbortPrevious },\n );\n };\n\n const submitDirectRef = useRef(submitDirect);\n submitDirectRef.current = submitDirect;\n\n const submittingRef = useRef(false);\n const drainQueueRef = useRef<() => void>(() => {});\n\n const submit = async (\n values: UpdateType | null | undefined,\n submitOptions?: SubmitOptions<StateType, ConfigurableType>,\n ) => {\n if (stream.isLoading || submittingRef.current) {\n const shouldAbort =\n submitOptions?.multitaskStrategy === \"interrupt\" ||\n submitOptions?.multitaskStrategy === \"rollback\";\n\n if (shouldAbort) {\n submittingRef.current = true;\n try {\n await submitDirect(values, submitOptions);\n } finally {\n submittingRef.current = false;\n }\n return;\n }\n\n let usableThreadId = threadIdRef.current ?? threadId;\n if (!usableThreadId && threadIdPromiseRef.current) {\n usableThreadId = await threadIdPromiseRef.current;\n }\n if (usableThreadId) {\n try {\n const run = await client.runs.create(\n usableThreadId,\n options.assistantId,\n {\n input: values as Record<string, unknown>,\n config: submitOptions?.config,\n context: submitOptions?.context,\n command: submitOptions?.command,\n interruptBefore: submitOptions?.interruptBefore,\n interruptAfter: submitOptions?.interruptAfter,\n metadata: submitOptions?.metadata,\n multitaskStrategy: \"enqueue\",\n streamResumable: true,\n streamSubgraphs: submitOptions?.streamSubgraphs,\n durability: submitOptions?.durability,\n },\n );\n\n pendingRuns.add({\n id: run.run_id,\n values: values as Partial<StateType> | null | undefined,\n options: submitOptions,\n createdAt: new Date(run.created_at),\n });\n } catch (error) {\n options.onError?.(error, undefined);\n submitOptions?.onError?.(error, undefined);\n }\n return;\n }\n }\n\n submittingRef.current = true;\n try {\n await submitDirect(values, submitOptions);\n } finally {\n submittingRef.current = false;\n drainQueueRef.current();\n }\n };\n\n const joinStream = async (\n runId: string,\n lastEventId?: string,\n joinOptions?: {\n streamMode?: StreamMode | StreamMode[];\n filter?: (event: {\n id?: string;\n event: StreamEvent;\n data: unknown;\n }) => boolean;\n },\n ) => {\n setToolProgressMap(new Map());\n\n // eslint-disable-next-line no-param-reassign\n lastEventId ??= \"-1\";\n if (!threadId) return;\n\n const callbackMeta: RunCallbackMeta = {\n thread_id: threadId,\n run_id: runId,\n };\n\n await stream.start(\n async (signal: AbortSignal) => {\n threadIdStreamingRef.current = threadId;\n const stream = client.runs.joinStream(threadId, runId, {\n signal,\n lastEventId,\n streamMode: joinOptions?.streamMode,\n }) as AsyncGenerator<\n EventStreamEvent<StateType, UpdateType, CustomType>\n >;\n\n return joinOptions?.filter != null\n ? filterStream(stream, joinOptions.filter)\n : stream;\n },\n {\n getMessages,\n setMessages,\n\n initialValues: historyValues,\n callbacks: {\n ...options,\n onToolEvent: (data, opts) => {\n handleToolEvent(data);\n options.onToolEvent?.(data, opts);\n },\n },\n async onSuccess() {\n runMetadataStorage?.removeItem(`lg:stream:${threadId}`);\n const newHistory = await history.mutate(threadId);\n const lastHead = newHistory?.at(0);\n if (lastHead) options.onFinish?.(lastHead, callbackMeta);\n },\n onError(error) {\n options.onError?.(error, callbackMeta);\n },\n onFinish() {\n threadIdStreamingRef.current = null;\n },\n },\n );\n };\n\n const joinStreamRef = useRef<typeof joinStream>(joinStream);\n joinStreamRef.current = joinStream;\n\n const drainQueue = () => {\n if (!stream.isLoading && !submittingRef.current && pendingRuns.size > 0) {\n const next = pendingRuns.shift();\n if (next) {\n submittingRef.current = true;\n void joinStreamRef.current(next.id).finally(() => {\n submittingRef.current = false;\n drainQueue();\n });\n }\n }\n };\n\n drainQueueRef.current = drainQueue;\n\n // Drain pending server-side runs when the stream finishes\n useEffect(() => {\n drainQueueRef.current();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [stream.isLoading, pendingRuns.size]);\n\n const reconnectKey = useMemo(() => {\n if (!runMetadataStorage || stream.isLoading) return undefined;\n if (typeof window === \"undefined\") return undefined;\n const runId = runMetadataStorage?.getItem(`lg:stream:${threadId}`);\n if (!runId) return undefined;\n return { runId, threadId };\n }, [runMetadataStorage, stream.isLoading, threadId]);\n\n const shouldReconnect = !!runMetadataStorage;\n const reconnectRef = useRef({ threadId, shouldReconnect });\n\n useEffect(() => {\n // reset shouldReconnect when switching threads\n if (reconnectRef.current.threadId !== threadId) {\n reconnectRef.current = { threadId, shouldReconnect };\n }\n }, [threadId, shouldReconnect]);\n\n useEffect(() => {\n if (reconnectKey && reconnectRef.current.shouldReconnect) {\n reconnectRef.current.shouldReconnect = false;\n void joinStreamRef.current?.(reconnectKey.runId);\n }\n }, [reconnectKey]);\n\n const error = stream.error ?? historyError ?? history.error;\n const values = stream.values ?? historyValues;\n\n return {\n get values() {\n trackStreamMode(\"values\");\n return values;\n },\n\n client,\n assistantId: options.assistantId,\n\n error,\n isLoading: stream.isLoading,\n\n stop,\n submit,\n switchThread,\n\n joinStream,\n\n branch,\n setBranch,\n\n get history() {\n if (historyLimit === false) {\n throw new Error(\n \"`fetchStateHistory` must be set to `true` to use `history`\",\n );\n }\n\n return branchContext.flatHistory;\n },\n\n isThreadLoading: history.isLoading && history.data == null,\n\n get experimental_branchTree() {\n if (historyLimit === false) {\n throw new Error(\n \"`fetchStateHistory` must be set to `true` to use `experimental_branchTree`\",\n );\n }\n\n return branchContext.branchTree;\n },\n\n get interrupts(): Interrupt<InterruptType>[] {\n if (\n values != null &&\n \"__interrupt__\" in values &&\n Array.isArray(values.__interrupt__)\n ) {\n const valueInterrupts = values.__interrupt__;\n if (valueInterrupts.length === 0) return [{ when: \"breakpoint\" }];\n return valueInterrupts;\n }\n\n // If we're deferring to old interrupt detection logic, don't show the interrupt if the stream is loading\n if (stream.isLoading) return [];\n\n // Collect interrupts from ALL tasks (not just the last one)\n const allTasks = branchContext.threadHead?.tasks ?? [];\n const allInterrupts = allTasks.flatMap((t) => t.interrupts ?? []);\n\n if (allInterrupts.length > 0) {\n return allInterrupts as Interrupt<InterruptType>[];\n }\n\n // check if there's a next task present (breakpoint-style interrupt)\n const next = branchContext.threadHead?.next ?? [];\n if (!next.length || error != null) return [];\n return [{ when: \"breakpoint\" }];\n },\n\n get interrupt() {\n return extractInterrupts<InterruptType>(values, {\n error,\n isLoading: stream.isLoading,\n threadState: branchContext.threadHead,\n });\n },\n\n get messages(): BaseMessage[] {\n trackStreamMode(\"messages-tuple\", \"values\");\n return ensureMessageInstances(getMessages(values)) as BaseMessage[];\n },\n\n get toolCalls() {\n trackStreamMode(\"messages-tuple\", \"values\");\n const msgs = getMessages(values) as Message<ToolCallType>[];\n return getToolCallsWithResults<ToolCallType>(msgs);\n },\n\n get toolProgress(): ToolProgress[] {\n trackStreamMode(\"tools\");\n return Array.from(toolProgressMap.values());\n },\n\n getToolCalls(message) {\n trackStreamMode(\"messages-tuple\", \"values\");\n const msgs = getMessages(values) as Message<ToolCallType>[];\n const allToolCalls = getToolCallsWithResults<ToolCallType>(msgs);\n return allToolCalls.filter((tc) => tc.aiMessage.id === message.id);\n },\n\n getMessagesMetadata(\n message: BaseMessage,\n index?: number,\n ): MessageMetadata<StateType> | undefined {\n trackStreamMode(\"values\");\n\n const streamMetadata = messageManager.get(message.id)?.metadata;\n const historyMetadata = messageMetadata?.find(\n (m) => m.messageId === (message.id ?? index),\n );\n\n if (streamMetadata != null || historyMetadata != null) {\n return {\n ...historyMetadata,\n streamMetadata,\n } as MessageMetadata<StateType>;\n }\n\n return undefined;\n },\n\n get subagents() {\n trackStreamMode(\"updates\", \"messages-tuple\");\n return stream.getSubagents();\n },\n\n get activeSubagents() {\n trackStreamMode(\"updates\", \"messages-tuple\");\n return stream.getActiveSubagents();\n },\n\n getSubagent(toolCallId: string) {\n trackStreamMode(\"updates\", \"messages-tuple\");\n return stream.getSubagent(toolCallId);\n },\n\n getSubagentsByType(type: string) {\n trackStreamMode(\"updates\", \"messages-tuple\");\n return stream.getSubagentsByType(type);\n },\n\n getSubagentsByMessage(messageId: string) {\n trackStreamMode(\"updates\", \"messages-tuple\");\n return stream.getSubagentsByMessage(messageId);\n },\n\n queue: {\n get entries() {\n return pendingRuns.entries;\n },\n get size() {\n return pendingRuns.size;\n },\n async cancel(id: string) {\n const usableThreadId = threadIdRef.current ?? threadId;\n const removed = pendingRuns.remove(id);\n if (removed && usableThreadId) {\n await client.runs.cancel(usableThreadId, id);\n }\n return removed;\n },\n async clear() {\n const usableThreadId = threadIdRef.current ?? threadId;\n const removed = pendingRuns.removeAll();\n if (usableThreadId && removed.length > 0) {\n await Promise.all(\n removed.map((e) => client.runs.cancel(usableThreadId!, e.id)),\n );\n }\n },\n },\n };\n}\n"],"mappings":"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"}
|
package/dist/stream.lgp.js
CHANGED
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
|
|
3
2
|
import { useControllableThreadId } from "./thread.js";
|
|
4
3
|
import { useCallback, useEffect, useMemo, useRef, useState, useSyncExternalStore } from "react";
|
|
5
4
|
import { Client, getClientConfigHash } from "@langchain/langgraph-sdk/client";
|
|
6
|
-
import { MessageTupleManager, PendingRunsTracker, StreamError, StreamManager, extractInterrupts, filterStream, getBranchContext, getMessagesMetadataMap, toMessageClass, unique } from "@langchain/langgraph-sdk/ui";
|
|
5
|
+
import { MessageTupleManager, PendingRunsTracker, StreamError, StreamManager, ensureMessageInstances, extractInterrupts, filterStream, getBranchContext, getMessagesMetadataMap, toMessageClass, unique } from "@langchain/langgraph-sdk/ui";
|
|
7
6
|
import { getToolCallsWithResults } from "@langchain/langgraph-sdk/utils";
|
|
8
|
-
|
|
9
7
|
//#region src/stream.lgp.tsx
|
|
10
8
|
function getFetchHistoryKey(client, threadId, limit) {
|
|
11
9
|
return [
|
|
@@ -174,6 +172,7 @@ function useStreamLGP(options) {
|
|
|
174
172
|
const [threadId, onThreadId] = useControllableThreadId(options);
|
|
175
173
|
const threadIdRef = useRef(threadId);
|
|
176
174
|
const threadIdStreamingRef = useRef(null);
|
|
175
|
+
const threadIdPromiseRef = useRef(null);
|
|
177
176
|
useEffect(() => {
|
|
178
177
|
if (threadIdRef.current !== threadId) {
|
|
179
178
|
threadIdRef.current = threadId;
|
|
@@ -298,11 +297,13 @@ function useStreamLGP(options) {
|
|
|
298
297
|
return { ...prev };
|
|
299
298
|
});
|
|
300
299
|
if (!usableThreadId) {
|
|
301
|
-
|
|
300
|
+
const threadPromise = client.threads.create({
|
|
302
301
|
threadId: submitOptions?.threadId,
|
|
303
302
|
metadata: submitOptions?.metadata,
|
|
304
303
|
signal
|
|
305
|
-
})
|
|
304
|
+
});
|
|
305
|
+
threadIdPromiseRef.current = threadPromise.then((t) => t.thread_id);
|
|
306
|
+
usableThreadId = (await threadPromise).thread_id;
|
|
306
307
|
threadIdRef.current = usableThreadId;
|
|
307
308
|
threadIdStreamingRef.current = usableThreadId;
|
|
308
309
|
onThreadId(usableThreadId);
|
|
@@ -370,6 +371,7 @@ function useStreamLGP(options) {
|
|
|
370
371
|
},
|
|
371
372
|
onError(error) {
|
|
372
373
|
options.onError?.(error, callbackMeta);
|
|
374
|
+
submitOptions?.onError?.(error, callbackMeta);
|
|
373
375
|
},
|
|
374
376
|
onFinish() {
|
|
375
377
|
threadIdStreamingRef.current = null;
|
|
@@ -379,6 +381,7 @@ function useStreamLGP(options) {
|
|
|
379
381
|
const submitDirectRef = useRef(submitDirect);
|
|
380
382
|
submitDirectRef.current = submitDirect;
|
|
381
383
|
const submittingRef = useRef(false);
|
|
384
|
+
const drainQueueRef = useRef(() => {});
|
|
382
385
|
const submit = async (values, submitOptions) => {
|
|
383
386
|
if (stream.isLoading || submittingRef.current) {
|
|
384
387
|
if (submitOptions?.multitaskStrategy === "interrupt" || submitOptions?.multitaskStrategy === "rollback") {
|
|
@@ -390,27 +393,33 @@ function useStreamLGP(options) {
|
|
|
390
393
|
}
|
|
391
394
|
return;
|
|
392
395
|
}
|
|
393
|
-
|
|
396
|
+
let usableThreadId = threadIdRef.current ?? threadId;
|
|
397
|
+
if (!usableThreadId && threadIdPromiseRef.current) usableThreadId = await threadIdPromiseRef.current;
|
|
394
398
|
if (usableThreadId) {
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
399
|
+
try {
|
|
400
|
+
const run = await client.runs.create(usableThreadId, options.assistantId, {
|
|
401
|
+
input: values,
|
|
402
|
+
config: submitOptions?.config,
|
|
403
|
+
context: submitOptions?.context,
|
|
404
|
+
command: submitOptions?.command,
|
|
405
|
+
interruptBefore: submitOptions?.interruptBefore,
|
|
406
|
+
interruptAfter: submitOptions?.interruptAfter,
|
|
407
|
+
metadata: submitOptions?.metadata,
|
|
408
|
+
multitaskStrategy: "enqueue",
|
|
409
|
+
streamResumable: true,
|
|
410
|
+
streamSubgraphs: submitOptions?.streamSubgraphs,
|
|
411
|
+
durability: submitOptions?.durability
|
|
412
|
+
});
|
|
413
|
+
pendingRuns.add({
|
|
414
|
+
id: run.run_id,
|
|
415
|
+
values,
|
|
416
|
+
options: submitOptions,
|
|
417
|
+
createdAt: new Date(run.created_at)
|
|
418
|
+
});
|
|
419
|
+
} catch (error) {
|
|
420
|
+
options.onError?.(error, void 0);
|
|
421
|
+
submitOptions?.onError?.(error, void 0);
|
|
422
|
+
}
|
|
414
423
|
return;
|
|
415
424
|
}
|
|
416
425
|
}
|
|
@@ -419,6 +428,7 @@ function useStreamLGP(options) {
|
|
|
419
428
|
await submitDirect(values, submitOptions);
|
|
420
429
|
} finally {
|
|
421
430
|
submittingRef.current = false;
|
|
431
|
+
drainQueueRef.current();
|
|
422
432
|
}
|
|
423
433
|
};
|
|
424
434
|
const joinStream = async (runId, lastEventId, joinOptions) => {
|
|
@@ -463,16 +473,21 @@ function useStreamLGP(options) {
|
|
|
463
473
|
};
|
|
464
474
|
const joinStreamRef = useRef(joinStream);
|
|
465
475
|
joinStreamRef.current = joinStream;
|
|
466
|
-
|
|
476
|
+
const drainQueue = () => {
|
|
467
477
|
if (!stream.isLoading && !submittingRef.current && pendingRuns.size > 0) {
|
|
468
478
|
const next = pendingRuns.shift();
|
|
469
479
|
if (next) {
|
|
470
480
|
submittingRef.current = true;
|
|
471
481
|
joinStreamRef.current(next.id).finally(() => {
|
|
472
482
|
submittingRef.current = false;
|
|
483
|
+
drainQueue();
|
|
473
484
|
});
|
|
474
485
|
}
|
|
475
486
|
}
|
|
487
|
+
};
|
|
488
|
+
drainQueueRef.current = drainQueue;
|
|
489
|
+
useEffect(() => {
|
|
490
|
+
drainQueueRef.current();
|
|
476
491
|
}, [stream.isLoading, pendingRuns.size]);
|
|
477
492
|
const reconnectKey = useMemo(() => {
|
|
478
493
|
if (!runMetadataStorage || stream.isLoading) return void 0;
|
|
@@ -552,7 +567,7 @@ function useStreamLGP(options) {
|
|
|
552
567
|
},
|
|
553
568
|
get messages() {
|
|
554
569
|
trackStreamMode("messages-tuple", "values");
|
|
555
|
-
return getMessages(values);
|
|
570
|
+
return ensureMessageInstances(getMessages(values));
|
|
556
571
|
},
|
|
557
572
|
get toolCalls() {
|
|
558
573
|
trackStreamMode("messages-tuple", "values");
|
|
@@ -616,7 +631,7 @@ function useStreamLGP(options) {
|
|
|
616
631
|
}
|
|
617
632
|
};
|
|
618
633
|
}
|
|
619
|
-
|
|
620
634
|
//#endregion
|
|
621
635
|
export { useStreamLGP };
|
|
636
|
+
|
|
622
637
|
//# sourceMappingURL=stream.lgp.js.map
|