langchain 1.0.0-alpha.8 → 1.0.0-alpha.9
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/LICENSE +6 -6
- package/dist/agents/ReactAgent.cjs +497 -104
- package/dist/agents/ReactAgent.cjs.map +1 -1
- package/dist/agents/ReactAgent.d.cts +140 -17
- package/dist/agents/ReactAgent.d.cts.map +1 -1
- package/dist/agents/ReactAgent.d.ts +140 -17
- package/dist/agents/ReactAgent.d.ts.map +1 -1
- package/dist/agents/ReactAgent.js +500 -107
- package/dist/agents/ReactAgent.js.map +1 -1
- package/dist/agents/annotation.cjs +32 -149
- package/dist/agents/annotation.cjs.map +1 -1
- package/dist/agents/annotation.js +34 -147
- package/dist/agents/annotation.js.map +1 -1
- package/dist/agents/constants.cjs.map +1 -1
- package/dist/agents/constants.d.cts +9 -0
- package/dist/agents/constants.d.cts.map +1 -0
- package/dist/agents/constants.d.ts +9 -0
- package/dist/agents/constants.d.ts.map +1 -0
- package/dist/agents/constants.js.map +1 -1
- package/dist/agents/errors.cjs +2 -1
- package/dist/agents/errors.cjs.map +1 -1
- package/dist/agents/errors.js +2 -1
- package/dist/agents/errors.js.map +1 -1
- package/dist/agents/index.cjs +5 -29
- package/dist/agents/index.cjs.map +1 -1
- package/dist/agents/index.d.cts +157 -128
- package/dist/agents/index.d.cts.map +1 -1
- package/dist/agents/index.d.ts +157 -128
- package/dist/agents/index.d.ts.map +1 -1
- package/dist/agents/index.js +5 -27
- package/dist/agents/index.js.map +1 -1
- package/dist/agents/{middlewareAgent/middleware → middleware}/callLimit.cjs +2 -2
- package/dist/agents/middleware/callLimit.cjs.map +1 -0
- package/dist/agents/{middlewareAgent/middleware → middleware}/callLimit.d.cts +3 -3
- package/dist/agents/middleware/callLimit.d.cts.map +1 -0
- package/dist/agents/{middlewareAgent/middleware → middleware}/callLimit.d.ts +3 -3
- package/dist/agents/middleware/callLimit.d.ts.map +1 -0
- package/dist/agents/{middlewareAgent/middleware → middleware}/callLimit.js +1 -1
- package/dist/agents/middleware/callLimit.js.map +1 -0
- package/dist/agents/{middlewareAgent/middleware → middleware}/contextEditing.cjs +5 -5
- package/dist/agents/middleware/contextEditing.cjs.map +1 -0
- package/dist/agents/{middlewareAgent/middleware → middleware}/contextEditing.d.cts +2 -2
- package/dist/agents/middleware/contextEditing.d.cts.map +1 -0
- package/dist/agents/{middlewareAgent/middleware → middleware}/contextEditing.d.ts +2 -2
- package/dist/agents/middleware/contextEditing.d.ts.map +1 -0
- package/dist/agents/{middlewareAgent/middleware → middleware}/contextEditing.js +4 -4
- package/dist/agents/middleware/contextEditing.js.map +1 -0
- package/dist/agents/{middlewareAgent/middleware → middleware}/dynamicSystemPrompt.cjs +6 -6
- package/dist/agents/middleware/dynamicSystemPrompt.cjs.map +1 -0
- package/dist/agents/{middlewareAgent/middleware → middleware}/dynamicSystemPrompt.d.cts +3 -2
- package/dist/agents/middleware/dynamicSystemPrompt.d.cts.map +1 -0
- package/dist/agents/{middlewareAgent/middleware → middleware}/dynamicSystemPrompt.d.ts +3 -2
- package/dist/agents/middleware/dynamicSystemPrompt.d.ts.map +1 -0
- package/dist/agents/{middlewareAgent/middleware → middleware}/dynamicSystemPrompt.js +6 -6
- package/dist/agents/middleware/dynamicSystemPrompt.js.map +1 -0
- package/dist/agents/middleware/hitl.cjs +404 -0
- package/dist/agents/middleware/hitl.cjs.map +1 -0
- package/dist/agents/middleware/hitl.d.cts +611 -0
- package/dist/agents/middleware/hitl.d.cts.map +1 -0
- package/dist/agents/middleware/hitl.d.ts +611 -0
- package/dist/agents/middleware/hitl.d.ts.map +1 -0
- package/dist/agents/middleware/hitl.js +403 -0
- package/dist/agents/middleware/hitl.js.map +1 -0
- package/dist/agents/middleware/index.cjs +12 -0
- package/dist/agents/middleware/index.js +12 -0
- package/dist/agents/{middlewareAgent/middleware → middleware}/llmToolSelector.cjs +7 -7
- package/dist/agents/middleware/llmToolSelector.cjs.map +1 -0
- package/dist/agents/{middlewareAgent/middleware → middleware}/llmToolSelector.d.cts +2 -2
- package/dist/agents/middleware/llmToolSelector.d.cts.map +1 -0
- package/dist/agents/{middlewareAgent/middleware → middleware}/llmToolSelector.d.ts +2 -2
- package/dist/agents/middleware/llmToolSelector.d.ts.map +1 -0
- package/dist/agents/{middlewareAgent/middleware → middleware}/llmToolSelector.js +6 -6
- package/dist/agents/middleware/llmToolSelector.js.map +1 -0
- package/dist/agents/{middlewareAgent/middleware → middleware}/modelFallback.cjs +28 -21
- package/dist/agents/middleware/modelFallback.cjs.map +1 -0
- package/dist/agents/{middlewareAgent/middleware → middleware}/modelFallback.d.cts +2 -2
- package/dist/agents/middleware/modelFallback.d.cts.map +1 -0
- package/dist/agents/{middlewareAgent/middleware → middleware}/modelFallback.d.ts +2 -2
- package/dist/agents/middleware/modelFallback.d.ts.map +1 -0
- package/dist/agents/{middlewareAgent/middleware → middleware}/modelFallback.js +28 -21
- package/dist/agents/middleware/modelFallback.js.map +1 -0
- package/dist/agents/{middlewareAgent/middleware → middleware}/piiRedaction.cjs +12 -12
- package/dist/agents/middleware/piiRedaction.cjs.map +1 -0
- package/dist/agents/{middlewareAgent/middleware → middleware}/piiRedaction.d.cts +4 -4
- package/dist/agents/middleware/piiRedaction.d.cts.map +1 -0
- package/dist/agents/{middlewareAgent/middleware → middleware}/piiRedaction.d.ts +4 -4
- package/dist/agents/middleware/piiRedaction.d.ts.map +1 -0
- package/dist/agents/{middlewareAgent/middleware → middleware}/piiRedaction.js +10 -10
- package/dist/agents/middleware/piiRedaction.js.map +1 -0
- package/dist/agents/{middlewareAgent/middleware → middleware}/promptCaching.cjs +27 -24
- package/dist/agents/middleware/promptCaching.cjs.map +1 -0
- package/dist/agents/{middlewareAgent/middleware → middleware}/promptCaching.d.cts +3 -3
- package/dist/agents/middleware/promptCaching.d.cts.map +1 -0
- package/dist/agents/{middlewareAgent/middleware → middleware}/promptCaching.d.ts +3 -3
- package/dist/agents/middleware/promptCaching.d.ts.map +1 -0
- package/dist/agents/{middlewareAgent/middleware → middleware}/promptCaching.js +26 -23
- package/dist/agents/middleware/promptCaching.js.map +1 -0
- package/dist/agents/{middlewareAgent/middleware → middleware}/summarization.cjs +7 -12
- package/dist/agents/middleware/summarization.cjs.map +1 -0
- package/dist/agents/{middlewareAgent/middleware → middleware}/summarization.d.cts +3 -3
- package/dist/agents/middleware/summarization.d.cts.map +1 -0
- package/dist/agents/{middlewareAgent/middleware → middleware}/summarization.d.ts +3 -3
- package/dist/agents/middleware/summarization.d.ts.map +1 -0
- package/dist/agents/{middlewareAgent/middleware → middleware}/summarization.js +4 -9
- package/dist/agents/middleware/summarization.js.map +1 -0
- package/dist/agents/middleware/todoListMiddleware.cjs +314 -0
- package/dist/agents/middleware/todoListMiddleware.cjs.map +1 -0
- package/dist/agents/middleware/todoListMiddleware.d.cts +75 -0
- package/dist/agents/middleware/todoListMiddleware.d.cts.map +1 -0
- package/dist/agents/middleware/todoListMiddleware.d.ts +75 -0
- package/dist/agents/middleware/todoListMiddleware.d.ts.map +1 -0
- package/dist/agents/middleware/todoListMiddleware.js +312 -0
- package/dist/agents/middleware/todoListMiddleware.js.map +1 -0
- package/dist/agents/{middlewareAgent/middleware → middleware}/toolCallLimit.cjs +2 -2
- package/dist/agents/middleware/toolCallLimit.cjs.map +1 -0
- package/dist/agents/{middlewareAgent/middleware → middleware}/toolCallLimit.d.cts +3 -3
- package/dist/agents/middleware/toolCallLimit.d.cts.map +1 -0
- package/dist/agents/{middlewareAgent/middleware → middleware}/toolCallLimit.d.ts +3 -3
- package/dist/agents/middleware/toolCallLimit.d.ts.map +1 -0
- package/dist/agents/{middlewareAgent/middleware → middleware}/toolCallLimit.js +1 -1
- package/dist/agents/middleware/toolCallLimit.js.map +1 -0
- package/dist/agents/middleware/types.d.cts +208 -0
- package/dist/agents/middleware/types.d.cts.map +1 -0
- package/dist/agents/middleware/types.d.ts +208 -0
- package/dist/agents/middleware/types.d.ts.map +1 -0
- package/dist/agents/{middlewareAgent/middleware → middleware}/utils.cjs +1 -1
- package/dist/agents/middleware/utils.cjs.map +1 -0
- package/dist/agents/{middlewareAgent/middleware → middleware}/utils.d.cts +1 -1
- package/dist/agents/middleware/utils.d.cts.map +1 -0
- package/dist/agents/{middlewareAgent/middleware → middleware}/utils.d.ts +1 -1
- package/dist/agents/middleware/utils.d.ts.map +1 -0
- package/dist/agents/{middlewareAgent/middleware → middleware}/utils.js +1 -1
- package/dist/agents/middleware/utils.js.map +1 -0
- package/dist/agents/{middlewareAgent/middleware.cjs → middleware.cjs} +11 -4
- package/dist/agents/middleware.cjs.map +1 -0
- package/dist/agents/middleware.d.cts +205 -0
- package/dist/agents/middleware.d.cts.map +1 -0
- package/dist/agents/middleware.d.ts +205 -0
- package/dist/agents/middleware.d.ts.map +1 -0
- package/dist/agents/{middlewareAgent/middleware.js → middleware.js} +11 -4
- package/dist/agents/middleware.js.map +1 -0
- package/dist/agents/nodes/AfterAgentNode.cjs +27 -0
- package/dist/agents/nodes/AfterAgentNode.cjs.map +1 -0
- package/dist/agents/nodes/AfterAgentNode.js +27 -0
- package/dist/agents/nodes/AfterAgentNode.js.map +1 -0
- package/dist/agents/{middlewareAgent/nodes/AfterModalNode.cjs → nodes/AfterModelNode.cjs} +3 -5
- package/dist/agents/nodes/AfterModelNode.cjs.map +1 -0
- package/dist/agents/{middlewareAgent/nodes/AfterModalNode.js → nodes/AfterModelNode.js} +3 -5
- package/dist/agents/nodes/AfterModelNode.js.map +1 -0
- package/dist/agents/nodes/AgentNode.cjs +202 -71
- package/dist/agents/nodes/AgentNode.cjs.map +1 -1
- package/dist/agents/nodes/AgentNode.js +204 -73
- package/dist/agents/nodes/AgentNode.js.map +1 -1
- package/dist/agents/nodes/BeforeAgentNode.cjs +27 -0
- package/dist/agents/nodes/BeforeAgentNode.cjs.map +1 -0
- package/dist/agents/nodes/BeforeAgentNode.js +27 -0
- package/dist/agents/nodes/BeforeAgentNode.js.map +1 -0
- package/dist/agents/{middlewareAgent/nodes/BeforeModalNode.cjs → nodes/BeforeModelNode.cjs} +3 -3
- package/dist/agents/nodes/BeforeModelNode.cjs.map +1 -0
- package/dist/agents/{middlewareAgent/nodes/BeforeModalNode.js → nodes/BeforeModelNode.js} +3 -3
- package/dist/agents/nodes/BeforeModelNode.js.map +1 -0
- package/dist/agents/nodes/ToolNode.cjs +157 -47
- package/dist/agents/nodes/ToolNode.cjs.map +1 -1
- package/dist/agents/nodes/ToolNode.js +158 -48
- package/dist/agents/nodes/ToolNode.js.map +1 -1
- package/dist/agents/{middlewareAgent/nodes → nodes}/middleware.cjs +35 -10
- package/dist/agents/nodes/middleware.cjs.map +1 -0
- package/dist/agents/{middlewareAgent/nodes → nodes}/middleware.js +34 -9
- package/dist/agents/nodes/middleware.js.map +1 -0
- package/dist/agents/nodes/types.d.cts +57 -0
- package/dist/agents/nodes/types.d.cts.map +1 -0
- package/dist/agents/nodes/types.d.ts +57 -0
- package/dist/agents/nodes/types.d.ts.map +1 -0
- package/dist/agents/nodes/utils.cjs +64 -0
- package/dist/agents/nodes/utils.cjs.map +1 -1
- package/dist/agents/nodes/utils.js +62 -1
- package/dist/agents/nodes/utils.js.map +1 -1
- package/dist/agents/responses.cjs +1 -1
- package/dist/agents/responses.cjs.map +1 -1
- package/dist/agents/responses.d.cts +9 -2
- package/dist/agents/responses.d.cts.map +1 -1
- package/dist/agents/responses.d.ts +8 -1
- package/dist/agents/responses.d.ts.map +1 -1
- package/dist/agents/responses.js +1 -1
- package/dist/agents/responses.js.map +1 -1
- package/dist/agents/runtime.d.cts +123 -0
- package/dist/agents/runtime.d.cts.map +1 -0
- package/dist/agents/runtime.d.ts +123 -0
- package/dist/agents/runtime.d.ts.map +1 -0
- package/dist/agents/tests/utils.cjs +13 -5
- package/dist/agents/tests/utils.cjs.map +1 -1
- package/dist/agents/tests/utils.d.cts +17 -8
- package/dist/agents/tests/utils.d.cts.map +1 -1
- package/dist/agents/tests/utils.d.ts +14 -5
- package/dist/agents/tests/utils.d.ts.map +1 -1
- package/dist/agents/tests/utils.js +13 -5
- package/dist/agents/tests/utils.js.map +1 -1
- package/dist/agents/tools.d.cts +9 -0
- package/dist/agents/tools.d.cts.map +1 -0
- package/dist/agents/tools.d.ts +9 -0
- package/dist/agents/tools.d.ts.map +1 -0
- package/dist/agents/types.d.cts +125 -126
- package/dist/agents/types.d.cts.map +1 -1
- package/dist/agents/types.d.ts +125 -126
- package/dist/agents/types.d.ts.map +1 -1
- package/dist/agents/utils.cjs +141 -38
- package/dist/agents/utils.cjs.map +1 -1
- package/dist/agents/utils.js +142 -40
- package/dist/agents/utils.js.map +1 -1
- package/dist/chat_models/universal.cjs +4 -0
- package/dist/chat_models/universal.cjs.map +1 -1
- package/dist/chat_models/universal.d.cts +6 -2
- package/dist/chat_models/universal.d.cts.map +1 -1
- package/dist/chat_models/universal.d.ts +4 -0
- package/dist/chat_models/universal.d.ts.map +1 -1
- package/dist/chat_models/universal.js +4 -0
- package/dist/chat_models/universal.js.map +1 -1
- package/dist/hub/base.cjs +4 -3
- package/dist/hub/base.cjs.map +1 -1
- package/dist/hub/base.d.cts +0 -4
- package/dist/hub/base.d.cts.map +1 -1
- package/dist/hub/base.d.ts +0 -4
- package/dist/hub/base.d.ts.map +1 -1
- package/dist/hub/base.js +4 -3
- package/dist/hub/base.js.map +1 -1
- package/dist/index.cjs +18 -38
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +21 -21
- package/dist/index.d.ts +21 -21
- package/dist/index.js +17 -26
- package/dist/index.js.map +1 -1
- package/dist/load/import_map.cjs +0 -2
- package/dist/load/import_map.cjs.map +1 -1
- package/dist/load/import_map.js +0 -2
- package/dist/load/import_map.js.map +1 -1
- package/dist/node_modules/.pnpm/{langsmith@0.3.64_@opentelemetry_api@1.9.0_openai@5.11.0_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_ → langsmith@0.3.74_@opentelemetry_api@1.9.0_openai@5.12.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_}/node_modules/langsmith/dist/client.cjs +74 -18
- package/dist/node_modules/.pnpm/langsmith@0.3.74_@opentelemetry_api@1.9.0_openai@5.12.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_/node_modules/langsmith/dist/client.cjs.map +1 -0
- package/dist/node_modules/.pnpm/{langsmith@0.3.64_@opentelemetry_api@1.9.0_openai@5.11.0_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_ → langsmith@0.3.74_@opentelemetry_api@1.9.0_openai@5.12.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_}/node_modules/langsmith/dist/client.js +75 -19
- package/dist/node_modules/.pnpm/langsmith@0.3.74_@opentelemetry_api@1.9.0_openai@5.12.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_/node_modules/langsmith/dist/client.js.map +1 -0
- package/dist/node_modules/.pnpm/{langsmith@0.3.64_@opentelemetry_api@1.9.0_openai@5.11.0_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_ → langsmith@0.3.74_@opentelemetry_api@1.9.0_openai@5.12.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_}/node_modules/langsmith/dist/env.cjs +1 -1
- package/dist/node_modules/.pnpm/{langsmith@0.3.64_@opentelemetry_api@1.9.0_openai@5.11.0_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_ → langsmith@0.3.74_@opentelemetry_api@1.9.0_openai@5.12.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_}/node_modules/langsmith/dist/env.cjs.map +1 -1
- package/dist/node_modules/.pnpm/{langsmith@0.3.64_@opentelemetry_api@1.9.0_openai@5.11.0_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_ → langsmith@0.3.74_@opentelemetry_api@1.9.0_openai@5.12.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_}/node_modules/langsmith/dist/env.js +1 -1
- package/dist/node_modules/.pnpm/{langsmith@0.3.64_@opentelemetry_api@1.9.0_openai@5.11.0_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_ → langsmith@0.3.74_@opentelemetry_api@1.9.0_openai@5.12.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_}/node_modules/langsmith/dist/env.js.map +1 -1
- package/dist/node_modules/.pnpm/{langsmith@0.3.64_@opentelemetry_api@1.9.0_openai@5.11.0_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_ → langsmith@0.3.74_@opentelemetry_api@1.9.0_openai@5.12.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_}/node_modules/langsmith/dist/experimental/otel/constants.cjs +1 -1
- package/dist/node_modules/.pnpm/{langsmith@0.3.64_@opentelemetry_api@1.9.0_openai@5.11.0_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_ → langsmith@0.3.74_@opentelemetry_api@1.9.0_openai@5.12.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_}/node_modules/langsmith/dist/experimental/otel/constants.cjs.map +1 -1
- package/dist/node_modules/.pnpm/{langsmith@0.3.64_@opentelemetry_api@1.9.0_openai@5.11.0_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_ → langsmith@0.3.74_@opentelemetry_api@1.9.0_openai@5.12.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_}/node_modules/langsmith/dist/experimental/otel/constants.js +1 -1
- package/dist/node_modules/.pnpm/{langsmith@0.3.64_@opentelemetry_api@1.9.0_openai@5.11.0_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_ → langsmith@0.3.74_@opentelemetry_api@1.9.0_openai@5.12.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_}/node_modules/langsmith/dist/experimental/otel/constants.js.map +1 -1
- package/dist/node_modules/.pnpm/{langsmith@0.3.64_@opentelemetry_api@1.9.0_openai@5.11.0_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_ → langsmith@0.3.74_@opentelemetry_api@1.9.0_openai@5.12.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_}/node_modules/langsmith/dist/experimental/otel/translator.cjs +1 -1
- package/dist/node_modules/.pnpm/{langsmith@0.3.64_@opentelemetry_api@1.9.0_openai@5.11.0_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_ → langsmith@0.3.74_@opentelemetry_api@1.9.0_openai@5.12.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_}/node_modules/langsmith/dist/experimental/otel/translator.cjs.map +1 -1
- package/dist/node_modules/.pnpm/{langsmith@0.3.64_@opentelemetry_api@1.9.0_openai@5.11.0_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_ → langsmith@0.3.74_@opentelemetry_api@1.9.0_openai@5.12.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_}/node_modules/langsmith/dist/experimental/otel/translator.js +1 -1
- package/dist/node_modules/.pnpm/{langsmith@0.3.64_@opentelemetry_api@1.9.0_openai@5.11.0_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_ → langsmith@0.3.74_@opentelemetry_api@1.9.0_openai@5.12.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_}/node_modules/langsmith/dist/experimental/otel/translator.js.map +1 -1
- package/dist/node_modules/.pnpm/{langsmith@0.3.64_@opentelemetry_api@1.9.0_openai@5.11.0_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_ → langsmith@0.3.74_@opentelemetry_api@1.9.0_openai@5.12.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_}/node_modules/langsmith/dist/index.cjs +2 -2
- package/dist/node_modules/.pnpm/{langsmith@0.3.64_@opentelemetry_api@1.9.0_openai@5.11.0_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_ → langsmith@0.3.74_@opentelemetry_api@1.9.0_openai@5.12.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_}/node_modules/langsmith/dist/index.cjs.map +1 -1
- package/dist/node_modules/.pnpm/{langsmith@0.3.64_@opentelemetry_api@1.9.0_openai@5.11.0_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_ → langsmith@0.3.74_@opentelemetry_api@1.9.0_openai@5.12.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_}/node_modules/langsmith/dist/index.js +2 -2
- package/dist/node_modules/.pnpm/{langsmith@0.3.64_@opentelemetry_api@1.9.0_openai@5.11.0_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_ → langsmith@0.3.74_@opentelemetry_api@1.9.0_openai@5.12.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_}/node_modules/langsmith/dist/index.js.map +1 -1
- package/dist/node_modules/.pnpm/{langsmith@0.3.64_@opentelemetry_api@1.9.0_openai@5.11.0_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_ → langsmith@0.3.74_@opentelemetry_api@1.9.0_openai@5.12.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_}/node_modules/langsmith/dist/run_trees.cjs +7 -5
- package/dist/node_modules/.pnpm/langsmith@0.3.74_@opentelemetry_api@1.9.0_openai@5.12.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_/node_modules/langsmith/dist/run_trees.cjs.map +1 -0
- package/dist/node_modules/.pnpm/{langsmith@0.3.64_@opentelemetry_api@1.9.0_openai@5.11.0_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_ → langsmith@0.3.74_@opentelemetry_api@1.9.0_openai@5.12.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_}/node_modules/langsmith/dist/run_trees.js +7 -5
- package/dist/node_modules/.pnpm/langsmith@0.3.74_@opentelemetry_api@1.9.0_openai@5.12.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_/node_modules/langsmith/dist/run_trees.js.map +1 -0
- package/dist/node_modules/.pnpm/{langsmith@0.3.64_@opentelemetry_api@1.9.0_openai@5.11.0_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_ → langsmith@0.3.74_@opentelemetry_api@1.9.0_openai@5.12.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_}/node_modules/langsmith/dist/singletons/constants.cjs +1 -1
- package/dist/node_modules/.pnpm/{langsmith@0.3.64_@opentelemetry_api@1.9.0_openai@5.11.0_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_ → langsmith@0.3.74_@opentelemetry_api@1.9.0_openai@5.12.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_}/node_modules/langsmith/dist/singletons/constants.cjs.map +1 -1
- package/dist/node_modules/.pnpm/{langsmith@0.3.64_@opentelemetry_api@1.9.0_openai@5.11.0_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_ → langsmith@0.3.74_@opentelemetry_api@1.9.0_openai@5.12.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_}/node_modules/langsmith/dist/singletons/constants.js +1 -1
- package/dist/node_modules/.pnpm/{langsmith@0.3.64_@opentelemetry_api@1.9.0_openai@5.11.0_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_ → langsmith@0.3.74_@opentelemetry_api@1.9.0_openai@5.12.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_}/node_modules/langsmith/dist/singletons/constants.js.map +1 -1
- package/dist/node_modules/.pnpm/{langsmith@0.3.64_@opentelemetry_api@1.9.0_openai@5.11.0_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_ → langsmith@0.3.74_@opentelemetry_api@1.9.0_openai@5.12.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_}/node_modules/langsmith/dist/singletons/fetch.cjs +1 -1
- package/dist/node_modules/.pnpm/{langsmith@0.3.64_@opentelemetry_api@1.9.0_openai@5.11.0_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_ → langsmith@0.3.74_@opentelemetry_api@1.9.0_openai@5.12.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_}/node_modules/langsmith/dist/singletons/fetch.cjs.map +1 -1
- package/dist/node_modules/.pnpm/{langsmith@0.3.64_@opentelemetry_api@1.9.0_openai@5.11.0_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_ → langsmith@0.3.74_@opentelemetry_api@1.9.0_openai@5.12.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_}/node_modules/langsmith/dist/singletons/fetch.js +1 -1
- package/dist/node_modules/.pnpm/{langsmith@0.3.64_@opentelemetry_api@1.9.0_openai@5.11.0_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_ → langsmith@0.3.74_@opentelemetry_api@1.9.0_openai@5.12.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_}/node_modules/langsmith/dist/singletons/fetch.js.map +1 -1
- package/dist/node_modules/.pnpm/{langsmith@0.3.64_@opentelemetry_api@1.9.0_openai@5.11.0_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_ → langsmith@0.3.74_@opentelemetry_api@1.9.0_openai@5.12.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_}/node_modules/langsmith/dist/singletons/otel.cjs +1 -1
- package/dist/node_modules/.pnpm/{langsmith@0.3.64_@opentelemetry_api@1.9.0_openai@5.11.0_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_ → langsmith@0.3.74_@opentelemetry_api@1.9.0_openai@5.12.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_}/node_modules/langsmith/dist/singletons/otel.cjs.map +1 -1
- package/dist/node_modules/.pnpm/{langsmith@0.3.64_@opentelemetry_api@1.9.0_openai@5.11.0_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_ → langsmith@0.3.74_@opentelemetry_api@1.9.0_openai@5.12.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_}/node_modules/langsmith/dist/singletons/otel.js +1 -1
- package/dist/node_modules/.pnpm/{langsmith@0.3.64_@opentelemetry_api@1.9.0_openai@5.11.0_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_ → langsmith@0.3.74_@opentelemetry_api@1.9.0_openai@5.12.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_}/node_modules/langsmith/dist/singletons/otel.js.map +1 -1
- package/dist/node_modules/.pnpm/{langsmith@0.3.64_@opentelemetry_api@1.9.0_openai@5.11.0_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_ → langsmith@0.3.74_@opentelemetry_api@1.9.0_openai@5.12.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_}/node_modules/langsmith/dist/utils/_uuid.cjs +1 -1
- package/dist/node_modules/.pnpm/{langsmith@0.3.64_@opentelemetry_api@1.9.0_openai@5.11.0_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_ → langsmith@0.3.74_@opentelemetry_api@1.9.0_openai@5.12.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_}/node_modules/langsmith/dist/utils/_uuid.cjs.map +1 -1
- package/dist/node_modules/.pnpm/{langsmith@0.3.64_@opentelemetry_api@1.9.0_openai@5.11.0_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_ → langsmith@0.3.74_@opentelemetry_api@1.9.0_openai@5.12.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_}/node_modules/langsmith/dist/utils/_uuid.js +1 -1
- package/dist/node_modules/.pnpm/{langsmith@0.3.64_@opentelemetry_api@1.9.0_openai@5.11.0_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_ → langsmith@0.3.74_@opentelemetry_api@1.9.0_openai@5.12.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_}/node_modules/langsmith/dist/utils/_uuid.js.map +1 -1
- package/dist/node_modules/.pnpm/{langsmith@0.3.64_@opentelemetry_api@1.9.0_openai@5.11.0_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_ → langsmith@0.3.74_@opentelemetry_api@1.9.0_openai@5.12.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_}/node_modules/langsmith/dist/utils/async_caller.cjs +1 -1
- package/dist/node_modules/.pnpm/{langsmith@0.3.64_@opentelemetry_api@1.9.0_openai@5.11.0_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_ → langsmith@0.3.74_@opentelemetry_api@1.9.0_openai@5.12.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_}/node_modules/langsmith/dist/utils/async_caller.cjs.map +1 -1
- package/dist/node_modules/.pnpm/{langsmith@0.3.64_@opentelemetry_api@1.9.0_openai@5.11.0_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_ → langsmith@0.3.74_@opentelemetry_api@1.9.0_openai@5.12.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_}/node_modules/langsmith/dist/utils/async_caller.js +1 -1
- package/dist/node_modules/.pnpm/{langsmith@0.3.64_@opentelemetry_api@1.9.0_openai@5.11.0_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_ → langsmith@0.3.74_@opentelemetry_api@1.9.0_openai@5.12.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_}/node_modules/langsmith/dist/utils/async_caller.js.map +1 -1
- package/dist/node_modules/.pnpm/{langsmith@0.3.64_@opentelemetry_api@1.9.0_openai@5.11.0_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_ → langsmith@0.3.74_@opentelemetry_api@1.9.0_openai@5.12.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_}/node_modules/langsmith/dist/utils/env.cjs +19 -23
- package/dist/node_modules/.pnpm/langsmith@0.3.74_@opentelemetry_api@1.9.0_openai@5.12.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_/node_modules/langsmith/dist/utils/env.cjs.map +1 -0
- package/dist/node_modules/.pnpm/{langsmith@0.3.64_@opentelemetry_api@1.9.0_openai@5.11.0_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_ → langsmith@0.3.74_@opentelemetry_api@1.9.0_openai@5.12.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_}/node_modules/langsmith/dist/utils/env.js +19 -23
- package/dist/node_modules/.pnpm/langsmith@0.3.74_@opentelemetry_api@1.9.0_openai@5.12.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_/node_modules/langsmith/dist/utils/env.js.map +1 -0
- package/dist/node_modules/.pnpm/{langsmith@0.3.64_@opentelemetry_api@1.9.0_openai@5.11.0_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_ → langsmith@0.3.74_@opentelemetry_api@1.9.0_openai@5.12.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_}/node_modules/langsmith/dist/utils/error.cjs +16 -3
- package/dist/node_modules/.pnpm/langsmith@0.3.74_@opentelemetry_api@1.9.0_openai@5.12.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_/node_modules/langsmith/dist/utils/error.cjs.map +1 -0
- package/dist/node_modules/.pnpm/{langsmith@0.3.64_@opentelemetry_api@1.9.0_openai@5.11.0_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_ → langsmith@0.3.74_@opentelemetry_api@1.9.0_openai@5.12.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_}/node_modules/langsmith/dist/utils/error.js +16 -3
- package/dist/node_modules/.pnpm/langsmith@0.3.74_@opentelemetry_api@1.9.0_openai@5.12.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_/node_modules/langsmith/dist/utils/error.js.map +1 -0
- package/dist/node_modules/.pnpm/{langsmith@0.3.64_@opentelemetry_api@1.9.0_openai@5.11.0_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_ → langsmith@0.3.74_@opentelemetry_api@1.9.0_openai@5.12.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_}/node_modules/langsmith/dist/utils/fast-safe-stringify/index.cjs +1 -1
- package/dist/node_modules/.pnpm/{langsmith@0.3.64_@opentelemetry_api@1.9.0_openai@5.11.0_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_ → langsmith@0.3.74_@opentelemetry_api@1.9.0_openai@5.12.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_}/node_modules/langsmith/dist/utils/fast-safe-stringify/index.cjs.map +1 -1
- package/dist/node_modules/.pnpm/{langsmith@0.3.64_@opentelemetry_api@1.9.0_openai@5.11.0_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_ → langsmith@0.3.74_@opentelemetry_api@1.9.0_openai@5.12.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_}/node_modules/langsmith/dist/utils/fast-safe-stringify/index.js +1 -1
- package/dist/node_modules/.pnpm/{langsmith@0.3.64_@opentelemetry_api@1.9.0_openai@5.11.0_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_ → langsmith@0.3.74_@opentelemetry_api@1.9.0_openai@5.12.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_}/node_modules/langsmith/dist/utils/fast-safe-stringify/index.js.map +1 -1
- package/dist/node_modules/.pnpm/{langsmith@0.3.64_@opentelemetry_api@1.9.0_openai@5.11.0_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_ → langsmith@0.3.74_@opentelemetry_api@1.9.0_openai@5.12.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_}/node_modules/langsmith/dist/utils/messages.cjs +1 -1
- package/dist/node_modules/.pnpm/{langsmith@0.3.64_@opentelemetry_api@1.9.0_openai@5.11.0_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_ → langsmith@0.3.74_@opentelemetry_api@1.9.0_openai@5.12.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_}/node_modules/langsmith/dist/utils/messages.cjs.map +1 -1
- package/dist/node_modules/.pnpm/{langsmith@0.3.64_@opentelemetry_api@1.9.0_openai@5.11.0_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_ → langsmith@0.3.74_@opentelemetry_api@1.9.0_openai@5.12.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_}/node_modules/langsmith/dist/utils/messages.js +1 -1
- package/dist/node_modules/.pnpm/{langsmith@0.3.64_@opentelemetry_api@1.9.0_openai@5.11.0_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_ → langsmith@0.3.74_@opentelemetry_api@1.9.0_openai@5.12.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_}/node_modules/langsmith/dist/utils/messages.js.map +1 -1
- package/dist/node_modules/.pnpm/{langsmith@0.3.64_@opentelemetry_api@1.9.0_openai@5.11.0_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_ → langsmith@0.3.74_@opentelemetry_api@1.9.0_openai@5.12.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_}/node_modules/langsmith/dist/utils/project.cjs +1 -1
- package/dist/node_modules/.pnpm/{langsmith@0.3.64_@opentelemetry_api@1.9.0_openai@5.11.0_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_ → langsmith@0.3.74_@opentelemetry_api@1.9.0_openai@5.12.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_}/node_modules/langsmith/dist/utils/project.cjs.map +1 -1
- package/dist/node_modules/.pnpm/{langsmith@0.3.64_@opentelemetry_api@1.9.0_openai@5.11.0_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_ → langsmith@0.3.74_@opentelemetry_api@1.9.0_openai@5.12.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_}/node_modules/langsmith/dist/utils/project.js +1 -1
- package/dist/node_modules/.pnpm/{langsmith@0.3.64_@opentelemetry_api@1.9.0_openai@5.11.0_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_ → langsmith@0.3.74_@opentelemetry_api@1.9.0_openai@5.12.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_}/node_modules/langsmith/dist/utils/project.js.map +1 -1
- package/dist/node_modules/.pnpm/{langsmith@0.3.64_@opentelemetry_api@1.9.0_openai@5.11.0_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_ → langsmith@0.3.74_@opentelemetry_api@1.9.0_openai@5.12.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_}/node_modules/langsmith/dist/utils/prompts.cjs +1 -1
- package/dist/node_modules/.pnpm/{langsmith@0.3.64_@opentelemetry_api@1.9.0_openai@5.11.0_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_ → langsmith@0.3.74_@opentelemetry_api@1.9.0_openai@5.12.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_}/node_modules/langsmith/dist/utils/prompts.cjs.map +1 -1
- package/dist/node_modules/.pnpm/{langsmith@0.3.64_@opentelemetry_api@1.9.0_openai@5.11.0_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_ → langsmith@0.3.74_@opentelemetry_api@1.9.0_openai@5.12.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_}/node_modules/langsmith/dist/utils/prompts.js +1 -1
- package/dist/node_modules/.pnpm/{langsmith@0.3.64_@opentelemetry_api@1.9.0_openai@5.11.0_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_ → langsmith@0.3.74_@opentelemetry_api@1.9.0_openai@5.12.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_}/node_modules/langsmith/dist/utils/prompts.js.map +1 -1
- package/dist/node_modules/.pnpm/{langsmith@0.3.64_@opentelemetry_api@1.9.0_openai@5.11.0_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_ → langsmith@0.3.74_@opentelemetry_api@1.9.0_openai@5.12.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_}/node_modules/langsmith/dist/utils/warn.cjs +1 -1
- package/dist/node_modules/.pnpm/{langsmith@0.3.64_@opentelemetry_api@1.9.0_openai@5.11.0_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_ → langsmith@0.3.74_@opentelemetry_api@1.9.0_openai@5.12.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_}/node_modules/langsmith/dist/utils/warn.cjs.map +1 -1
- package/dist/node_modules/.pnpm/{langsmith@0.3.64_@opentelemetry_api@1.9.0_openai@5.11.0_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_ → langsmith@0.3.74_@opentelemetry_api@1.9.0_openai@5.12.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_}/node_modules/langsmith/dist/utils/warn.js +1 -1
- package/dist/node_modules/.pnpm/{langsmith@0.3.64_@opentelemetry_api@1.9.0_openai@5.11.0_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_ → langsmith@0.3.74_@opentelemetry_api@1.9.0_openai@5.12.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_}/node_modules/langsmith/dist/utils/warn.js.map +1 -1
- package/package.json +4 -18
- package/dist/agents/RunnableCallable.d.cts +0 -41
- package/dist/agents/RunnableCallable.d.cts.map +0 -1
- package/dist/agents/RunnableCallable.d.ts +0 -41
- package/dist/agents/RunnableCallable.d.ts.map +0 -1
- package/dist/agents/annotation.d.cts +0 -52
- package/dist/agents/annotation.d.cts.map +0 -1
- package/dist/agents/annotation.d.ts +0 -52
- package/dist/agents/annotation.d.ts.map +0 -1
- package/dist/agents/createAgent.cjs +0 -10
- package/dist/agents/createAgent.cjs.map +0 -1
- package/dist/agents/createAgent.js +0 -10
- package/dist/agents/createAgent.js.map +0 -1
- package/dist/agents/interrupt.cjs +0 -2
- package/dist/agents/interrupt.d.cts +0 -81
- package/dist/agents/interrupt.d.cts.map +0 -1
- package/dist/agents/interrupt.d.ts +0 -81
- package/dist/agents/interrupt.d.ts.map +0 -1
- package/dist/agents/interrupt.js +0 -3
- package/dist/agents/middlewareAgent/ReactAgent.cjs +0 -579
- package/dist/agents/middlewareAgent/ReactAgent.cjs.map +0 -1
- package/dist/agents/middlewareAgent/ReactAgent.d.cts +0 -234
- package/dist/agents/middlewareAgent/ReactAgent.d.cts.map +0 -1
- package/dist/agents/middlewareAgent/ReactAgent.d.ts +0 -234
- package/dist/agents/middlewareAgent/ReactAgent.d.ts.map +0 -1
- package/dist/agents/middlewareAgent/ReactAgent.js +0 -578
- package/dist/agents/middlewareAgent/ReactAgent.js.map +0 -1
- package/dist/agents/middlewareAgent/annotation.cjs +0 -45
- package/dist/agents/middlewareAgent/annotation.cjs.map +0 -1
- package/dist/agents/middlewareAgent/annotation.js +0 -44
- package/dist/agents/middlewareAgent/annotation.js.map +0 -1
- package/dist/agents/middlewareAgent/constants.d.cts +0 -5
- package/dist/agents/middlewareAgent/constants.d.cts.map +0 -1
- package/dist/agents/middlewareAgent/constants.d.ts +0 -5
- package/dist/agents/middlewareAgent/constants.d.ts.map +0 -1
- package/dist/agents/middlewareAgent/index.cjs +0 -11
- package/dist/agents/middlewareAgent/index.cjs.map +0 -1
- package/dist/agents/middlewareAgent/index.js +0 -11
- package/dist/agents/middlewareAgent/index.js.map +0 -1
- package/dist/agents/middlewareAgent/middleware/callLimit.cjs.map +0 -1
- package/dist/agents/middlewareAgent/middleware/callLimit.d.cts.map +0 -1
- package/dist/agents/middlewareAgent/middleware/callLimit.d.ts.map +0 -1
- package/dist/agents/middlewareAgent/middleware/callLimit.js.map +0 -1
- package/dist/agents/middlewareAgent/middleware/contextEditing.cjs.map +0 -1
- package/dist/agents/middlewareAgent/middleware/contextEditing.d.cts.map +0 -1
- package/dist/agents/middlewareAgent/middleware/contextEditing.d.ts.map +0 -1
- package/dist/agents/middlewareAgent/middleware/contextEditing.js.map +0 -1
- package/dist/agents/middlewareAgent/middleware/dynamicSystemPrompt.cjs.map +0 -1
- package/dist/agents/middlewareAgent/middleware/dynamicSystemPrompt.d.cts.map +0 -1
- package/dist/agents/middlewareAgent/middleware/dynamicSystemPrompt.d.ts.map +0 -1
- package/dist/agents/middlewareAgent/middleware/dynamicSystemPrompt.js.map +0 -1
- package/dist/agents/middlewareAgent/middleware/hitl.cjs +0 -341
- package/dist/agents/middlewareAgent/middleware/hitl.cjs.map +0 -1
- package/dist/agents/middlewareAgent/middleware/hitl.d.cts +0 -524
- package/dist/agents/middlewareAgent/middleware/hitl.d.cts.map +0 -1
- package/dist/agents/middlewareAgent/middleware/hitl.d.ts +0 -524
- package/dist/agents/middlewareAgent/middleware/hitl.d.ts.map +0 -1
- package/dist/agents/middlewareAgent/middleware/hitl.js +0 -340
- package/dist/agents/middlewareAgent/middleware/hitl.js.map +0 -1
- package/dist/agents/middlewareAgent/middleware/index.cjs +0 -52
- package/dist/agents/middlewareAgent/middleware/index.cjs.map +0 -1
- package/dist/agents/middlewareAgent/middleware/index.d.cts +0 -13
- package/dist/agents/middlewareAgent/middleware/index.d.ts +0 -13
- package/dist/agents/middlewareAgent/middleware/index.js +0 -34
- package/dist/agents/middlewareAgent/middleware/index.js.map +0 -1
- package/dist/agents/middlewareAgent/middleware/llmToolSelector.cjs.map +0 -1
- package/dist/agents/middlewareAgent/middleware/llmToolSelector.d.cts.map +0 -1
- package/dist/agents/middlewareAgent/middleware/llmToolSelector.d.ts.map +0 -1
- package/dist/agents/middlewareAgent/middleware/llmToolSelector.js.map +0 -1
- package/dist/agents/middlewareAgent/middleware/modelFallback.cjs.map +0 -1
- package/dist/agents/middlewareAgent/middleware/modelFallback.d.cts.map +0 -1
- package/dist/agents/middlewareAgent/middleware/modelFallback.d.ts.map +0 -1
- package/dist/agents/middlewareAgent/middleware/modelFallback.js.map +0 -1
- package/dist/agents/middlewareAgent/middleware/piiRedaction.cjs.map +0 -1
- package/dist/agents/middlewareAgent/middleware/piiRedaction.d.cts.map +0 -1
- package/dist/agents/middlewareAgent/middleware/piiRedaction.d.ts.map +0 -1
- package/dist/agents/middlewareAgent/middleware/piiRedaction.js.map +0 -1
- package/dist/agents/middlewareAgent/middleware/promptCaching.cjs.map +0 -1
- package/dist/agents/middlewareAgent/middleware/promptCaching.d.cts.map +0 -1
- package/dist/agents/middlewareAgent/middleware/promptCaching.d.ts.map +0 -1
- package/dist/agents/middlewareAgent/middleware/promptCaching.js.map +0 -1
- package/dist/agents/middlewareAgent/middleware/summarization.cjs.map +0 -1
- package/dist/agents/middlewareAgent/middleware/summarization.d.cts.map +0 -1
- package/dist/agents/middlewareAgent/middleware/summarization.d.ts.map +0 -1
- package/dist/agents/middlewareAgent/middleware/summarization.js.map +0 -1
- package/dist/agents/middlewareAgent/middleware/toolCallLimit.cjs.map +0 -1
- package/dist/agents/middlewareAgent/middleware/toolCallLimit.d.cts.map +0 -1
- package/dist/agents/middlewareAgent/middleware/toolCallLimit.d.ts.map +0 -1
- package/dist/agents/middlewareAgent/middleware/toolCallLimit.js.map +0 -1
- package/dist/agents/middlewareAgent/middleware/utils.cjs.map +0 -1
- package/dist/agents/middlewareAgent/middleware/utils.d.cts.map +0 -1
- package/dist/agents/middlewareAgent/middleware/utils.d.ts.map +0 -1
- package/dist/agents/middlewareAgent/middleware/utils.js.map +0 -1
- package/dist/agents/middlewareAgent/middleware.cjs.map +0 -1
- package/dist/agents/middlewareAgent/middleware.d.cts +0 -117
- package/dist/agents/middlewareAgent/middleware.d.cts.map +0 -1
- package/dist/agents/middlewareAgent/middleware.d.ts +0 -117
- package/dist/agents/middlewareAgent/middleware.d.ts.map +0 -1
- package/dist/agents/middlewareAgent/middleware.js.map +0 -1
- package/dist/agents/middlewareAgent/nodes/AfterModalNode.cjs.map +0 -1
- package/dist/agents/middlewareAgent/nodes/AfterModalNode.js.map +0 -1
- package/dist/agents/middlewareAgent/nodes/AgentNode.cjs +0 -468
- package/dist/agents/middlewareAgent/nodes/AgentNode.cjs.map +0 -1
- package/dist/agents/middlewareAgent/nodes/AgentNode.js +0 -467
- package/dist/agents/middlewareAgent/nodes/AgentNode.js.map +0 -1
- package/dist/agents/middlewareAgent/nodes/BeforeModalNode.cjs.map +0 -1
- package/dist/agents/middlewareAgent/nodes/BeforeModalNode.js.map +0 -1
- package/dist/agents/middlewareAgent/nodes/middleware.cjs.map +0 -1
- package/dist/agents/middlewareAgent/nodes/middleware.js.map +0 -1
- package/dist/agents/middlewareAgent/nodes/utils.cjs +0 -66
- package/dist/agents/middlewareAgent/nodes/utils.cjs.map +0 -1
- package/dist/agents/middlewareAgent/nodes/utils.js +0 -63
- package/dist/agents/middlewareAgent/nodes/utils.js.map +0 -1
- package/dist/agents/middlewareAgent/types.d.cts +0 -472
- package/dist/agents/middlewareAgent/types.d.cts.map +0 -1
- package/dist/agents/middlewareAgent/types.d.ts +0 -472
- package/dist/agents/middlewareAgent/types.d.ts.map +0 -1
- package/dist/agents/nodes/ToolNode.d.cts +0 -97
- package/dist/agents/nodes/ToolNode.d.cts.map +0 -1
- package/dist/agents/nodes/ToolNode.d.ts +0 -97
- package/dist/agents/nodes/ToolNode.d.ts.map +0 -1
- package/dist/agents/types.cjs +0 -7
- package/dist/agents/types.cjs.map +0 -1
- package/dist/agents/types.js +0 -6
- package/dist/agents/types.js.map +0 -1
- package/dist/node_modules/.pnpm/langsmith@0.3.64_@opentelemetry_api@1.9.0_openai@5.11.0_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_/node_modules/langsmith/dist/client.cjs.map +0 -1
- package/dist/node_modules/.pnpm/langsmith@0.3.64_@opentelemetry_api@1.9.0_openai@5.11.0_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_/node_modules/langsmith/dist/client.js.map +0 -1
- package/dist/node_modules/.pnpm/langsmith@0.3.64_@opentelemetry_api@1.9.0_openai@5.11.0_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_/node_modules/langsmith/dist/run_trees.cjs.map +0 -1
- package/dist/node_modules/.pnpm/langsmith@0.3.64_@opentelemetry_api@1.9.0_openai@5.11.0_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_/node_modules/langsmith/dist/run_trees.js.map +0 -1
- package/dist/node_modules/.pnpm/langsmith@0.3.64_@opentelemetry_api@1.9.0_openai@5.11.0_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_/node_modules/langsmith/dist/utils/env.cjs.map +0 -1
- package/dist/node_modules/.pnpm/langsmith@0.3.64_@opentelemetry_api@1.9.0_openai@5.11.0_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_/node_modules/langsmith/dist/utils/env.js.map +0 -1
- package/dist/node_modules/.pnpm/langsmith@0.3.64_@opentelemetry_api@1.9.0_openai@5.11.0_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_/node_modules/langsmith/dist/utils/error.cjs.map +0 -1
- package/dist/node_modules/.pnpm/langsmith@0.3.64_@opentelemetry_api@1.9.0_openai@5.11.0_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_/node_modules/langsmith/dist/utils/error.js.map +0 -1
- /package/dist/node_modules/.pnpm/{langsmith@0.3.64_@opentelemetry_api@1.9.0_openai@5.11.0_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_ → langsmith@0.3.74_@opentelemetry_api@1.9.0_openai@5.12.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_}/node_modules/langsmith/index.cjs +0 -0
- /package/dist/node_modules/.pnpm/{langsmith@0.3.64_@opentelemetry_api@1.9.0_openai@5.11.0_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_ → langsmith@0.3.74_@opentelemetry_api@1.9.0_openai@5.12.2_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_}/node_modules/langsmith/index.js +0 -0
|
@@ -1,212 +1,554 @@
|
|
|
1
|
-
import { createAgentAnnotationConditional
|
|
2
|
-
import { isClientTool, validateLLMHasNoBoundTools } from "./utils.js";
|
|
1
|
+
import { createAgentAnnotationConditional } from "./annotation.js";
|
|
2
|
+
import { isClientTool, validateLLMHasNoBoundTools, wrapToolCall } from "./utils.js";
|
|
3
|
+
import { initializeMiddlewareStates, parseJumpToTarget } from "./nodes/utils.js";
|
|
3
4
|
import { AgentNode } from "./nodes/AgentNode.js";
|
|
4
5
|
import { ToolNode } from "./nodes/ToolNode.js";
|
|
6
|
+
import { BeforeAgentNode } from "./nodes/BeforeAgentNode.js";
|
|
7
|
+
import { BeforeModelNode } from "./nodes/BeforeModelNode.js";
|
|
8
|
+
import { AfterModelNode } from "./nodes/AfterModelNode.js";
|
|
9
|
+
import { AfterAgentNode } from "./nodes/AfterAgentNode.js";
|
|
5
10
|
import { AIMessage, ToolMessage } from "@langchain/core/messages";
|
|
6
|
-
import { END, START, Send, StateGraph } from "@langchain/langgraph";
|
|
11
|
+
import { Command, END, START, Send, StateGraph } from "@langchain/langgraph";
|
|
7
12
|
|
|
8
13
|
//#region src/agents/ReactAgent.ts
|
|
9
14
|
var ReactAgent = class {
|
|
10
15
|
#graph;
|
|
11
|
-
#inputSchema;
|
|
12
16
|
#toolBehaviorVersion = "v2";
|
|
17
|
+
#agentNode;
|
|
13
18
|
constructor(options) {
|
|
14
19
|
this.options = options;
|
|
15
20
|
this.#toolBehaviorVersion = options.version ?? this.#toolBehaviorVersion;
|
|
16
21
|
/**
|
|
17
|
-
*
|
|
22
|
+
* validate that model option is provided
|
|
18
23
|
*/
|
|
19
|
-
if (options.
|
|
24
|
+
if (!options.model) throw new Error("`model` option is required to create an agent.");
|
|
20
25
|
/**
|
|
21
|
-
*
|
|
26
|
+
* Check if the LLM already has bound tools and throw if it does.
|
|
22
27
|
*/
|
|
23
|
-
if (
|
|
28
|
+
if (typeof options.model !== "string") validateLLMHasNoBoundTools(options.model);
|
|
24
29
|
/**
|
|
25
|
-
*
|
|
30
|
+
* define complete list of tools based on options and middleware
|
|
26
31
|
*/
|
|
27
|
-
|
|
28
|
-
const toolClasses =
|
|
32
|
+
const middlewareTools = this.options.middleware?.filter((m) => m.tools).flatMap((m) => m.tools) ?? [];
|
|
33
|
+
const toolClasses = [...options.tools ?? [], ...middlewareTools];
|
|
29
34
|
/**
|
|
30
35
|
* If any of the tools are configured to return_directly after running,
|
|
31
36
|
* our graph needs to check if these were called
|
|
32
37
|
*/
|
|
33
38
|
const shouldReturnDirect = new Set(toolClasses.filter(isClientTool).filter((tool) => "returnDirect" in tool && tool.returnDirect).map((tool) => tool.name));
|
|
34
|
-
const schema = this.options.stateSchema ? enhanceStateSchemaWithMessageReducer(this.options.stateSchema) : createAgentAnnotationConditional(this.options.responseFormat !== void 0);
|
|
35
|
-
const workflow = new StateGraph(schema, this.options.contextSchema);
|
|
36
|
-
const allNodeWorkflows = workflow;
|
|
37
39
|
/**
|
|
38
|
-
*
|
|
40
|
+
* Create a schema that merges agent base schema with middleware state schemas
|
|
41
|
+
* Using Zod with withLangGraph ensures LangGraph Studio gets proper metadata
|
|
39
42
|
*/
|
|
40
|
-
|
|
41
|
-
|
|
43
|
+
const schema = createAgentAnnotationConditional(this.options.responseFormat !== void 0, this.options.middleware);
|
|
44
|
+
const workflow = new StateGraph(schema, this.options.contextSchema);
|
|
45
|
+
const allNodeWorkflows = workflow;
|
|
46
|
+
const beforeAgentNodes = [];
|
|
47
|
+
const beforeModelNodes = [];
|
|
48
|
+
const afterModelNodes = [];
|
|
49
|
+
const afterAgentNodes = [];
|
|
50
|
+
const wrapModelCallHookMiddleware = [];
|
|
51
|
+
this.#agentNode = new AgentNode({
|
|
42
52
|
model: this.options.model,
|
|
43
|
-
|
|
53
|
+
systemPrompt: this.options.systemPrompt,
|
|
44
54
|
includeAgentName: this.options.includeAgentName,
|
|
45
55
|
name: this.options.name,
|
|
46
56
|
responseFormat: this.options.responseFormat,
|
|
57
|
+
middleware: this.options.middleware,
|
|
47
58
|
toolClasses,
|
|
48
59
|
shouldReturnDirect,
|
|
49
|
-
signal: this.options.signal
|
|
50
|
-
|
|
60
|
+
signal: this.options.signal,
|
|
61
|
+
wrapModelCallHookMiddleware
|
|
62
|
+
});
|
|
63
|
+
const middlewareNames = /* @__PURE__ */ new Set();
|
|
64
|
+
const middleware = this.options.middleware ?? [];
|
|
65
|
+
for (let i = 0; i < middleware.length; i++) {
|
|
66
|
+
let beforeAgentNode;
|
|
67
|
+
let beforeModelNode;
|
|
68
|
+
let afterModelNode;
|
|
69
|
+
let afterAgentNode;
|
|
70
|
+
const m = middleware[i];
|
|
71
|
+
if (middlewareNames.has(m.name)) throw new Error(`Middleware ${m.name} is defined multiple times`);
|
|
72
|
+
middlewareNames.add(m.name);
|
|
73
|
+
if (m.beforeAgent) {
|
|
74
|
+
beforeAgentNode = new BeforeAgentNode(m, { getPrivateState: () => this.#agentNode.getState()._privateState });
|
|
75
|
+
const name = `${m.name}.before_agent`;
|
|
76
|
+
beforeAgentNodes.push({
|
|
77
|
+
index: i,
|
|
78
|
+
name,
|
|
79
|
+
allowed: m.beforeAgentJumpTo
|
|
80
|
+
});
|
|
81
|
+
allNodeWorkflows.addNode(name, beforeAgentNode, beforeAgentNode.nodeOptions);
|
|
82
|
+
}
|
|
83
|
+
if (m.beforeModel) {
|
|
84
|
+
beforeModelNode = new BeforeModelNode(m, { getPrivateState: () => this.#agentNode.getState()._privateState });
|
|
85
|
+
const name = `${m.name}.before_model`;
|
|
86
|
+
beforeModelNodes.push({
|
|
87
|
+
index: i,
|
|
88
|
+
name,
|
|
89
|
+
allowed: m.beforeModelJumpTo
|
|
90
|
+
});
|
|
91
|
+
allNodeWorkflows.addNode(name, beforeModelNode, beforeModelNode.nodeOptions);
|
|
92
|
+
}
|
|
93
|
+
if (m.afterModel) {
|
|
94
|
+
afterModelNode = new AfterModelNode(m, { getPrivateState: () => this.#agentNode.getState()._privateState });
|
|
95
|
+
const name = `${m.name}.after_model`;
|
|
96
|
+
afterModelNodes.push({
|
|
97
|
+
index: i,
|
|
98
|
+
name,
|
|
99
|
+
allowed: m.afterModelJumpTo
|
|
100
|
+
});
|
|
101
|
+
allNodeWorkflows.addNode(name, afterModelNode, afterModelNode.nodeOptions);
|
|
102
|
+
}
|
|
103
|
+
if (m.afterAgent) {
|
|
104
|
+
afterAgentNode = new AfterAgentNode(m, { getPrivateState: () => this.#agentNode.getState()._privateState });
|
|
105
|
+
const name = `${m.name}.after_agent`;
|
|
106
|
+
afterAgentNodes.push({
|
|
107
|
+
index: i,
|
|
108
|
+
name,
|
|
109
|
+
allowed: m.afterAgentJumpTo
|
|
110
|
+
});
|
|
111
|
+
allNodeWorkflows.addNode(name, afterAgentNode, afterAgentNode.nodeOptions);
|
|
112
|
+
}
|
|
113
|
+
if (m.wrapModelCall) wrapModelCallHookMiddleware.push([m, () => ({
|
|
114
|
+
...beforeAgentNode?.getState(),
|
|
115
|
+
...beforeModelNode?.getState(),
|
|
116
|
+
...afterModelNode?.getState(),
|
|
117
|
+
...afterAgentNode?.getState()
|
|
118
|
+
})]);
|
|
119
|
+
}
|
|
51
120
|
/**
|
|
52
|
-
*
|
|
121
|
+
* Add Nodes
|
|
53
122
|
*/
|
|
54
|
-
|
|
55
|
-
const toolNode = new ToolNode(toolClasses.filter(isClientTool), { signal: this.options.signal });
|
|
56
|
-
allNodeWorkflows.addNode("tools", toolNode);
|
|
57
|
-
}
|
|
123
|
+
allNodeWorkflows.addNode("model_request", this.#agentNode, AgentNode.nodeOptions);
|
|
58
124
|
/**
|
|
59
|
-
*
|
|
125
|
+
* Collect and compose wrapToolCall handlers from middleware
|
|
126
|
+
* Wrap each handler with error handling and validation
|
|
60
127
|
*/
|
|
61
|
-
|
|
128
|
+
const wrapToolCallHandler = wrapToolCall(middleware);
|
|
62
129
|
/**
|
|
63
|
-
*
|
|
130
|
+
* add single tool node for all tools
|
|
64
131
|
*/
|
|
65
|
-
if (
|
|
132
|
+
if (toolClasses.filter(isClientTool).length > 0) {
|
|
133
|
+
const toolNode = new ToolNode(toolClasses.filter(isClientTool), {
|
|
134
|
+
signal: this.options.signal,
|
|
135
|
+
wrapToolCall: wrapToolCallHandler,
|
|
136
|
+
getPrivateState: () => this.#agentNode.getState()._privateState
|
|
137
|
+
});
|
|
138
|
+
allNodeWorkflows.addNode("tools", toolNode);
|
|
139
|
+
}
|
|
66
140
|
/**
|
|
67
141
|
* Add Edges
|
|
68
142
|
*/
|
|
69
|
-
|
|
70
|
-
if (
|
|
71
|
-
if (
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
143
|
+
let entryNode;
|
|
144
|
+
if (beforeAgentNodes.length > 0) entryNode = beforeAgentNodes[0].name;
|
|
145
|
+
else if (beforeModelNodes.length > 0) entryNode = beforeModelNodes[0].name;
|
|
146
|
+
else entryNode = "model_request";
|
|
147
|
+
const loopEntryNode = beforeModelNodes.length > 0 ? beforeModelNodes[0].name : "model_request";
|
|
148
|
+
const exitNode = afterAgentNodes.length > 0 ? afterAgentNodes[afterAgentNodes.length - 1].name : END;
|
|
149
|
+
allNodeWorkflows.addEdge(START, entryNode);
|
|
150
|
+
for (let i = 0; i < beforeAgentNodes.length; i++) {
|
|
151
|
+
const node = beforeAgentNodes[i];
|
|
152
|
+
const current = node.name;
|
|
153
|
+
const isLast = i === beforeAgentNodes.length - 1;
|
|
154
|
+
const nextDefault = isLast ? loopEntryNode : beforeAgentNodes[i + 1].name;
|
|
155
|
+
if (node.allowed && node.allowed.length > 0) {
|
|
156
|
+
const hasTools = toolClasses.filter(isClientTool).length > 0;
|
|
157
|
+
const allowedMapped = node.allowed.map((t) => parseJumpToTarget(t)).filter((dest) => dest !== "tools" || hasTools);
|
|
158
|
+
const destinations = Array.from(new Set([nextDefault, ...allowedMapped.map((dest) => dest === END ? exitNode : dest)]));
|
|
159
|
+
allNodeWorkflows.addConditionalEdges(current, this.#createBeforeAgentRouter(toolClasses.filter(isClientTool), nextDefault, exitNode), destinations);
|
|
160
|
+
} else allNodeWorkflows.addEdge(current, nextDefault);
|
|
161
|
+
}
|
|
162
|
+
for (let i = 0; i < beforeModelNodes.length; i++) {
|
|
163
|
+
const node = beforeModelNodes[i];
|
|
164
|
+
const current = node.name;
|
|
165
|
+
const isLast = i === beforeModelNodes.length - 1;
|
|
166
|
+
const nextDefault = isLast ? "model_request" : beforeModelNodes[i + 1].name;
|
|
167
|
+
if (node.allowed && node.allowed.length > 0) {
|
|
168
|
+
const hasTools = toolClasses.filter(isClientTool).length > 0;
|
|
169
|
+
const allowedMapped = node.allowed.map((t) => parseJumpToTarget(t)).filter((dest) => dest !== "tools" || hasTools);
|
|
170
|
+
const destinations = Array.from(new Set([nextDefault, ...allowedMapped]));
|
|
171
|
+
allNodeWorkflows.addConditionalEdges(current, this.#createBeforeModelRouter(toolClasses.filter(isClientTool), nextDefault), destinations);
|
|
172
|
+
} else allNodeWorkflows.addEdge(current, nextDefault);
|
|
173
|
+
}
|
|
174
|
+
const lastAfterModelNode = afterModelNodes.at(-1);
|
|
175
|
+
if (afterModelNodes.length > 0 && lastAfterModelNode) allNodeWorkflows.addEdge("model_request", lastAfterModelNode.name);
|
|
176
|
+
else {
|
|
77
177
|
const modelPaths = this.#getModelPaths(toolClasses.filter(isClientTool));
|
|
78
|
-
|
|
79
|
-
|
|
178
|
+
const destinations = modelPaths.map((p) => p === END ? exitNode : p);
|
|
179
|
+
if (destinations.length === 1) allNodeWorkflows.addEdge("model_request", destinations[0]);
|
|
180
|
+
else allNodeWorkflows.addConditionalEdges("model_request", this.#createModelRouter(exitNode), destinations);
|
|
181
|
+
}
|
|
182
|
+
for (let i = afterModelNodes.length - 1; i > 0; i--) {
|
|
183
|
+
const node = afterModelNodes[i];
|
|
184
|
+
const current = node.name;
|
|
185
|
+
const nextDefault = afterModelNodes[i - 1].name;
|
|
186
|
+
if (node.allowed && node.allowed.length > 0) {
|
|
187
|
+
const hasTools = toolClasses.filter(isClientTool).length > 0;
|
|
188
|
+
const allowedMapped = node.allowed.map((t) => parseJumpToTarget(t)).filter((dest) => dest !== "tools" || hasTools);
|
|
189
|
+
const destinations = Array.from(new Set([nextDefault, ...allowedMapped]));
|
|
190
|
+
allNodeWorkflows.addConditionalEdges(current, this.#createAfterModelSequenceRouter(toolClasses.filter(isClientTool), node.allowed, nextDefault), destinations);
|
|
191
|
+
} else allNodeWorkflows.addEdge(current, nextDefault);
|
|
192
|
+
}
|
|
193
|
+
if (afterModelNodes.length > 0) {
|
|
194
|
+
const firstAfterModel = afterModelNodes[0];
|
|
195
|
+
const firstAfterModelNode = firstAfterModel.name;
|
|
196
|
+
const modelPaths = this.#getModelPaths(toolClasses.filter(isClientTool), true).filter((p) => p !== "tools" || toolClasses.filter(isClientTool).length > 0);
|
|
197
|
+
const allowJump = Boolean(firstAfterModel.allowed && firstAfterModel.allowed.length > 0);
|
|
198
|
+
const destinations = modelPaths.map((p) => p === END ? exitNode : p);
|
|
199
|
+
allNodeWorkflows.addConditionalEdges(firstAfterModelNode, this.#createAfterModelRouter(toolClasses.filter(isClientTool), allowJump, exitNode), destinations);
|
|
200
|
+
}
|
|
201
|
+
for (let i = afterAgentNodes.length - 1; i > 0; i--) {
|
|
202
|
+
const node = afterAgentNodes[i];
|
|
203
|
+
const current = node.name;
|
|
204
|
+
const nextDefault = afterAgentNodes[i - 1].name;
|
|
205
|
+
if (node.allowed && node.allowed.length > 0) {
|
|
206
|
+
const hasTools = toolClasses.filter(isClientTool).length > 0;
|
|
207
|
+
const allowedMapped = node.allowed.map((t) => parseJumpToTarget(t)).filter((dest) => dest !== "tools" || hasTools);
|
|
208
|
+
const destinations = Array.from(new Set([nextDefault, ...allowedMapped]));
|
|
209
|
+
allNodeWorkflows.addConditionalEdges(current, this.#createAfterModelSequenceRouter(toolClasses.filter(isClientTool), node.allowed, nextDefault), destinations);
|
|
210
|
+
} else allNodeWorkflows.addEdge(current, nextDefault);
|
|
211
|
+
}
|
|
212
|
+
if (afterAgentNodes.length > 0) {
|
|
213
|
+
const firstAfterAgent = afterAgentNodes[0];
|
|
214
|
+
const firstAfterAgentNode = firstAfterAgent.name;
|
|
215
|
+
if (firstAfterAgent.allowed && firstAfterAgent.allowed.length > 0) {
|
|
216
|
+
const hasTools = toolClasses.filter(isClientTool).length > 0;
|
|
217
|
+
const allowedMapped = firstAfterAgent.allowed.map((t) => parseJumpToTarget(t)).filter((dest) => dest !== "tools" || hasTools);
|
|
218
|
+
/**
|
|
219
|
+
* For after_agent, only use explicitly allowed destinations (don't add loopEntryNode)
|
|
220
|
+
* The default destination (when no jump occurs) should be END
|
|
221
|
+
*/
|
|
222
|
+
const destinations = Array.from(new Set([END, ...allowedMapped]));
|
|
223
|
+
allNodeWorkflows.addConditionalEdges(firstAfterAgentNode, this.#createAfterModelSequenceRouter(toolClasses.filter(isClientTool), firstAfterAgent.allowed, END), destinations);
|
|
224
|
+
} else allNodeWorkflows.addEdge(firstAfterAgentNode, END);
|
|
80
225
|
}
|
|
81
226
|
/**
|
|
82
227
|
* add edges for tools node
|
|
83
228
|
*/
|
|
84
|
-
if (toolClasses.filter(isClientTool).length > 0)
|
|
85
|
-
|
|
229
|
+
if (toolClasses.filter(isClientTool).length > 0) {
|
|
230
|
+
const toolReturnTarget = loopEntryNode;
|
|
231
|
+
if (shouldReturnDirect.size > 0) allNodeWorkflows.addConditionalEdges("tools", this.#createToolsRouter(shouldReturnDirect, exitNode), [toolReturnTarget, exitNode]);
|
|
232
|
+
else allNodeWorkflows.addEdge("tools", toolReturnTarget);
|
|
233
|
+
}
|
|
86
234
|
/**
|
|
87
235
|
* compile the graph
|
|
88
236
|
*/
|
|
89
237
|
this.#graph = allNodeWorkflows.compile({
|
|
90
|
-
checkpointer: this.options.checkpointer
|
|
91
|
-
interruptBefore: this.options.interruptBefore,
|
|
92
|
-
interruptAfter: this.options.interruptAfter,
|
|
238
|
+
checkpointer: this.options.checkpointer,
|
|
93
239
|
store: this.options.store,
|
|
94
240
|
name: this.options.name,
|
|
95
241
|
description: this.options.description
|
|
96
242
|
});
|
|
97
243
|
}
|
|
98
244
|
/**
|
|
99
|
-
* Get the compiled graph.
|
|
245
|
+
* Get the compiled {@link https://docs.langchain.com/oss/javascript/langgraph/use-graph-api | StateGraph}.
|
|
100
246
|
*/
|
|
101
247
|
get graph() {
|
|
102
248
|
return this.#graph;
|
|
103
249
|
}
|
|
104
|
-
#getEntryPoint() {
|
|
105
|
-
const entryPoint = this.options.preModelHook ? "pre_model_hook" : "agent";
|
|
106
|
-
return entryPoint;
|
|
107
|
-
}
|
|
108
|
-
/**
|
|
109
|
-
* Get possible edge destinations from post_model_hook node.
|
|
110
|
-
*/
|
|
111
|
-
#getPostModelHookPaths(toolClasses) {
|
|
112
|
-
const paths = [];
|
|
113
|
-
if (toolClasses.length > 0) paths.push(this.#getEntryPoint(), "tools");
|
|
114
|
-
paths.push(END);
|
|
115
|
-
return paths;
|
|
116
|
-
}
|
|
117
|
-
#createPostModelHookRouter() {
|
|
118
|
-
return (state) => {
|
|
119
|
-
const messages = state.messages;
|
|
120
|
-
const toolMessages = messages.filter(ToolMessage.isInstance);
|
|
121
|
-
const lastAiMessage = messages.filter(AIMessage.isInstance).at(-1);
|
|
122
|
-
const pendingToolCalls = lastAiMessage?.tool_calls?.filter((call) => !toolMessages.some((m) => m.tool_call_id === call.id));
|
|
123
|
-
if (pendingToolCalls && pendingToolCalls.length > 0) {
|
|
124
|
-
/**
|
|
125
|
-
* The tool node processes a single message.
|
|
126
|
-
* All tool calls in the message are executed in parallel within the tool node.
|
|
127
|
-
* @deprecated likely to be removed in the next version of the agent
|
|
128
|
-
*/
|
|
129
|
-
if (this.#toolBehaviorVersion === "v1") return "tools";
|
|
130
|
-
/**
|
|
131
|
-
* The tool node processes a single tool call. Tool calls are distributed across
|
|
132
|
-
* multiple instances of the tool node using the Send API.
|
|
133
|
-
*/
|
|
134
|
-
return pendingToolCalls.map((toolCall) => new Send("tools", {
|
|
135
|
-
...state,
|
|
136
|
-
lg_tool_call: toolCall
|
|
137
|
-
}));
|
|
138
|
-
}
|
|
139
|
-
if (ToolMessage.isInstance(messages.at(-1))) return this.#getEntryPoint();
|
|
140
|
-
return END;
|
|
141
|
-
};
|
|
142
|
-
}
|
|
143
250
|
/**
|
|
144
251
|
* Get possible edge destinations from model node.
|
|
145
252
|
* @param toolClasses names of tools to call
|
|
253
|
+
* @param includeModelRequest whether to include "model_request" as a valid path (for jumpTo routing)
|
|
146
254
|
* @returns list of possible edge destinations
|
|
147
255
|
*/
|
|
148
|
-
#getModelPaths(toolClasses) {
|
|
256
|
+
#getModelPaths(toolClasses, includeModelRequest = false) {
|
|
149
257
|
const paths = [];
|
|
150
258
|
if (toolClasses.length > 0) paths.push("tools");
|
|
259
|
+
if (includeModelRequest) paths.push("model_request");
|
|
151
260
|
paths.push(END);
|
|
152
261
|
return paths;
|
|
153
262
|
}
|
|
154
263
|
/**
|
|
264
|
+
* Create routing function for tools node conditional edges.
|
|
265
|
+
*/
|
|
266
|
+
#createToolsRouter(shouldReturnDirect, exitNode) {
|
|
267
|
+
/**
|
|
268
|
+
* ToDo: fix type
|
|
269
|
+
*/
|
|
270
|
+
return (state) => {
|
|
271
|
+
const messages = state.messages;
|
|
272
|
+
const lastMessage = messages[messages.length - 1];
|
|
273
|
+
if (ToolMessage.isInstance(lastMessage) && lastMessage.name && shouldReturnDirect.has(lastMessage.name)) return this.options.responseFormat ? "model_request" : exitNode;
|
|
274
|
+
return "model_request";
|
|
275
|
+
};
|
|
276
|
+
}
|
|
277
|
+
/**
|
|
155
278
|
* Create routing function for model node conditional edges.
|
|
279
|
+
* @param exitNode - The exit node to route to (could be after_agent or END)
|
|
156
280
|
*/
|
|
157
|
-
#createModelRouter() {
|
|
281
|
+
#createModelRouter(exitNode = END) {
|
|
158
282
|
/**
|
|
159
283
|
* determine if the agent should continue or not
|
|
160
284
|
*/
|
|
161
285
|
return (state) => {
|
|
162
286
|
const messages = state.messages;
|
|
163
287
|
const lastMessage = messages.at(-1);
|
|
164
|
-
if (!AIMessage.isInstance(lastMessage) || !lastMessage.tool_calls || lastMessage.tool_calls.length === 0)
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
}
|
|
168
|
-
if (this.options.postModelHook) return "post_model_hook";
|
|
288
|
+
if (!AIMessage.isInstance(lastMessage) || !lastMessage.tool_calls || lastMessage.tool_calls.length === 0) return exitNode;
|
|
289
|
+
const hasOnlyStructuredResponseCalls = lastMessage.tool_calls.every((toolCall) => toolCall.name.startsWith("extract-"));
|
|
290
|
+
if (hasOnlyStructuredResponseCalls) return exitNode;
|
|
169
291
|
/**
|
|
170
292
|
* The tool node processes a single message.
|
|
171
293
|
*/
|
|
172
294
|
if (this.#toolBehaviorVersion === "v1") return "tools";
|
|
173
295
|
/**
|
|
174
|
-
* Route to tools node
|
|
296
|
+
* Route to tools node (filter out any structured response tool calls)
|
|
175
297
|
*/
|
|
176
|
-
|
|
298
|
+
const regularToolCalls = lastMessage.tool_calls.filter((toolCall) => !toolCall.name.startsWith("extract-"));
|
|
299
|
+
if (regularToolCalls.length === 0) return exitNode;
|
|
300
|
+
return regularToolCalls.map((toolCall) => new Send("tools", {
|
|
177
301
|
...state,
|
|
178
302
|
lg_tool_call: toolCall
|
|
179
303
|
}));
|
|
180
304
|
};
|
|
181
305
|
}
|
|
182
306
|
/**
|
|
183
|
-
* Create routing function for
|
|
307
|
+
* Create routing function for jumpTo functionality after afterModel hooks.
|
|
308
|
+
*
|
|
309
|
+
* This router checks if the `jumpTo` property is set in the state after afterModel middleware
|
|
310
|
+
* execution. If set, it routes to the specified target ("model_request" or "tools").
|
|
311
|
+
* If not set, it falls back to the normal model routing logic for afterModel context.
|
|
312
|
+
*
|
|
313
|
+
* The jumpTo property is automatically cleared after use to prevent infinite loops.
|
|
314
|
+
*
|
|
315
|
+
* @param toolClasses - Available tool classes for validation
|
|
316
|
+
* @param allowJump - Whether jumping is allowed
|
|
317
|
+
* @param exitNode - The exit node to route to (could be after_agent or END)
|
|
318
|
+
* @returns Router function that handles jumpTo logic and normal routing
|
|
184
319
|
*/
|
|
185
|
-
#
|
|
320
|
+
#createAfterModelRouter(toolClasses, allowJump, exitNode) {
|
|
321
|
+
const hasStructuredResponse = Boolean(this.options.responseFormat);
|
|
186
322
|
return (state) => {
|
|
187
323
|
const messages = state.messages;
|
|
188
|
-
const lastMessage = messages
|
|
189
|
-
if (
|
|
190
|
-
|
|
324
|
+
const lastMessage = messages.at(-1);
|
|
325
|
+
if (AIMessage.isInstance(lastMessage) && (!lastMessage.tool_calls || lastMessage.tool_calls.length === 0)) return exitNode;
|
|
326
|
+
if (allowJump && state.jumpTo) {
|
|
327
|
+
if (state.jumpTo === END) return exitNode;
|
|
328
|
+
if (state.jumpTo === "tools") {
|
|
329
|
+
if (toolClasses.length === 0) return exitNode;
|
|
330
|
+
return new Send("tools", {
|
|
331
|
+
...state,
|
|
332
|
+
jumpTo: void 0
|
|
333
|
+
});
|
|
334
|
+
}
|
|
335
|
+
return new Send("model_request", {
|
|
336
|
+
...state,
|
|
337
|
+
jumpTo: void 0
|
|
338
|
+
});
|
|
339
|
+
}
|
|
340
|
+
const toolMessages = messages.filter(ToolMessage.isInstance);
|
|
341
|
+
const lastAiMessage = messages.filter(AIMessage.isInstance).at(-1);
|
|
342
|
+
const pendingToolCalls = lastAiMessage?.tool_calls?.filter((call) => !toolMessages.some((m) => m.tool_call_id === call.id));
|
|
343
|
+
if (pendingToolCalls && pendingToolCalls.length > 0) return pendingToolCalls.map((toolCall) => new Send("tools", {
|
|
344
|
+
...state,
|
|
345
|
+
lg_tool_call: toolCall
|
|
346
|
+
}));
|
|
347
|
+
const hasStructuredResponseCalls = lastAiMessage?.tool_calls?.some((toolCall) => toolCall.name.startsWith("extract-"));
|
|
348
|
+
if (pendingToolCalls && pendingToolCalls.length === 0 && !hasStructuredResponseCalls && hasStructuredResponse) return "model_request";
|
|
349
|
+
if (!AIMessage.isInstance(lastMessage) || !lastMessage.tool_calls || lastMessage.tool_calls.length === 0) return exitNode;
|
|
350
|
+
const hasOnlyStructuredResponseCalls = lastMessage.tool_calls.every((toolCall) => toolCall.name.startsWith("extract-"));
|
|
351
|
+
const hasRegularToolCalls = lastMessage.tool_calls.some((toolCall) => !toolCall.name.startsWith("extract-"));
|
|
352
|
+
if (hasOnlyStructuredResponseCalls || !hasRegularToolCalls) return exitNode;
|
|
353
|
+
/**
|
|
354
|
+
* For routing from afterModel nodes, always use simple string paths
|
|
355
|
+
* The Send API is handled at the model_request node level
|
|
356
|
+
*/
|
|
357
|
+
return "tools";
|
|
191
358
|
};
|
|
192
359
|
}
|
|
193
360
|
/**
|
|
194
|
-
*
|
|
361
|
+
* Router for afterModel sequence nodes (connecting later middlewares to earlier ones),
|
|
362
|
+
* honoring allowed jump targets and defaulting to the next node.
|
|
195
363
|
*/
|
|
196
|
-
|
|
197
|
-
|
|
364
|
+
#createAfterModelSequenceRouter(toolClasses, allowed, nextDefault) {
|
|
365
|
+
const allowedSet = new Set(allowed.map((t) => parseJumpToTarget(t)));
|
|
366
|
+
return (state) => {
|
|
367
|
+
if (state.jumpTo) {
|
|
368
|
+
const dest = parseJumpToTarget(state.jumpTo);
|
|
369
|
+
if (dest === END && allowedSet.has(END)) return END;
|
|
370
|
+
if (dest === "tools" && allowedSet.has("tools")) {
|
|
371
|
+
if (toolClasses.length === 0) return END;
|
|
372
|
+
return new Send("tools", {
|
|
373
|
+
...state,
|
|
374
|
+
jumpTo: void 0
|
|
375
|
+
});
|
|
376
|
+
}
|
|
377
|
+
if (dest === "model_request" && allowedSet.has("model_request")) return new Send("model_request", {
|
|
378
|
+
...state,
|
|
379
|
+
jumpTo: void 0
|
|
380
|
+
});
|
|
381
|
+
}
|
|
382
|
+
return nextDefault;
|
|
383
|
+
};
|
|
198
384
|
}
|
|
199
385
|
/**
|
|
200
|
-
*
|
|
386
|
+
* Create routing function for jumpTo functionality after beforeAgent hooks.
|
|
387
|
+
* Falls back to the default next node if no jumpTo is present.
|
|
388
|
+
* When jumping to END, routes to exitNode (which could be an afterAgent node).
|
|
201
389
|
*/
|
|
202
|
-
|
|
203
|
-
return
|
|
390
|
+
#createBeforeAgentRouter(toolClasses, nextDefault, exitNode) {
|
|
391
|
+
return (state) => {
|
|
392
|
+
if (!state.jumpTo) return nextDefault;
|
|
393
|
+
const destination = parseJumpToTarget(state.jumpTo);
|
|
394
|
+
if (destination === END) return exitNode;
|
|
395
|
+
if (destination === "tools") {
|
|
396
|
+
if (toolClasses.length === 0) return exitNode;
|
|
397
|
+
return new Send("tools", {
|
|
398
|
+
...state,
|
|
399
|
+
jumpTo: void 0
|
|
400
|
+
});
|
|
401
|
+
}
|
|
402
|
+
return new Send("model_request", {
|
|
403
|
+
...state,
|
|
404
|
+
jumpTo: void 0
|
|
405
|
+
});
|
|
406
|
+
};
|
|
407
|
+
}
|
|
408
|
+
/**
|
|
409
|
+
* Create routing function for jumpTo functionality after beforeModel hooks.
|
|
410
|
+
* Falls back to the default next node if no jumpTo is present.
|
|
411
|
+
*/
|
|
412
|
+
#createBeforeModelRouter(toolClasses, nextDefault) {
|
|
413
|
+
return (state) => {
|
|
414
|
+
if (!state.jumpTo) return nextDefault;
|
|
415
|
+
const destination = parseJumpToTarget(state.jumpTo);
|
|
416
|
+
if (destination === END) return END;
|
|
417
|
+
if (destination === "tools") {
|
|
418
|
+
if (toolClasses.length === 0) return END;
|
|
419
|
+
return new Send("tools", {
|
|
420
|
+
...state,
|
|
421
|
+
jumpTo: void 0
|
|
422
|
+
});
|
|
423
|
+
}
|
|
424
|
+
return new Send("model_request", {
|
|
425
|
+
...state,
|
|
426
|
+
jumpTo: void 0
|
|
427
|
+
});
|
|
428
|
+
};
|
|
204
429
|
}
|
|
205
430
|
/**
|
|
206
|
-
*
|
|
431
|
+
* Initialize middleware states if not already present in the input state.
|
|
207
432
|
*/
|
|
208
|
-
|
|
209
|
-
|
|
433
|
+
async #initializeMiddlewareStates(state) {
|
|
434
|
+
if (!this.options.middleware || this.options.middleware.length === 0 || state instanceof Command || !state) return state;
|
|
435
|
+
const defaultStates = await initializeMiddlewareStates(this.options.middleware, state);
|
|
436
|
+
const updatedState = { ...state };
|
|
437
|
+
if (!updatedState) return updatedState;
|
|
438
|
+
for (const [key, value] of Object.entries(defaultStates)) if (!(key in updatedState)) updatedState[key] = value;
|
|
439
|
+
return updatedState;
|
|
440
|
+
}
|
|
441
|
+
/**
|
|
442
|
+
* Populate the private state of the agent node from the previous state.
|
|
443
|
+
*/
|
|
444
|
+
async #populatePrivateState(config) {
|
|
445
|
+
/**
|
|
446
|
+
* not needed if thread_id is not provided
|
|
447
|
+
*/
|
|
448
|
+
if (!config?.configurable?.thread_id) return;
|
|
449
|
+
const prevState = await this.#graph.getState(config);
|
|
450
|
+
/**
|
|
451
|
+
* not need if state is empty
|
|
452
|
+
*/
|
|
453
|
+
if (!prevState.values._privateState) return;
|
|
454
|
+
this.#agentNode.setState({
|
|
455
|
+
structuredResponse: void 0,
|
|
456
|
+
_privateState: prevState.values._privateState
|
|
457
|
+
});
|
|
458
|
+
}
|
|
459
|
+
/**
|
|
460
|
+
* Executes the agent with the given state and returns the final state after all processing.
|
|
461
|
+
*
|
|
462
|
+
* This method runs the agent's entire workflow synchronously, including:
|
|
463
|
+
* - Processing the input messages through any configured middleware
|
|
464
|
+
* - Calling the language model to generate responses
|
|
465
|
+
* - Executing any tool calls made by the model
|
|
466
|
+
* - Running all middleware hooks (beforeModel, afterModel, etc.)
|
|
467
|
+
*
|
|
468
|
+
* @param state - The initial state for the agent execution. Can be:
|
|
469
|
+
* - An object containing `messages` array and any middleware-specific state properties
|
|
470
|
+
* - A Command object for more advanced control flow
|
|
471
|
+
*
|
|
472
|
+
* @param config - Optional runtime configuration including:
|
|
473
|
+
* @param config.context - The context for the agent execution.
|
|
474
|
+
* @param config.configurable - LangGraph configuration options like `thread_id`, `run_id`, etc.
|
|
475
|
+
* @param config.store - The store for the agent execution for persisting state, see more in {@link https://docs.langchain.com/oss/javascript/langgraph/memory#memory-storage | Memory storage}.
|
|
476
|
+
* @param config.signal - An optional {@link https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal | `AbortSignal`} for the agent execution.
|
|
477
|
+
* @param config.recursionLimit - The recursion limit for the agent execution.
|
|
478
|
+
*
|
|
479
|
+
* @returns A Promise that resolves to the final agent state after execution completes.
|
|
480
|
+
* The returned state includes:
|
|
481
|
+
* - a `messages` property containing an array with all messages (input, AI responses, tool calls/results)
|
|
482
|
+
* - a `structuredResponse` property containing the structured response (if configured)
|
|
483
|
+
* - all state values defined in the middleware
|
|
484
|
+
*
|
|
485
|
+
* @example
|
|
486
|
+
* ```typescript
|
|
487
|
+
* const agent = new ReactAgent({
|
|
488
|
+
* llm: myModel,
|
|
489
|
+
* tools: [calculator, webSearch],
|
|
490
|
+
* responseFormat: z.object({
|
|
491
|
+
* weather: z.string(),
|
|
492
|
+
* }),
|
|
493
|
+
* });
|
|
494
|
+
*
|
|
495
|
+
* const result = await agent.invoke({
|
|
496
|
+
* messages: [{ role: "human", content: "What's the weather in Paris?" }]
|
|
497
|
+
* });
|
|
498
|
+
*
|
|
499
|
+
* console.log(result.structuredResponse.weather); // outputs: "It's sunny and 75°F."
|
|
500
|
+
* ```
|
|
501
|
+
*/
|
|
502
|
+
async invoke(state, config) {
|
|
503
|
+
const initializedState = await this.#initializeMiddlewareStates(state);
|
|
504
|
+
await this.#populatePrivateState(config);
|
|
505
|
+
return this.#graph.invoke(initializedState, config);
|
|
506
|
+
}
|
|
507
|
+
/**
|
|
508
|
+
* Executes the agent with streaming, returning an async iterable of state updates as they occur.
|
|
509
|
+
*
|
|
510
|
+
* This method runs the agent's workflow similar to `invoke`, but instead of waiting for
|
|
511
|
+
* completion, it streams high-level state updates in real-time. This allows you to:
|
|
512
|
+
* - Display intermediate results to users as they're generated
|
|
513
|
+
* - Monitor the agent's progress through each step
|
|
514
|
+
* - React to state changes as nodes complete
|
|
515
|
+
*
|
|
516
|
+
* For more granular event-level streaming (like individual LLM tokens), use `streamEvents` instead.
|
|
517
|
+
*
|
|
518
|
+
* @param state - The initial state for the agent execution. Can be:
|
|
519
|
+
* - An object containing `messages` array and any middleware-specific state properties
|
|
520
|
+
* - A Command object for more advanced control flow
|
|
521
|
+
*
|
|
522
|
+
* @param config - Optional runtime configuration including:
|
|
523
|
+
* @param config.context - The context for the agent execution.
|
|
524
|
+
* @param config.configurable - LangGraph configuration options like `thread_id`, `run_id`, etc.
|
|
525
|
+
* @param config.store - The store for the agent execution for persisting state, see more in {@link https://docs.langchain.com/oss/javascript/langgraph/memory#memory-storage | Memory storage}.
|
|
526
|
+
* @param config.signal - An optional {@link https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal | `AbortSignal`} for the agent execution.
|
|
527
|
+
* @param config.streamMode - The streaming mode for the agent execution, see more in {@link https://docs.langchain.com/oss/javascript/langgraph/streaming#supported-stream-modes | Supported stream modes}.
|
|
528
|
+
* @param config.recursionLimit - The recursion limit for the agent execution.
|
|
529
|
+
*
|
|
530
|
+
* @returns A Promise that resolves to an IterableReadableStream of state updates.
|
|
531
|
+
* Each update contains the current state after a node completes.
|
|
532
|
+
*
|
|
533
|
+
* @example
|
|
534
|
+
* ```typescript
|
|
535
|
+
* const agent = new ReactAgent({
|
|
536
|
+
* llm: myModel,
|
|
537
|
+
* tools: [calculator, webSearch]
|
|
538
|
+
* });
|
|
539
|
+
*
|
|
540
|
+
* const stream = await agent.stream({
|
|
541
|
+
* messages: [{ role: "human", content: "What's 2+2 and the weather in NYC?" }]
|
|
542
|
+
* });
|
|
543
|
+
*
|
|
544
|
+
* for await (const chunk of stream) {
|
|
545
|
+
* console.log(chunk); // State update from each node
|
|
546
|
+
* }
|
|
547
|
+
* ```
|
|
548
|
+
*/
|
|
549
|
+
async stream(state, config) {
|
|
550
|
+
const initializedState = await this.#initializeMiddlewareStates(state);
|
|
551
|
+
return this.#graph.stream(initializedState, config);
|
|
210
552
|
}
|
|
211
553
|
/**
|
|
212
554
|
* Visualize the graph as a PNG image.
|
|
@@ -239,6 +581,57 @@ var ReactAgent = class {
|
|
|
239
581
|
const representation = await this.#graph.getGraphAsync();
|
|
240
582
|
return representation.drawMermaid(params);
|
|
241
583
|
}
|
|
584
|
+
/**
|
|
585
|
+
* The following are internal methods to enable support for LangGraph Platform.
|
|
586
|
+
* They are not part of the createAgent public API.
|
|
587
|
+
*
|
|
588
|
+
* Note: we intentionally return as `never` to avoid type errors due to type inference.
|
|
589
|
+
*/
|
|
590
|
+
/**
|
|
591
|
+
* @internal
|
|
592
|
+
*/
|
|
593
|
+
streamEvents(state, config, streamOptions) {
|
|
594
|
+
return this.#graph.streamEvents(state, {
|
|
595
|
+
...config,
|
|
596
|
+
version: config?.version ?? "v2"
|
|
597
|
+
}, streamOptions);
|
|
598
|
+
}
|
|
599
|
+
/**
|
|
600
|
+
* @internal
|
|
601
|
+
*/
|
|
602
|
+
getGraphAsync(config) {
|
|
603
|
+
return this.#graph.getGraphAsync(config);
|
|
604
|
+
}
|
|
605
|
+
/**
|
|
606
|
+
* @internal
|
|
607
|
+
*/
|
|
608
|
+
getState(config, options) {
|
|
609
|
+
return this.#graph.getState(config, options);
|
|
610
|
+
}
|
|
611
|
+
/**
|
|
612
|
+
* @internal
|
|
613
|
+
*/
|
|
614
|
+
getStateHistory(config, options) {
|
|
615
|
+
return this.#graph.getStateHistory(config, options);
|
|
616
|
+
}
|
|
617
|
+
/**
|
|
618
|
+
* @internal
|
|
619
|
+
*/
|
|
620
|
+
getSubgraphs(namespace, recurse) {
|
|
621
|
+
return this.#graph.getSubgraphs(namespace, recurse);
|
|
622
|
+
}
|
|
623
|
+
/**
|
|
624
|
+
* @internal
|
|
625
|
+
*/
|
|
626
|
+
getSubgraphAsync(namespace, recurse) {
|
|
627
|
+
return this.#graph.getSubgraphsAsync(namespace, recurse);
|
|
628
|
+
}
|
|
629
|
+
/**
|
|
630
|
+
* @internal
|
|
631
|
+
*/
|
|
632
|
+
updateState(inputConfig, values, asNode) {
|
|
633
|
+
return this.#graph.updateState(inputConfig, values, asNode);
|
|
634
|
+
}
|
|
242
635
|
};
|
|
243
636
|
|
|
244
637
|
//#endregion
|