langchain 1.0.0-alpha.5 → 1.0.0-alpha.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agents/ReactAgent.cjs +5 -5
- package/dist/agents/ReactAgent.cjs.map +1 -1
- package/dist/agents/ReactAgent.d.cts +2 -5
- package/dist/agents/ReactAgent.d.cts.map +1 -1
- package/dist/agents/ReactAgent.d.ts +2 -5
- package/dist/agents/ReactAgent.d.ts.map +1 -1
- package/dist/agents/ReactAgent.js +6 -6
- package/dist/agents/ReactAgent.js.map +1 -1
- package/dist/agents/annotation.cjs.map +1 -1
- package/dist/agents/annotation.d.cts +13 -8
- package/dist/agents/annotation.d.cts.map +1 -1
- package/dist/agents/annotation.d.ts +13 -8
- package/dist/agents/annotation.d.ts.map +1 -1
- package/dist/agents/annotation.js.map +1 -1
- package/dist/agents/createAgent.cjs.map +1 -1
- package/dist/agents/createAgent.js.map +1 -1
- package/dist/agents/index.cjs +2 -2
- package/dist/agents/index.cjs.map +1 -1
- package/dist/agents/index.d.cts +50 -50
- package/dist/agents/index.d.cts.map +1 -1
- package/dist/agents/index.d.ts +50 -50
- package/dist/agents/index.d.ts.map +1 -1
- package/dist/agents/index.js +2 -2
- package/dist/agents/index.js.map +1 -1
- package/dist/agents/interrupt.d.cts +14 -1
- package/dist/agents/interrupt.d.cts.map +1 -1
- package/dist/agents/interrupt.d.ts +14 -1
- package/dist/agents/interrupt.d.ts.map +1 -1
- package/dist/agents/middlewareAgent/ReactAgent.cjs +273 -66
- package/dist/agents/middlewareAgent/ReactAgent.cjs.map +1 -1
- package/dist/agents/middlewareAgent/ReactAgent.d.cts +102 -16
- package/dist/agents/middlewareAgent/ReactAgent.d.cts.map +1 -1
- package/dist/agents/middlewareAgent/ReactAgent.d.ts +102 -16
- package/dist/agents/middlewareAgent/ReactAgent.d.ts.map +1 -1
- package/dist/agents/middlewareAgent/ReactAgent.js +275 -68
- package/dist/agents/middlewareAgent/ReactAgent.js.map +1 -1
- package/dist/agents/middlewareAgent/annotation.cjs +12 -6
- package/dist/agents/middlewareAgent/annotation.cjs.map +1 -1
- package/dist/agents/middlewareAgent/annotation.js +12 -6
- package/dist/agents/middlewareAgent/annotation.js.map +1 -1
- package/dist/agents/middlewareAgent/constants.d.cts +5 -0
- package/dist/agents/middlewareAgent/constants.d.cts.map +1 -0
- package/dist/agents/middlewareAgent/constants.d.ts +5 -0
- package/dist/agents/middlewareAgent/constants.d.ts.map +1 -0
- package/dist/agents/middlewareAgent/index.cjs.map +1 -1
- package/dist/agents/middlewareAgent/index.js.map +1 -1
- package/dist/agents/middlewareAgent/middleware/bigTool.cjs +162 -0
- package/dist/agents/middlewareAgent/middleware/bigTool.cjs.map +1 -0
- package/dist/agents/middlewareAgent/middleware/bigTool.d.cts +113 -0
- package/dist/agents/middlewareAgent/middleware/bigTool.d.cts.map +1 -0
- package/dist/agents/middlewareAgent/middleware/bigTool.d.ts +113 -0
- package/dist/agents/middlewareAgent/middleware/bigTool.d.ts.map +1 -0
- package/dist/agents/middlewareAgent/middleware/bigTool.js +161 -0
- package/dist/agents/middlewareAgent/middleware/bigTool.js.map +1 -0
- package/dist/agents/middlewareAgent/middleware/dynamicSystemPrompt.cjs +58 -0
- package/dist/agents/middlewareAgent/middleware/dynamicSystemPrompt.cjs.map +1 -0
- package/dist/agents/middlewareAgent/middleware/dynamicSystemPrompt.d.cts +46 -0
- package/dist/agents/middlewareAgent/middleware/dynamicSystemPrompt.d.cts.map +1 -0
- package/dist/agents/middlewareAgent/middleware/dynamicSystemPrompt.d.ts +46 -0
- package/dist/agents/middlewareAgent/middleware/dynamicSystemPrompt.d.ts.map +1 -0
- package/dist/agents/middlewareAgent/middleware/dynamicSystemPrompt.js +58 -0
- package/dist/agents/middlewareAgent/middleware/dynamicSystemPrompt.js.map +1 -0
- package/dist/agents/middlewareAgent/middleware/hitl.cjs +311 -0
- package/dist/agents/middlewareAgent/middleware/hitl.cjs.map +1 -0
- package/dist/agents/middlewareAgent/middleware/hitl.d.cts +419 -0
- package/dist/agents/middlewareAgent/middleware/hitl.d.cts.map +1 -0
- package/dist/agents/middlewareAgent/middleware/hitl.d.ts +419 -0
- package/dist/agents/middlewareAgent/middleware/hitl.d.ts.map +1 -0
- package/dist/agents/middlewareAgent/middleware/hitl.js +310 -0
- package/dist/agents/middlewareAgent/middleware/hitl.js.map +1 -0
- package/dist/agents/middlewareAgent/middleware/index.cjs +32 -0
- package/dist/agents/middlewareAgent/middleware/index.cjs.map +1 -0
- package/dist/agents/middlewareAgent/middleware/index.d.cts +6 -0
- package/dist/agents/middlewareAgent/middleware/index.d.ts +6 -0
- package/dist/agents/middlewareAgent/middleware/index.js +21 -0
- package/dist/agents/middlewareAgent/middleware/index.js.map +1 -0
- package/dist/agents/middlewareAgent/{middlewares → middleware}/promptCaching.cjs +72 -27
- package/dist/agents/middlewareAgent/middleware/promptCaching.cjs.map +1 -0
- package/dist/agents/middlewareAgent/{middlewares → middleware}/promptCaching.d.cts +60 -15
- package/dist/agents/middlewareAgent/middleware/promptCaching.d.cts.map +1 -0
- package/dist/agents/middlewareAgent/{middlewares → middleware}/promptCaching.d.ts +60 -15
- package/dist/agents/middlewareAgent/middleware/promptCaching.d.ts.map +1 -0
- package/dist/agents/middlewareAgent/{middlewares → middleware}/promptCaching.js +71 -26
- package/dist/agents/middlewareAgent/middleware/promptCaching.js.map +1 -0
- package/dist/agents/middlewareAgent/{middlewares → middleware}/summarization.cjs +35 -23
- package/dist/agents/middlewareAgent/middleware/summarization.cjs.map +1 -0
- package/dist/agents/middlewareAgent/{middlewares → middleware}/summarization.d.cts +7 -5
- package/dist/agents/middlewareAgent/middleware/summarization.d.cts.map +1 -0
- package/dist/agents/middlewareAgent/{middlewares → middleware}/summarization.d.ts +7 -5
- package/dist/agents/middlewareAgent/middleware/summarization.d.ts.map +1 -0
- package/dist/agents/middlewareAgent/{middlewares → middleware}/summarization.js +29 -17
- package/dist/agents/middlewareAgent/middleware/summarization.js.map +1 -0
- package/dist/agents/middlewareAgent/middleware.cjs +8 -5
- package/dist/agents/middlewareAgent/middleware.cjs.map +1 -1
- package/dist/agents/middlewareAgent/middleware.d.cts +67 -7
- package/dist/agents/middlewareAgent/middleware.d.cts.map +1 -1
- package/dist/agents/middlewareAgent/middleware.d.ts +67 -7
- package/dist/agents/middlewareAgent/middleware.d.ts.map +1 -1
- package/dist/agents/middlewareAgent/middleware.js +8 -5
- package/dist/agents/middlewareAgent/middleware.js.map +1 -1
- package/dist/agents/middlewareAgent/nodes/AfterModalNode.cjs +2 -2
- package/dist/agents/middlewareAgent/nodes/AfterModalNode.cjs.map +1 -1
- package/dist/agents/middlewareAgent/nodes/AfterModalNode.js +2 -2
- package/dist/agents/middlewareAgent/nodes/AfterModalNode.js.map +1 -1
- package/dist/agents/middlewareAgent/nodes/AgentNode.cjs +125 -83
- package/dist/agents/middlewareAgent/nodes/AgentNode.cjs.map +1 -1
- package/dist/agents/middlewareAgent/nodes/AgentNode.js +128 -86
- package/dist/agents/middlewareAgent/nodes/AgentNode.js.map +1 -1
- package/dist/agents/middlewareAgent/nodes/BeforeModalNode.cjs +2 -2
- package/dist/agents/middlewareAgent/nodes/BeforeModalNode.cjs.map +1 -1
- package/dist/agents/middlewareAgent/nodes/BeforeModalNode.js +2 -2
- package/dist/agents/middlewareAgent/nodes/BeforeModalNode.js.map +1 -1
- package/dist/agents/middlewareAgent/nodes/middleware.cjs +42 -17
- package/dist/agents/middlewareAgent/nodes/middleware.cjs.map +1 -1
- package/dist/agents/middlewareAgent/nodes/middleware.js +42 -18
- package/dist/agents/middlewareAgent/nodes/middleware.js.map +1 -1
- package/dist/agents/middlewareAgent/nodes/utils.cjs +30 -16
- package/dist/agents/middlewareAgent/nodes/utils.cjs.map +1 -1
- package/dist/agents/middlewareAgent/nodes/utils.js +28 -14
- package/dist/agents/middlewareAgent/nodes/utils.js.map +1 -1
- package/dist/agents/middlewareAgent/types.d.cts +162 -88
- package/dist/agents/middlewareAgent/types.d.cts.map +1 -1
- package/dist/agents/middlewareAgent/types.d.ts +162 -88
- package/dist/agents/middlewareAgent/types.d.ts.map +1 -1
- package/dist/agents/model.cjs +13 -0
- package/dist/agents/model.cjs.map +1 -0
- package/dist/agents/model.js +11 -0
- package/dist/agents/model.js.map +1 -0
- package/dist/agents/nodes/AgentNode.cjs +60 -32
- package/dist/agents/nodes/AgentNode.cjs.map +1 -1
- package/dist/agents/nodes/AgentNode.js +61 -33
- package/dist/agents/nodes/AgentNode.js.map +1 -1
- package/dist/agents/nodes/ToolNode.cjs +4 -4
- package/dist/agents/nodes/ToolNode.cjs.map +1 -1
- package/dist/agents/nodes/ToolNode.d.cts +2 -3
- package/dist/agents/nodes/ToolNode.d.cts.map +1 -1
- package/dist/agents/nodes/ToolNode.d.ts +1 -2
- package/dist/agents/nodes/ToolNode.d.ts.map +1 -1
- package/dist/agents/nodes/ToolNode.js +5 -5
- package/dist/agents/nodes/ToolNode.js.map +1 -1
- package/dist/agents/responses.cjs +53 -11
- package/dist/agents/responses.cjs.map +1 -1
- package/dist/agents/responses.d.cts +12 -20
- package/dist/agents/responses.d.cts.map +1 -1
- package/dist/agents/responses.d.ts +12 -20
- package/dist/agents/responses.d.ts.map +1 -1
- package/dist/agents/responses.js +53 -12
- package/dist/agents/responses.js.map +1 -1
- package/dist/agents/types.d.cts +3 -6
- package/dist/agents/types.d.cts.map +1 -1
- package/dist/agents/types.d.ts +3 -6
- package/dist/agents/types.d.ts.map +1 -1
- package/dist/agents/utils.cjs +11 -29
- package/dist/agents/utils.cjs.map +1 -1
- package/dist/agents/utils.js +9 -26
- package/dist/agents/utils.js.map +1 -1
- package/dist/agents/withAgentName.cjs.map +1 -1
- package/dist/agents/withAgentName.js.map +1 -1
- package/dist/chains/api/prompts.cjs.map +1 -1
- package/dist/chains/api/prompts.js.map +1 -1
- package/dist/chains/constitutional_ai/constitutional_chain.cjs.map +1 -1
- package/dist/chains/constitutional_ai/constitutional_chain.js.map +1 -1
- package/dist/chains/index.cjs +0 -3
- package/dist/chains/index.cjs.map +1 -1
- package/dist/chains/index.d.cts +1 -2
- package/dist/chains/index.d.ts +1 -2
- package/dist/chains/index.js +1 -3
- package/dist/chains/index.js.map +1 -1
- package/dist/chains/openai_functions/extraction.cjs.map +1 -1
- package/dist/chains/openai_functions/extraction.d.cts +1 -3
- package/dist/chains/openai_functions/extraction.d.cts.map +1 -1
- package/dist/chains/openai_functions/extraction.d.ts +1 -3
- package/dist/chains/openai_functions/extraction.d.ts.map +1 -1
- package/dist/chains/openai_functions/extraction.js.map +1 -1
- package/dist/chains/openai_functions/index.cjs +0 -5
- package/dist/chains/openai_functions/index.cjs.map +1 -1
- package/dist/chains/openai_functions/index.d.cts +1 -2
- package/dist/chains/openai_functions/index.d.ts +1 -2
- package/dist/chains/openai_functions/index.js +1 -4
- package/dist/chains/openai_functions/index.js.map +1 -1
- package/dist/chains/openai_functions/openapi.cjs +4 -4
- package/dist/chains/openai_functions/openapi.cjs.map +1 -1
- package/dist/chains/openai_functions/openapi.d.cts +1 -1
- package/dist/chains/openai_functions/openapi.js +4 -4
- package/dist/chains/openai_functions/openapi.js.map +1 -1
- package/dist/chains/openai_functions/tagging.cjs.map +1 -1
- package/dist/chains/openai_functions/tagging.d.cts +1 -3
- package/dist/chains/openai_functions/tagging.d.cts.map +1 -1
- package/dist/chains/openai_functions/tagging.d.ts +1 -3
- package/dist/chains/openai_functions/tagging.d.ts.map +1 -1
- package/dist/chains/openai_functions/tagging.js.map +1 -1
- package/dist/chains/query_constructor/index.cjs +4 -4
- package/dist/chains/query_constructor/index.cjs.map +1 -1
- package/dist/chains/query_constructor/index.d.cts +4 -2
- package/dist/chains/query_constructor/index.d.cts.map +1 -1
- package/dist/chains/query_constructor/index.d.ts +4 -2
- package/dist/chains/query_constructor/index.d.ts.map +1 -1
- package/dist/chains/query_constructor/index.js +1 -1
- package/dist/chains/query_constructor/index.js.map +1 -1
- package/dist/chains/question_answering/load.d.ts +2 -2
- package/dist/chains/question_answering/load.d.ts.map +1 -1
- package/dist/chains/question_answering/map_reduce_prompts.cjs.map +1 -1
- package/dist/chains/question_answering/map_reduce_prompts.js.map +1 -1
- package/dist/chains/question_answering/refine_prompts.cjs.map +1 -1
- package/dist/chains/question_answering/refine_prompts.js.map +1 -1
- package/dist/chains/question_answering/stuff_prompts.cjs.map +1 -1
- package/dist/chains/question_answering/stuff_prompts.js.map +1 -1
- package/dist/chains/router/multi_prompt.cjs +4 -4
- package/dist/chains/router/multi_prompt.cjs.map +1 -1
- package/dist/chains/router/multi_prompt.js +1 -1
- package/dist/chains/router/multi_prompt.js.map +1 -1
- package/dist/chains/router/multi_retrieval_qa.cjs +4 -4
- package/dist/chains/router/multi_retrieval_qa.cjs.map +1 -1
- package/dist/chains/router/multi_retrieval_qa.js +1 -1
- package/dist/chains/router/multi_retrieval_qa.js.map +1 -1
- package/dist/chains/sql_db/sql_db_prompt.cjs.map +1 -1
- package/dist/chains/sql_db/sql_db_prompt.d.cts.map +1 -1
- package/dist/chains/sql_db/sql_db_prompt.d.ts.map +1 -1
- package/dist/chains/sql_db/sql_db_prompt.js.map +1 -1
- package/dist/chains/summarization/stuff_prompts.cjs.map +1 -1
- package/dist/chains/summarization/stuff_prompts.js.map +1 -1
- package/dist/chat_models/universal.cjs +8 -5
- package/dist/chat_models/universal.cjs.map +1 -1
- package/dist/chat_models/universal.d.cts +2 -2
- package/dist/chat_models/universal.d.cts.map +1 -1
- package/dist/chat_models/universal.d.ts +2 -2
- package/dist/chat_models/universal.d.ts.map +1 -1
- package/dist/chat_models/universal.js +8 -5
- package/dist/chat_models/universal.js.map +1 -1
- package/dist/document_loaders/fs/directory.cjs.map +1 -1
- package/dist/document_loaders/fs/directory.d.cts +0 -1
- package/dist/document_loaders/fs/directory.d.cts.map +1 -1
- package/dist/document_loaders/fs/directory.d.ts +0 -1
- package/dist/document_loaders/fs/directory.d.ts.map +1 -1
- package/dist/document_loaders/fs/directory.js.map +1 -1
- package/dist/document_loaders/fs/json.cjs +7 -1
- package/dist/document_loaders/fs/json.cjs.map +1 -1
- package/dist/document_loaders/fs/json.js +7 -1
- package/dist/document_loaders/fs/json.js.map +1 -1
- package/dist/embeddings/cache_backed.cjs +1 -1
- package/dist/embeddings/cache_backed.cjs.map +1 -1
- package/dist/embeddings/cache_backed.d.cts +1 -1
- package/dist/embeddings/cache_backed.d.ts +2 -2
- package/dist/embeddings/cache_backed.js +2 -2
- package/dist/embeddings/cache_backed.js.map +1 -1
- package/dist/evaluation/agents/trajectory.d.cts.map +1 -1
- package/dist/evaluation/comparison/pairwise.d.cts.map +1 -1
- package/dist/evaluation/criteria/criteria.d.cts.map +1 -1
- package/dist/evaluation/embedding_distance/base.cjs +2 -4
- package/dist/evaluation/embedding_distance/base.cjs.map +1 -1
- package/dist/evaluation/embedding_distance/base.js +2 -3
- package/dist/evaluation/embedding_distance/base.js.map +1 -1
- package/dist/evaluation/loader.cjs +7 -12
- package/dist/evaluation/loader.cjs.map +1 -1
- package/dist/evaluation/loader.d.cts +8 -2
- package/dist/evaluation/loader.d.cts.map +1 -1
- package/dist/evaluation/loader.d.ts +8 -2
- package/dist/evaluation/loader.d.ts.map +1 -1
- package/dist/evaluation/loader.js +7 -12
- package/dist/evaluation/loader.js.map +1 -1
- package/dist/hub/base.cjs.map +1 -1
- package/dist/hub/base.js.map +1 -1
- package/dist/index.cjs +38 -6
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +11 -4
- package/dist/index.d.ts +11 -4
- package/dist/index.js +18 -4
- package/dist/index.js.map +1 -1
- package/dist/langchain-core/dist/load/serializable.d.cts.map +1 -1
- package/dist/langchain-core/dist/messages/base.d.cts +24 -33
- package/dist/langchain-core/dist/messages/base.d.cts.map +1 -1
- package/dist/langchain-core/dist/messages/content/index.d.cts +21 -2
- package/dist/langchain-core/dist/messages/content/index.d.cts.map +1 -1
- package/dist/langchain-core/dist/messages/content/tools.d.cts +67 -6
- package/dist/langchain-core/dist/messages/content/tools.d.cts.map +1 -1
- package/dist/langchain-core/dist/messages/message.d.cts +598 -0
- package/dist/langchain-core/dist/messages/message.d.cts.map +1 -0
- package/dist/langchain-core/dist/messages/metadata.d.cts +97 -0
- package/dist/langchain-core/dist/messages/metadata.d.cts.map +1 -0
- package/dist/langchain-core/dist/messages/utils.d.cts +75 -0
- package/dist/langchain-core/dist/messages/utils.d.cts.map +1 -0
- package/dist/langchain-core/dist/prompt_values.d.cts.map +1 -1
- package/dist/langchain-core/dist/utils/types/index.d.cts.map +1 -1
- package/dist/libs/langchain-core/dist/load/serializable.d.ts.map +1 -1
- package/dist/libs/langchain-core/dist/messages/base.d.ts +24 -33
- package/dist/libs/langchain-core/dist/messages/base.d.ts.map +1 -1
- package/dist/libs/langchain-core/dist/messages/content/index.d.ts +21 -2
- package/dist/libs/langchain-core/dist/messages/content/index.d.ts.map +1 -1
- package/dist/libs/langchain-core/dist/messages/content/tools.d.ts +67 -6
- package/dist/libs/langchain-core/dist/messages/content/tools.d.ts.map +1 -1
- package/dist/libs/langchain-core/dist/messages/message.d.ts +598 -0
- package/dist/libs/langchain-core/dist/messages/message.d.ts.map +1 -0
- package/dist/libs/langchain-core/dist/messages/metadata.d.ts +97 -0
- package/dist/libs/langchain-core/dist/messages/metadata.d.ts.map +1 -0
- package/dist/libs/langchain-core/dist/messages/utils.d.ts +75 -0
- package/dist/libs/langchain-core/dist/messages/utils.d.ts.map +1 -0
- package/dist/libs/langchain-core/dist/prompt_values.d.ts.map +1 -1
- package/dist/libs/langchain-core/dist/utils/types/index.d.ts +2 -0
- package/dist/libs/langchain-core/dist/utils/types/index.d.ts.map +1 -1
- package/dist/libs/langchain-core/dist/utils/types/zod.d.ts +1 -0
- package/dist/load/import_map.cjs +3 -14
- package/dist/load/import_map.cjs.map +1 -1
- package/dist/load/import_map.js +3 -14
- package/dist/load/import_map.js.map +1 -1
- package/dist/memory/prompt.cjs.map +1 -1
- package/dist/memory/prompt.d.cts.map +1 -1
- package/dist/memory/prompt.d.ts.map +1 -1
- package/dist/memory/prompt.js.map +1 -1
- package/dist/output_parsers/combining.cjs +1 -1
- package/dist/output_parsers/combining.cjs.map +1 -1
- package/dist/output_parsers/combining.js +1 -1
- package/dist/output_parsers/combining.js.map +1 -1
- package/dist/output_parsers/expression_type_handlers/array_literal_expression_handler.cjs.map +1 -1
- package/dist/output_parsers/expression_type_handlers/array_literal_expression_handler.js.map +1 -1
- package/dist/output_parsers/expression_type_handlers/base.cjs +1 -1
- package/dist/output_parsers/expression_type_handlers/base.cjs.map +1 -1
- package/dist/output_parsers/expression_type_handlers/base.js +1 -1
- package/dist/output_parsers/expression_type_handlers/base.js.map +1 -1
- package/dist/output_parsers/regex.cjs.map +1 -1
- package/dist/output_parsers/regex.js.map +1 -1
- package/dist/output_parsers/structured.cjs +4 -4
- package/dist/output_parsers/structured.cjs.map +1 -1
- package/dist/output_parsers/structured.d.cts +1 -1
- package/dist/output_parsers/structured.d.cts.map +1 -1
- package/dist/output_parsers/structured.d.ts +1 -1
- package/dist/output_parsers/structured.d.ts.map +1 -1
- package/dist/output_parsers/structured.js +2 -2
- package/dist/output_parsers/structured.js.map +1 -1
- package/dist/retrievers/ensemble.cjs.map +1 -1
- package/dist/retrievers/ensemble.js.map +1 -1
- package/dist/storage/file_system.cjs +1 -1
- package/dist/storage/file_system.cjs.map +1 -1
- package/dist/storage/file_system.js +1 -1
- package/dist/storage/file_system.js.map +1 -1
- package/dist/tools/fs.cjs +5 -5
- package/dist/tools/fs.cjs.map +1 -1
- package/dist/tools/fs.d.cts +1 -1
- package/dist/tools/fs.d.cts.map +1 -1
- package/dist/tools/fs.d.ts +1 -1
- package/dist/tools/fs.d.ts.map +1 -1
- package/dist/tools/fs.js +1 -1
- package/dist/tools/fs.js.map +1 -1
- package/dist/tools/retriever.cjs +2 -2
- package/dist/tools/retriever.cjs.map +1 -1
- package/dist/tools/retriever.d.cts +1 -1
- package/dist/tools/retriever.d.cts.map +1 -1
- package/dist/tools/retriever.d.ts +1 -1
- package/dist/tools/retriever.d.ts.map +1 -1
- package/dist/tools/retriever.js +1 -1
- package/dist/tools/retriever.js.map +1 -1
- package/dist/tools/sql.cjs +1 -2
- package/dist/tools/sql.cjs.map +1 -1
- package/dist/tools/sql.d.cts +1 -1
- package/dist/tools/sql.d.cts.map +1 -1
- package/dist/tools/sql.d.ts +1 -1
- package/dist/tools/sql.d.ts.map +1 -1
- package/dist/tools/sql.js +1 -2
- package/dist/tools/sql.js.map +1 -1
- package/dist/types/expression-parser.d.cts +2 -0
- package/dist/types/expression-parser.d.cts.map +1 -1
- package/dist/types/expression-parser.d.ts +2 -0
- package/dist/types/expression-parser.d.ts.map +1 -1
- package/dist/util/hub.cjs +1 -1
- package/dist/util/hub.js +1 -1
- package/dist/util/openapi.cjs +1 -1
- package/dist/util/openapi.cjs.map +1 -1
- package/dist/util/openapi.js +1 -1
- package/dist/util/openapi.js.map +1 -1
- package/package.json +15 -21
- package/dist/agents/middlewareAgent/middlewares/hitl.cjs +0 -235
- package/dist/agents/middlewareAgent/middlewares/hitl.cjs.map +0 -1
- package/dist/agents/middlewareAgent/middlewares/hitl.d.cts +0 -199
- package/dist/agents/middlewareAgent/middlewares/hitl.d.cts.map +0 -1
- package/dist/agents/middlewareAgent/middlewares/hitl.d.ts +0 -199
- package/dist/agents/middlewareAgent/middlewares/hitl.d.ts.map +0 -1
- package/dist/agents/middlewareAgent/middlewares/hitl.js +0 -234
- package/dist/agents/middlewareAgent/middlewares/hitl.js.map +0 -1
- package/dist/agents/middlewareAgent/middlewares/index.cjs +0 -8
- package/dist/agents/middlewareAgent/middlewares/index.d.cts +0 -4
- package/dist/agents/middlewareAgent/middlewares/index.d.ts +0 -4
- package/dist/agents/middlewareAgent/middlewares/index.js +0 -5
- package/dist/agents/middlewareAgent/middlewares/promptCaching.cjs.map +0 -1
- package/dist/agents/middlewareAgent/middlewares/promptCaching.d.cts.map +0 -1
- package/dist/agents/middlewareAgent/middlewares/promptCaching.d.ts.map +0 -1
- package/dist/agents/middlewareAgent/middlewares/promptCaching.js.map +0 -1
- package/dist/agents/middlewareAgent/middlewares/summarization.cjs.map +0 -1
- package/dist/agents/middlewareAgent/middlewares/summarization.d.cts.map +0 -1
- package/dist/agents/middlewareAgent/middlewares/summarization.d.ts.map +0 -1
- package/dist/agents/middlewareAgent/middlewares/summarization.js.map +0 -1
- package/dist/chains/openai_functions/structured_output.cjs +0 -107
- package/dist/chains/openai_functions/structured_output.cjs.map +0 -1
- package/dist/chains/openai_functions/structured_output.d.cts +0 -38
- package/dist/chains/openai_functions/structured_output.d.cts.map +0 -1
- package/dist/chains/openai_functions/structured_output.d.ts +0 -38
- package/dist/chains/openai_functions/structured_output.d.ts.map +0 -1
- package/dist/chains/openai_functions/structured_output.js +0 -105
- package/dist/chains/openai_functions/structured_output.js.map +0 -1
- package/dist/chains/openai_moderation.cjs +0 -107
- package/dist/chains/openai_moderation.cjs.map +0 -1
- package/dist/chains/openai_moderation.d.cts +0 -74
- package/dist/chains/openai_moderation.d.cts.map +0 -1
- package/dist/chains/openai_moderation.d.ts +0 -74
- package/dist/chains/openai_moderation.d.ts.map +0 -1
- package/dist/chains/openai_moderation.js +0 -106
- package/dist/chains/openai_moderation.js.map +0 -1
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
const require_rolldown_runtime = require('../../../_virtual/rolldown_runtime.cjs');
|
|
1
2
|
const require_RunnableCallable = require('../../RunnableCallable.cjs');
|
|
2
3
|
const require_utils = require('./utils.cjs');
|
|
4
|
+
const __langchain_core_utils_types = require_rolldown_runtime.__toESM(require("@langchain/core/utils/types"));
|
|
3
5
|
|
|
4
6
|
//#region src/agents/middlewareAgent/nodes/middleware.ts
|
|
5
7
|
var MiddlewareNode = class extends require_RunnableCallable.RunnableCallable {
|
|
@@ -9,20 +11,22 @@ var MiddlewareNode = class extends require_RunnableCallable.RunnableCallable {
|
|
|
9
11
|
*/
|
|
10
12
|
let filteredContext = {};
|
|
11
13
|
/**
|
|
12
|
-
*
|
|
14
|
+
* Parse context using middleware's contextSchema to apply defaults and validation
|
|
13
15
|
*/
|
|
14
|
-
if (this.middleware.contextSchema
|
|
16
|
+
if (this.middleware.contextSchema) {
|
|
15
17
|
/**
|
|
16
18
|
* Extract only the fields relevant to this middleware's schema
|
|
17
19
|
*/
|
|
18
20
|
const schemaShape = this.middleware.contextSchema?.shape;
|
|
19
21
|
if (schemaShape) {
|
|
20
22
|
const relevantContext = {};
|
|
21
|
-
|
|
23
|
+
const invokeContext = config?.context || {};
|
|
24
|
+
for (const key of Object.keys(schemaShape)) if (key in invokeContext) relevantContext[key] = invokeContext[key];
|
|
22
25
|
/**
|
|
23
|
-
* Parse to apply defaults and validation
|
|
26
|
+
* Parse to apply defaults and validation, even if relevantContext is empty
|
|
27
|
+
* This will throw if required fields are missing and no defaults exist
|
|
24
28
|
*/
|
|
25
|
-
filteredContext = this.middleware.contextSchema
|
|
29
|
+
filteredContext = (0, __langchain_core_utils_types.interopParse)(this.middleware.contextSchema, relevantContext);
|
|
26
30
|
}
|
|
27
31
|
}
|
|
28
32
|
/**
|
|
@@ -30,15 +34,11 @@ var MiddlewareNode = class extends require_RunnableCallable.RunnableCallable {
|
|
|
30
34
|
*/
|
|
31
35
|
const runtime = {
|
|
32
36
|
toolCalls: require_utils.parseToolCalls(state.messages),
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
type: "jump",
|
|
39
|
-
target,
|
|
40
|
-
stateUpdate
|
|
41
|
-
}),
|
|
37
|
+
context: filteredContext,
|
|
38
|
+
writer: config?.writer,
|
|
39
|
+
interrupt: config?.interrupt,
|
|
40
|
+
signal: config?.signal,
|
|
41
|
+
tools: this.middleware.tools ?? [],
|
|
42
42
|
terminate: (result$1) => {
|
|
43
43
|
if (result$1 instanceof Error) throw result$1;
|
|
44
44
|
return {
|
|
@@ -47,20 +47,45 @@ var MiddlewareNode = class extends require_RunnableCallable.RunnableCallable {
|
|
|
47
47
|
};
|
|
48
48
|
}
|
|
49
49
|
};
|
|
50
|
-
const result = await this.runHook(state, runtime
|
|
50
|
+
const result = await this.runHook(state, runtime);
|
|
51
51
|
/**
|
|
52
52
|
* If result is undefined, return current state
|
|
53
53
|
*/
|
|
54
|
-
if (!result) return
|
|
54
|
+
if (!result) return {
|
|
55
|
+
...state,
|
|
56
|
+
jumpTo: void 0
|
|
57
|
+
};
|
|
58
|
+
/**
|
|
59
|
+
* Verify that the jump target is allowed for the middleware
|
|
60
|
+
*/
|
|
61
|
+
const jumpToConstraint = this.name?.startsWith("BeforeModelNode_") ? this.middleware.beforeModelJumpTo : this.middleware.afterModelJumpTo;
|
|
62
|
+
if (typeof result.jumpTo === "string" && !jumpToConstraint?.includes(result.jumpTo)) {
|
|
63
|
+
const constraint = this.name?.startsWith("BeforeModelNode_") ? "beforeModelJumpTo" : "afterModelJumpTo";
|
|
64
|
+
const suggestion = jumpToConstraint && jumpToConstraint.length > 0 ? `must be one of: ${jumpToConstraint?.join(", ")}.` : `no ${constraint} defined in middleware ${this.middleware.name}.`;
|
|
65
|
+
throw new Error(`Invalid jump target: ${result.jumpTo}, ${suggestion}.`);
|
|
66
|
+
}
|
|
67
|
+
const jumpTo = require_utils.parseJumpToTarget(result.jumpTo);
|
|
55
68
|
/**
|
|
56
69
|
* If result is a control action, handle it
|
|
57
70
|
*/
|
|
71
|
+
if (typeof result === "object" && "type" in result) {
|
|
72
|
+
if (result.type === "terminate") {
|
|
73
|
+
if (result.error) throw result.error;
|
|
74
|
+
return {
|
|
75
|
+
...state,
|
|
76
|
+
...result.result || {},
|
|
77
|
+
jumpTo
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
throw new Error(`Invalid control action: ${JSON.stringify(result)}`);
|
|
81
|
+
}
|
|
58
82
|
/**
|
|
59
83
|
* If result is a state update, merge it with current state
|
|
60
84
|
*/
|
|
61
85
|
return {
|
|
62
86
|
...state,
|
|
63
|
-
...result
|
|
87
|
+
...result,
|
|
88
|
+
jumpTo
|
|
64
89
|
};
|
|
65
90
|
}
|
|
66
91
|
get nodeOptions() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.cjs","names":["RunnableCallable","state: TStateSchema","config?: LangGraphRunnableConfig","relevantContext: Record<string, unknown>","runtime: Runtime<TContextSchema>","parseToolCalls","
|
|
1
|
+
{"version":3,"file":"middleware.cjs","names":["RunnableCallable","state: TStateSchema","config?: LangGraphRunnableConfig","relevantContext: Record<string, unknown>","runtime: Runtime<TStateSchema, TContextSchema>","parseToolCalls","result?: Partial<TStateSchema> | Error","result","parseJumpToTarget","derivePrivateState"],"sources":["../../../../src/agents/middlewareAgent/nodes/middleware.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable no-instanceof/no-instanceof */\nimport { z } from \"zod/v3\";\nimport { LangGraphRunnableConfig, Command } from \"@langchain/langgraph\";\nimport { interopParse } from \"@langchain/core/utils/types\";\n\nimport { RunnableCallable } from \"../../RunnableCallable.js\";\nimport type {\n Runtime,\n ControlAction,\n AgentMiddleware,\n MiddlewareResult,\n JumpToTarget,\n} from \"../types.js\";\nimport {\n derivePrivateState,\n parseToolCalls,\n parseJumpToTarget,\n} from \"./utils.js\";\n\ntype NodeOutput<TStateSchema extends Record<string, any>> =\n | TStateSchema\n | Command<any, TStateSchema, string>;\n\nexport abstract class MiddlewareNode<\n TStateSchema extends Record<string, any>,\n TContextSchema extends Record<string, any>\n> extends RunnableCallable<TStateSchema, NodeOutput<TStateSchema>> {\n abstract middleware: AgentMiddleware<\n z.ZodObject<z.ZodRawShape>,\n z.ZodObject<z.ZodRawShape>\n >;\n\n abstract runHook(\n state: TStateSchema,\n config?: Runtime<TStateSchema, TContextSchema>\n ): Promise<MiddlewareResult<TStateSchema>>;\n\n async invokeMiddleware(\n state: TStateSchema,\n config?: LangGraphRunnableConfig\n ): Promise<NodeOutput<TStateSchema>> {\n /**\n * Filter context based on middleware's contextSchema\n */\n let filteredContext = {} as TContextSchema;\n /**\n * Parse context using middleware's contextSchema to apply defaults and validation\n */\n if (this.middleware.contextSchema) {\n /**\n * Extract only the fields relevant to this middleware's schema\n */\n const schemaShape = this.middleware.contextSchema?.shape;\n if (schemaShape) {\n const relevantContext: Record<string, unknown> = {};\n const invokeContext = config?.context || {};\n for (const key of Object.keys(schemaShape)) {\n if (key in invokeContext) {\n relevantContext[key] = invokeContext[key];\n }\n }\n /**\n * Parse to apply defaults and validation, even if relevantContext is empty\n * This will throw if required fields are missing and no defaults exist\n */\n filteredContext = interopParse(\n this.middleware.contextSchema,\n relevantContext\n ) as TContextSchema;\n }\n }\n\n /**\n * ToDo: implement later\n */\n const runtime: Runtime<TStateSchema, TContextSchema> = {\n toolCalls: parseToolCalls(state.messages),\n context: filteredContext,\n writer: config?.writer,\n interrupt: config?.interrupt,\n signal: config?.signal,\n tools: this.middleware.tools ?? [],\n terminate: (\n result?: Partial<TStateSchema> | Error\n ): ControlAction<TStateSchema> => {\n if (result instanceof Error) {\n throw result;\n }\n return { type: \"terminate\", result };\n },\n };\n\n const result = await this.runHook(state, runtime);\n\n /**\n * If result is undefined, return current state\n */\n if (!result) {\n return { ...state, jumpTo: undefined };\n }\n\n /**\n * Verify that the jump target is allowed for the middleware\n */\n const jumpToConstraint = this.name?.startsWith(\"BeforeModelNode_\")\n ? this.middleware.beforeModelJumpTo\n : this.middleware.afterModelJumpTo;\n if (\n typeof result.jumpTo === \"string\" &&\n !jumpToConstraint?.includes(result.jumpTo as JumpToTarget)\n ) {\n const constraint = this.name?.startsWith(\"BeforeModelNode_\")\n ? \"beforeModelJumpTo\"\n : \"afterModelJumpTo\";\n const suggestion =\n jumpToConstraint && jumpToConstraint.length > 0\n ? `must be one of: ${jumpToConstraint?.join(\", \")}.`\n : `no ${constraint} defined in middleware ${this.middleware.name}.`;\n throw new Error(`Invalid jump target: ${result.jumpTo}, ${suggestion}.`);\n }\n\n const jumpTo = parseJumpToTarget(result.jumpTo as string);\n\n /**\n * If result is a control action, handle it\n */\n if (typeof result === \"object\" && \"type\" in result) {\n // Handle control actions\n if (result.type === \"terminate\") {\n if (result.error) {\n throw result.error;\n }\n return {\n ...state,\n ...(result.result || {}),\n jumpTo,\n };\n }\n\n throw new Error(`Invalid control action: ${JSON.stringify(result)}`);\n }\n\n /**\n * If result is a state update, merge it with current state\n */\n return { ...state, ...result, jumpTo };\n }\n\n get nodeOptions(): {\n input: z.ZodObject<TStateSchema>;\n } {\n return {\n input: derivePrivateState(\n this.middleware.stateSchema\n ) as z.ZodObject<TStateSchema>,\n };\n }\n}\n"],"mappings":";;;;;;AAwBA,IAAsB,iBAAtB,cAGUA,0CAAyD;CAWjE,MAAM,iBACJC,OACAC,QACmC;;;;EAInC,IAAI,kBAAkB,CAAE;;;;AAIxB,MAAI,KAAK,WAAW,eAAe;;;;GAIjC,MAAM,cAAc,KAAK,WAAW,eAAe;AACnD,OAAI,aAAa;IACf,MAAMC,kBAA2C,CAAE;IACnD,MAAM,gBAAgB,QAAQ,WAAW,CAAE;AAC3C,SAAK,MAAM,OAAO,OAAO,KAAK,YAAY,CACxC,KAAI,OAAO,eACT,gBAAgB,OAAO,cAAc;;;;;IAOzC,iEACE,KAAK,WAAW,eAChB,gBACD;GACF;EACF;;;;EAKD,MAAMC,UAAiD;GACrD,WAAWC,6BAAe,MAAM,SAAS;GACzC,SAAS;GACT,QAAQ,QAAQ;GAChB,WAAW,QAAQ;GACnB,QAAQ,QAAQ;GAChB,OAAO,KAAK,WAAW,SAAS,CAAE;GAClC,WAAW,CACTC,aACgC;AAChC,QAAIC,oBAAkB,MACpB,OAAMA;AAER,WAAO;KAAE,MAAM;KAAa;IAAQ;GACrC;EACF;EAED,MAAM,SAAS,MAAM,KAAK,QAAQ,OAAO,QAAQ;;;;AAKjD,MAAI,CAAC,OACH,QAAO;GAAE,GAAG;GAAO,QAAQ;EAAW;;;;EAMxC,MAAM,mBAAmB,KAAK,MAAM,WAAW,mBAAmB,GAC9D,KAAK,WAAW,oBAChB,KAAK,WAAW;AACpB,MACE,OAAO,OAAO,WAAW,YACzB,CAAC,kBAAkB,SAAS,OAAO,OAAuB,EAC1D;GACA,MAAM,aAAa,KAAK,MAAM,WAAW,mBAAmB,GACxD,sBACA;GACJ,MAAM,aACJ,oBAAoB,iBAAiB,SAAS,IAC1C,CAAC,gBAAgB,EAAE,kBAAkB,KAAK,KAAK,CAAC,CAAC,CAAC,GAClD,CAAC,GAAG,EAAE,WAAW,uBAAuB,EAAE,KAAK,WAAW,KAAK,CAAC,CAAC;AACvE,SAAM,IAAI,MAAM,CAAC,qBAAqB,EAAE,OAAO,OAAO,EAAE,EAAE,WAAW,CAAC,CAAC;EACxE;EAED,MAAM,SAASC,gCAAkB,OAAO,OAAiB;;;;AAKzD,MAAI,OAAO,WAAW,YAAY,UAAU,QAAQ;AAElD,OAAI,OAAO,SAAS,aAAa;AAC/B,QAAI,OAAO,MACT,OAAM,OAAO;AAEf,WAAO;KACL,GAAG;KACH,GAAI,OAAO,UAAU,CAAE;KACvB;IACD;GACF;AAED,SAAM,IAAI,MAAM,CAAC,wBAAwB,EAAE,KAAK,UAAU,OAAO,EAAE;EACpE;;;;AAKD,SAAO;GAAE,GAAG;GAAO,GAAG;GAAQ;EAAQ;CACvC;CAED,IAAI,cAEF;AACA,SAAO,EACL,OAAOC,iCACL,KAAK,WAAW,YACjB,CACF;CACF;AACF"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { RunnableCallable } from "../../RunnableCallable.js";
|
|
2
|
-
import { derivePrivateState,
|
|
2
|
+
import { derivePrivateState, parseJumpToTarget, parseToolCalls } from "./utils.js";
|
|
3
|
+
import { interopParse } from "@langchain/core/utils/types";
|
|
3
4
|
|
|
4
5
|
//#region src/agents/middlewareAgent/nodes/middleware.ts
|
|
5
6
|
var MiddlewareNode = class extends RunnableCallable {
|
|
@@ -9,20 +10,22 @@ var MiddlewareNode = class extends RunnableCallable {
|
|
|
9
10
|
*/
|
|
10
11
|
let filteredContext = {};
|
|
11
12
|
/**
|
|
12
|
-
*
|
|
13
|
+
* Parse context using middleware's contextSchema to apply defaults and validation
|
|
13
14
|
*/
|
|
14
|
-
if (this.middleware.contextSchema
|
|
15
|
+
if (this.middleware.contextSchema) {
|
|
15
16
|
/**
|
|
16
17
|
* Extract only the fields relevant to this middleware's schema
|
|
17
18
|
*/
|
|
18
19
|
const schemaShape = this.middleware.contextSchema?.shape;
|
|
19
20
|
if (schemaShape) {
|
|
20
21
|
const relevantContext = {};
|
|
21
|
-
|
|
22
|
+
const invokeContext = config?.context || {};
|
|
23
|
+
for (const key of Object.keys(schemaShape)) if (key in invokeContext) relevantContext[key] = invokeContext[key];
|
|
22
24
|
/**
|
|
23
|
-
* Parse to apply defaults and validation
|
|
25
|
+
* Parse to apply defaults and validation, even if relevantContext is empty
|
|
26
|
+
* This will throw if required fields are missing and no defaults exist
|
|
24
27
|
*/
|
|
25
|
-
filteredContext = this.middleware.contextSchema
|
|
28
|
+
filteredContext = interopParse(this.middleware.contextSchema, relevantContext);
|
|
26
29
|
}
|
|
27
30
|
}
|
|
28
31
|
/**
|
|
@@ -30,15 +33,11 @@ var MiddlewareNode = class extends RunnableCallable {
|
|
|
30
33
|
*/
|
|
31
34
|
const runtime = {
|
|
32
35
|
toolCalls: parseToolCalls(state.messages),
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
type: "jump",
|
|
39
|
-
target,
|
|
40
|
-
stateUpdate
|
|
41
|
-
}),
|
|
36
|
+
context: filteredContext,
|
|
37
|
+
writer: config?.writer,
|
|
38
|
+
interrupt: config?.interrupt,
|
|
39
|
+
signal: config?.signal,
|
|
40
|
+
tools: this.middleware.tools ?? [],
|
|
42
41
|
terminate: (result$1) => {
|
|
43
42
|
if (result$1 instanceof Error) throw result$1;
|
|
44
43
|
return {
|
|
@@ -47,20 +46,45 @@ var MiddlewareNode = class extends RunnableCallable {
|
|
|
47
46
|
};
|
|
48
47
|
}
|
|
49
48
|
};
|
|
50
|
-
const result = await this.runHook(state, runtime
|
|
49
|
+
const result = await this.runHook(state, runtime);
|
|
51
50
|
/**
|
|
52
51
|
* If result is undefined, return current state
|
|
53
52
|
*/
|
|
54
|
-
if (!result) return
|
|
53
|
+
if (!result) return {
|
|
54
|
+
...state,
|
|
55
|
+
jumpTo: void 0
|
|
56
|
+
};
|
|
57
|
+
/**
|
|
58
|
+
* Verify that the jump target is allowed for the middleware
|
|
59
|
+
*/
|
|
60
|
+
const jumpToConstraint = this.name?.startsWith("BeforeModelNode_") ? this.middleware.beforeModelJumpTo : this.middleware.afterModelJumpTo;
|
|
61
|
+
if (typeof result.jumpTo === "string" && !jumpToConstraint?.includes(result.jumpTo)) {
|
|
62
|
+
const constraint = this.name?.startsWith("BeforeModelNode_") ? "beforeModelJumpTo" : "afterModelJumpTo";
|
|
63
|
+
const suggestion = jumpToConstraint && jumpToConstraint.length > 0 ? `must be one of: ${jumpToConstraint?.join(", ")}.` : `no ${constraint} defined in middleware ${this.middleware.name}.`;
|
|
64
|
+
throw new Error(`Invalid jump target: ${result.jumpTo}, ${suggestion}.`);
|
|
65
|
+
}
|
|
66
|
+
const jumpTo = parseJumpToTarget(result.jumpTo);
|
|
55
67
|
/**
|
|
56
68
|
* If result is a control action, handle it
|
|
57
69
|
*/
|
|
70
|
+
if (typeof result === "object" && "type" in result) {
|
|
71
|
+
if (result.type === "terminate") {
|
|
72
|
+
if (result.error) throw result.error;
|
|
73
|
+
return {
|
|
74
|
+
...state,
|
|
75
|
+
...result.result || {},
|
|
76
|
+
jumpTo
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
throw new Error(`Invalid control action: ${JSON.stringify(result)}`);
|
|
80
|
+
}
|
|
58
81
|
/**
|
|
59
82
|
* If result is a state update, merge it with current state
|
|
60
83
|
*/
|
|
61
84
|
return {
|
|
62
85
|
...state,
|
|
63
|
-
...result
|
|
86
|
+
...result,
|
|
87
|
+
jumpTo
|
|
64
88
|
};
|
|
65
89
|
}
|
|
66
90
|
get nodeOptions() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.js","names":["state: TStateSchema","config?: LangGraphRunnableConfig","relevantContext: Record<string, unknown>","runtime: Runtime<
|
|
1
|
+
{"version":3,"file":"middleware.js","names":["state: TStateSchema","config?: LangGraphRunnableConfig","relevantContext: Record<string, unknown>","runtime: Runtime<TStateSchema, TContextSchema>","result?: Partial<TStateSchema> | Error","result"],"sources":["../../../../src/agents/middlewareAgent/nodes/middleware.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable no-instanceof/no-instanceof */\nimport { z } from \"zod/v3\";\nimport { LangGraphRunnableConfig, Command } from \"@langchain/langgraph\";\nimport { interopParse } from \"@langchain/core/utils/types\";\n\nimport { RunnableCallable } from \"../../RunnableCallable.js\";\nimport type {\n Runtime,\n ControlAction,\n AgentMiddleware,\n MiddlewareResult,\n JumpToTarget,\n} from \"../types.js\";\nimport {\n derivePrivateState,\n parseToolCalls,\n parseJumpToTarget,\n} from \"./utils.js\";\n\ntype NodeOutput<TStateSchema extends Record<string, any>> =\n | TStateSchema\n | Command<any, TStateSchema, string>;\n\nexport abstract class MiddlewareNode<\n TStateSchema extends Record<string, any>,\n TContextSchema extends Record<string, any>\n> extends RunnableCallable<TStateSchema, NodeOutput<TStateSchema>> {\n abstract middleware: AgentMiddleware<\n z.ZodObject<z.ZodRawShape>,\n z.ZodObject<z.ZodRawShape>\n >;\n\n abstract runHook(\n state: TStateSchema,\n config?: Runtime<TStateSchema, TContextSchema>\n ): Promise<MiddlewareResult<TStateSchema>>;\n\n async invokeMiddleware(\n state: TStateSchema,\n config?: LangGraphRunnableConfig\n ): Promise<NodeOutput<TStateSchema>> {\n /**\n * Filter context based on middleware's contextSchema\n */\n let filteredContext = {} as TContextSchema;\n /**\n * Parse context using middleware's contextSchema to apply defaults and validation\n */\n if (this.middleware.contextSchema) {\n /**\n * Extract only the fields relevant to this middleware's schema\n */\n const schemaShape = this.middleware.contextSchema?.shape;\n if (schemaShape) {\n const relevantContext: Record<string, unknown> = {};\n const invokeContext = config?.context || {};\n for (const key of Object.keys(schemaShape)) {\n if (key in invokeContext) {\n relevantContext[key] = invokeContext[key];\n }\n }\n /**\n * Parse to apply defaults and validation, even if relevantContext is empty\n * This will throw if required fields are missing and no defaults exist\n */\n filteredContext = interopParse(\n this.middleware.contextSchema,\n relevantContext\n ) as TContextSchema;\n }\n }\n\n /**\n * ToDo: implement later\n */\n const runtime: Runtime<TStateSchema, TContextSchema> = {\n toolCalls: parseToolCalls(state.messages),\n context: filteredContext,\n writer: config?.writer,\n interrupt: config?.interrupt,\n signal: config?.signal,\n tools: this.middleware.tools ?? [],\n terminate: (\n result?: Partial<TStateSchema> | Error\n ): ControlAction<TStateSchema> => {\n if (result instanceof Error) {\n throw result;\n }\n return { type: \"terminate\", result };\n },\n };\n\n const result = await this.runHook(state, runtime);\n\n /**\n * If result is undefined, return current state\n */\n if (!result) {\n return { ...state, jumpTo: undefined };\n }\n\n /**\n * Verify that the jump target is allowed for the middleware\n */\n const jumpToConstraint = this.name?.startsWith(\"BeforeModelNode_\")\n ? this.middleware.beforeModelJumpTo\n : this.middleware.afterModelJumpTo;\n if (\n typeof result.jumpTo === \"string\" &&\n !jumpToConstraint?.includes(result.jumpTo as JumpToTarget)\n ) {\n const constraint = this.name?.startsWith(\"BeforeModelNode_\")\n ? \"beforeModelJumpTo\"\n : \"afterModelJumpTo\";\n const suggestion =\n jumpToConstraint && jumpToConstraint.length > 0\n ? `must be one of: ${jumpToConstraint?.join(\", \")}.`\n : `no ${constraint} defined in middleware ${this.middleware.name}.`;\n throw new Error(`Invalid jump target: ${result.jumpTo}, ${suggestion}.`);\n }\n\n const jumpTo = parseJumpToTarget(result.jumpTo as string);\n\n /**\n * If result is a control action, handle it\n */\n if (typeof result === \"object\" && \"type\" in result) {\n // Handle control actions\n if (result.type === \"terminate\") {\n if (result.error) {\n throw result.error;\n }\n return {\n ...state,\n ...(result.result || {}),\n jumpTo,\n };\n }\n\n throw new Error(`Invalid control action: ${JSON.stringify(result)}`);\n }\n\n /**\n * If result is a state update, merge it with current state\n */\n return { ...state, ...result, jumpTo };\n }\n\n get nodeOptions(): {\n input: z.ZodObject<TStateSchema>;\n } {\n return {\n input: derivePrivateState(\n this.middleware.stateSchema\n ) as z.ZodObject<TStateSchema>,\n };\n }\n}\n"],"mappings":";;;;;AAwBA,IAAsB,iBAAtB,cAGU,iBAAyD;CAWjE,MAAM,iBACJA,OACAC,QACmC;;;;EAInC,IAAI,kBAAkB,CAAE;;;;AAIxB,MAAI,KAAK,WAAW,eAAe;;;;GAIjC,MAAM,cAAc,KAAK,WAAW,eAAe;AACnD,OAAI,aAAa;IACf,MAAMC,kBAA2C,CAAE;IACnD,MAAM,gBAAgB,QAAQ,WAAW,CAAE;AAC3C,SAAK,MAAM,OAAO,OAAO,KAAK,YAAY,CACxC,KAAI,OAAO,eACT,gBAAgB,OAAO,cAAc;;;;;IAOzC,kBAAkB,aAChB,KAAK,WAAW,eAChB,gBACD;GACF;EACF;;;;EAKD,MAAMC,UAAiD;GACrD,WAAW,eAAe,MAAM,SAAS;GACzC,SAAS;GACT,QAAQ,QAAQ;GAChB,WAAW,QAAQ;GACnB,QAAQ,QAAQ;GAChB,OAAO,KAAK,WAAW,SAAS,CAAE;GAClC,WAAW,CACTC,aACgC;AAChC,QAAIC,oBAAkB,MACpB,OAAMA;AAER,WAAO;KAAE,MAAM;KAAa;IAAQ;GACrC;EACF;EAED,MAAM,SAAS,MAAM,KAAK,QAAQ,OAAO,QAAQ;;;;AAKjD,MAAI,CAAC,OACH,QAAO;GAAE,GAAG;GAAO,QAAQ;EAAW;;;;EAMxC,MAAM,mBAAmB,KAAK,MAAM,WAAW,mBAAmB,GAC9D,KAAK,WAAW,oBAChB,KAAK,WAAW;AACpB,MACE,OAAO,OAAO,WAAW,YACzB,CAAC,kBAAkB,SAAS,OAAO,OAAuB,EAC1D;GACA,MAAM,aAAa,KAAK,MAAM,WAAW,mBAAmB,GACxD,sBACA;GACJ,MAAM,aACJ,oBAAoB,iBAAiB,SAAS,IAC1C,CAAC,gBAAgB,EAAE,kBAAkB,KAAK,KAAK,CAAC,CAAC,CAAC,GAClD,CAAC,GAAG,EAAE,WAAW,uBAAuB,EAAE,KAAK,WAAW,KAAK,CAAC,CAAC;AACvE,SAAM,IAAI,MAAM,CAAC,qBAAqB,EAAE,OAAO,OAAO,EAAE,EAAE,WAAW,CAAC,CAAC;EACxE;EAED,MAAM,SAAS,kBAAkB,OAAO,OAAiB;;;;AAKzD,MAAI,OAAO,WAAW,YAAY,UAAU,QAAQ;AAElD,OAAI,OAAO,SAAS,aAAa;AAC/B,QAAI,OAAO,MACT,OAAM,OAAO;AAEf,WAAO;KACL,GAAG;KACH,GAAI,OAAO,UAAU,CAAE;KACvB;IACD;GACF;AAED,SAAM,IAAI,MAAM,CAAC,wBAAwB,EAAE,KAAK,UAAU,OAAO,EAAE;EACpE;;;;AAKD,SAAO;GAAE,GAAG;GAAO,GAAG;GAAQ;EAAQ;CACvC;CAED,IAAI,cAEF;AACA,SAAO,EACL,OAAO,mBACL,KAAK,WAAW,YACjB,CACF;CACF;AACF"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
const require_rolldown_runtime = require('../../../_virtual/rolldown_runtime.cjs');
|
|
2
2
|
const __langchain_core_messages = require_rolldown_runtime.__toESM(require("@langchain/core/messages"));
|
|
3
|
-
const
|
|
3
|
+
const __langchain_langgraph = require_rolldown_runtime.__toESM(require("@langchain/langgraph"));
|
|
4
|
+
const __langchain_core_utils_types = require_rolldown_runtime.__toESM(require("@langchain/core/utils/types"));
|
|
5
|
+
const zod_v3 = require_rolldown_runtime.__toESM(require("zod/v3"));
|
|
4
6
|
|
|
5
7
|
//#region src/agents/middlewareAgent/nodes/utils.ts
|
|
6
8
|
/**
|
|
@@ -10,15 +12,11 @@ const zod = require_rolldown_runtime.__toESM(require("zod"));
|
|
|
10
12
|
* Private properties (starting with _) are automatically made optional since
|
|
11
13
|
* users cannot provide them when invoking the agent.
|
|
12
14
|
*/
|
|
13
|
-
function initializeMiddlewareStates(
|
|
15
|
+
async function initializeMiddlewareStates(middlewareList, state) {
|
|
14
16
|
const middlewareStates = {};
|
|
15
|
-
for (const middleware of
|
|
16
|
-
const
|
|
17
|
-
const
|
|
18
|
-
for (const [key, value] of Object.entries(shape)) if (key.startsWith("_")) modifiedShape[key] = value.optional();
|
|
19
|
-
else modifiedShape[key] = value;
|
|
20
|
-
const modifiedSchema = zod.z.object(modifiedShape);
|
|
21
|
-
const parseResult = modifiedSchema.safeParse(state);
|
|
17
|
+
for (const middleware of middlewareList) if (middleware.stateSchema) {
|
|
18
|
+
const modifiedSchema = (0, __langchain_core_utils_types.interopZodObjectMakeFieldsOptional)(middleware.stateSchema, (key) => key.startsWith("_"));
|
|
19
|
+
const parseResult = await (0, __langchain_core_utils_types.interopSafeParseAsync)(modifiedSchema, state);
|
|
22
20
|
if (parseResult.success) {
|
|
23
21
|
Object.assign(middlewareStates, parseResult.data);
|
|
24
22
|
continue;
|
|
@@ -38,21 +36,30 @@ function initializeMiddlewareStates(middlewares, state) {
|
|
|
38
36
|
* @returns A new schema containing only the private properties (underscore-prefixed), all made optional
|
|
39
37
|
*/
|
|
40
38
|
function derivePrivateState(stateSchema) {
|
|
41
|
-
const builtInStateSchema = { messages:
|
|
42
|
-
if (!stateSchema) return
|
|
39
|
+
const builtInStateSchema = { messages: zod_v3.z.custom(() => []) };
|
|
40
|
+
if (!stateSchema) return zod_v3.z.object(builtInStateSchema);
|
|
43
41
|
const { shape } = stateSchema;
|
|
44
42
|
const privateShape = builtInStateSchema;
|
|
45
43
|
for (const [key, value] of Object.entries(shape)) if (key.startsWith("_")) privateShape[key] = value.optional();
|
|
46
44
|
else privateShape[key] = value;
|
|
47
|
-
return
|
|
45
|
+
return zod_v3.z.object(privateShape);
|
|
48
46
|
}
|
|
49
47
|
/**
|
|
50
|
-
* Parse out all tool calls from the messages
|
|
48
|
+
* Parse out all tool calls from the messages and populate the results
|
|
51
49
|
* @param messages - The messages to parse
|
|
52
50
|
* @returns The tool calls
|
|
53
51
|
*/
|
|
54
52
|
function parseToolCalls(messages) {
|
|
55
|
-
|
|
53
|
+
const calls = messages.filter((message) => __langchain_core_messages.AIMessage.isInstance(message) && message.tool_calls).map((message) => message.tool_calls).flat() || [];
|
|
54
|
+
const results = parseToolResults(messages);
|
|
55
|
+
return calls.map((call) => {
|
|
56
|
+
const callResult = results.find((result) => result.id === call.id);
|
|
57
|
+
if (callResult) return {
|
|
58
|
+
...call,
|
|
59
|
+
result: callResult.result
|
|
60
|
+
};
|
|
61
|
+
return call;
|
|
62
|
+
});
|
|
56
63
|
}
|
|
57
64
|
/**
|
|
58
65
|
* Parse out all tool results from the messages
|
|
@@ -60,15 +67,22 @@ function parseToolCalls(messages) {
|
|
|
60
67
|
* @returns The tool results
|
|
61
68
|
*/
|
|
62
69
|
function parseToolResults(messages) {
|
|
63
|
-
return messages.filter((message) =>
|
|
70
|
+
return messages.filter((message) => __langchain_core_messages.ToolMessage.isInstance(message)).map((message) => ({
|
|
64
71
|
id: message.tool_call_id,
|
|
65
72
|
result: message.content
|
|
66
73
|
}));
|
|
67
74
|
}
|
|
75
|
+
function parseJumpToTarget(target) {
|
|
76
|
+
if (!target) return void 0;
|
|
77
|
+
if (target === "model") return "model_request";
|
|
78
|
+
if (target === "tools") return "tools";
|
|
79
|
+
if (target === "end") return __langchain_langgraph.END;
|
|
80
|
+
throw new Error(`Invalid jump target: ${target}, must be "model", "tools" or "end".`);
|
|
81
|
+
}
|
|
68
82
|
|
|
69
83
|
//#endregion
|
|
70
84
|
exports.derivePrivateState = derivePrivateState;
|
|
71
85
|
exports.initializeMiddlewareStates = initializeMiddlewareStates;
|
|
86
|
+
exports.parseJumpToTarget = parseJumpToTarget;
|
|
72
87
|
exports.parseToolCalls = parseToolCalls;
|
|
73
|
-
exports.parseToolResults = parseToolResults;
|
|
74
88
|
//# sourceMappingURL=utils.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.cjs","names":["
|
|
1
|
+
{"version":3,"file":"utils.cjs","names":["middlewareList: readonly AgentMiddleware<any, any, any>[]","state: unknown","middlewareStates: Record<string, any>","issue: ZodIssue","stateSchema?: z.ZodObject<z.ZodRawShape>","z","privateShape: Record<string, any>","messages: BaseMessage[]","AIMessage","ToolMessage","target?: string","END"],"sources":["../../../../src/agents/middlewareAgent/nodes/utils.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { z } from \"zod/v3\";\nimport {\n type BaseMessage,\n ToolMessage,\n AIMessage,\n} from \"@langchain/core/messages\";\nimport {\n interopSafeParseAsync,\n interopZodObjectMakeFieldsOptional,\n} from \"@langchain/core/utils/types\";\nimport { type ZodIssue } from \"zod/v3\";\nimport { END } from \"@langchain/langgraph\";\n\nimport type {\n AgentMiddleware,\n ToolCall,\n ToolResult,\n JumpTo,\n} from \"../types.js\";\n\n/**\n * Helper function to initialize middleware state defaults.\n * This is used to ensure all middleware state properties are initialized.\n *\n * Private properties (starting with _) are automatically made optional since\n * users cannot provide them when invoking the agent.\n */\nexport async function initializeMiddlewareStates(\n middlewareList: readonly AgentMiddleware<any, any, any>[],\n state: unknown\n): Promise<Record<string, any>> {\n const middlewareStates: Record<string, any> = {};\n\n for (const middleware of middlewareList) {\n if (middleware.stateSchema) {\n // Create a modified schema where private properties are optional\n const modifiedSchema = interopZodObjectMakeFieldsOptional(\n middleware.stateSchema,\n (key) => key.startsWith(\"_\")\n );\n\n // Use safeParse with the modified schema\n const parseResult = await interopSafeParseAsync(modifiedSchema, state);\n\n if (parseResult.success) {\n Object.assign(middlewareStates, parseResult.data);\n continue;\n }\n\n /**\n * If safeParse fails, there are required public fields missing\n */\n const requiredFields = parseResult.error.issues\n .filter(\n (issue: ZodIssue) =>\n issue.code === \"invalid_type\" && issue.message === \"Required\"\n )\n .map(\n (issue: ZodIssue) => ` - ${issue.path.join(\".\")}: ${issue.message}`\n )\n .join(\"\\n\");\n\n throw new Error(\n `Middleware \"${middleware.name}\" has required state fields that must be initialized:\\n` +\n `${requiredFields}\\n\\n` +\n `To fix this, either:\\n` +\n `1. Provide default values in your middleware's state schema using .default():\\n` +\n ` stateSchema: z.object({\\n` +\n ` myField: z.string().default(\"default value\")\\n` +\n ` })\\n\\n` +\n `2. Or make the fields optional using .optional():\\n` +\n ` stateSchema: z.object({\\n` +\n ` myField: z.string().optional()\\n` +\n ` })\\n\\n` +\n `3. Or ensure you pass these values when invoking the agent:\\n` +\n ` agent.invoke({\\n` +\n ` messages: [...],\\n` +\n ` ${parseResult.error.issues[0]?.path.join(\".\")}: \"value\"\\n` +\n ` })`\n );\n }\n }\n\n return middlewareStates;\n}\n\n/**\n * Users can define private and public state for a middleware. Private state properties start with an underscore.\n * This function will return the private state properties from the state schema, making all of them optional.\n * @param stateSchema - The middleware state schema\n * @returns A new schema containing only the private properties (underscore-prefixed), all made optional\n */\nexport function derivePrivateState(\n stateSchema?: z.ZodObject<z.ZodRawShape>\n): z.ZodObject<z.ZodRawShape> {\n const builtInStateSchema = {\n messages: z.custom<BaseMessage[]>(() => []),\n };\n\n if (!stateSchema) {\n return z.object(builtInStateSchema);\n }\n\n const { shape } = stateSchema;\n const privateShape: Record<string, any> = builtInStateSchema;\n\n // Filter properties that start with underscore and make them optional\n for (const [key, value] of Object.entries(shape)) {\n if (key.startsWith(\"_\")) {\n // Make the private property optional\n privateShape[key] = value.optional();\n } else {\n privateShape[key] = value;\n }\n }\n\n // Return a new schema with only private properties (all optional)\n return z.object(privateShape);\n}\n\n/**\n * Parse out all tool calls from the messages and populate the results\n * @param messages - The messages to parse\n * @returns The tool calls\n */\nexport function parseToolCalls(messages: BaseMessage[]): ToolCall[] {\n const calls =\n messages\n .filter(\n (message) =>\n AIMessage.isInstance(message) && (message as AIMessage).tool_calls\n )\n .map((message) => (message as AIMessage).tool_calls as ToolCall[])\n .flat() || [];\n\n const results = parseToolResults(messages);\n return calls.map((call) => {\n const callResult = results.find((result) => result.id === call.id);\n if (callResult) {\n return {\n ...call,\n result: callResult.result,\n };\n }\n return call;\n });\n}\n\n/**\n * Parse out all tool results from the messages\n * @param messages - The messages to parse\n * @returns The tool results\n */\nfunction parseToolResults(messages: BaseMessage[]): ToolResult[] {\n return messages\n .filter((message) => ToolMessage.isInstance(message))\n .map((message) => ({\n id: (message as ToolMessage).tool_call_id,\n result: (message as ToolMessage).content,\n }));\n}\n\n/**\n * Parse `jumpTo` target from user facing labels to a LangGraph node names\n */\nexport function parseJumpToTarget(target: string): JumpTo;\nexport function parseJumpToTarget(target?: string): JumpTo | undefined {\n if (!target) {\n return undefined;\n }\n if (target === \"model\") {\n return \"model_request\";\n }\n if (target === \"tools\") {\n return \"tools\";\n }\n if (target === \"end\") {\n return END;\n }\n\n throw new Error(\n `Invalid jump target: ${target}, must be \"model\", \"tools\" or \"end\".`\n );\n}\n"],"mappings":";;;;;;;;;;;;;;AA4BA,eAAsB,2BACpBA,gBACAC,OAC8B;CAC9B,MAAMC,mBAAwC,CAAE;AAEhD,MAAK,MAAM,cAAc,eACvB,KAAI,WAAW,aAAa;EAE1B,MAAM,sFACJ,WAAW,aACX,CAAC,QAAQ,IAAI,WAAW,IAAI,CAC7B;EAGD,MAAM,cAAc,8DAA4B,gBAAgB,MAAM;AAEtE,MAAI,YAAY,SAAS;GACvB,OAAO,OAAO,kBAAkB,YAAY,KAAK;AACjD;EACD;;;;EAKD,MAAM,iBAAiB,YAAY,MAAM,OACtC,OACC,CAACC,UACC,MAAM,SAAS,kBAAkB,MAAM,YAAY,WACtD,CACA,IACC,CAACA,UAAoB,CAAC,IAAI,EAAE,MAAM,KAAK,KAAK,IAAI,CAAC,EAAE,EAAE,MAAM,SAAS,CACrE,CACA,KAAK,KAAK;AAEb,QAAM,IAAI,MACR,CAAC,YAAY,EAAE,WAAW,KAAK,uDAAuD,EACjF,eAAe,0aAAI,EAad,YAAY,MAAM,OAAO,IAAI,KAAK,KAAK,IAAI,CAAC,gBAAW,CACxD;CAEZ;AAGH,QAAO;AACR;;;;;;;AAQD,SAAgB,mBACdC,aAC4B;CAC5B,MAAM,qBAAqB,EACzB,UAAUC,SAAE,OAAsB,MAAM,CAAE,EAAC,CAC5C;AAED,KAAI,CAAC,YACH,QAAOA,SAAE,OAAO,mBAAmB;CAGrC,MAAM,EAAE,OAAO,GAAG;CAClB,MAAMC,eAAoC;AAG1C,MAAK,MAAM,CAAC,KAAK,MAAM,IAAI,OAAO,QAAQ,MAAM,CAC9C,KAAI,IAAI,WAAW,IAAI,EAErB,aAAa,OAAO,MAAM,UAAU;MAEpC,aAAa,OAAO;AAKxB,QAAOD,SAAE,OAAO,aAAa;AAC9B;;;;;;AAOD,SAAgB,eAAeE,UAAqC;CAClE,MAAM,QACJ,SACG,OACC,CAAC,YACCC,oCAAU,WAAW,QAAQ,IAAK,QAAsB,WAC3D,CACA,IAAI,CAAC,YAAa,QAAsB,WAAyB,CACjE,MAAM,IAAI,CAAE;CAEjB,MAAM,UAAU,iBAAiB,SAAS;AAC1C,QAAO,MAAM,IAAI,CAAC,SAAS;EACzB,MAAM,aAAa,QAAQ,KAAK,CAAC,WAAW,OAAO,OAAO,KAAK,GAAG;AAClE,MAAI,WACF,QAAO;GACL,GAAG;GACH,QAAQ,WAAW;EACpB;AAEH,SAAO;CACR,EAAC;AACH;;;;;;AAOD,SAAS,iBAAiBD,UAAuC;AAC/D,QAAO,SACJ,OAAO,CAAC,YAAYE,sCAAY,WAAW,QAAQ,CAAC,CACpD,IAAI,CAAC,aAAa;EACjB,IAAK,QAAwB;EAC7B,QAAS,QAAwB;CAClC,GAAE;AACN;AAMD,SAAgB,kBAAkBC,QAAqC;AACrE,KAAI,CAAC,OACH,QAAO;AAET,KAAI,WAAW,QACb,QAAO;AAET,KAAI,WAAW,QACb,QAAO;AAET,KAAI,WAAW,MACb,QAAOC;AAGT,OAAM,IAAI,MACR,CAAC,qBAAqB,EAAE,OAAO,oCAAoC,CAAC;AAEvE"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { AIMessage, ToolMessage } from "@langchain/core/messages";
|
|
2
|
+
import { END } from "@langchain/langgraph";
|
|
3
|
+
import { interopSafeParseAsync, interopZodObjectMakeFieldsOptional } from "@langchain/core/utils/types";
|
|
4
|
+
import { z } from "zod/v3";
|
|
3
5
|
|
|
4
6
|
//#region src/agents/middlewareAgent/nodes/utils.ts
|
|
5
7
|
/**
|
|
@@ -9,15 +11,11 @@ import { z } from "zod";
|
|
|
9
11
|
* Private properties (starting with _) are automatically made optional since
|
|
10
12
|
* users cannot provide them when invoking the agent.
|
|
11
13
|
*/
|
|
12
|
-
function initializeMiddlewareStates(
|
|
14
|
+
async function initializeMiddlewareStates(middlewareList, state) {
|
|
13
15
|
const middlewareStates = {};
|
|
14
|
-
for (const middleware of
|
|
15
|
-
const
|
|
16
|
-
const
|
|
17
|
-
for (const [key, value] of Object.entries(shape)) if (key.startsWith("_")) modifiedShape[key] = value.optional();
|
|
18
|
-
else modifiedShape[key] = value;
|
|
19
|
-
const modifiedSchema = z.object(modifiedShape);
|
|
20
|
-
const parseResult = modifiedSchema.safeParse(state);
|
|
16
|
+
for (const middleware of middlewareList) if (middleware.stateSchema) {
|
|
17
|
+
const modifiedSchema = interopZodObjectMakeFieldsOptional(middleware.stateSchema, (key) => key.startsWith("_"));
|
|
18
|
+
const parseResult = await interopSafeParseAsync(modifiedSchema, state);
|
|
21
19
|
if (parseResult.success) {
|
|
22
20
|
Object.assign(middlewareStates, parseResult.data);
|
|
23
21
|
continue;
|
|
@@ -46,12 +44,21 @@ function derivePrivateState(stateSchema) {
|
|
|
46
44
|
return z.object(privateShape);
|
|
47
45
|
}
|
|
48
46
|
/**
|
|
49
|
-
* Parse out all tool calls from the messages
|
|
47
|
+
* Parse out all tool calls from the messages and populate the results
|
|
50
48
|
* @param messages - The messages to parse
|
|
51
49
|
* @returns The tool calls
|
|
52
50
|
*/
|
|
53
51
|
function parseToolCalls(messages) {
|
|
54
|
-
|
|
52
|
+
const calls = messages.filter((message) => AIMessage.isInstance(message) && message.tool_calls).map((message) => message.tool_calls).flat() || [];
|
|
53
|
+
const results = parseToolResults(messages);
|
|
54
|
+
return calls.map((call) => {
|
|
55
|
+
const callResult = results.find((result) => result.id === call.id);
|
|
56
|
+
if (callResult) return {
|
|
57
|
+
...call,
|
|
58
|
+
result: callResult.result
|
|
59
|
+
};
|
|
60
|
+
return call;
|
|
61
|
+
});
|
|
55
62
|
}
|
|
56
63
|
/**
|
|
57
64
|
* Parse out all tool results from the messages
|
|
@@ -59,12 +66,19 @@ function parseToolCalls(messages) {
|
|
|
59
66
|
* @returns The tool results
|
|
60
67
|
*/
|
|
61
68
|
function parseToolResults(messages) {
|
|
62
|
-
return messages.filter((message) =>
|
|
69
|
+
return messages.filter((message) => ToolMessage.isInstance(message)).map((message) => ({
|
|
63
70
|
id: message.tool_call_id,
|
|
64
71
|
result: message.content
|
|
65
72
|
}));
|
|
66
73
|
}
|
|
74
|
+
function parseJumpToTarget(target) {
|
|
75
|
+
if (!target) return void 0;
|
|
76
|
+
if (target === "model") return "model_request";
|
|
77
|
+
if (target === "tools") return "tools";
|
|
78
|
+
if (target === "end") return END;
|
|
79
|
+
throw new Error(`Invalid jump target: ${target}, must be "model", "tools" or "end".`);
|
|
80
|
+
}
|
|
67
81
|
|
|
68
82
|
//#endregion
|
|
69
|
-
export { derivePrivateState, initializeMiddlewareStates,
|
|
83
|
+
export { derivePrivateState, initializeMiddlewareStates, parseJumpToTarget, parseToolCalls };
|
|
70
84
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","names":["
|
|
1
|
+
{"version":3,"file":"utils.js","names":["middlewareList: readonly AgentMiddleware<any, any, any>[]","state: unknown","middlewareStates: Record<string, any>","issue: ZodIssue","stateSchema?: z.ZodObject<z.ZodRawShape>","privateShape: Record<string, any>","messages: BaseMessage[]","target?: string"],"sources":["../../../../src/agents/middlewareAgent/nodes/utils.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { z } from \"zod/v3\";\nimport {\n type BaseMessage,\n ToolMessage,\n AIMessage,\n} from \"@langchain/core/messages\";\nimport {\n interopSafeParseAsync,\n interopZodObjectMakeFieldsOptional,\n} from \"@langchain/core/utils/types\";\nimport { type ZodIssue } from \"zod/v3\";\nimport { END } from \"@langchain/langgraph\";\n\nimport type {\n AgentMiddleware,\n ToolCall,\n ToolResult,\n JumpTo,\n} from \"../types.js\";\n\n/**\n * Helper function to initialize middleware state defaults.\n * This is used to ensure all middleware state properties are initialized.\n *\n * Private properties (starting with _) are automatically made optional since\n * users cannot provide them when invoking the agent.\n */\nexport async function initializeMiddlewareStates(\n middlewareList: readonly AgentMiddleware<any, any, any>[],\n state: unknown\n): Promise<Record<string, any>> {\n const middlewareStates: Record<string, any> = {};\n\n for (const middleware of middlewareList) {\n if (middleware.stateSchema) {\n // Create a modified schema where private properties are optional\n const modifiedSchema = interopZodObjectMakeFieldsOptional(\n middleware.stateSchema,\n (key) => key.startsWith(\"_\")\n );\n\n // Use safeParse with the modified schema\n const parseResult = await interopSafeParseAsync(modifiedSchema, state);\n\n if (parseResult.success) {\n Object.assign(middlewareStates, parseResult.data);\n continue;\n }\n\n /**\n * If safeParse fails, there are required public fields missing\n */\n const requiredFields = parseResult.error.issues\n .filter(\n (issue: ZodIssue) =>\n issue.code === \"invalid_type\" && issue.message === \"Required\"\n )\n .map(\n (issue: ZodIssue) => ` - ${issue.path.join(\".\")}: ${issue.message}`\n )\n .join(\"\\n\");\n\n throw new Error(\n `Middleware \"${middleware.name}\" has required state fields that must be initialized:\\n` +\n `${requiredFields}\\n\\n` +\n `To fix this, either:\\n` +\n `1. Provide default values in your middleware's state schema using .default():\\n` +\n ` stateSchema: z.object({\\n` +\n ` myField: z.string().default(\"default value\")\\n` +\n ` })\\n\\n` +\n `2. Or make the fields optional using .optional():\\n` +\n ` stateSchema: z.object({\\n` +\n ` myField: z.string().optional()\\n` +\n ` })\\n\\n` +\n `3. Or ensure you pass these values when invoking the agent:\\n` +\n ` agent.invoke({\\n` +\n ` messages: [...],\\n` +\n ` ${parseResult.error.issues[0]?.path.join(\".\")}: \"value\"\\n` +\n ` })`\n );\n }\n }\n\n return middlewareStates;\n}\n\n/**\n * Users can define private and public state for a middleware. Private state properties start with an underscore.\n * This function will return the private state properties from the state schema, making all of them optional.\n * @param stateSchema - The middleware state schema\n * @returns A new schema containing only the private properties (underscore-prefixed), all made optional\n */\nexport function derivePrivateState(\n stateSchema?: z.ZodObject<z.ZodRawShape>\n): z.ZodObject<z.ZodRawShape> {\n const builtInStateSchema = {\n messages: z.custom<BaseMessage[]>(() => []),\n };\n\n if (!stateSchema) {\n return z.object(builtInStateSchema);\n }\n\n const { shape } = stateSchema;\n const privateShape: Record<string, any> = builtInStateSchema;\n\n // Filter properties that start with underscore and make them optional\n for (const [key, value] of Object.entries(shape)) {\n if (key.startsWith(\"_\")) {\n // Make the private property optional\n privateShape[key] = value.optional();\n } else {\n privateShape[key] = value;\n }\n }\n\n // Return a new schema with only private properties (all optional)\n return z.object(privateShape);\n}\n\n/**\n * Parse out all tool calls from the messages and populate the results\n * @param messages - The messages to parse\n * @returns The tool calls\n */\nexport function parseToolCalls(messages: BaseMessage[]): ToolCall[] {\n const calls =\n messages\n .filter(\n (message) =>\n AIMessage.isInstance(message) && (message as AIMessage).tool_calls\n )\n .map((message) => (message as AIMessage).tool_calls as ToolCall[])\n .flat() || [];\n\n const results = parseToolResults(messages);\n return calls.map((call) => {\n const callResult = results.find((result) => result.id === call.id);\n if (callResult) {\n return {\n ...call,\n result: callResult.result,\n };\n }\n return call;\n });\n}\n\n/**\n * Parse out all tool results from the messages\n * @param messages - The messages to parse\n * @returns The tool results\n */\nfunction parseToolResults(messages: BaseMessage[]): ToolResult[] {\n return messages\n .filter((message) => ToolMessage.isInstance(message))\n .map((message) => ({\n id: (message as ToolMessage).tool_call_id,\n result: (message as ToolMessage).content,\n }));\n}\n\n/**\n * Parse `jumpTo` target from user facing labels to a LangGraph node names\n */\nexport function parseJumpToTarget(target: string): JumpTo;\nexport function parseJumpToTarget(target?: string): JumpTo | undefined {\n if (!target) {\n return undefined;\n }\n if (target === \"model\") {\n return \"model_request\";\n }\n if (target === \"tools\") {\n return \"tools\";\n }\n if (target === \"end\") {\n return END;\n }\n\n throw new Error(\n `Invalid jump target: ${target}, must be \"model\", \"tools\" or \"end\".`\n );\n}\n"],"mappings":";;;;;;;;;;;;;AA4BA,eAAsB,2BACpBA,gBACAC,OAC8B;CAC9B,MAAMC,mBAAwC,CAAE;AAEhD,MAAK,MAAM,cAAc,eACvB,KAAI,WAAW,aAAa;EAE1B,MAAM,iBAAiB,mCACrB,WAAW,aACX,CAAC,QAAQ,IAAI,WAAW,IAAI,CAC7B;EAGD,MAAM,cAAc,MAAM,sBAAsB,gBAAgB,MAAM;AAEtE,MAAI,YAAY,SAAS;GACvB,OAAO,OAAO,kBAAkB,YAAY,KAAK;AACjD;EACD;;;;EAKD,MAAM,iBAAiB,YAAY,MAAM,OACtC,OACC,CAACC,UACC,MAAM,SAAS,kBAAkB,MAAM,YAAY,WACtD,CACA,IACC,CAACA,UAAoB,CAAC,IAAI,EAAE,MAAM,KAAK,KAAK,IAAI,CAAC,EAAE,EAAE,MAAM,SAAS,CACrE,CACA,KAAK,KAAK;AAEb,QAAM,IAAI,MACR,CAAC,YAAY,EAAE,WAAW,KAAK,uDAAuD,EACjF,eAAe,0aAAI,EAad,YAAY,MAAM,OAAO,IAAI,KAAK,KAAK,IAAI,CAAC,gBAAW,CACxD;CAEZ;AAGH,QAAO;AACR;;;;;;;AAQD,SAAgB,mBACdC,aAC4B;CAC5B,MAAM,qBAAqB,EACzB,UAAU,EAAE,OAAsB,MAAM,CAAE,EAAC,CAC5C;AAED,KAAI,CAAC,YACH,QAAO,EAAE,OAAO,mBAAmB;CAGrC,MAAM,EAAE,OAAO,GAAG;CAClB,MAAMC,eAAoC;AAG1C,MAAK,MAAM,CAAC,KAAK,MAAM,IAAI,OAAO,QAAQ,MAAM,CAC9C,KAAI,IAAI,WAAW,IAAI,EAErB,aAAa,OAAO,MAAM,UAAU;MAEpC,aAAa,OAAO;AAKxB,QAAO,EAAE,OAAO,aAAa;AAC9B;;;;;;AAOD,SAAgB,eAAeC,UAAqC;CAClE,MAAM,QACJ,SACG,OACC,CAAC,YACC,UAAU,WAAW,QAAQ,IAAK,QAAsB,WAC3D,CACA,IAAI,CAAC,YAAa,QAAsB,WAAyB,CACjE,MAAM,IAAI,CAAE;CAEjB,MAAM,UAAU,iBAAiB,SAAS;AAC1C,QAAO,MAAM,IAAI,CAAC,SAAS;EACzB,MAAM,aAAa,QAAQ,KAAK,CAAC,WAAW,OAAO,OAAO,KAAK,GAAG;AAClE,MAAI,WACF,QAAO;GACL,GAAG;GACH,QAAQ,WAAW;EACpB;AAEH,SAAO;CACR,EAAC;AACH;;;;;;AAOD,SAAS,iBAAiBA,UAAuC;AAC/D,QAAO,SACJ,OAAO,CAAC,YAAY,YAAY,WAAW,QAAQ,CAAC,CACpD,IAAI,CAAC,aAAa;EACjB,IAAK,QAAwB;EAC7B,QAAS,QAAwB;CAClC,GAAE;AACN;AAMD,SAAgB,kBAAkBC,QAAqC;AACrE,KAAI,CAAC,OACH,QAAO;AAET,KAAI,WAAW,QACb,QAAO;AAET,KAAI,WAAW,QACb,QAAO;AAET,KAAI,WAAW,MACb,QAAO;AAGT,OAAM,IAAI,MACR,CAAC,qBAAqB,EAAE,OAAO,oCAAoC,CAAC;AAEvE"}
|