@langchain/classic 1.0.40 → 1.0.41
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/CHANGELOG.md +7 -0
- package/dist/agents/agent.cjs +1 -1
- package/dist/agents/agent.cjs.map +1 -1
- package/dist/agents/agent.d.cts +1 -2
- package/dist/agents/agent.d.cts.map +1 -1
- package/dist/agents/agent.d.ts +1 -2
- package/dist/agents/agent.d.ts.map +1 -1
- package/dist/agents/agent.js +1 -1
- package/dist/agents/agent.js.map +1 -1
- package/dist/agents/chat/index.cjs +8 -7
- package/dist/agents/chat/index.cjs.map +1 -1
- package/dist/agents/chat/index.d.cts +0 -1
- package/dist/agents/chat/index.d.cts.map +1 -1
- package/dist/agents/chat/index.d.ts +0 -1
- package/dist/agents/chat/index.d.ts.map +1 -1
- package/dist/agents/chat/index.js +8 -6
- package/dist/agents/chat/index.js.map +1 -1
- package/dist/agents/chat/outputParser.cjs +1 -1
- package/dist/agents/chat/outputParser.cjs.map +1 -1
- package/dist/agents/chat/outputParser.d.cts +2 -3
- package/dist/agents/chat/outputParser.d.cts.map +1 -1
- package/dist/agents/chat/outputParser.d.ts +2 -3
- package/dist/agents/chat/outputParser.d.ts.map +1 -1
- package/dist/agents/chat/outputParser.js +1 -1
- package/dist/agents/chat/outputParser.js.map +1 -1
- package/dist/agents/chat_convo/index.cjs +9 -9
- package/dist/agents/chat_convo/index.cjs.map +1 -1
- package/dist/agents/chat_convo/index.d.cts +0 -1
- package/dist/agents/chat_convo/index.d.cts.map +1 -1
- package/dist/agents/chat_convo/index.d.ts +0 -1
- package/dist/agents/chat_convo/index.d.ts.map +1 -1
- package/dist/agents/chat_convo/index.js +9 -8
- package/dist/agents/chat_convo/index.js.map +1 -1
- package/dist/agents/chat_convo/outputParser.cjs +2 -2
- package/dist/agents/chat_convo/outputParser.cjs.map +1 -1
- package/dist/agents/chat_convo/outputParser.d.cts +0 -1
- package/dist/agents/chat_convo/outputParser.d.cts.map +1 -1
- package/dist/agents/chat_convo/outputParser.d.ts +0 -1
- package/dist/agents/chat_convo/outputParser.d.ts.map +1 -1
- package/dist/agents/chat_convo/outputParser.js +2 -1
- package/dist/agents/chat_convo/outputParser.js.map +1 -1
- package/dist/agents/executor.cjs +2 -1
- package/dist/agents/executor.cjs.map +1 -1
- package/dist/agents/executor.d.cts +10 -10
- package/dist/agents/executor.d.cts.map +1 -1
- package/dist/agents/executor.d.ts +10 -10
- package/dist/agents/executor.d.ts.map +1 -1
- package/dist/agents/executor.js +1 -1
- package/dist/agents/executor.js.map +1 -1
- package/dist/agents/format_scratchpad/log.cjs.map +1 -1
- package/dist/agents/format_scratchpad/log.d.cts +0 -1
- package/dist/agents/format_scratchpad/log.d.cts.map +1 -1
- package/dist/agents/format_scratchpad/log.d.ts +0 -1
- package/dist/agents/format_scratchpad/log.d.ts.map +1 -1
- package/dist/agents/format_scratchpad/log.js.map +1 -1
- package/dist/agents/format_scratchpad/log_to_message.cjs.map +1 -1
- package/dist/agents/format_scratchpad/log_to_message.d.cts +0 -1
- package/dist/agents/format_scratchpad/log_to_message.d.cts.map +1 -1
- package/dist/agents/format_scratchpad/log_to_message.d.ts +0 -1
- package/dist/agents/format_scratchpad/log_to_message.d.ts.map +1 -1
- package/dist/agents/format_scratchpad/log_to_message.js.map +1 -1
- package/dist/agents/format_scratchpad/openai_functions.cjs.map +1 -1
- package/dist/agents/format_scratchpad/openai_functions.d.cts +0 -1
- package/dist/agents/format_scratchpad/openai_functions.d.cts.map +1 -1
- package/dist/agents/format_scratchpad/openai_functions.d.ts +0 -1
- package/dist/agents/format_scratchpad/openai_functions.d.ts.map +1 -1
- package/dist/agents/format_scratchpad/openai_functions.js.map +1 -1
- package/dist/agents/format_scratchpad/tool_calling.cjs +1 -1
- package/dist/agents/format_scratchpad/tool_calling.cjs.map +1 -1
- package/dist/agents/format_scratchpad/tool_calling.d.cts +0 -1
- package/dist/agents/format_scratchpad/tool_calling.d.cts.map +1 -1
- package/dist/agents/format_scratchpad/tool_calling.d.ts +0 -1
- package/dist/agents/format_scratchpad/tool_calling.d.ts.map +1 -1
- package/dist/agents/format_scratchpad/tool_calling.js +1 -1
- package/dist/agents/format_scratchpad/tool_calling.js.map +1 -1
- package/dist/agents/format_scratchpad/xml.cjs.map +1 -1
- package/dist/agents/format_scratchpad/xml.d.cts +0 -1
- package/dist/agents/format_scratchpad/xml.d.cts.map +1 -1
- package/dist/agents/format_scratchpad/xml.d.ts +0 -1
- package/dist/agents/format_scratchpad/xml.d.ts.map +1 -1
- package/dist/agents/format_scratchpad/xml.js.map +1 -1
- package/dist/agents/helpers.cjs.map +1 -1
- package/dist/agents/helpers.js.map +1 -1
- package/dist/agents/index.d.cts +1 -0
- package/dist/agents/index.d.ts +1 -0
- package/dist/agents/initialize.cjs.map +1 -1
- package/dist/agents/initialize.d.cts +0 -1
- package/dist/agents/initialize.d.cts.map +1 -1
- package/dist/agents/initialize.d.ts +0 -1
- package/dist/agents/initialize.d.ts.map +1 -1
- package/dist/agents/initialize.js.map +1 -1
- package/dist/agents/load.cjs +1 -1
- package/dist/agents/load.cjs.map +1 -1
- package/dist/agents/load.d.cts +0 -1
- package/dist/agents/load.d.cts.map +1 -1
- package/dist/agents/load.d.ts +0 -1
- package/dist/agents/load.d.ts.map +1 -1
- package/dist/agents/load.js +1 -1
- package/dist/agents/load.js.map +1 -1
- package/dist/agents/mrkl/index.cjs +6 -6
- package/dist/agents/mrkl/index.cjs.map +1 -1
- package/dist/agents/mrkl/index.d.cts +0 -1
- package/dist/agents/mrkl/index.d.cts.map +1 -1
- package/dist/agents/mrkl/index.d.ts +0 -1
- package/dist/agents/mrkl/index.d.ts.map +1 -1
- package/dist/agents/mrkl/index.js +6 -5
- package/dist/agents/mrkl/index.js.map +1 -1
- package/dist/agents/mrkl/outputParser.cjs +3 -1
- package/dist/agents/mrkl/outputParser.cjs.map +1 -1
- package/dist/agents/mrkl/outputParser.d.cts +0 -1
- package/dist/agents/mrkl/outputParser.d.cts.map +1 -1
- package/dist/agents/mrkl/outputParser.d.ts +0 -1
- package/dist/agents/mrkl/outputParser.d.ts.map +1 -1
- package/dist/agents/mrkl/outputParser.js +3 -1
- package/dist/agents/mrkl/outputParser.js.map +1 -1
- package/dist/agents/openai/output_parser.d.cts +1 -1
- package/dist/agents/openai/output_parser.d.ts +1 -1
- package/dist/agents/openai_functions/index.cjs +6 -6
- package/dist/agents/openai_functions/index.cjs.map +1 -1
- package/dist/agents/openai_functions/index.d.cts +6 -9
- package/dist/agents/openai_functions/index.d.cts.map +1 -1
- package/dist/agents/openai_functions/index.d.ts +6 -9
- package/dist/agents/openai_functions/index.d.ts.map +1 -1
- package/dist/agents/openai_functions/index.js +6 -5
- package/dist/agents/openai_functions/index.js.map +1 -1
- package/dist/agents/openai_functions/output_parser.cjs +0 -1
- package/dist/agents/openai_functions/output_parser.cjs.map +1 -1
- package/dist/agents/openai_functions/output_parser.d.cts +0 -1
- package/dist/agents/openai_functions/output_parser.d.cts.map +1 -1
- package/dist/agents/openai_functions/output_parser.d.ts +0 -1
- package/dist/agents/openai_functions/output_parser.d.ts.map +1 -1
- package/dist/agents/openai_functions/output_parser.js.map +1 -1
- package/dist/agents/openai_tools/index.cjs +1 -1
- package/dist/agents/openai_tools/index.cjs.map +1 -1
- package/dist/agents/openai_tools/index.d.cts +7 -12
- package/dist/agents/openai_tools/index.d.cts.map +1 -1
- package/dist/agents/openai_tools/index.d.ts +7 -12
- package/dist/agents/openai_tools/index.d.ts.map +1 -1
- package/dist/agents/openai_tools/index.js +1 -1
- package/dist/agents/openai_tools/index.js.map +1 -1
- package/dist/agents/openai_tools/output_parser.cjs +0 -1
- package/dist/agents/openai_tools/output_parser.cjs.map +1 -1
- package/dist/agents/openai_tools/output_parser.d.cts +1 -2
- package/dist/agents/openai_tools/output_parser.d.cts.map +1 -1
- package/dist/agents/openai_tools/output_parser.d.ts +1 -2
- package/dist/agents/openai_tools/output_parser.d.ts.map +1 -1
- package/dist/agents/openai_tools/output_parser.js.map +1 -1
- package/dist/agents/react/index.cjs +0 -1
- package/dist/agents/react/index.cjs.map +1 -1
- package/dist/agents/react/index.d.cts +5 -10
- package/dist/agents/react/index.d.cts.map +1 -1
- package/dist/agents/react/index.d.ts +5 -10
- package/dist/agents/react/index.d.ts.map +1 -1
- package/dist/agents/react/index.js.map +1 -1
- package/dist/agents/react/output_parser.cjs.map +1 -1
- package/dist/agents/react/output_parser.d.cts +0 -1
- package/dist/agents/react/output_parser.d.cts.map +1 -1
- package/dist/agents/react/output_parser.d.ts +0 -1
- package/dist/agents/react/output_parser.d.ts.map +1 -1
- package/dist/agents/react/output_parser.js.map +1 -1
- package/dist/agents/structured_chat/index.cjs +6 -6
- package/dist/agents/structured_chat/index.cjs.map +1 -1
- package/dist/agents/structured_chat/index.d.cts +5 -10
- package/dist/agents/structured_chat/index.d.cts.map +1 -1
- package/dist/agents/structured_chat/index.d.ts +5 -10
- package/dist/agents/structured_chat/index.d.ts.map +1 -1
- package/dist/agents/structured_chat/index.js +6 -5
- package/dist/agents/structured_chat/index.js.map +1 -1
- package/dist/agents/structured_chat/outputParser.cjs +2 -2
- package/dist/agents/structured_chat/outputParser.cjs.map +1 -1
- package/dist/agents/structured_chat/outputParser.d.cts +0 -1
- package/dist/agents/structured_chat/outputParser.d.cts.map +1 -1
- package/dist/agents/structured_chat/outputParser.d.ts +0 -1
- package/dist/agents/structured_chat/outputParser.d.ts.map +1 -1
- package/dist/agents/structured_chat/outputParser.js +2 -1
- package/dist/agents/structured_chat/outputParser.js.map +1 -1
- package/dist/agents/tool_calling/index.cjs +0 -1
- package/dist/agents/tool_calling/index.cjs.map +1 -1
- package/dist/agents/tool_calling/index.d.cts +6 -11
- package/dist/agents/tool_calling/index.d.cts.map +1 -1
- package/dist/agents/tool_calling/index.d.ts +6 -11
- package/dist/agents/tool_calling/index.d.ts.map +1 -1
- package/dist/agents/tool_calling/index.js.map +1 -1
- package/dist/agents/tool_calling/output_parser.cjs +1 -1
- package/dist/agents/tool_calling/output_parser.cjs.map +1 -1
- package/dist/agents/tool_calling/output_parser.d.cts +1 -1
- package/dist/agents/tool_calling/output_parser.d.cts.map +1 -1
- package/dist/agents/tool_calling/output_parser.d.ts +1 -1
- package/dist/agents/tool_calling/output_parser.d.ts.map +1 -1
- package/dist/agents/tool_calling/output_parser.js +1 -1
- package/dist/agents/tool_calling/output_parser.js.map +1 -1
- package/dist/agents/toolkits/base.cjs +0 -1
- package/dist/agents/toolkits/conversational_retrieval/openai_functions.cjs.map +1 -1
- package/dist/agents/toolkits/conversational_retrieval/openai_functions.d.cts +0 -1
- package/dist/agents/toolkits/conversational_retrieval/openai_functions.d.cts.map +1 -1
- package/dist/agents/toolkits/conversational_retrieval/openai_functions.d.ts +0 -1
- package/dist/agents/toolkits/conversational_retrieval/openai_functions.d.ts.map +1 -1
- package/dist/agents/toolkits/conversational_retrieval/openai_functions.js.map +1 -1
- package/dist/agents/toolkits/conversational_retrieval/token_buffer_memory.cjs +0 -1
- package/dist/agents/toolkits/conversational_retrieval/token_buffer_memory.cjs.map +1 -1
- package/dist/agents/toolkits/conversational_retrieval/token_buffer_memory.d.cts +2 -4
- package/dist/agents/toolkits/conversational_retrieval/token_buffer_memory.d.cts.map +1 -1
- package/dist/agents/toolkits/conversational_retrieval/token_buffer_memory.d.ts +2 -4
- package/dist/agents/toolkits/conversational_retrieval/token_buffer_memory.d.ts.map +1 -1
- package/dist/agents/toolkits/conversational_retrieval/token_buffer_memory.js.map +1 -1
- package/dist/agents/toolkits/conversational_retrieval/tool.cjs +0 -1
- package/dist/agents/toolkits/conversational_retrieval/tool.cjs.map +1 -1
- package/dist/agents/toolkits/conversational_retrieval/tool.d.cts +0 -1
- package/dist/agents/toolkits/conversational_retrieval/tool.d.cts.map +1 -1
- package/dist/agents/toolkits/conversational_retrieval/tool.d.ts +0 -1
- package/dist/agents/toolkits/conversational_retrieval/tool.d.ts.map +1 -1
- package/dist/agents/toolkits/conversational_retrieval/tool.js.map +1 -1
- package/dist/agents/toolkits/json/json.cjs +1 -1
- package/dist/agents/toolkits/json/json.cjs.map +1 -1
- package/dist/agents/toolkits/json/json.d.cts +0 -1
- package/dist/agents/toolkits/json/json.d.cts.map +1 -1
- package/dist/agents/toolkits/json/json.d.ts +0 -1
- package/dist/agents/toolkits/json/json.d.ts.map +1 -1
- package/dist/agents/toolkits/json/json.js +1 -0
- package/dist/agents/toolkits/json/json.js.map +1 -1
- package/dist/agents/toolkits/openapi/openapi.cjs +0 -1
- package/dist/agents/toolkits/openapi/openapi.cjs.map +1 -1
- package/dist/agents/toolkits/openapi/openapi.d.cts +0 -1
- package/dist/agents/toolkits/openapi/openapi.d.cts.map +1 -1
- package/dist/agents/toolkits/openapi/openapi.d.ts +0 -1
- package/dist/agents/toolkits/openapi/openapi.d.ts.map +1 -1
- package/dist/agents/toolkits/openapi/openapi.js.map +1 -1
- package/dist/agents/toolkits/sql/prompt.d.cts.map +1 -1
- package/dist/agents/toolkits/sql/prompt.d.ts.map +1 -1
- package/dist/agents/toolkits/sql/sql.cjs +0 -1
- package/dist/agents/toolkits/sql/sql.cjs.map +1 -1
- package/dist/agents/toolkits/sql/sql.d.cts +0 -1
- package/dist/agents/toolkits/sql/sql.d.cts.map +1 -1
- package/dist/agents/toolkits/sql/sql.d.ts +0 -1
- package/dist/agents/toolkits/sql/sql.d.ts.map +1 -1
- package/dist/agents/toolkits/sql/sql.js.map +1 -1
- package/dist/agents/toolkits/vectorstore/vectorstore.cjs +0 -1
- package/dist/agents/toolkits/vectorstore/vectorstore.cjs.map +1 -1
- package/dist/agents/toolkits/vectorstore/vectorstore.d.cts +0 -1
- package/dist/agents/toolkits/vectorstore/vectorstore.d.cts.map +1 -1
- package/dist/agents/toolkits/vectorstore/vectorstore.d.ts +0 -1
- package/dist/agents/toolkits/vectorstore/vectorstore.d.ts.map +1 -1
- package/dist/agents/toolkits/vectorstore/vectorstore.js.map +1 -1
- package/dist/agents/types.cjs +0 -1
- package/dist/agents/types.cjs.map +1 -1
- package/dist/agents/types.d.cts +1 -2
- package/dist/agents/types.d.cts.map +1 -1
- package/dist/agents/types.d.ts +1 -2
- package/dist/agents/types.d.ts.map +1 -1
- package/dist/agents/types.js.map +1 -1
- package/dist/agents/xml/index.cjs +6 -6
- package/dist/agents/xml/index.cjs.map +1 -1
- package/dist/agents/xml/index.d.cts +4 -8
- package/dist/agents/xml/index.d.cts.map +1 -1
- package/dist/agents/xml/index.d.ts +4 -8
- package/dist/agents/xml/index.d.ts.map +1 -1
- package/dist/agents/xml/index.js +6 -5
- package/dist/agents/xml/index.js.map +1 -1
- package/dist/agents/xml/output_parser.cjs.map +1 -1
- package/dist/agents/xml/output_parser.d.cts +0 -1
- package/dist/agents/xml/output_parser.d.cts.map +1 -1
- package/dist/agents/xml/output_parser.d.ts +0 -1
- package/dist/agents/xml/output_parser.d.ts.map +1 -1
- package/dist/agents/xml/output_parser.js.map +1 -1
- package/dist/cache/file_system.cjs.map +1 -1
- package/dist/cache/file_system.d.cts +0 -1
- package/dist/cache/file_system.d.cts.map +1 -1
- package/dist/cache/file_system.d.ts +0 -1
- package/dist/cache/file_system.d.ts.map +1 -1
- package/dist/cache/file_system.js.map +1 -1
- package/dist/callbacks/handlers/console.d.cts +0 -3
- package/dist/callbacks/handlers/console.d.ts +0 -3
- package/dist/callbacks/handlers/run_collector.d.cts +0 -3
- package/dist/callbacks/handlers/run_collector.d.ts +0 -3
- package/dist/callbacks/handlers/tracer.d.cts +0 -3
- package/dist/callbacks/handlers/tracer.d.ts +0 -3
- package/dist/callbacks/handlers/tracer_langchain.d.cts +0 -3
- package/dist/callbacks/handlers/tracer_langchain.d.ts +0 -3
- package/dist/callbacks/promises.d.cts +0 -3
- package/dist/callbacks/promises.d.ts +0 -3
- package/dist/chains/analyze_documents_chain.cjs +0 -1
- package/dist/chains/analyze_documents_chain.cjs.map +1 -1
- package/dist/chains/analyze_documents_chain.d.cts +1 -2
- package/dist/chains/analyze_documents_chain.d.cts.map +1 -1
- package/dist/chains/analyze_documents_chain.d.ts +1 -2
- package/dist/chains/analyze_documents_chain.d.ts.map +1 -1
- package/dist/chains/analyze_documents_chain.js.map +1 -1
- package/dist/chains/api/api_chain.cjs.map +1 -1
- package/dist/chains/api/api_chain.d.cts +0 -1
- package/dist/chains/api/api_chain.d.cts.map +1 -1
- package/dist/chains/api/api_chain.d.ts +0 -1
- package/dist/chains/api/api_chain.d.ts.map +1 -1
- package/dist/chains/api/api_chain.js.map +1 -1
- package/dist/chains/api/prompts.cjs +4 -3
- package/dist/chains/api/prompts.cjs.map +1 -1
- package/dist/chains/api/prompts.js +12 -11
- package/dist/chains/api/prompts.js.map +1 -1
- package/dist/chains/base.cjs +0 -1
- package/dist/chains/base.cjs.map +1 -1
- package/dist/chains/base.d.cts +7 -8
- package/dist/chains/base.d.cts.map +1 -1
- package/dist/chains/base.d.ts +7 -8
- package/dist/chains/base.d.ts.map +1 -1
- package/dist/chains/base.js.map +1 -1
- package/dist/chains/chat_vector_db_chain.cjs +0 -1
- package/dist/chains/chat_vector_db_chain.cjs.map +1 -1
- package/dist/chains/chat_vector_db_chain.d.cts +1 -2
- package/dist/chains/chat_vector_db_chain.d.cts.map +1 -1
- package/dist/chains/chat_vector_db_chain.d.ts +1 -2
- package/dist/chains/chat_vector_db_chain.d.ts.map +1 -1
- package/dist/chains/chat_vector_db_chain.js.map +1 -1
- package/dist/chains/combine_docs_chain.cjs +1 -2
- package/dist/chains/combine_docs_chain.cjs.map +1 -1
- package/dist/chains/combine_docs_chain.d.cts +1 -3
- package/dist/chains/combine_docs_chain.d.cts.map +1 -1
- package/dist/chains/combine_docs_chain.d.ts +1 -3
- package/dist/chains/combine_docs_chain.d.ts.map +1 -1
- package/dist/chains/combine_docs_chain.js +1 -1
- package/dist/chains/combine_docs_chain.js.map +1 -1
- package/dist/chains/combine_documents/base.cjs +1 -2
- package/dist/chains/combine_documents/base.cjs.map +1 -1
- package/dist/chains/combine_documents/base.js +1 -1
- package/dist/chains/combine_documents/base.js.map +1 -1
- package/dist/chains/combine_documents/reduce.cjs.map +1 -1
- package/dist/chains/combine_documents/reduce.d.cts +0 -1
- package/dist/chains/combine_documents/reduce.d.cts.map +1 -1
- package/dist/chains/combine_documents/reduce.d.ts +0 -1
- package/dist/chains/combine_documents/reduce.d.ts.map +1 -1
- package/dist/chains/combine_documents/reduce.js.map +1 -1
- package/dist/chains/combine_documents/stuff.cjs +0 -1
- package/dist/chains/combine_documents/stuff.cjs.map +1 -1
- package/dist/chains/combine_documents/stuff.d.cts +1 -8
- package/dist/chains/combine_documents/stuff.d.cts.map +1 -1
- package/dist/chains/combine_documents/stuff.d.ts +1 -8
- package/dist/chains/combine_documents/stuff.d.ts.map +1 -1
- package/dist/chains/combine_documents/stuff.js.map +1 -1
- package/dist/chains/constitutional_ai/constitutional_chain.cjs.map +1 -1
- package/dist/chains/constitutional_ai/constitutional_chain.d.cts +0 -1
- package/dist/chains/constitutional_ai/constitutional_chain.d.cts.map +1 -1
- package/dist/chains/constitutional_ai/constitutional_chain.d.ts +0 -1
- package/dist/chains/constitutional_ai/constitutional_chain.d.ts.map +1 -1
- package/dist/chains/constitutional_ai/constitutional_chain.js.map +1 -1
- package/dist/chains/constitutional_ai/constitutional_principle.cjs +54 -54
- package/dist/chains/constitutional_ai/constitutional_principle.cjs.map +1 -1
- package/dist/chains/constitutional_ai/constitutional_principle.d.cts +1 -6
- package/dist/chains/constitutional_ai/constitutional_principle.d.cts.map +1 -1
- package/dist/chains/constitutional_ai/constitutional_principle.d.ts +1 -6
- package/dist/chains/constitutional_ai/constitutional_principle.d.ts.map +1 -1
- package/dist/chains/constitutional_ai/constitutional_principle.js +54 -54
- package/dist/chains/constitutional_ai/constitutional_principle.js.map +1 -1
- package/dist/chains/constitutional_ai/constitutional_prompts.cjs +5 -4
- package/dist/chains/constitutional_ai/constitutional_prompts.cjs.map +1 -1
- package/dist/chains/constitutional_ai/constitutional_prompts.js +4 -4
- package/dist/chains/constitutional_ai/constitutional_prompts.js.map +1 -1
- package/dist/chains/conversation.cjs +0 -1
- package/dist/chains/conversation.cjs.map +1 -1
- package/dist/chains/conversation.d.cts +1 -7
- package/dist/chains/conversation.d.cts.map +1 -1
- package/dist/chains/conversation.d.ts +1 -7
- package/dist/chains/conversation.d.ts.map +1 -1
- package/dist/chains/conversation.js.map +1 -1
- package/dist/chains/conversational_retrieval_chain.cjs +0 -1
- package/dist/chains/conversational_retrieval_chain.cjs.map +1 -1
- package/dist/chains/conversational_retrieval_chain.d.cts +5 -4
- package/dist/chains/conversational_retrieval_chain.d.cts.map +1 -1
- package/dist/chains/conversational_retrieval_chain.d.ts +5 -4
- package/dist/chains/conversational_retrieval_chain.d.ts.map +1 -1
- package/dist/chains/conversational_retrieval_chain.js.map +1 -1
- package/dist/chains/graph_qa/cypher.cjs +5 -4
- package/dist/chains/graph_qa/cypher.cjs.map +1 -1
- package/dist/chains/graph_qa/cypher.d.cts +0 -1
- package/dist/chains/graph_qa/cypher.d.cts.map +1 -1
- package/dist/chains/graph_qa/cypher.d.ts +0 -1
- package/dist/chains/graph_qa/cypher.d.ts.map +1 -1
- package/dist/chains/graph_qa/cypher.js +5 -4
- package/dist/chains/graph_qa/cypher.js.map +1 -1
- package/dist/chains/graph_qa/prompts.cjs +2 -3
- package/dist/chains/graph_qa/prompts.cjs.map +1 -1
- package/dist/chains/graph_qa/prompts.js +2 -2
- package/dist/chains/graph_qa/prompts.js.map +1 -1
- package/dist/chains/history_aware_retriever.cjs.map +1 -1
- package/dist/chains/history_aware_retriever.d.cts +1 -6
- package/dist/chains/history_aware_retriever.d.cts.map +1 -1
- package/dist/chains/history_aware_retriever.d.ts +1 -6
- package/dist/chains/history_aware_retriever.d.ts.map +1 -1
- package/dist/chains/history_aware_retriever.js.map +1 -1
- package/dist/chains/llm_chain.cjs +0 -1
- package/dist/chains/llm_chain.cjs.map +1 -1
- package/dist/chains/llm_chain.d.cts +0 -1
- package/dist/chains/llm_chain.d.cts.map +1 -1
- package/dist/chains/llm_chain.d.ts +0 -1
- package/dist/chains/llm_chain.d.ts.map +1 -1
- package/dist/chains/llm_chain.js.map +1 -1
- package/dist/chains/load.cjs +1 -1
- package/dist/chains/load.cjs.map +1 -1
- package/dist/chains/load.d.cts +0 -1
- package/dist/chains/load.d.cts.map +1 -1
- package/dist/chains/load.d.ts +0 -1
- package/dist/chains/load.d.ts.map +1 -1
- package/dist/chains/load.js +1 -1
- package/dist/chains/load.js.map +1 -1
- package/dist/chains/openai_functions/base.cjs +0 -1
- package/dist/chains/openai_functions/base.cjs.map +1 -1
- package/dist/chains/openai_functions/base.d.cts +6 -4
- package/dist/chains/openai_functions/base.d.cts.map +1 -1
- package/dist/chains/openai_functions/base.d.ts +6 -4
- package/dist/chains/openai_functions/base.d.ts.map +1 -1
- package/dist/chains/openai_functions/base.js.map +1 -1
- package/dist/chains/openai_functions/extraction.cjs +0 -1
- package/dist/chains/openai_functions/extraction.cjs.map +1 -1
- package/dist/chains/openai_functions/extraction.d.cts +0 -1
- package/dist/chains/openai_functions/extraction.d.cts.map +1 -1
- package/dist/chains/openai_functions/extraction.d.ts +0 -1
- 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/openapi.cjs +1 -1
- package/dist/chains/openai_functions/openapi.cjs.map +1 -1
- package/dist/chains/openai_functions/openapi.d.cts +0 -7
- package/dist/chains/openai_functions/openapi.d.cts.map +1 -1
- package/dist/chains/openai_functions/openapi.d.ts +0 -7
- package/dist/chains/openai_functions/openapi.d.ts.map +1 -1
- package/dist/chains/openai_functions/openapi.js +1 -1
- package/dist/chains/openai_functions/openapi.js.map +1 -1
- package/dist/chains/openai_functions/tagging.cjs +0 -1
- package/dist/chains/openai_functions/tagging.cjs.map +1 -1
- package/dist/chains/openai_functions/tagging.d.cts +0 -1
- package/dist/chains/openai_functions/tagging.d.cts.map +1 -1
- package/dist/chains/openai_functions/tagging.d.ts +0 -1
- package/dist/chains/openai_functions/tagging.d.ts.map +1 -1
- package/dist/chains/openai_functions/tagging.js.map +1 -1
- package/dist/chains/openai_moderation.cjs +0 -1
- package/dist/chains/openai_moderation.cjs.map +1 -1
- package/dist/chains/openai_moderation.d.cts +0 -1
- package/dist/chains/openai_moderation.d.cts.map +1 -1
- package/dist/chains/openai_moderation.d.ts +0 -1
- package/dist/chains/openai_moderation.d.ts.map +1 -1
- package/dist/chains/openai_moderation.js.map +1 -1
- package/dist/chains/query_constructor/index.cjs +6 -3
- package/dist/chains/query_constructor/index.cjs.map +1 -1
- package/dist/chains/query_constructor/index.d.cts +1 -5
- package/dist/chains/query_constructor/index.d.cts.map +1 -1
- package/dist/chains/query_constructor/index.d.ts +1 -5
- package/dist/chains/query_constructor/index.d.ts.map +1 -1
- package/dist/chains/query_constructor/index.js +6 -3
- package/dist/chains/query_constructor/index.js.map +1 -1
- package/dist/chains/query_constructor/parser.cjs +2 -1
- package/dist/chains/query_constructor/parser.cjs.map +1 -1
- package/dist/chains/query_constructor/parser.d.cts +0 -1
- package/dist/chains/query_constructor/parser.d.cts.map +1 -1
- package/dist/chains/query_constructor/parser.d.ts +0 -1
- package/dist/chains/query_constructor/parser.d.ts.map +1 -1
- package/dist/chains/query_constructor/parser.js +2 -0
- package/dist/chains/query_constructor/parser.js.map +1 -1
- package/dist/chains/query_constructor/prompt.cjs +28 -22
- package/dist/chains/query_constructor/prompt.cjs.map +1 -1
- package/dist/chains/query_constructor/prompt.d.cts +0 -1
- package/dist/chains/query_constructor/prompt.d.cts.map +1 -1
- package/dist/chains/query_constructor/prompt.d.ts +0 -1
- package/dist/chains/query_constructor/prompt.d.ts.map +1 -1
- package/dist/chains/query_constructor/prompt.js +25 -22
- package/dist/chains/query_constructor/prompt.js.map +1 -1
- package/dist/chains/question_answering/load.cjs.map +1 -1
- package/dist/chains/question_answering/load.d.cts +0 -1
- package/dist/chains/question_answering/load.d.cts.map +1 -1
- package/dist/chains/question_answering/load.d.ts +0 -1
- package/dist/chains/question_answering/load.d.ts.map +1 -1
- package/dist/chains/question_answering/load.js.map +1 -1
- package/dist/chains/question_answering/map_reduce_prompts.cjs +12 -11
- package/dist/chains/question_answering/map_reduce_prompts.cjs.map +1 -1
- package/dist/chains/question_answering/map_reduce_prompts.js +9 -9
- package/dist/chains/question_answering/map_reduce_prompts.js.map +1 -1
- package/dist/chains/question_answering/refine_prompts.cjs +30 -22
- package/dist/chains/question_answering/refine_prompts.cjs.map +1 -1
- package/dist/chains/question_answering/refine_prompts.js +25 -20
- package/dist/chains/question_answering/refine_prompts.js.map +1 -1
- package/dist/chains/question_answering/stuff_prompts.cjs +6 -6
- package/dist/chains/question_answering/stuff_prompts.cjs.map +1 -1
- package/dist/chains/question_answering/stuff_prompts.js +5 -5
- package/dist/chains/question_answering/stuff_prompts.js.map +1 -1
- package/dist/chains/retrieval.cjs.map +1 -1
- package/dist/chains/retrieval.d.cts +1 -5
- package/dist/chains/retrieval.d.cts.map +1 -1
- package/dist/chains/retrieval.d.ts +1 -5
- package/dist/chains/retrieval.d.ts.map +1 -1
- package/dist/chains/retrieval.js.map +1 -1
- package/dist/chains/retrieval_qa.cjs.map +1 -1
- package/dist/chains/retrieval_qa.d.cts +1 -2
- package/dist/chains/retrieval_qa.d.cts.map +1 -1
- package/dist/chains/retrieval_qa.d.ts +1 -2
- package/dist/chains/retrieval_qa.d.ts.map +1 -1
- package/dist/chains/retrieval_qa.js.map +1 -1
- package/dist/chains/router/llm_router.cjs.map +1 -1
- package/dist/chains/router/llm_router.d.cts +0 -1
- package/dist/chains/router/llm_router.d.cts.map +1 -1
- package/dist/chains/router/llm_router.d.ts +0 -1
- package/dist/chains/router/llm_router.d.ts.map +1 -1
- package/dist/chains/router/llm_router.js.map +1 -1
- package/dist/chains/router/multi_prompt.cjs +0 -1
- package/dist/chains/router/multi_prompt.cjs.map +1 -1
- package/dist/chains/router/multi_prompt.d.cts +1 -10
- package/dist/chains/router/multi_prompt.d.cts.map +1 -1
- package/dist/chains/router/multi_prompt.d.ts +1 -10
- package/dist/chains/router/multi_prompt.d.ts.map +1 -1
- package/dist/chains/router/multi_prompt.js.map +1 -1
- package/dist/chains/router/multi_retrieval_qa.cjs +0 -1
- package/dist/chains/router/multi_retrieval_qa.cjs.map +1 -1
- package/dist/chains/router/multi_retrieval_qa.d.cts +2 -11
- package/dist/chains/router/multi_retrieval_qa.d.cts.map +1 -1
- package/dist/chains/router/multi_retrieval_qa.d.ts +2 -11
- package/dist/chains/router/multi_retrieval_qa.d.ts.map +1 -1
- package/dist/chains/router/multi_retrieval_qa.js.map +1 -1
- package/dist/chains/router/multi_route.cjs.map +1 -1
- package/dist/chains/router/multi_route.d.cts +1 -2
- package/dist/chains/router/multi_route.d.cts.map +1 -1
- package/dist/chains/router/multi_route.d.ts +1 -2
- package/dist/chains/router/multi_route.d.ts.map +1 -1
- package/dist/chains/router/multi_route.js.map +1 -1
- package/dist/chains/router/utils.cjs.map +1 -1
- package/dist/chains/router/utils.js.map +1 -1
- package/dist/chains/sequential_chain.cjs.map +1 -1
- package/dist/chains/sequential_chain.d.cts +0 -4
- package/dist/chains/sequential_chain.d.cts.map +1 -1
- package/dist/chains/sequential_chain.d.ts +0 -4
- package/dist/chains/sequential_chain.d.ts.map +1 -1
- package/dist/chains/sequential_chain.js.map +1 -1
- package/dist/chains/serde.d.cts +1 -2
- package/dist/chains/serde.d.cts.map +1 -1
- package/dist/chains/serde.d.ts +1 -2
- package/dist/chains/serde.d.ts.map +1 -1
- package/dist/chains/sql_db/sql_db_chain.cjs +1 -2
- package/dist/chains/sql_db/sql_db_chain.cjs.map +1 -1
- package/dist/chains/sql_db/sql_db_chain.d.cts +9 -8
- package/dist/chains/sql_db/sql_db_chain.d.cts.map +1 -1
- package/dist/chains/sql_db/sql_db_chain.d.ts +9 -8
- package/dist/chains/sql_db/sql_db_chain.d.ts.map +1 -1
- package/dist/chains/sql_db/sql_db_chain.js +1 -1
- package/dist/chains/sql_db/sql_db_chain.js.map +1 -1
- package/dist/chains/sql_db/sql_db_prompt.cjs +7 -8
- package/dist/chains/sql_db/sql_db_prompt.cjs.map +1 -1
- package/dist/chains/sql_db/sql_db_prompt.d.cts +0 -1
- package/dist/chains/sql_db/sql_db_prompt.d.cts.map +1 -1
- package/dist/chains/sql_db/sql_db_prompt.d.ts +0 -1
- package/dist/chains/sql_db/sql_db_prompt.d.ts.map +1 -1
- package/dist/chains/sql_db/sql_db_prompt.js +7 -7
- package/dist/chains/sql_db/sql_db_prompt.js.map +1 -1
- package/dist/chains/summarization/load.cjs.map +1 -1
- package/dist/chains/summarization/load.d.cts +0 -1
- package/dist/chains/summarization/load.d.cts.map +1 -1
- package/dist/chains/summarization/load.d.ts +0 -1
- package/dist/chains/summarization/load.d.ts.map +1 -1
- package/dist/chains/summarization/load.js.map +1 -1
- package/dist/chains/summarization/refine_prompts.cjs +1 -2
- package/dist/chains/summarization/refine_prompts.cjs.map +1 -1
- package/dist/chains/summarization/refine_prompts.js +1 -1
- package/dist/chains/summarization/refine_prompts.js.map +1 -1
- package/dist/chains/summarization/stuff_prompts.cjs +1 -2
- package/dist/chains/summarization/stuff_prompts.cjs.map +1 -1
- package/dist/chains/summarization/stuff_prompts.js +1 -1
- package/dist/chains/summarization/stuff_prompts.js.map +1 -1
- package/dist/chains/transform.cjs.map +1 -1
- package/dist/chains/transform.d.cts +0 -1
- package/dist/chains/transform.d.cts.map +1 -1
- package/dist/chains/transform.d.ts +0 -1
- package/dist/chains/transform.d.ts.map +1 -1
- package/dist/chains/transform.js.map +1 -1
- package/dist/chains/vector_db_qa.cjs.map +1 -1
- package/dist/chains/vector_db_qa.d.cts +1 -2
- package/dist/chains/vector_db_qa.d.cts.map +1 -1
- package/dist/chains/vector_db_qa.d.ts +1 -2
- package/dist/chains/vector_db_qa.d.ts.map +1 -1
- package/dist/chains/vector_db_qa.js.map +1 -1
- package/dist/chat_models/universal.cjs.map +1 -1
- package/dist/chat_models/universal.d.cts +0 -1
- package/dist/chat_models/universal.d.cts.map +1 -1
- package/dist/chat_models/universal.d.ts +0 -1
- package/dist/chat_models/universal.d.ts.map +1 -1
- package/dist/chat_models/universal.js.map +1 -1
- package/dist/document_loaders/fs/buffer.cjs +1 -0
- package/dist/document_loaders/fs/buffer.cjs.map +1 -1
- package/dist/document_loaders/fs/buffer.d.cts +0 -1
- package/dist/document_loaders/fs/buffer.d.cts.map +1 -1
- package/dist/document_loaders/fs/buffer.d.ts +0 -1
- package/dist/document_loaders/fs/buffer.d.ts.map +1 -1
- package/dist/document_loaders/fs/buffer.js +1 -0
- package/dist/document_loaders/fs/buffer.js.map +1 -1
- package/dist/document_loaders/fs/directory.cjs +4 -0
- 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 +4 -0
- package/dist/document_loaders/fs/directory.js.map +1 -1
- package/dist/document_loaders/fs/json.cjs +1 -0
- package/dist/document_loaders/fs/json.cjs.map +1 -1
- package/dist/document_loaders/fs/json.d.cts +0 -1
- package/dist/document_loaders/fs/json.d.cts.map +1 -1
- package/dist/document_loaders/fs/json.d.ts +0 -1
- package/dist/document_loaders/fs/json.d.ts.map +1 -1
- package/dist/document_loaders/fs/json.js +1 -0
- package/dist/document_loaders/fs/json.js.map +1 -1
- package/dist/document_loaders/fs/multi_file.cjs +3 -0
- package/dist/document_loaders/fs/multi_file.cjs.map +1 -1
- package/dist/document_loaders/fs/multi_file.d.cts +0 -1
- package/dist/document_loaders/fs/multi_file.d.cts.map +1 -1
- package/dist/document_loaders/fs/multi_file.d.ts +0 -1
- package/dist/document_loaders/fs/multi_file.d.ts.map +1 -1
- package/dist/document_loaders/fs/multi_file.js +3 -0
- package/dist/document_loaders/fs/multi_file.js.map +1 -1
- package/dist/document_loaders/fs/text.cjs +1 -0
- package/dist/document_loaders/fs/text.cjs.map +1 -1
- package/dist/document_loaders/fs/text.d.cts +0 -1
- package/dist/document_loaders/fs/text.d.cts.map +1 -1
- package/dist/document_loaders/fs/text.d.ts +0 -1
- package/dist/document_loaders/fs/text.d.ts.map +1 -1
- package/dist/document_loaders/fs/text.js +1 -0
- package/dist/document_loaders/fs/text.js.map +1 -1
- package/dist/document_transformers/openai_functions.cjs.map +1 -1
- package/dist/document_transformers/openai_functions.d.cts +1 -1
- package/dist/document_transformers/openai_functions.d.cts.map +1 -1
- package/dist/document_transformers/openai_functions.d.ts +1 -1
- package/dist/document_transformers/openai_functions.d.ts.map +1 -1
- package/dist/document_transformers/openai_functions.js.map +1 -1
- package/dist/embeddings/cache_backed.cjs.map +1 -1
- package/dist/embeddings/cache_backed.d.cts +0 -1
- package/dist/embeddings/cache_backed.d.cts.map +1 -1
- package/dist/embeddings/cache_backed.d.ts +0 -1
- package/dist/embeddings/cache_backed.d.ts.map +1 -1
- package/dist/embeddings/cache_backed.js.map +1 -1
- package/dist/evaluation/agents/index.cjs +3 -1
- package/dist/evaluation/agents/index.d.cts +2 -1
- package/dist/evaluation/agents/index.d.ts +2 -1
- package/dist/evaluation/agents/index.js +2 -2
- package/dist/evaluation/agents/prompt.cjs +10 -11
- package/dist/evaluation/agents/prompt.cjs.map +1 -1
- package/dist/evaluation/agents/prompt.js +10 -10
- package/dist/evaluation/agents/prompt.js.map +1 -1
- package/dist/evaluation/agents/trajectory.cjs +0 -1
- package/dist/evaluation/agents/trajectory.cjs.map +1 -1
- package/dist/evaluation/agents/trajectory.d.cts +1 -3
- package/dist/evaluation/agents/trajectory.d.cts.map +1 -1
- package/dist/evaluation/agents/trajectory.d.ts +1 -3
- package/dist/evaluation/agents/trajectory.d.ts.map +1 -1
- package/dist/evaluation/agents/trajectory.js.map +1 -1
- package/dist/evaluation/base.cjs +2 -0
- package/dist/evaluation/base.cjs.map +1 -1
- package/dist/evaluation/base.d.cts +2 -2
- package/dist/evaluation/base.d.cts.map +1 -1
- package/dist/evaluation/base.d.ts +2 -2
- package/dist/evaluation/base.d.ts.map +1 -1
- package/dist/evaluation/base.js +1 -1
- package/dist/evaluation/base.js.map +1 -1
- package/dist/evaluation/comparison/index.cjs +4 -1
- package/dist/evaluation/comparison/index.d.cts +2 -1
- package/dist/evaluation/comparison/index.d.ts +2 -1
- package/dist/evaluation/comparison/index.js +2 -2
- package/dist/evaluation/comparison/pairwise.cjs +2 -3
- package/dist/evaluation/comparison/pairwise.cjs.map +1 -1
- package/dist/evaluation/comparison/pairwise.d.cts +2 -4
- package/dist/evaluation/comparison/pairwise.d.cts.map +1 -1
- package/dist/evaluation/comparison/pairwise.d.ts +2 -4
- package/dist/evaluation/comparison/pairwise.d.ts.map +1 -1
- package/dist/evaluation/comparison/pairwise.js +2 -2
- package/dist/evaluation/comparison/pairwise.js.map +1 -1
- package/dist/evaluation/comparison/prompt.cjs +2 -3
- package/dist/evaluation/comparison/prompt.cjs.map +1 -1
- package/dist/evaluation/comparison/prompt.js +2 -2
- package/dist/evaluation/comparison/prompt.js.map +1 -1
- package/dist/evaluation/criteria/criteria.cjs +2 -3
- package/dist/evaluation/criteria/criteria.cjs.map +1 -1
- package/dist/evaluation/criteria/criteria.d.cts +3 -9
- package/dist/evaluation/criteria/criteria.d.cts.map +1 -1
- package/dist/evaluation/criteria/criteria.d.ts +3 -9
- package/dist/evaluation/criteria/criteria.d.ts.map +1 -1
- package/dist/evaluation/criteria/criteria.js +2 -2
- package/dist/evaluation/criteria/criteria.js.map +1 -1
- package/dist/evaluation/criteria/index.cjs +4 -1
- package/dist/evaluation/criteria/index.d.cts +2 -1
- package/dist/evaluation/criteria/index.d.ts +2 -1
- package/dist/evaluation/criteria/index.js +2 -2
- package/dist/evaluation/criteria/prompt.cjs +2 -3
- package/dist/evaluation/criteria/prompt.cjs.map +1 -1
- package/dist/evaluation/criteria/prompt.js +2 -2
- package/dist/evaluation/criteria/prompt.js.map +1 -1
- package/dist/evaluation/embedding_distance/base.cjs.map +1 -1
- package/dist/evaluation/embedding_distance/base.d.cts +0 -1
- package/dist/evaluation/embedding_distance/base.d.cts.map +1 -1
- package/dist/evaluation/embedding_distance/base.d.ts +0 -1
- package/dist/evaluation/embedding_distance/base.d.ts.map +1 -1
- package/dist/evaluation/embedding_distance/base.js.map +1 -1
- package/dist/evaluation/embedding_distance/index.cjs +5 -1
- package/dist/evaluation/embedding_distance/index.d.cts +2 -1
- package/dist/evaluation/embedding_distance/index.d.ts +2 -1
- package/dist/evaluation/embedding_distance/index.js +2 -2
- package/dist/evaluation/index.d.cts +5 -0
- package/dist/evaluation/index.d.ts +5 -0
- package/dist/evaluation/loader.cjs +0 -1
- package/dist/evaluation/loader.cjs.map +1 -1
- package/dist/evaluation/loader.d.cts +2 -1
- package/dist/evaluation/loader.d.cts.map +1 -1
- package/dist/evaluation/loader.d.ts +2 -1
- package/dist/evaluation/loader.d.ts.map +1 -1
- package/dist/evaluation/loader.js.map +1 -1
- package/dist/evaluation/qa/eval_chain.cjs +3 -2
- package/dist/evaluation/qa/eval_chain.cjs.map +1 -1
- package/dist/evaluation/qa/eval_chain.d.cts +1 -2
- package/dist/evaluation/qa/eval_chain.d.cts.map +1 -1
- package/dist/evaluation/qa/eval_chain.d.ts +1 -2
- package/dist/evaluation/qa/eval_chain.d.ts.map +1 -1
- package/dist/evaluation/qa/eval_chain.js +3 -2
- package/dist/evaluation/qa/eval_chain.js.map +1 -1
- package/dist/evaluation/qa/index.cjs +2 -1
- package/dist/evaluation/qa/index.d.cts +2 -1
- package/dist/evaluation/qa/index.d.ts +2 -1
- package/dist/evaluation/qa/index.js +2 -2
- package/dist/evaluation/qa/prompt.cjs +1 -2
- package/dist/evaluation/qa/prompt.cjs.map +1 -1
- package/dist/evaluation/qa/prompt.js +1 -1
- package/dist/evaluation/qa/prompt.js.map +1 -1
- package/dist/evaluation/types.d.cts +0 -1
- package/dist/evaluation/types.d.cts.map +1 -1
- package/dist/evaluation/types.d.ts +0 -1
- package/dist/evaluation/types.d.ts.map +1 -1
- package/dist/experimental/autogpt/agent.cjs +11 -11
- package/dist/experimental/autogpt/agent.cjs.map +1 -1
- package/dist/experimental/autogpt/agent.d.cts +2 -17
- package/dist/experimental/autogpt/agent.d.cts.map +1 -1
- package/dist/experimental/autogpt/agent.d.ts +2 -17
- package/dist/experimental/autogpt/agent.d.ts.map +1 -1
- package/dist/experimental/autogpt/agent.js +11 -10
- package/dist/experimental/autogpt/agent.js.map +1 -1
- package/dist/experimental/autogpt/output_parser.cjs +0 -1
- package/dist/experimental/autogpt/output_parser.cjs.map +1 -1
- package/dist/experimental/autogpt/output_parser.d.cts +0 -1
- package/dist/experimental/autogpt/output_parser.d.cts.map +1 -1
- package/dist/experimental/autogpt/output_parser.d.ts +0 -1
- package/dist/experimental/autogpt/output_parser.d.ts.map +1 -1
- package/dist/experimental/autogpt/output_parser.js.map +1 -1
- package/dist/experimental/autogpt/prompt.cjs +0 -1
- package/dist/experimental/autogpt/prompt.cjs.map +1 -1
- package/dist/experimental/autogpt/prompt.d.cts +2 -9
- package/dist/experimental/autogpt/prompt.d.cts.map +1 -1
- package/dist/experimental/autogpt/prompt.d.ts +2 -9
- package/dist/experimental/autogpt/prompt.d.ts.map +1 -1
- package/dist/experimental/autogpt/prompt.js.map +1 -1
- package/dist/experimental/autogpt/prompt_generator.cjs +1 -1
- package/dist/experimental/autogpt/prompt_generator.cjs.map +1 -1
- package/dist/experimental/autogpt/prompt_generator.js +1 -1
- package/dist/experimental/autogpt/prompt_generator.js.map +1 -1
- package/dist/experimental/autogpt/schema.d.cts +0 -1
- package/dist/experimental/autogpt/schema.d.cts.map +1 -1
- package/dist/experimental/autogpt/schema.d.ts +0 -1
- package/dist/experimental/autogpt/schema.d.ts.map +1 -1
- package/dist/experimental/babyagi/agent.cjs +12 -11
- package/dist/experimental/babyagi/agent.cjs.map +1 -1
- package/dist/experimental/babyagi/agent.d.cts +3 -22
- package/dist/experimental/babyagi/agent.d.cts.map +1 -1
- package/dist/experimental/babyagi/agent.d.ts +3 -22
- package/dist/experimental/babyagi/agent.d.ts.map +1 -1
- package/dist/experimental/babyagi/agent.js +12 -10
- package/dist/experimental/babyagi/agent.js.map +1 -1
- package/dist/experimental/babyagi/task_creation.cjs +10 -10
- package/dist/experimental/babyagi/task_creation.cjs.map +1 -1
- package/dist/experimental/babyagi/task_creation.d.cts +0 -1
- package/dist/experimental/babyagi/task_creation.d.cts.map +1 -1
- package/dist/experimental/babyagi/task_creation.d.ts +0 -1
- package/dist/experimental/babyagi/task_creation.d.ts.map +1 -1
- package/dist/experimental/babyagi/task_creation.js +10 -9
- package/dist/experimental/babyagi/task_creation.js.map +1 -1
- package/dist/experimental/babyagi/task_execution.cjs +9 -9
- package/dist/experimental/babyagi/task_execution.cjs.map +1 -1
- package/dist/experimental/babyagi/task_execution.d.cts +0 -1
- package/dist/experimental/babyagi/task_execution.d.cts.map +1 -1
- package/dist/experimental/babyagi/task_execution.d.ts +0 -1
- package/dist/experimental/babyagi/task_execution.d.ts.map +1 -1
- package/dist/experimental/babyagi/task_execution.js +9 -8
- package/dist/experimental/babyagi/task_execution.js.map +1 -1
- package/dist/experimental/babyagi/task_prioritization.cjs +9 -9
- package/dist/experimental/babyagi/task_prioritization.cjs.map +1 -1
- package/dist/experimental/babyagi/task_prioritization.d.cts +0 -1
- package/dist/experimental/babyagi/task_prioritization.d.cts.map +1 -1
- package/dist/experimental/babyagi/task_prioritization.d.ts +0 -1
- package/dist/experimental/babyagi/task_prioritization.d.ts.map +1 -1
- package/dist/experimental/babyagi/task_prioritization.js +9 -8
- package/dist/experimental/babyagi/task_prioritization.js.map +1 -1
- package/dist/experimental/chains/violation_of_expectations/types.cjs.map +1 -1
- package/dist/experimental/chains/violation_of_expectations/types.d.cts +0 -1
- package/dist/experimental/chains/violation_of_expectations/types.d.cts.map +1 -1
- package/dist/experimental/chains/violation_of_expectations/types.d.ts +0 -1
- package/dist/experimental/chains/violation_of_expectations/types.d.ts.map +1 -1
- package/dist/experimental/chains/violation_of_expectations/types.js.map +1 -1
- package/dist/experimental/chains/violation_of_expectations/violation_of_expectations_chain.cjs +0 -1
- package/dist/experimental/chains/violation_of_expectations/violation_of_expectations_chain.cjs.map +1 -1
- package/dist/experimental/chains/violation_of_expectations/violation_of_expectations_chain.d.cts +53 -1
- package/dist/experimental/chains/violation_of_expectations/violation_of_expectations_chain.d.cts.map +1 -1
- package/dist/experimental/chains/violation_of_expectations/violation_of_expectations_chain.d.ts +53 -1
- package/dist/experimental/chains/violation_of_expectations/violation_of_expectations_chain.d.ts.map +1 -1
- package/dist/experimental/chains/violation_of_expectations/violation_of_expectations_chain.js.map +1 -1
- package/dist/experimental/chains/violation_of_expectations/violation_of_expectations_prompt.cjs +4 -5
- package/dist/experimental/chains/violation_of_expectations/violation_of_expectations_prompt.cjs.map +1 -1
- package/dist/experimental/chains/violation_of_expectations/violation_of_expectations_prompt.js +4 -4
- package/dist/experimental/chains/violation_of_expectations/violation_of_expectations_prompt.js.map +1 -1
- package/dist/experimental/generative_agents/generative_agent.cjs +0 -1
- package/dist/experimental/generative_agents/generative_agent.cjs.map +1 -1
- package/dist/experimental/generative_agents/generative_agent.d.cts +1 -2
- package/dist/experimental/generative_agents/generative_agent.d.cts.map +1 -1
- package/dist/experimental/generative_agents/generative_agent.d.ts +1 -2
- package/dist/experimental/generative_agents/generative_agent.d.ts.map +1 -1
- package/dist/experimental/generative_agents/generative_agent.js.map +1 -1
- package/dist/experimental/generative_agents/generative_agent_memory.cjs +0 -1
- package/dist/experimental/generative_agents/generative_agent_memory.cjs.map +1 -1
- package/dist/experimental/generative_agents/generative_agent_memory.d.cts +1 -2
- package/dist/experimental/generative_agents/generative_agent_memory.d.cts.map +1 -1
- package/dist/experimental/generative_agents/generative_agent_memory.d.ts +1 -2
- package/dist/experimental/generative_agents/generative_agent_memory.d.ts.map +1 -1
- package/dist/experimental/generative_agents/generative_agent_memory.js.map +1 -1
- package/dist/experimental/masking/parser.cjs.map +1 -1
- package/dist/experimental/masking/parser.d.cts +0 -1
- package/dist/experimental/masking/parser.d.cts.map +1 -1
- package/dist/experimental/masking/parser.d.ts +0 -1
- package/dist/experimental/masking/parser.d.ts.map +1 -1
- package/dist/experimental/masking/parser.js.map +1 -1
- package/dist/experimental/masking/regex_masking_transformer.cjs.map +1 -1
- package/dist/experimental/masking/regex_masking_transformer.d.cts +0 -1
- package/dist/experimental/masking/regex_masking_transformer.d.cts.map +1 -1
- package/dist/experimental/masking/regex_masking_transformer.d.ts +0 -1
- package/dist/experimental/masking/regex_masking_transformer.d.ts.map +1 -1
- package/dist/experimental/masking/regex_masking_transformer.js.map +1 -1
- package/dist/experimental/masking/transformer.cjs.map +1 -1
- package/dist/experimental/masking/transformer.d.cts.map +1 -1
- package/dist/experimental/masking/transformer.d.ts.map +1 -1
- package/dist/experimental/masking/transformer.js.map +1 -1
- package/dist/experimental/masking/types.d.cts +0 -1
- package/dist/experimental/masking/types.d.cts.map +1 -1
- package/dist/experimental/masking/types.d.ts +0 -1
- package/dist/experimental/masking/types.d.ts.map +1 -1
- package/dist/experimental/openai_assistant/index.cjs.map +1 -1
- package/dist/experimental/openai_assistant/index.d.cts +2 -18
- package/dist/experimental/openai_assistant/index.d.cts.map +1 -1
- package/dist/experimental/openai_assistant/index.d.ts +2 -18
- package/dist/experimental/openai_assistant/index.d.ts.map +1 -1
- package/dist/experimental/openai_assistant/index.js.map +1 -1
- package/dist/experimental/openai_assistant/schema.d.cts +0 -1
- package/dist/experimental/openai_assistant/schema.d.cts.map +1 -1
- package/dist/experimental/openai_assistant/schema.d.ts +0 -1
- package/dist/experimental/openai_assistant/schema.d.ts.map +1 -1
- package/dist/experimental/openai_files/index.cjs.map +1 -1
- package/dist/experimental/openai_files/index.d.cts +4 -18
- package/dist/experimental/openai_files/index.d.cts.map +1 -1
- package/dist/experimental/openai_files/index.d.ts +4 -18
- package/dist/experimental/openai_files/index.d.ts.map +1 -1
- package/dist/experimental/openai_files/index.js.map +1 -1
- package/dist/experimental/plan_and_execute/agent_executor.cjs +1 -0
- package/dist/experimental/plan_and_execute/agent_executor.cjs.map +1 -1
- package/dist/experimental/plan_and_execute/agent_executor.d.cts +4 -16
- package/dist/experimental/plan_and_execute/agent_executor.d.cts.map +1 -1
- package/dist/experimental/plan_and_execute/agent_executor.d.ts +4 -16
- package/dist/experimental/plan_and_execute/agent_executor.d.ts.map +1 -1
- package/dist/experimental/plan_and_execute/agent_executor.js +1 -1
- package/dist/experimental/plan_and_execute/agent_executor.js.map +1 -1
- package/dist/experimental/plan_and_execute/base.cjs +3 -0
- package/dist/experimental/plan_and_execute/base.cjs.map +1 -1
- package/dist/experimental/plan_and_execute/base.d.cts +0 -1
- package/dist/experimental/plan_and_execute/base.d.cts.map +1 -1
- package/dist/experimental/plan_and_execute/base.d.ts +0 -1
- package/dist/experimental/plan_and_execute/base.d.ts.map +1 -1
- package/dist/experimental/plan_and_execute/base.js +3 -0
- package/dist/experimental/plan_and_execute/base.js.map +1 -1
- package/dist/experimental/plan_and_execute/outputParser.cjs +0 -1
- package/dist/experimental/plan_and_execute/outputParser.cjs.map +1 -1
- package/dist/experimental/plan_and_execute/outputParser.d.cts +0 -1
- package/dist/experimental/plan_and_execute/outputParser.d.cts.map +1 -1
- package/dist/experimental/plan_and_execute/outputParser.d.ts +0 -1
- package/dist/experimental/plan_and_execute/outputParser.d.ts.map +1 -1
- package/dist/experimental/plan_and_execute/outputParser.js.map +1 -1
- package/dist/experimental/plan_and_execute/prompt.cjs +1 -2
- package/dist/experimental/plan_and_execute/prompt.cjs.map +1 -1
- package/dist/experimental/plan_and_execute/prompt.js +1 -1
- package/dist/experimental/plan_and_execute/prompt.js.map +1 -1
- package/dist/experimental/prompts/custom_format.cjs.map +1 -1
- package/dist/experimental/prompts/custom_format.d.cts +1 -5
- package/dist/experimental/prompts/custom_format.d.cts.map +1 -1
- package/dist/experimental/prompts/custom_format.d.ts +1 -5
- package/dist/experimental/prompts/custom_format.d.ts.map +1 -1
- package/dist/experimental/prompts/custom_format.js.map +1 -1
- package/dist/experimental/prompts/handlebars.cjs.map +1 -1
- package/dist/experimental/prompts/handlebars.d.cts +0 -1
- package/dist/experimental/prompts/handlebars.d.cts.map +1 -1
- package/dist/experimental/prompts/handlebars.d.ts +0 -1
- package/dist/experimental/prompts/handlebars.d.ts.map +1 -1
- package/dist/experimental/prompts/handlebars.js.map +1 -1
- package/dist/hub/base.cjs.map +1 -1
- package/dist/hub/base.d.cts +5 -2
- package/dist/hub/base.d.cts.map +1 -1
- package/dist/hub/base.d.ts +5 -2
- package/dist/hub/base.d.ts.map +1 -1
- package/dist/hub/base.js.map +1 -1
- package/dist/hub/index.cjs.map +1 -1
- package/dist/hub/index.d.cts +0 -1
- package/dist/hub/index.d.cts.map +1 -1
- package/dist/hub/index.d.ts +0 -1
- package/dist/hub/index.d.ts.map +1 -1
- package/dist/hub/index.js.map +1 -1
- package/dist/hub/node.cjs.map +1 -1
- package/dist/hub/node.d.cts +0 -1
- package/dist/hub/node.d.cts.map +1 -1
- package/dist/hub/node.d.ts +0 -1
- package/dist/hub/node.d.ts.map +1 -1
- package/dist/hub/node.js.map +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js.map +1 -1
- package/dist/load/import_constants.cjs.map +1 -1
- package/dist/load/import_constants.js.map +1 -1
- package/dist/load/import_map.cjs +547 -0
- package/dist/load/import_map.cjs.map +1 -1
- package/dist/load/import_map.js +1 -1
- package/dist/load/import_map.js.map +1 -1
- package/dist/load/import_type.d.cts.map +1 -1
- package/dist/load/import_type.d.ts.map +1 -1
- package/dist/load/index.cjs +0 -1
- package/dist/load/index.cjs.map +1 -1
- package/dist/load/index.d.cts +0 -1
- package/dist/load/index.d.cts.map +1 -1
- package/dist/load/index.d.ts +0 -1
- package/dist/load/index.d.ts.map +1 -1
- package/dist/load/index.js.map +1 -1
- package/dist/load/map_keys.d.cts.map +1 -1
- package/dist/load/map_keys.d.ts.map +1 -1
- package/dist/memory/buffer_memory.cjs +0 -1
- package/dist/memory/buffer_memory.cjs.map +1 -1
- package/dist/memory/buffer_memory.d.cts +0 -1
- package/dist/memory/buffer_memory.d.cts.map +1 -1
- package/dist/memory/buffer_memory.d.ts +0 -1
- package/dist/memory/buffer_memory.d.ts.map +1 -1
- package/dist/memory/buffer_memory.js.map +1 -1
- package/dist/memory/buffer_token_memory.cjs +0 -1
- package/dist/memory/buffer_token_memory.cjs.map +1 -1
- package/dist/memory/buffer_token_memory.d.cts +0 -1
- package/dist/memory/buffer_token_memory.d.cts.map +1 -1
- package/dist/memory/buffer_token_memory.d.ts +0 -1
- package/dist/memory/buffer_token_memory.d.ts.map +1 -1
- package/dist/memory/buffer_token_memory.js.map +1 -1
- package/dist/memory/buffer_window_memory.cjs +0 -1
- package/dist/memory/buffer_window_memory.cjs.map +1 -1
- package/dist/memory/buffer_window_memory.d.cts +0 -1
- package/dist/memory/buffer_window_memory.d.cts.map +1 -1
- package/dist/memory/buffer_window_memory.d.ts +0 -1
- package/dist/memory/buffer_window_memory.d.ts.map +1 -1
- package/dist/memory/buffer_window_memory.js.map +1 -1
- package/dist/memory/chat_memory.cjs.map +1 -1
- package/dist/memory/chat_memory.d.cts +0 -1
- package/dist/memory/chat_memory.d.cts.map +1 -1
- package/dist/memory/chat_memory.d.ts +0 -1
- package/dist/memory/chat_memory.d.ts.map +1 -1
- package/dist/memory/chat_memory.js.map +1 -1
- package/dist/memory/combined_memory.cjs.map +1 -1
- package/dist/memory/combined_memory.d.cts +0 -1
- package/dist/memory/combined_memory.d.cts.map +1 -1
- package/dist/memory/combined_memory.d.ts +0 -1
- package/dist/memory/combined_memory.d.ts.map +1 -1
- package/dist/memory/combined_memory.js.map +1 -1
- package/dist/memory/entity_memory.cjs +0 -1
- package/dist/memory/entity_memory.cjs.map +1 -1
- package/dist/memory/entity_memory.d.cts +1 -2
- package/dist/memory/entity_memory.d.cts.map +1 -1
- package/dist/memory/entity_memory.d.ts +1 -2
- package/dist/memory/entity_memory.d.ts.map +1 -1
- package/dist/memory/entity_memory.js.map +1 -1
- package/dist/memory/prompt.cjs +28 -23
- package/dist/memory/prompt.cjs.map +1 -1
- package/dist/memory/prompt.d.cts +0 -1
- package/dist/memory/prompt.d.cts.map +1 -1
- package/dist/memory/prompt.d.ts +0 -1
- package/dist/memory/prompt.d.ts.map +1 -1
- package/dist/memory/prompt.js +26 -23
- package/dist/memory/prompt.js.map +1 -1
- package/dist/memory/stores/entity/base.cjs +0 -1
- package/dist/memory/stores/entity/base.cjs.map +1 -1
- package/dist/memory/stores/entity/base.d.cts +0 -1
- package/dist/memory/stores/entity/base.d.cts.map +1 -1
- package/dist/memory/stores/entity/base.d.ts +0 -1
- package/dist/memory/stores/entity/base.d.ts.map +1 -1
- package/dist/memory/stores/entity/base.js.map +1 -1
- package/dist/memory/stores/entity/in_memory.cjs.map +1 -1
- package/dist/memory/stores/entity/in_memory.js.map +1 -1
- package/dist/memory/summary.cjs +0 -1
- package/dist/memory/summary.cjs.map +1 -1
- package/dist/memory/summary.d.cts +0 -1
- package/dist/memory/summary.d.cts.map +1 -1
- package/dist/memory/summary.d.ts +0 -1
- package/dist/memory/summary.d.ts.map +1 -1
- package/dist/memory/summary.js.map +1 -1
- package/dist/memory/summary_buffer.cjs +0 -1
- package/dist/memory/summary_buffer.cjs.map +1 -1
- package/dist/memory/summary_buffer.d.cts +0 -1
- package/dist/memory/summary_buffer.d.cts.map +1 -1
- package/dist/memory/summary_buffer.d.ts +0 -1
- package/dist/memory/summary_buffer.d.ts.map +1 -1
- package/dist/memory/summary_buffer.js.map +1 -1
- package/dist/memory/vector_store.cjs +0 -1
- package/dist/memory/vector_store.cjs.map +1 -1
- package/dist/memory/vector_store.d.cts +0 -1
- package/dist/memory/vector_store.d.cts.map +1 -1
- package/dist/memory/vector_store.d.ts +0 -1
- package/dist/memory/vector_store.d.ts.map +1 -1
- package/dist/memory/vector_store.js.map +1 -1
- package/dist/output_parsers/combining.cjs +0 -1
- package/dist/output_parsers/combining.cjs.map +1 -1
- package/dist/output_parsers/combining.d.cts +1 -2
- package/dist/output_parsers/combining.d.cts.map +1 -1
- package/dist/output_parsers/combining.d.ts +1 -2
- package/dist/output_parsers/combining.d.ts.map +1 -1
- package/dist/output_parsers/combining.js.map +1 -1
- package/dist/output_parsers/datetime.cjs +0 -1
- package/dist/output_parsers/datetime.cjs.map +1 -1
- package/dist/output_parsers/datetime.d.cts +0 -1
- package/dist/output_parsers/datetime.d.cts.map +1 -1
- package/dist/output_parsers/datetime.d.ts +0 -1
- package/dist/output_parsers/datetime.d.ts.map +1 -1
- package/dist/output_parsers/datetime.js.map +1 -1
- package/dist/output_parsers/expression.cjs.map +1 -1
- package/dist/output_parsers/expression.d.cts +0 -1
- package/dist/output_parsers/expression.d.cts.map +1 -1
- package/dist/output_parsers/expression.d.ts +0 -1
- package/dist/output_parsers/expression.d.ts.map +1 -1
- package/dist/output_parsers/expression.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 -0
- package/dist/output_parsers/expression_type_handlers/base.cjs.map +1 -1
- package/dist/output_parsers/expression_type_handlers/base.d.cts +0 -1
- package/dist/output_parsers/expression_type_handlers/base.d.cts.map +1 -1
- package/dist/output_parsers/expression_type_handlers/base.d.ts +0 -1
- package/dist/output_parsers/expression_type_handlers/base.d.ts.map +1 -1
- package/dist/output_parsers/expression_type_handlers/base.js +1 -0
- package/dist/output_parsers/expression_type_handlers/base.js.map +1 -1
- package/dist/output_parsers/expression_type_handlers/boolean_literal_handler.cjs.map +1 -1
- package/dist/output_parsers/expression_type_handlers/boolean_literal_handler.js.map +1 -1
- package/dist/output_parsers/expression_type_handlers/call_expression_handler.cjs.map +1 -1
- package/dist/output_parsers/expression_type_handlers/call_expression_handler.js.map +1 -1
- package/dist/output_parsers/expression_type_handlers/factory.cjs.map +1 -1
- package/dist/output_parsers/expression_type_handlers/factory.d.cts +0 -1
- package/dist/output_parsers/expression_type_handlers/factory.d.cts.map +1 -1
- package/dist/output_parsers/expression_type_handlers/factory.d.ts +0 -1
- package/dist/output_parsers/expression_type_handlers/factory.d.ts.map +1 -1
- package/dist/output_parsers/expression_type_handlers/factory.js.map +1 -1
- package/dist/output_parsers/expression_type_handlers/identifier_handler.cjs.map +1 -1
- package/dist/output_parsers/expression_type_handlers/identifier_handler.js.map +1 -1
- package/dist/output_parsers/expression_type_handlers/member_expression_handler.cjs.map +1 -1
- package/dist/output_parsers/expression_type_handlers/member_expression_handler.js.map +1 -1
- package/dist/output_parsers/expression_type_handlers/numeric_literal_handler.cjs.map +1 -1
- package/dist/output_parsers/expression_type_handlers/numeric_literal_handler.js.map +1 -1
- package/dist/output_parsers/expression_type_handlers/object_literal_expression_handler.cjs.map +1 -1
- package/dist/output_parsers/expression_type_handlers/object_literal_expression_handler.js.map +1 -1
- package/dist/output_parsers/expression_type_handlers/property_assignment_handler.cjs.map +1 -1
- package/dist/output_parsers/expression_type_handlers/property_assignment_handler.js.map +1 -1
- package/dist/output_parsers/expression_type_handlers/string_literal_handler.cjs.map +1 -1
- package/dist/output_parsers/expression_type_handlers/string_literal_handler.js.map +1 -1
- package/dist/output_parsers/expression_type_handlers/types.d.cts.map +1 -1
- package/dist/output_parsers/expression_type_handlers/types.d.ts.map +1 -1
- package/dist/output_parsers/fix.cjs +5 -5
- package/dist/output_parsers/fix.cjs.map +1 -1
- package/dist/output_parsers/fix.d.cts +1 -5
- package/dist/output_parsers/fix.d.cts.map +1 -1
- package/dist/output_parsers/fix.d.ts +1 -5
- package/dist/output_parsers/fix.d.ts.map +1 -1
- package/dist/output_parsers/fix.js +5 -4
- package/dist/output_parsers/fix.js.map +1 -1
- package/dist/output_parsers/http_response.cjs +0 -1
- package/dist/output_parsers/http_response.cjs.map +1 -1
- package/dist/output_parsers/http_response.d.cts +0 -1
- package/dist/output_parsers/http_response.d.cts.map +1 -1
- package/dist/output_parsers/http_response.d.ts +0 -1
- package/dist/output_parsers/http_response.d.ts.map +1 -1
- package/dist/output_parsers/http_response.js.map +1 -1
- package/dist/output_parsers/noop.cjs +0 -1
- package/dist/output_parsers/noop.cjs.map +1 -1
- package/dist/output_parsers/noop.js.map +1 -1
- package/dist/output_parsers/openai_functions.cjs +0 -1
- package/dist/output_parsers/openai_functions.cjs.map +1 -1
- package/dist/output_parsers/openai_functions.d.cts +0 -1
- package/dist/output_parsers/openai_functions.d.cts.map +1 -1
- package/dist/output_parsers/openai_functions.d.ts +0 -1
- package/dist/output_parsers/openai_functions.d.ts.map +1 -1
- package/dist/output_parsers/openai_functions.js.map +1 -1
- package/dist/output_parsers/openai_tools.cjs +0 -1
- package/dist/output_parsers/openai_tools.cjs.map +1 -1
- package/dist/output_parsers/openai_tools.d.cts +8 -5
- package/dist/output_parsers/openai_tools.d.cts.map +1 -1
- package/dist/output_parsers/openai_tools.d.ts +8 -5
- package/dist/output_parsers/openai_tools.d.ts.map +1 -1
- package/dist/output_parsers/openai_tools.js.map +1 -1
- package/dist/output_parsers/prompts.cjs +6 -3
- package/dist/output_parsers/prompts.cjs.map +1 -1
- package/dist/output_parsers/prompts.js +5 -3
- package/dist/output_parsers/prompts.js.map +1 -1
- package/dist/output_parsers/regex.cjs +0 -1
- package/dist/output_parsers/regex.cjs.map +1 -1
- package/dist/output_parsers/regex.d.cts +1 -2
- package/dist/output_parsers/regex.d.cts.map +1 -1
- package/dist/output_parsers/regex.d.ts +1 -2
- package/dist/output_parsers/regex.d.ts.map +1 -1
- package/dist/output_parsers/regex.js.map +1 -1
- package/dist/output_parsers/router.cjs +0 -1
- package/dist/output_parsers/router.cjs.map +1 -1
- package/dist/output_parsers/router.d.cts +0 -1
- package/dist/output_parsers/router.d.cts.map +1 -1
- package/dist/output_parsers/router.d.ts +0 -1
- package/dist/output_parsers/router.d.ts.map +1 -1
- package/dist/output_parsers/router.js.map +1 -1
- package/dist/output_parsers/structured.cjs +1 -1
- package/dist/output_parsers/structured.cjs.map +1 -1
- package/dist/output_parsers/structured.d.cts +3 -7
- package/dist/output_parsers/structured.d.cts.map +1 -1
- package/dist/output_parsers/structured.d.ts +3 -7
- package/dist/output_parsers/structured.d.ts.map +1 -1
- package/dist/output_parsers/structured.js +1 -0
- package/dist/output_parsers/structured.js.map +1 -1
- package/dist/retrievers/contextual_compression.cjs.map +1 -1
- package/dist/retrievers/contextual_compression.d.cts +0 -1
- package/dist/retrievers/contextual_compression.d.cts.map +1 -1
- package/dist/retrievers/contextual_compression.d.ts +0 -1
- package/dist/retrievers/contextual_compression.d.ts.map +1 -1
- package/dist/retrievers/contextual_compression.js.map +1 -1
- package/dist/retrievers/document_compressors/chain_extract.cjs +5 -4
- package/dist/retrievers/document_compressors/chain_extract.cjs.map +1 -1
- package/dist/retrievers/document_compressors/chain_extract.d.cts +1 -5
- package/dist/retrievers/document_compressors/chain_extract.d.cts.map +1 -1
- package/dist/retrievers/document_compressors/chain_extract.d.ts +1 -5
- package/dist/retrievers/document_compressors/chain_extract.d.ts.map +1 -1
- package/dist/retrievers/document_compressors/chain_extract.js +5 -4
- package/dist/retrievers/document_compressors/chain_extract.js.map +1 -1
- package/dist/retrievers/document_compressors/embeddings_filter.cjs.map +1 -1
- package/dist/retrievers/document_compressors/embeddings_filter.d.cts +0 -1
- package/dist/retrievers/document_compressors/embeddings_filter.d.cts.map +1 -1
- package/dist/retrievers/document_compressors/embeddings_filter.d.ts +0 -1
- package/dist/retrievers/document_compressors/embeddings_filter.d.ts.map +1 -1
- package/dist/retrievers/document_compressors/embeddings_filter.js.map +1 -1
- package/dist/retrievers/document_compressors/index.cjs.map +1 -1
- package/dist/retrievers/document_compressors/index.d.cts +0 -1
- package/dist/retrievers/document_compressors/index.d.cts.map +1 -1
- package/dist/retrievers/document_compressors/index.d.ts +0 -1
- package/dist/retrievers/document_compressors/index.d.ts.map +1 -1
- package/dist/retrievers/document_compressors/index.js.map +1 -1
- package/dist/retrievers/ensemble.cjs.map +1 -1
- package/dist/retrievers/ensemble.d.cts +0 -1
- package/dist/retrievers/ensemble.d.cts.map +1 -1
- package/dist/retrievers/ensemble.d.ts +0 -1
- package/dist/retrievers/ensemble.d.ts.map +1 -1
- package/dist/retrievers/ensemble.js.map +1 -1
- package/dist/retrievers/hyde.cjs.map +1 -1
- package/dist/retrievers/hyde.d.cts +0 -1
- package/dist/retrievers/hyde.d.cts.map +1 -1
- package/dist/retrievers/hyde.d.ts +0 -1
- package/dist/retrievers/hyde.d.ts.map +1 -1
- package/dist/retrievers/hyde.js.map +1 -1
- package/dist/retrievers/matryoshka_retriever.cjs.map +1 -1
- package/dist/retrievers/matryoshka_retriever.d.cts +0 -1
- package/dist/retrievers/matryoshka_retriever.d.cts.map +1 -1
- package/dist/retrievers/matryoshka_retriever.d.ts +0 -1
- package/dist/retrievers/matryoshka_retriever.d.ts.map +1 -1
- package/dist/retrievers/matryoshka_retriever.js.map +1 -1
- package/dist/retrievers/multi_query.cjs +1 -1
- package/dist/retrievers/multi_query.cjs.map +1 -1
- package/dist/retrievers/multi_query.d.cts +0 -1
- package/dist/retrievers/multi_query.d.cts.map +1 -1
- package/dist/retrievers/multi_query.d.ts +0 -1
- package/dist/retrievers/multi_query.d.ts.map +1 -1
- package/dist/retrievers/multi_query.js +1 -1
- package/dist/retrievers/multi_query.js.map +1 -1
- package/dist/retrievers/multi_vector.cjs.map +1 -1
- package/dist/retrievers/multi_vector.d.cts +0 -1
- package/dist/retrievers/multi_vector.d.cts.map +1 -1
- package/dist/retrievers/multi_vector.d.ts +0 -1
- package/dist/retrievers/multi_vector.d.ts.map +1 -1
- package/dist/retrievers/multi_vector.js.map +1 -1
- package/dist/retrievers/parent_document.cjs.map +1 -1
- package/dist/retrievers/parent_document.d.cts +0 -1
- package/dist/retrievers/parent_document.d.cts.map +1 -1
- package/dist/retrievers/parent_document.d.ts +0 -1
- package/dist/retrievers/parent_document.d.ts.map +1 -1
- package/dist/retrievers/parent_document.js.map +1 -1
- package/dist/retrievers/score_threshold.cjs.map +1 -1
- package/dist/retrievers/score_threshold.d.cts +0 -1
- package/dist/retrievers/score_threshold.d.cts.map +1 -1
- package/dist/retrievers/score_threshold.d.ts +0 -1
- package/dist/retrievers/score_threshold.d.ts.map +1 -1
- package/dist/retrievers/score_threshold.js.map +1 -1
- package/dist/retrievers/self_query/index.cjs.map +1 -1
- package/dist/retrievers/self_query/index.d.cts +0 -1
- package/dist/retrievers/self_query/index.d.cts.map +1 -1
- package/dist/retrievers/self_query/index.d.ts +0 -1
- package/dist/retrievers/self_query/index.d.ts.map +1 -1
- package/dist/retrievers/self_query/index.js.map +1 -1
- package/dist/retrievers/time_weighted.cjs.map +1 -1
- package/dist/retrievers/time_weighted.d.cts +5 -1
- package/dist/retrievers/time_weighted.d.cts.map +1 -1
- package/dist/retrievers/time_weighted.d.ts +5 -1
- package/dist/retrievers/time_weighted.d.ts.map +1 -1
- package/dist/retrievers/time_weighted.js.map +1 -1
- package/dist/schema/prompt_template.cjs.map +1 -1
- package/dist/schema/prompt_template.d.cts +0 -1
- package/dist/schema/prompt_template.d.cts.map +1 -1
- package/dist/schema/prompt_template.d.ts +0 -1
- package/dist/schema/prompt_template.d.ts.map +1 -1
- package/dist/schema/prompt_template.js.map +1 -1
- package/dist/schema/query_constructor.cjs +3 -0
- package/dist/schema/query_constructor.cjs.map +1 -1
- package/dist/schema/query_constructor.d.cts.map +1 -1
- package/dist/schema/query_constructor.d.ts.map +1 -1
- package/dist/schema/query_constructor.js +3 -0
- package/dist/schema/query_constructor.js.map +1 -1
- package/dist/smith/config.cjs.map +1 -1
- package/dist/smith/config.d.cts +2 -7
- package/dist/smith/config.d.cts.map +1 -1
- package/dist/smith/config.d.ts +2 -7
- package/dist/smith/config.d.ts.map +1 -1
- package/dist/smith/config.js.map +1 -1
- package/dist/smith/name_generation.cjs.map +1 -1
- package/dist/smith/name_generation.js.map +1 -1
- package/dist/smith/progress.cjs.map +1 -1
- package/dist/smith/progress.js.map +1 -1
- package/dist/smith/runner_utils.cjs +11 -8
- package/dist/smith/runner_utils.cjs.map +1 -1
- package/dist/smith/runner_utils.d.cts +1 -2
- package/dist/smith/runner_utils.d.cts.map +1 -1
- package/dist/smith/runner_utils.d.ts +1 -2
- package/dist/smith/runner_utils.d.ts.map +1 -1
- package/dist/smith/runner_utils.js +11 -7
- package/dist/smith/runner_utils.js.map +1 -1
- package/dist/sql_db.cjs.map +1 -1
- package/dist/sql_db.d.cts +1 -3
- package/dist/sql_db.d.cts.map +1 -1
- package/dist/sql_db.d.ts +1 -3
- package/dist/sql_db.d.ts.map +1 -1
- package/dist/sql_db.js.map +1 -1
- package/dist/storage/encoder_backed.cjs.map +1 -1
- package/dist/storage/encoder_backed.d.cts +0 -1
- package/dist/storage/encoder_backed.d.cts.map +1 -1
- package/dist/storage/encoder_backed.d.ts +0 -1
- package/dist/storage/encoder_backed.d.ts.map +1 -1
- package/dist/storage/encoder_backed.js.map +1 -1
- package/dist/storage/file_system.cjs.map +1 -1
- package/dist/storage/file_system.d.cts +20 -1
- package/dist/storage/file_system.d.cts.map +1 -1
- package/dist/storage/file_system.d.ts +20 -1
- package/dist/storage/file_system.d.ts.map +1 -1
- package/dist/storage/file_system.js.map +1 -1
- package/dist/stores/doc/base.cjs.map +1 -1
- package/dist/stores/doc/base.d.cts +0 -1
- package/dist/stores/doc/base.d.cts.map +1 -1
- package/dist/stores/doc/base.d.ts +0 -1
- package/dist/stores/doc/base.d.ts.map +1 -1
- package/dist/stores/doc/base.js.map +1 -1
- package/dist/stores/doc/in_memory.cjs.map +1 -1
- package/dist/stores/doc/in_memory.d.cts +0 -1
- package/dist/stores/doc/in_memory.d.cts.map +1 -1
- package/dist/stores/doc/in_memory.d.ts +0 -1
- package/dist/stores/doc/in_memory.d.ts.map +1 -1
- package/dist/stores/doc/in_memory.js.map +1 -1
- package/dist/stores/file/base.cjs +0 -1
- package/dist/stores/file/base.cjs.map +1 -1
- package/dist/stores/file/base.d.cts +0 -1
- package/dist/stores/file/base.d.cts.map +1 -1
- package/dist/stores/file/base.d.ts +0 -1
- package/dist/stores/file/base.d.ts.map +1 -1
- package/dist/stores/file/base.js.map +1 -1
- package/dist/stores/file/in_memory.cjs.map +1 -1
- package/dist/stores/file/in_memory.d.cts +0 -1
- package/dist/stores/file/in_memory.d.cts.map +1 -1
- package/dist/stores/file/in_memory.d.ts +0 -1
- package/dist/stores/file/in_memory.d.ts.map +1 -1
- package/dist/stores/file/in_memory.js.map +1 -1
- package/dist/stores/file/node.cjs +1 -0
- package/dist/stores/file/node.cjs.map +1 -1
- package/dist/stores/file/node.d.cts +0 -1
- package/dist/stores/file/node.d.cts.map +1 -1
- package/dist/stores/file/node.d.ts +0 -1
- package/dist/stores/file/node.d.ts.map +1 -1
- package/dist/stores/file/node.js +1 -0
- package/dist/stores/file/node.js.map +1 -1
- package/dist/text_splitter.d.cts +0 -3
- package/dist/text_splitter.d.ts +0 -3
- package/dist/tools/chain.cjs.map +1 -1
- package/dist/tools/chain.d.cts +1 -5
- package/dist/tools/chain.d.cts.map +1 -1
- package/dist/tools/chain.d.ts +1 -5
- package/dist/tools/chain.d.ts.map +1 -1
- package/dist/tools/chain.js.map +1 -1
- package/dist/tools/fs.cjs +0 -1
- package/dist/tools/fs.cjs.map +1 -1
- package/dist/tools/fs.d.cts +4 -15
- package/dist/tools/fs.d.cts.map +1 -1
- package/dist/tools/fs.d.ts +4 -15
- package/dist/tools/fs.d.ts.map +1 -1
- package/dist/tools/fs.js.map +1 -1
- package/dist/tools/json.cjs +1 -0
- package/dist/tools/json.cjs.map +1 -1
- package/dist/tools/json.d.cts +1 -2
- package/dist/tools/json.d.cts.map +1 -1
- package/dist/tools/json.d.ts +1 -2
- package/dist/tools/json.d.ts.map +1 -1
- package/dist/tools/json.js +1 -0
- package/dist/tools/json.js.map +1 -1
- package/dist/tools/render.cjs.map +1 -1
- package/dist/tools/render.d.cts +0 -1
- package/dist/tools/render.d.cts.map +1 -1
- package/dist/tools/render.d.ts +0 -1
- package/dist/tools/render.d.ts.map +1 -1
- package/dist/tools/render.js.map +1 -1
- package/dist/tools/requests.cjs +2 -1
- package/dist/tools/requests.cjs.map +1 -1
- package/dist/tools/requests.d.cts +3 -8
- package/dist/tools/requests.d.cts.map +1 -1
- package/dist/tools/requests.d.ts +3 -8
- package/dist/tools/requests.d.ts.map +1 -1
- package/dist/tools/requests.js +2 -0
- package/dist/tools/requests.js.map +1 -1
- package/dist/tools/retriever.cjs.map +1 -1
- package/dist/tools/retriever.d.cts +0 -1
- package/dist/tools/retriever.d.cts.map +1 -1
- package/dist/tools/retriever.d.ts +0 -1
- package/dist/tools/retriever.d.ts.map +1 -1
- package/dist/tools/retriever.js.map +1 -1
- package/dist/tools/sql.cjs.map +1 -1
- package/dist/tools/sql.d.cts +0 -1
- package/dist/tools/sql.d.cts.map +1 -1
- package/dist/tools/sql.d.ts +0 -1
- package/dist/tools/sql.d.ts.map +1 -1
- package/dist/tools/sql.js.map +1 -1
- package/dist/tools/vectorstore.cjs +0 -1
- package/dist/tools/vectorstore.cjs.map +1 -1
- package/dist/tools/vectorstore.d.cts +0 -1
- package/dist/tools/vectorstore.d.cts.map +1 -1
- package/dist/tools/vectorstore.d.ts +0 -1
- package/dist/tools/vectorstore.d.ts.map +1 -1
- package/dist/tools/vectorstore.js.map +1 -1
- package/dist/tools/webbrowser.cjs +2 -1
- package/dist/tools/webbrowser.cjs.map +1 -1
- package/dist/tools/webbrowser.d.cts +1 -8
- package/dist/tools/webbrowser.d.cts.map +1 -1
- package/dist/tools/webbrowser.d.ts +1 -8
- package/dist/tools/webbrowser.d.ts.map +1 -1
- package/dist/tools/webbrowser.js +2 -1
- package/dist/tools/webbrowser.js.map +1 -1
- package/dist/types/expression-parser.d.cts +1 -1
- package/dist/types/expression-parser.d.cts.map +1 -1
- package/dist/types/expression-parser.d.ts +1 -1
- package/dist/types/expression-parser.d.ts.map +1 -1
- package/dist/types/type-utils.d.cts.map +1 -1
- package/dist/types/type-utils.d.ts.map +1 -1
- package/dist/util/document.cjs.map +1 -1
- package/dist/util/document.d.cts +0 -1
- package/dist/util/document.d.cts.map +1 -1
- package/dist/util/document.d.ts +0 -1
- package/dist/util/document.d.ts.map +1 -1
- package/dist/util/document.js.map +1 -1
- package/dist/util/env.cjs +0 -1
- package/dist/util/extname.cjs.map +1 -1
- package/dist/util/extname.js.map +1 -1
- package/dist/util/hub.cjs +0 -1
- package/dist/util/hub.cjs.map +1 -1
- package/dist/util/hub.js.map +1 -1
- package/dist/util/is-network-error/index.cjs +1 -1
- package/dist/util/is-network-error/index.cjs.map +1 -1
- package/dist/util/is-network-error/index.js +1 -1
- package/dist/util/is-network-error/index.js.map +1 -1
- package/dist/util/load.cjs.map +1 -1
- package/dist/util/load.d.cts.map +1 -1
- package/dist/util/load.d.ts.map +1 -1
- package/dist/util/load.js.map +1 -1
- package/dist/util/ml-distance/distances.cjs.map +1 -1
- package/dist/util/ml-distance/distances.js.map +1 -1
- package/dist/util/ml-distance/similarities.cjs.map +1 -1
- package/dist/util/ml-distance/similarities.d.cts.map +1 -1
- package/dist/util/ml-distance/similarities.d.ts.map +1 -1
- package/dist/util/ml-distance/similarities.js.map +1 -1
- package/dist/util/ml-distance-euclidean/euclidean.cjs +1 -0
- package/dist/util/ml-distance-euclidean/euclidean.cjs.map +1 -1
- package/dist/util/ml-distance-euclidean/euclidean.js +1 -1
- package/dist/util/ml-distance-euclidean/euclidean.js.map +1 -1
- package/dist/util/openapi.cjs +1 -0
- package/dist/util/openapi.cjs.map +1 -1
- package/dist/util/openapi.d.cts +0 -1
- package/dist/util/openapi.d.cts.map +1 -1
- package/dist/util/openapi.d.ts +0 -1
- package/dist/util/openapi.d.ts.map +1 -1
- package/dist/util/openapi.js +1 -0
- package/dist/util/openapi.js.map +1 -1
- package/dist/util/p-retry/index.cjs +1 -0
- package/dist/util/p-retry/index.cjs.map +1 -1
- package/dist/util/p-retry/index.js +1 -1
- package/dist/util/p-retry/index.js.map +1 -1
- package/dist/util/parse.cjs +1 -0
- package/dist/util/parse.cjs.map +1 -1
- package/dist/util/parse.js +1 -1
- package/dist/util/parse.js.map +1 -1
- package/dist/util/set.cjs.map +1 -1
- package/dist/util/set.js.map +1 -1
- package/dist/util/sql_utils.cjs +12 -6
- package/dist/util/sql_utils.cjs.map +1 -1
- package/dist/util/sql_utils.d.cts +1 -2
- package/dist/util/sql_utils.d.cts.map +1 -1
- package/dist/util/sql_utils.d.ts +1 -2
- package/dist/util/sql_utils.d.ts.map +1 -1
- package/dist/util/sql_utils.js +12 -6
- package/dist/util/sql_utils.js.map +1 -1
- package/dist/util/time.cjs.map +1 -1
- package/dist/util/time.d.cts.map +1 -1
- package/dist/util/time.d.ts.map +1 -1
- package/dist/util/time.js.map +1 -1
- package/dist/vectorstores/memory.cjs.map +1 -1
- package/dist/vectorstores/memory.d.cts +1 -5
- package/dist/vectorstores/memory.d.cts.map +1 -1
- package/dist/vectorstores/memory.d.ts +1 -5
- package/dist/vectorstores/memory.d.ts.map +1 -1
- package/dist/vectorstores/memory.js.map +1 -1
- package/package.json +30 -30
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner_utils.js","names":[],"sources":["../../src/smith/runner_utils.ts"],"sourcesContent":["import { BaseLanguageModel } from \"@langchain/core/language_models/base\";\nimport { Serialized } from \"@langchain/core/load/serializable\";\nimport { mapStoredMessagesToChatMessages } from \"@langchain/core/messages\";\nimport {\n Runnable,\n RunnableConfig,\n RunnableLambda,\n getCallbackManagerForConfig,\n} from \"@langchain/core/runnables\";\nimport { LangChainTracer } from \"@langchain/core/tracers/tracer_langchain\";\nimport { BaseTracer } from \"@langchain/core/tracers/base\";\nimport { ChainValues } from \"@langchain/core/utils/types\";\nimport { AsyncCaller } from \"@langchain/core/utils/async_caller\";\nimport type {\n CallbackManager,\n CallbackManagerForChainRun,\n} from \"@langchain/core/callbacks/manager\";\nimport {\n Client,\n Example,\n Feedback,\n Run,\n RunTree,\n RunTreeConfig,\n} from \"langsmith\";\nimport { EvaluationResult, RunEvaluator } from \"langsmith/evaluation\";\nimport { DataType } from \"langsmith/schemas\";\nimport type { TraceableFunction } from \"langsmith/singletons/traceable\";\nimport { LLMStringEvaluator } from \"../evaluation/base.js\";\nimport { loadEvaluator } from \"../evaluation/loader.js\";\nimport { EvaluatorType } from \"../evaluation/types.js\";\nimport {\n isOffTheShelfEvaluator,\n type DynamicRunEvaluatorParams,\n type EvalConfig,\n type EvaluatorInputFormatter,\n type RunEvalConfig,\n type RunEvaluatorLike,\n isCustomEvaluator,\n} from \"./config.js\";\nimport { randomName } from \"./name_generation.js\";\nimport { ProgressBar } from \"./progress.js\";\n\nexport type ChainOrFactory =\n | Runnable\n | (() => Runnable)\n | AnyTraceableFunction\n // oxlint-disable-next-line @typescript-eslint/no-explicit-any\n | ((obj: any) => any)\n // oxlint-disable-next-line @typescript-eslint/no-explicit-any\n | ((obj: any) => Promise<any>)\n | (() => (obj: unknown) => unknown)\n | (() => (obj: unknown) => Promise<unknown>);\n\nclass SingleRunIdExtractor {\n runIdPromiseResolver: (runId: string) => void;\n\n runIdPromise: Promise<string>;\n\n constructor() {\n this.runIdPromise = new Promise<string>((extract) => {\n this.runIdPromiseResolver = extract;\n });\n }\n\n handleChainStart = (\n _chain: Serialized,\n _inputs: ChainValues,\n runId: string\n ) => {\n this.runIdPromiseResolver(runId);\n };\n\n async extract(): Promise<string> {\n return this.runIdPromise;\n }\n}\n\nclass SingleRunExtractor extends BaseTracer {\n runPromiseResolver: (run: Run) => void;\n\n runPromise: Promise<Run>;\n\n /** The name of the callback handler. */\n name = \"single_run_extractor\";\n\n constructor() {\n super();\n this.runPromise = new Promise<Run>((extract) => {\n this.runPromiseResolver = extract;\n });\n }\n\n async persistRun(run: Run) {\n this.runPromiseResolver(run);\n }\n\n async extract(): Promise<Run> {\n return this.runPromise;\n }\n}\n\n/**\n * Wraps an evaluator function + implements the RunEvaluator interface.\n */\nclass DynamicRunEvaluator implements RunEvaluator {\n evaluator: RunnableLambda<DynamicRunEvaluatorParams, EvaluationResult>;\n\n constructor(evaluator: RunEvaluatorLike) {\n this.evaluator = new RunnableLambda({ func: evaluator });\n }\n\n /**\n * Evaluates a run with an optional example and returns the evaluation result.\n * @param run The run to evaluate.\n * @param example The optional example to use for evaluation.\n * @returns A promise that extracts to the evaluation result.\n */\n async evaluateRun(run: Run, example?: Example): Promise<EvaluationResult> {\n const extractor = new SingleRunIdExtractor();\n const tracer = new LangChainTracer({ projectName: \"evaluators\" });\n const result = await this.evaluator.invoke(\n {\n run,\n example,\n input: run.inputs,\n prediction: run.outputs,\n reference: example?.outputs,\n },\n {\n callbacks: [extractor, tracer],\n }\n );\n const runId = await extractor.extract();\n return {\n sourceRunId: runId,\n ...result,\n };\n }\n}\n\n// oxlint-disable-next-line @typescript-eslint/no-explicit-any\nfunction isLLMStringEvaluator(evaluator: any): evaluator is LLMStringEvaluator {\n return evaluator && typeof evaluator.evaluateStrings === \"function\";\n}\n\n// oxlint-disable-next-line @typescript-eslint/no-explicit-any\ntype AnyTraceableFunction = TraceableFunction<(...any: any[]) => any>;\n\n/**\n * Internal implementation of RunTree, which uses the\n * provided callback manager instead of the internal LangSmith client.\n *\n * The goal of this class is to ensure seamless interop when intergrated\n * with other Runnables.\n */\nclass CallbackManagerRunTree extends RunTree {\n callbackManager: CallbackManager;\n\n activeCallbackManager: CallbackManagerForChainRun | undefined = undefined;\n\n constructor(config: RunTreeConfig, callbackManager: CallbackManager) {\n super(config);\n\n this.callbackManager = callbackManager;\n }\n\n createChild(config: RunTreeConfig): CallbackManagerRunTree {\n const child = new CallbackManagerRunTree(\n {\n ...config,\n parent_run: this,\n project_name: this.project_name,\n client: this.client,\n },\n this.activeCallbackManager?.getChild() ?? this.callbackManager\n );\n this.child_runs.push(child);\n return child;\n }\n\n async postRun(): Promise<void> {\n // how it is translated in comparison to basic RunTree?\n this.activeCallbackManager = await this.callbackManager.handleChainStart(\n typeof this.serialized !== \"object\" &&\n this.serialized != null &&\n \"lc\" in this.serialized\n ? this.serialized\n : {\n id: [\"langchain\", \"smith\", \"CallbackManagerRunTree\"],\n lc: 1,\n type: \"not_implemented\",\n },\n this.inputs,\n this.id,\n this.run_type,\n undefined,\n undefined,\n this.name\n );\n }\n\n async patchRun(): Promise<void> {\n if (this.error) {\n await this.activeCallbackManager?.handleChainError(\n this.error,\n this.id,\n this.parent_run?.id,\n undefined,\n undefined\n );\n } else {\n await this.activeCallbackManager?.handleChainEnd(\n this.outputs ?? {},\n this.id,\n this.parent_run?.id,\n undefined,\n undefined\n );\n }\n }\n}\n\nclass RunnableTraceable<RunInput, RunOutput> extends Runnable<\n RunInput,\n RunOutput\n> {\n lc_serializable = false;\n\n lc_namespace = [\"langchain_core\", \"runnables\"];\n\n protected func: AnyTraceableFunction;\n\n constructor(fields: { func: AnyTraceableFunction }) {\n super(fields);\n\n if (!isLangsmithTraceableFunction(fields.func)) {\n throw new Error(\n \"RunnableTraceable requires a function that is wrapped in traceable higher-order function\"\n );\n }\n\n this.func = fields.func;\n }\n\n async invoke(input: RunInput, options?: Partial<RunnableConfig>) {\n const [config] = this._getOptionsList(options ?? {}, 1);\n const callbackManager = await getCallbackManagerForConfig(config);\n\n const partialConfig =\n \"langsmith:traceable\" in this.func\n ? (this.func[\"langsmith:traceable\"] as RunTreeConfig)\n : { name: \"<lambda>\" };\n\n if (!callbackManager) throw new Error(\"CallbackManager not found\");\n const runTree = new CallbackManagerRunTree(\n {\n ...partialConfig,\n parent_run: callbackManager?._parentRunId\n ? new RunTree({ name: \"<parent>\", id: callbackManager?._parentRunId })\n : undefined,\n },\n callbackManager\n );\n\n if (\n typeof input === \"object\" &&\n input != null &&\n Object.keys(input).length === 1\n ) {\n if (\"args\" in input && Array.isArray(input)) {\n return (await this.func(runTree, ...input)) as RunOutput;\n }\n\n if (\n \"input\" in input &&\n !(\n typeof input === \"object\" &&\n input != null &&\n !Array.isArray(input) &&\n // oxlint-disable-next-line no-instanceof/no-instanceof\n !(input instanceof Date)\n )\n ) {\n try {\n return (await this.func(runTree, input.input)) as RunOutput;\n } catch {\n return (await this.func(runTree, input)) as RunOutput;\n }\n }\n }\n\n return (await this.func(runTree, input)) as RunOutput;\n }\n}\n\n/**\n * Wraps an off-the-shelf evaluator (loaded using loadEvaluator; of EvaluatorType[T])\n * and composes with a prepareData function so the user can prepare the trace and\n * dataset data for the evaluator.\n */\nclass PreparedRunEvaluator implements RunEvaluator {\n evaluator: LLMStringEvaluator;\n\n formatEvaluatorInputs: EvaluatorInputFormatter;\n\n isStringEvaluator: boolean;\n\n evaluationName: string;\n\n constructor(\n evaluator: LLMStringEvaluator,\n evaluationName: string,\n formatEvaluatorInputs: EvaluatorInputFormatter\n ) {\n this.evaluator = evaluator;\n this.isStringEvaluator = typeof evaluator?.evaluateStrings === \"function\";\n this.evaluationName = evaluationName;\n this.formatEvaluatorInputs = formatEvaluatorInputs;\n }\n\n static async fromEvalConfig(\n config: EvalConfig | keyof EvaluatorType\n ): Promise<PreparedRunEvaluator> {\n const evaluatorType =\n typeof config === \"string\" ? config : config.evaluatorType;\n const evalConfig = typeof config === \"string\" ? ({} as EvalConfig) : config;\n const evaluator = await loadEvaluator(evaluatorType, evalConfig);\n const feedbackKey = evalConfig?.feedbackKey ?? evaluator?.evaluationName;\n if (!isLLMStringEvaluator(evaluator)) {\n throw new Error(\n `Evaluator of type ${evaluatorType} not yet supported. ` +\n \"Please use a string evaluator, or implement your \" +\n \"evaluation logic as a custom evaluator.\"\n );\n }\n if (!feedbackKey) {\n throw new Error(\n `Evaluator of type ${evaluatorType} must have an evaluationName` +\n ` or feedbackKey. Please manually provide a feedbackKey in the EvalConfig.`\n );\n }\n return new PreparedRunEvaluator(\n evaluator as LLMStringEvaluator,\n feedbackKey,\n evalConfig?.formatEvaluatorInputs\n );\n }\n\n /**\n * Evaluates a run with an optional example and returns the evaluation result.\n * @param run The run to evaluate.\n * @param example The optional example to use for evaluation.\n * @returns A promise that extracts to the evaluation result.\n */\n async evaluateRun(run: Run, example?: Example): Promise<EvaluationResult> {\n const { prediction, input, reference } = this.formatEvaluatorInputs({\n rawInput: run.inputs,\n rawPrediction: run.outputs,\n rawReferenceOutput: example?.outputs,\n run,\n });\n const extractor = new SingleRunIdExtractor();\n const tracer = new LangChainTracer({ projectName: \"evaluators\" });\n if (this.isStringEvaluator) {\n const evalResult = await this.evaluator.evaluateStrings(\n {\n prediction: prediction as string,\n reference: reference as string,\n input: input as string,\n },\n {\n callbacks: [extractor, tracer],\n }\n );\n const runId = await extractor.extract();\n return {\n key: this.evaluationName,\n comment: evalResult?.reasoning,\n sourceRunId: runId,\n ...evalResult,\n };\n }\n throw new Error(\n \"Evaluator not yet supported. \" +\n \"Please use a string evaluator, or implement your \" +\n \"evaluation logic as a custom evaluator.\"\n );\n }\n}\n\nclass LoadedEvalConfig {\n constructor(public evaluators: (RunEvaluator | DynamicRunEvaluator)[]) {}\n\n static async fromRunEvalConfig(\n config: RunEvalConfig<keyof EvaluatorType>\n ): Promise<LoadedEvalConfig> {\n // Custom evaluators are applied \"as-is\"\n const customEvaluators = (\n config?.customEvaluators ?? config.evaluators?.filter(isCustomEvaluator)\n )?.map((evaluator) => {\n if (typeof evaluator === \"function\") {\n return new DynamicRunEvaluator(evaluator);\n } else {\n return evaluator;\n }\n });\n\n const offTheShelfEvaluators = await Promise.all(\n config?.evaluators\n ?.filter(isOffTheShelfEvaluator)\n ?.map(\n async (evaluator) =>\n await PreparedRunEvaluator.fromEvalConfig(evaluator)\n ) ?? []\n );\n return new LoadedEvalConfig(\n (customEvaluators ?? []).concat(offTheShelfEvaluators ?? [])\n );\n }\n}\n\nexport interface RunOnDatasetParams extends Omit<\n RunEvalConfig,\n \"customEvaluators\"\n> {\n /**\n * Name of the project for logging and tracking.\n */\n projectName?: string;\n\n /**\n * Additional metadata for the project.\n */\n projectMetadata?: Record<string, unknown>;\n\n /**\n * Client instance for LangSmith service interaction.\n */\n client?: Client;\n\n /**\n * Maximum concurrency level for dataset processing.\n */\n maxConcurrency?: number;\n\n /**\n * @deprecated Pass keys directly to the RunOnDatasetParams instead\n */\n evaluationConfig?: RunEvalConfig;\n}\n\n/**\n * Internals expect a constructor () -> Runnable. This function wraps/coerces\n * the provided LangChain object, custom function, or factory function into\n * a constructor of a runnable.\n * @param modelOrFactory The model or factory to create a wrapped model from.\n * @returns A function that returns the wrapped model.\n * @throws Error if the modelOrFactory is invalid.\n */\nconst createWrappedModel = async (modelOrFactory: ChainOrFactory) => {\n if (Runnable.isRunnable(modelOrFactory)) {\n return () => modelOrFactory;\n }\n if (typeof modelOrFactory === \"function\") {\n if (isLangsmithTraceableFunction(modelOrFactory)) {\n const wrappedModel = new RunnableTraceable({ func: modelOrFactory });\n return () => wrappedModel;\n }\n\n try {\n // If it works with no arguments, assume it's a factory\n let res = (modelOrFactory as () => Runnable)();\n if (\n res &&\n typeof (res as unknown as Promise<Runnable>).then === \"function\"\n ) {\n res = await res;\n }\n return modelOrFactory as () => Runnable;\n } catch {\n // Otherwise, it's a custom UDF, and we'll wrap\n // the function in a lambda\n const wrappedModel = new RunnableLambda({ func: modelOrFactory });\n return () => wrappedModel;\n }\n }\n throw new Error(\"Invalid modelOrFactory\");\n};\n\nconst loadExamples = async ({\n datasetName,\n client,\n projectName,\n}: {\n datasetName: string;\n client: Client;\n projectName: string;\n maxConcurrency: number;\n}) => {\n const exampleIterator = client.listExamples({ datasetName });\n const configs: RunnableConfig[] = [];\n const runExtractors = [];\n const examples = [];\n for await (const example of exampleIterator) {\n const runExtractor = new SingleRunExtractor();\n configs.push({\n callbacks: [\n new LangChainTracer({ exampleId: example.id, projectName }),\n runExtractor,\n ],\n });\n examples.push(example);\n runExtractors.push(runExtractor);\n }\n return {\n configs,\n examples,\n runExtractors,\n };\n};\n\nconst applyEvaluators = async ({\n evaluation,\n runs,\n examples,\n client,\n maxConcurrency,\n}: {\n evaluation: LoadedEvalConfig;\n runs: Run[];\n examples: Example[];\n client: Client;\n maxConcurrency: number;\n}): Promise<{\n [key: string]: {\n execution_time?: number;\n run_id: string;\n feedback: Feedback[];\n };\n}> => {\n // TODO: Parallelize and/or put in callbacks to speed up evals.\n const { evaluators } = evaluation;\n const progress = new ProgressBar({\n total: examples.length,\n format: \"Running Evaluators: {bar} {percentage}% | {value}/{total}\\n\",\n });\n const caller = new AsyncCaller({\n maxConcurrency,\n });\n const requests = runs.map(\n async (\n run,\n i\n ): Promise<{\n run_id: string;\n execution_time?: number;\n feedback: Feedback[];\n }> =>\n caller.call(async () => {\n const evaluatorResults = await Promise.allSettled(\n evaluators.map((evaluator) =>\n client.evaluateRun(run, evaluator, {\n referenceExample: examples[i],\n loadChildRuns: false,\n })\n )\n );\n progress.increment();\n return {\n execution_time:\n run?.end_time && run.start_time\n ? new Date(run.end_time).getTime() -\n new Date(run.start_time).getTime()\n : undefined,\n feedback: evaluatorResults.map((evalResult) =>\n evalResult.status === \"fulfilled\"\n ? evalResult.value\n : evalResult.reason\n ),\n run_id: run.id,\n };\n })\n );\n const results = await Promise.all(requests);\n\n return results.reduce(\n (acc, result, i) => ({\n ...acc,\n [examples[i].id]: result,\n }),\n {}\n );\n};\n\nexport type EvalResults = {\n projectName: string;\n results: {\n [key: string]: {\n execution_time?: number;\n run_id: string;\n feedback: Feedback[];\n };\n };\n};\n\nconst getExamplesInputs = (\n examples: Example[],\n chainOrFactory: ChainOrFactory,\n dataType?: DataType\n) => {\n if (dataType === \"chat\") {\n // For some batty reason, we store the chat dataset differently.\n // { type: \"system\", data: { content: inputs.input } },\n // But we need to create AIMesage, SystemMessage, etc.\n return examples.map(({ inputs }) =>\n mapStoredMessagesToChatMessages(inputs.input)\n );\n }\n // If it's a language model and ALL example inputs have a single value,\n // then we can be friendly and flatten the inputs to a list of strings.\n const isLanguageModel =\n typeof chainOrFactory === \"object\" &&\n typeof (chainOrFactory as BaseLanguageModel)._llmType === \"function\";\n if (\n isLanguageModel &&\n examples.every(({ inputs }) => Object.keys(inputs).length === 1)\n ) {\n return examples.map(({ inputs }) => Object.values(inputs)[0]);\n }\n return examples.map(({ inputs }) => inputs);\n};\n\n/**\n * Evaluates a given model or chain against a specified LangSmith dataset.\n *\n * This function fetches example records from the specified dataset,\n * runs the model or chain against each example, and returns the evaluation\n * results.\n *\n * @param chainOrFactory - A model or factory/constructor function to be evaluated. It can be a\n * Runnable instance, a factory function that returns a Runnable, or a user-defined\n * function or factory.\n *\n * @param datasetName - The name of the dataset against which the evaluation will be\n * performed. This dataset should already be defined and contain the relevant data\n * for evaluation.\n *\n * @param options - (Optional) Additional parameters for the evaluation process:\n * - `evaluators` (RunEvalType[]): Evaluators to apply to a dataset run.\n * - `formatEvaluatorInputs` (EvaluatorInputFormatter): Convert the evaluation data into formats that can be used by the evaluator.\n * - `projectName` (string): Name of the project for logging and tracking.\n * - `projectMetadata` (Record<string, unknown>): Additional metadata for the project.\n * - `client` (Client): Client instance for LangSmith service interaction.\n * - `maxConcurrency` (number): Maximum concurrency level for dataset processing.\n *\n * @returns A promise that resolves to an `EvalResults` object. This object includes\n * detailed results of the evaluation, such as execution time, run IDs, and feedback\n * for each entry in the dataset.\n *\n * @example\n * ```typescript\n * // Example usage for evaluating a model on a dataset\n * async function evaluateModel() {\n * const chain = /* ...create your model or chain...*\\//\n * const datasetName = 'example-dataset';\n * const client = new Client(/* ...config... *\\//);\n *\n * const results = await runOnDataset(chain, datasetName, {\n * evaluators: [/* ...evaluators... *\\//],\n * client,\n * });\n *\n * console.log('Evaluation Results:', results);\n * }\n *\n * evaluateModel();\n * ```\n * In this example, `runOnDataset` is used to evaluate a language model (or a chain of models) against\n * a dataset named 'example-dataset'. The evaluation process is configured using `RunOnDatasetParams[\"evaluators\"]`, which can\n * include both standard and custom evaluators. The `Client` instance is used to interact with LangChain services.\n * The function returns the evaluation results, which can be logged or further processed as needed.\n */\n\nexport async function runOnDataset(\n chainOrFactory: ChainOrFactory,\n datasetName: string,\n options?: RunOnDatasetParams\n) {\n const {\n projectName,\n projectMetadata,\n client,\n maxConcurrency,\n }: RunOnDatasetParams = options ?? {};\n\n const evaluationConfig: RunEvalConfig | undefined =\n options?.evaluationConfig ??\n (options?.evaluators != null\n ? {\n evaluators: options.evaluators,\n formatEvaluatorInputs: options.formatEvaluatorInputs,\n }\n : undefined);\n\n const wrappedModel = await createWrappedModel(chainOrFactory);\n const testClient = client ?? new Client();\n const testProjectName = projectName ?? randomName();\n const dataset = await testClient.readDataset({ datasetName });\n const datasetId = dataset.id;\n const testConcurrency = maxConcurrency ?? 5;\n const { configs, examples, runExtractors } = await loadExamples({\n datasetName,\n client: testClient,\n projectName: testProjectName,\n maxConcurrency: testConcurrency,\n });\n\n await testClient.createProject({\n projectName: testProjectName,\n referenceDatasetId: datasetId,\n projectExtra: { metadata: { ...projectMetadata } },\n });\n const wrappedRunnable: Runnable = new RunnableLambda({\n func: wrappedModel,\n }).withConfig({ runName: \"evaluationRun\" });\n const runInputs = getExamplesInputs(\n examples,\n chainOrFactory,\n dataset.data_type\n );\n const progress = new ProgressBar({\n total: runInputs.length,\n format: \"Predicting: {bar} {percentage}% | {value}/{total}\",\n });\n // TODO: Collect the runs as well.\n await wrappedRunnable\n .withListeners({\n onEnd: () => progress.increment(),\n })\n // TODO: Insert evaluation inline for immediate feedback.\n .batch(runInputs, configs, {\n maxConcurrency,\n returnExceptions: true,\n });\n\n progress.complete();\n const runs: Run[] = [];\n for (let i = 0; i < examples.length; i += 1) {\n runs.push(await runExtractors[i].extract());\n }\n let evalResults: Record<\n string,\n { run_id: string; execution_time?: number; feedback: Feedback[] }\n > = {};\n if (evaluationConfig) {\n const loadedEvalConfig =\n await LoadedEvalConfig.fromRunEvalConfig(evaluationConfig);\n evalResults = await applyEvaluators({\n evaluation: loadedEvalConfig,\n runs,\n examples,\n client: testClient,\n maxConcurrency: testConcurrency,\n });\n }\n const results: EvalResults = {\n projectName: testProjectName,\n results: evalResults ?? {},\n };\n return results;\n}\n\nfunction isLangsmithTraceableFunction(x: unknown): x is AnyTraceableFunction {\n return typeof x === \"function\" && \"langsmith:traceable\" in x;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"runner_utils.js","names":[],"sources":["../../src/smith/runner_utils.ts"],"sourcesContent":["import { BaseLanguageModel } from \"@langchain/core/language_models/base\";\nimport { Serialized } from \"@langchain/core/load/serializable\";\nimport { mapStoredMessagesToChatMessages } from \"@langchain/core/messages\";\nimport {\n Runnable,\n RunnableConfig,\n RunnableLambda,\n getCallbackManagerForConfig,\n} from \"@langchain/core/runnables\";\nimport { LangChainTracer } from \"@langchain/core/tracers/tracer_langchain\";\nimport { BaseTracer } from \"@langchain/core/tracers/base\";\nimport { ChainValues } from \"@langchain/core/utils/types\";\nimport { AsyncCaller } from \"@langchain/core/utils/async_caller\";\nimport type {\n CallbackManager,\n CallbackManagerForChainRun,\n} from \"@langchain/core/callbacks/manager\";\nimport {\n Client,\n Example,\n Feedback,\n Run,\n RunTree,\n RunTreeConfig,\n} from \"langsmith\";\nimport { EvaluationResult, RunEvaluator } from \"langsmith/evaluation\";\nimport { DataType } from \"langsmith/schemas\";\nimport type { TraceableFunction } from \"langsmith/singletons/traceable\";\nimport { LLMStringEvaluator } from \"../evaluation/base.js\";\nimport { loadEvaluator } from \"../evaluation/loader.js\";\nimport { EvaluatorType } from \"../evaluation/types.js\";\nimport {\n isOffTheShelfEvaluator,\n type DynamicRunEvaluatorParams,\n type EvalConfig,\n type EvaluatorInputFormatter,\n type RunEvalConfig,\n type RunEvaluatorLike,\n isCustomEvaluator,\n} from \"./config.js\";\nimport { randomName } from \"./name_generation.js\";\nimport { ProgressBar } from \"./progress.js\";\n\nexport type ChainOrFactory =\n | Runnable\n | (() => Runnable)\n | AnyTraceableFunction\n // oxlint-disable-next-line @typescript-eslint/no-explicit-any\n | ((obj: any) => any)\n // oxlint-disable-next-line @typescript-eslint/no-explicit-any\n | ((obj: any) => Promise<any>)\n | (() => (obj: unknown) => unknown)\n | (() => (obj: unknown) => Promise<unknown>);\n\nclass SingleRunIdExtractor {\n runIdPromiseResolver: (runId: string) => void;\n\n runIdPromise: Promise<string>;\n\n constructor() {\n this.runIdPromise = new Promise<string>((extract) => {\n this.runIdPromiseResolver = extract;\n });\n }\n\n handleChainStart = (\n _chain: Serialized,\n _inputs: ChainValues,\n runId: string\n ) => {\n this.runIdPromiseResolver(runId);\n };\n\n async extract(): Promise<string> {\n return this.runIdPromise;\n }\n}\n\nclass SingleRunExtractor extends BaseTracer {\n runPromiseResolver: (run: Run) => void;\n\n runPromise: Promise<Run>;\n\n /** The name of the callback handler. */\n name = \"single_run_extractor\";\n\n constructor() {\n super();\n this.runPromise = new Promise<Run>((extract) => {\n this.runPromiseResolver = extract;\n });\n }\n\n async persistRun(run: Run) {\n this.runPromiseResolver(run);\n }\n\n async extract(): Promise<Run> {\n return this.runPromise;\n }\n}\n\n/**\n * Wraps an evaluator function + implements the RunEvaluator interface.\n */\nclass DynamicRunEvaluator implements RunEvaluator {\n evaluator: RunnableLambda<DynamicRunEvaluatorParams, EvaluationResult>;\n\n constructor(evaluator: RunEvaluatorLike) {\n this.evaluator = new RunnableLambda({ func: evaluator });\n }\n\n /**\n * Evaluates a run with an optional example and returns the evaluation result.\n * @param run The run to evaluate.\n * @param example The optional example to use for evaluation.\n * @returns A promise that extracts to the evaluation result.\n */\n async evaluateRun(run: Run, example?: Example): Promise<EvaluationResult> {\n const extractor = new SingleRunIdExtractor();\n const tracer = new LangChainTracer({ projectName: \"evaluators\" });\n const result = await this.evaluator.invoke(\n {\n run,\n example,\n input: run.inputs,\n prediction: run.outputs,\n reference: example?.outputs,\n },\n {\n callbacks: [extractor, tracer],\n }\n );\n const runId = await extractor.extract();\n return {\n sourceRunId: runId,\n ...result,\n };\n }\n}\n\n// oxlint-disable-next-line @typescript-eslint/no-explicit-any\nfunction isLLMStringEvaluator(evaluator: any): evaluator is LLMStringEvaluator {\n return evaluator && typeof evaluator.evaluateStrings === \"function\";\n}\n\n// oxlint-disable-next-line @typescript-eslint/no-explicit-any\ntype AnyTraceableFunction = TraceableFunction<(...any: any[]) => any>;\n\n/**\n * Internal implementation of RunTree, which uses the\n * provided callback manager instead of the internal LangSmith client.\n *\n * The goal of this class is to ensure seamless interop when intergrated\n * with other Runnables.\n */\nclass CallbackManagerRunTree extends RunTree {\n callbackManager: CallbackManager;\n\n activeCallbackManager: CallbackManagerForChainRun | undefined = undefined;\n\n constructor(config: RunTreeConfig, callbackManager: CallbackManager) {\n super(config);\n\n this.callbackManager = callbackManager;\n }\n\n createChild(config: RunTreeConfig): CallbackManagerRunTree {\n const child = new CallbackManagerRunTree(\n {\n ...config,\n parent_run: this,\n project_name: this.project_name,\n client: this.client,\n },\n this.activeCallbackManager?.getChild() ?? this.callbackManager\n );\n this.child_runs.push(child);\n return child;\n }\n\n async postRun(): Promise<void> {\n // how it is translated in comparison to basic RunTree?\n this.activeCallbackManager = await this.callbackManager.handleChainStart(\n typeof this.serialized !== \"object\" &&\n this.serialized != null &&\n \"lc\" in this.serialized\n ? this.serialized\n : {\n id: [\"langchain\", \"smith\", \"CallbackManagerRunTree\"],\n lc: 1,\n type: \"not_implemented\",\n },\n this.inputs,\n this.id,\n this.run_type,\n undefined,\n undefined,\n this.name\n );\n }\n\n async patchRun(): Promise<void> {\n if (this.error) {\n await this.activeCallbackManager?.handleChainError(\n this.error,\n this.id,\n this.parent_run?.id,\n undefined,\n undefined\n );\n } else {\n await this.activeCallbackManager?.handleChainEnd(\n this.outputs ?? {},\n this.id,\n this.parent_run?.id,\n undefined,\n undefined\n );\n }\n }\n}\n\nclass RunnableTraceable<RunInput, RunOutput> extends Runnable<\n RunInput,\n RunOutput\n> {\n lc_serializable = false;\n\n lc_namespace = [\"langchain_core\", \"runnables\"];\n\n protected func: AnyTraceableFunction;\n\n constructor(fields: { func: AnyTraceableFunction }) {\n super(fields);\n\n if (!isLangsmithTraceableFunction(fields.func)) {\n throw new Error(\n \"RunnableTraceable requires a function that is wrapped in traceable higher-order function\"\n );\n }\n\n this.func = fields.func;\n }\n\n async invoke(input: RunInput, options?: Partial<RunnableConfig>) {\n const [config] = this._getOptionsList(options ?? {}, 1);\n const callbackManager = await getCallbackManagerForConfig(config);\n\n const partialConfig =\n \"langsmith:traceable\" in this.func\n ? (this.func[\"langsmith:traceable\"] as RunTreeConfig)\n : { name: \"<lambda>\" };\n\n if (!callbackManager) throw new Error(\"CallbackManager not found\");\n const runTree = new CallbackManagerRunTree(\n {\n ...partialConfig,\n parent_run: callbackManager?._parentRunId\n ? new RunTree({ name: \"<parent>\", id: callbackManager?._parentRunId })\n : undefined,\n },\n callbackManager\n );\n\n if (\n typeof input === \"object\" &&\n input != null &&\n Object.keys(input).length === 1\n ) {\n if (\"args\" in input && Array.isArray(input)) {\n return (await this.func(runTree, ...input)) as RunOutput;\n }\n\n if (\n \"input\" in input &&\n !(\n typeof input === \"object\" &&\n input != null &&\n !Array.isArray(input) &&\n // oxlint-disable-next-line no-instanceof/no-instanceof\n !(input instanceof Date)\n )\n ) {\n try {\n return (await this.func(runTree, input.input)) as RunOutput;\n } catch {\n return (await this.func(runTree, input)) as RunOutput;\n }\n }\n }\n\n return (await this.func(runTree, input)) as RunOutput;\n }\n}\n\n/**\n * Wraps an off-the-shelf evaluator (loaded using loadEvaluator; of EvaluatorType[T])\n * and composes with a prepareData function so the user can prepare the trace and\n * dataset data for the evaluator.\n */\nclass PreparedRunEvaluator implements RunEvaluator {\n evaluator: LLMStringEvaluator;\n\n formatEvaluatorInputs: EvaluatorInputFormatter;\n\n isStringEvaluator: boolean;\n\n evaluationName: string;\n\n constructor(\n evaluator: LLMStringEvaluator,\n evaluationName: string,\n formatEvaluatorInputs: EvaluatorInputFormatter\n ) {\n this.evaluator = evaluator;\n this.isStringEvaluator = typeof evaluator?.evaluateStrings === \"function\";\n this.evaluationName = evaluationName;\n this.formatEvaluatorInputs = formatEvaluatorInputs;\n }\n\n static async fromEvalConfig(\n config: EvalConfig | keyof EvaluatorType\n ): Promise<PreparedRunEvaluator> {\n const evaluatorType =\n typeof config === \"string\" ? config : config.evaluatorType;\n const evalConfig = typeof config === \"string\" ? ({} as EvalConfig) : config;\n const evaluator = await loadEvaluator(evaluatorType, evalConfig);\n const feedbackKey = evalConfig?.feedbackKey ?? evaluator?.evaluationName;\n if (!isLLMStringEvaluator(evaluator)) {\n throw new Error(\n `Evaluator of type ${evaluatorType} not yet supported. ` +\n \"Please use a string evaluator, or implement your \" +\n \"evaluation logic as a custom evaluator.\"\n );\n }\n if (!feedbackKey) {\n throw new Error(\n `Evaluator of type ${evaluatorType} must have an evaluationName` +\n ` or feedbackKey. Please manually provide a feedbackKey in the EvalConfig.`\n );\n }\n return new PreparedRunEvaluator(\n evaluator as LLMStringEvaluator,\n feedbackKey,\n evalConfig?.formatEvaluatorInputs\n );\n }\n\n /**\n * Evaluates a run with an optional example and returns the evaluation result.\n * @param run The run to evaluate.\n * @param example The optional example to use for evaluation.\n * @returns A promise that extracts to the evaluation result.\n */\n async evaluateRun(run: Run, example?: Example): Promise<EvaluationResult> {\n const { prediction, input, reference } = this.formatEvaluatorInputs({\n rawInput: run.inputs,\n rawPrediction: run.outputs,\n rawReferenceOutput: example?.outputs,\n run,\n });\n const extractor = new SingleRunIdExtractor();\n const tracer = new LangChainTracer({ projectName: \"evaluators\" });\n if (this.isStringEvaluator) {\n const evalResult = await this.evaluator.evaluateStrings(\n {\n prediction: prediction as string,\n reference: reference as string,\n input: input as string,\n },\n {\n callbacks: [extractor, tracer],\n }\n );\n const runId = await extractor.extract();\n return {\n key: this.evaluationName,\n comment: evalResult?.reasoning,\n sourceRunId: runId,\n ...evalResult,\n };\n }\n throw new Error(\n \"Evaluator not yet supported. \" +\n \"Please use a string evaluator, or implement your \" +\n \"evaluation logic as a custom evaluator.\"\n );\n }\n}\n\nclass LoadedEvalConfig {\n constructor(public evaluators: (RunEvaluator | DynamicRunEvaluator)[]) {}\n\n static async fromRunEvalConfig(\n config: RunEvalConfig<keyof EvaluatorType>\n ): Promise<LoadedEvalConfig> {\n // Custom evaluators are applied \"as-is\"\n const customEvaluators = (\n config?.customEvaluators ?? config.evaluators?.filter(isCustomEvaluator)\n )?.map((evaluator) => {\n if (typeof evaluator === \"function\") {\n return new DynamicRunEvaluator(evaluator);\n } else {\n return evaluator;\n }\n });\n\n const offTheShelfEvaluators = await Promise.all(\n config?.evaluators\n ?.filter(isOffTheShelfEvaluator)\n ?.map(\n async (evaluator) =>\n await PreparedRunEvaluator.fromEvalConfig(evaluator)\n ) ?? []\n );\n return new LoadedEvalConfig(\n (customEvaluators ?? []).concat(offTheShelfEvaluators ?? [])\n );\n }\n}\n\nexport interface RunOnDatasetParams extends Omit<\n RunEvalConfig,\n \"customEvaluators\"\n> {\n /**\n * Name of the project for logging and tracking.\n */\n projectName?: string;\n\n /**\n * Additional metadata for the project.\n */\n projectMetadata?: Record<string, unknown>;\n\n /**\n * Client instance for LangSmith service interaction.\n */\n client?: Client;\n\n /**\n * Maximum concurrency level for dataset processing.\n */\n maxConcurrency?: number;\n\n /**\n * @deprecated Pass keys directly to the RunOnDatasetParams instead\n */\n evaluationConfig?: RunEvalConfig;\n}\n\n/**\n * Internals expect a constructor () -> Runnable. This function wraps/coerces\n * the provided LangChain object, custom function, or factory function into\n * a constructor of a runnable.\n * @param modelOrFactory The model or factory to create a wrapped model from.\n * @returns A function that returns the wrapped model.\n * @throws Error if the modelOrFactory is invalid.\n */\nconst createWrappedModel = async (modelOrFactory: ChainOrFactory) => {\n if (Runnable.isRunnable(modelOrFactory)) {\n return () => modelOrFactory;\n }\n if (typeof modelOrFactory === \"function\") {\n if (isLangsmithTraceableFunction(modelOrFactory)) {\n const wrappedModel = new RunnableTraceable({ func: modelOrFactory });\n return () => wrappedModel;\n }\n\n try {\n // If it works with no arguments, assume it's a factory\n let res = (modelOrFactory as () => Runnable)();\n if (\n res &&\n typeof (res as unknown as Promise<Runnable>).then === \"function\"\n ) {\n res = await res;\n }\n return modelOrFactory as () => Runnable;\n } catch {\n // Otherwise, it's a custom UDF, and we'll wrap\n // the function in a lambda\n const wrappedModel = new RunnableLambda({ func: modelOrFactory });\n return () => wrappedModel;\n }\n }\n throw new Error(\"Invalid modelOrFactory\");\n};\n\nconst loadExamples = async ({\n datasetName,\n client,\n projectName,\n}: {\n datasetName: string;\n client: Client;\n projectName: string;\n maxConcurrency: number;\n}) => {\n const exampleIterator = client.listExamples({ datasetName });\n const configs: RunnableConfig[] = [];\n const runExtractors = [];\n const examples = [];\n for await (const example of exampleIterator) {\n const runExtractor = new SingleRunExtractor();\n configs.push({\n callbacks: [\n new LangChainTracer({ exampleId: example.id, projectName }),\n runExtractor,\n ],\n });\n examples.push(example);\n runExtractors.push(runExtractor);\n }\n return {\n configs,\n examples,\n runExtractors,\n };\n};\n\nconst applyEvaluators = async ({\n evaluation,\n runs,\n examples,\n client,\n maxConcurrency,\n}: {\n evaluation: LoadedEvalConfig;\n runs: Run[];\n examples: Example[];\n client: Client;\n maxConcurrency: number;\n}): Promise<{\n [key: string]: {\n execution_time?: number;\n run_id: string;\n feedback: Feedback[];\n };\n}> => {\n // TODO: Parallelize and/or put in callbacks to speed up evals.\n const { evaluators } = evaluation;\n const progress = new ProgressBar({\n total: examples.length,\n format: \"Running Evaluators: {bar} {percentage}% | {value}/{total}\\n\",\n });\n const caller = new AsyncCaller({\n maxConcurrency,\n });\n const requests = runs.map(\n async (\n run,\n i\n ): Promise<{\n run_id: string;\n execution_time?: number;\n feedback: Feedback[];\n }> =>\n caller.call(async () => {\n const evaluatorResults = await Promise.allSettled(\n evaluators.map((evaluator) =>\n client.evaluateRun(run, evaluator, {\n referenceExample: examples[i],\n loadChildRuns: false,\n })\n )\n );\n progress.increment();\n return {\n execution_time:\n run?.end_time && run.start_time\n ? new Date(run.end_time).getTime() -\n new Date(run.start_time).getTime()\n : undefined,\n feedback: evaluatorResults.map((evalResult) =>\n evalResult.status === \"fulfilled\"\n ? evalResult.value\n : evalResult.reason\n ),\n run_id: run.id,\n };\n })\n );\n const results = await Promise.all(requests);\n\n return results.reduce(\n (acc, result, i) => ({\n ...acc,\n [examples[i].id]: result,\n }),\n {}\n );\n};\n\nexport type EvalResults = {\n projectName: string;\n results: {\n [key: string]: {\n execution_time?: number;\n run_id: string;\n feedback: Feedback[];\n };\n };\n};\n\nconst getExamplesInputs = (\n examples: Example[],\n chainOrFactory: ChainOrFactory,\n dataType?: DataType\n) => {\n if (dataType === \"chat\") {\n // For some batty reason, we store the chat dataset differently.\n // { type: \"system\", data: { content: inputs.input } },\n // But we need to create AIMesage, SystemMessage, etc.\n return examples.map(({ inputs }) =>\n mapStoredMessagesToChatMessages(inputs.input)\n );\n }\n // If it's a language model and ALL example inputs have a single value,\n // then we can be friendly and flatten the inputs to a list of strings.\n const isLanguageModel =\n typeof chainOrFactory === \"object\" &&\n typeof (chainOrFactory as BaseLanguageModel)._llmType === \"function\";\n if (\n isLanguageModel &&\n examples.every(({ inputs }) => Object.keys(inputs).length === 1)\n ) {\n return examples.map(({ inputs }) => Object.values(inputs)[0]);\n }\n return examples.map(({ inputs }) => inputs);\n};\n\n/**\n * Evaluates a given model or chain against a specified LangSmith dataset.\n *\n * This function fetches example records from the specified dataset,\n * runs the model or chain against each example, and returns the evaluation\n * results.\n *\n * @param chainOrFactory - A model or factory/constructor function to be evaluated. It can be a\n * Runnable instance, a factory function that returns a Runnable, or a user-defined\n * function or factory.\n *\n * @param datasetName - The name of the dataset against which the evaluation will be\n * performed. This dataset should already be defined and contain the relevant data\n * for evaluation.\n *\n * @param options - (Optional) Additional parameters for the evaluation process:\n * - `evaluators` (RunEvalType[]): Evaluators to apply to a dataset run.\n * - `formatEvaluatorInputs` (EvaluatorInputFormatter): Convert the evaluation data into formats that can be used by the evaluator.\n * - `projectName` (string): Name of the project for logging and tracking.\n * - `projectMetadata` (Record<string, unknown>): Additional metadata for the project.\n * - `client` (Client): Client instance for LangSmith service interaction.\n * - `maxConcurrency` (number): Maximum concurrency level for dataset processing.\n *\n * @returns A promise that resolves to an `EvalResults` object. This object includes\n * detailed results of the evaluation, such as execution time, run IDs, and feedback\n * for each entry in the dataset.\n *\n * @example\n * ```typescript\n * // Example usage for evaluating a model on a dataset\n * async function evaluateModel() {\n * const chain = /* ...create your model or chain...*\\//\n * const datasetName = 'example-dataset';\n * const client = new Client(/* ...config... *\\//);\n *\n * const results = await runOnDataset(chain, datasetName, {\n * evaluators: [/* ...evaluators... *\\//],\n * client,\n * });\n *\n * console.log('Evaluation Results:', results);\n * }\n *\n * evaluateModel();\n * ```\n * In this example, `runOnDataset` is used to evaluate a language model (or a chain of models) against\n * a dataset named 'example-dataset'. The evaluation process is configured using `RunOnDatasetParams[\"evaluators\"]`, which can\n * include both standard and custom evaluators. The `Client` instance is used to interact with LangChain services.\n * The function returns the evaluation results, which can be logged or further processed as needed.\n */\n\nexport async function runOnDataset(\n chainOrFactory: ChainOrFactory,\n datasetName: string,\n options?: RunOnDatasetParams\n) {\n const {\n projectName,\n projectMetadata,\n client,\n maxConcurrency,\n }: RunOnDatasetParams = options ?? {};\n\n const evaluationConfig: RunEvalConfig | undefined =\n options?.evaluationConfig ??\n (options?.evaluators != null\n ? {\n evaluators: options.evaluators,\n formatEvaluatorInputs: options.formatEvaluatorInputs,\n }\n : undefined);\n\n const wrappedModel = await createWrappedModel(chainOrFactory);\n const testClient = client ?? new Client();\n const testProjectName = projectName ?? randomName();\n const dataset = await testClient.readDataset({ datasetName });\n const datasetId = dataset.id;\n const testConcurrency = maxConcurrency ?? 5;\n const { configs, examples, runExtractors } = await loadExamples({\n datasetName,\n client: testClient,\n projectName: testProjectName,\n maxConcurrency: testConcurrency,\n });\n\n await testClient.createProject({\n projectName: testProjectName,\n referenceDatasetId: datasetId,\n projectExtra: { metadata: { ...projectMetadata } },\n });\n const wrappedRunnable: Runnable = new RunnableLambda({\n func: wrappedModel,\n }).withConfig({ runName: \"evaluationRun\" });\n const runInputs = getExamplesInputs(\n examples,\n chainOrFactory,\n dataset.data_type\n );\n const progress = new ProgressBar({\n total: runInputs.length,\n format: \"Predicting: {bar} {percentage}% | {value}/{total}\",\n });\n // TODO: Collect the runs as well.\n await wrappedRunnable\n .withListeners({\n onEnd: () => progress.increment(),\n })\n // TODO: Insert evaluation inline for immediate feedback.\n .batch(runInputs, configs, {\n maxConcurrency,\n returnExceptions: true,\n });\n\n progress.complete();\n const runs: Run[] = [];\n for (let i = 0; i < examples.length; i += 1) {\n runs.push(await runExtractors[i].extract());\n }\n let evalResults: Record<\n string,\n { run_id: string; execution_time?: number; feedback: Feedback[] }\n > = {};\n if (evaluationConfig) {\n const loadedEvalConfig =\n await LoadedEvalConfig.fromRunEvalConfig(evaluationConfig);\n evalResults = await applyEvaluators({\n evaluation: loadedEvalConfig,\n runs,\n examples,\n client: testClient,\n maxConcurrency: testConcurrency,\n });\n }\n const results: EvalResults = {\n projectName: testProjectName,\n results: evalResults ?? {},\n };\n return results;\n}\n\nfunction isLangsmithTraceableFunction(x: unknown): x is AnyTraceableFunction {\n return typeof x === \"function\" && \"langsmith:traceable\" in x;\n}\n"],"mappings":"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"}
|
package/dist/sql_db.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sql_db.cjs","names":["Serializable","getTableAndColumnsName","generateTableInfoFromTables"],"sources":["../src/sql_db.ts"],"sourcesContent":["import type { DataSource as DataSourceT, DataSourceOptions } from \"typeorm\";\nimport { Serializable } from \"@langchain/core/load/serializable\";\nimport {\n generateTableInfoFromTables,\n getTableAndColumnsName,\n SerializedSqlDatabase,\n SqlDatabaseDataSourceParams,\n SqlDatabaseOptionsParams,\n SqlTable,\n verifyIgnoreTablesExistInDatabase,\n verifyIncludeTablesExistInDatabase,\n verifyListTablesExistInDatabase,\n} from \"./util/sql_utils.js\";\n\nexport type { SqlDatabaseDataSourceParams, SqlDatabaseOptionsParams };\n\n/**\n * Class that represents a SQL database in the LangChain framework.\n *\n * @security **Security Notice**\n * This class generates SQL queries for the given database.\n * The SQLDatabase class provides a getTableInfo method that can be used\n * to get column information as well as sample data from the table.\n * To mitigate risk of leaking sensitive data, limit permissions\n * to read and scope to the tables that are needed.\n * Optionally, use the includesTables or ignoreTables class parameters\n * to limit which tables can/cannot be accessed.\n *\n * @link See https://js.langchain.com/docs/security for more information.\n */\nexport class SqlDatabase\n extends Serializable\n implements SqlDatabaseOptionsParams, SqlDatabaseDataSourceParams\n{\n lc_namespace = [\"langchain\", \"sql_db\"];\n\n toJSON() {\n return this.toJSONNotImplemented();\n }\n\n appDataSourceOptions: DataSourceOptions;\n\n appDataSource: DataSourceT;\n\n allTables: Array<SqlTable> = [];\n\n includesTables: Array<string> = [];\n\n ignoreTables: Array<string> = [];\n\n sampleRowsInTableInfo = 3;\n\n customDescription?: Record<string, string>;\n\n protected constructor(fields: SqlDatabaseDataSourceParams) {\n super(...arguments);\n this.appDataSource = fields.appDataSource;\n this.appDataSourceOptions = fields.appDataSource.options;\n if (fields?.includesTables && fields?.ignoreTables) {\n throw new Error(\"Cannot specify both includeTables and ignoreTables\");\n }\n this.includesTables = fields?.includesTables ?? [];\n this.ignoreTables = fields?.ignoreTables ?? [];\n this.sampleRowsInTableInfo =\n fields?.sampleRowsInTableInfo ?? this.sampleRowsInTableInfo;\n }\n\n static async fromDataSourceParams(\n fields: SqlDatabaseDataSourceParams\n ): Promise<SqlDatabase> {\n const sqlDatabase = new SqlDatabase(fields);\n if (!sqlDatabase.appDataSource.isInitialized) {\n await sqlDatabase.appDataSource.initialize();\n }\n sqlDatabase.allTables = await getTableAndColumnsName(\n sqlDatabase.appDataSource\n );\n sqlDatabase.customDescription = Object.fromEntries(\n Object.entries(fields?.customDescription ?? {}).filter(([key, _]) =>\n sqlDatabase.allTables\n .map((table: SqlTable) => table.tableName)\n .includes(key)\n )\n );\n verifyIncludeTablesExistInDatabase(\n sqlDatabase.allTables,\n sqlDatabase.includesTables\n );\n verifyIgnoreTablesExistInDatabase(\n sqlDatabase.allTables,\n sqlDatabase.ignoreTables\n );\n return sqlDatabase;\n }\n\n static async fromOptionsParams(\n fields: SqlDatabaseOptionsParams\n ): Promise<SqlDatabase> {\n const { DataSource } = await import(\"typeorm\");\n const dataSource = new DataSource(fields.appDataSourceOptions);\n return SqlDatabase.fromDataSourceParams({\n ...fields,\n appDataSource: dataSource,\n });\n }\n\n /**\n * Get information about specified tables.\n *\n * Follows best practices as specified in: Rajkumar et al, 2022\n * (https://arxiv.org/abs/2204.00498)\n *\n * If `sample_rows_in_table_info`, the specified number of sample rows will be\n * appended to each table description. This can increase performance as\n * demonstrated in the paper.\n */\n async getTableInfo(targetTables?: Array<string>): Promise<string> {\n let selectedTables =\n this.includesTables.length > 0\n ? this.allTables.filter((currentTable) =>\n this.includesTables.includes(currentTable.tableName)\n )\n : this.allTables;\n\n if (this.ignoreTables.length > 0) {\n selectedTables = selectedTables.filter(\n (currentTable) => !this.ignoreTables.includes(currentTable.tableName)\n );\n }\n\n if (targetTables && targetTables.length > 0) {\n verifyListTablesExistInDatabase(\n this.allTables,\n targetTables,\n \"Wrong target table name:\"\n );\n selectedTables = this.allTables.filter((currentTable) =>\n targetTables.includes(currentTable.tableName)\n );\n }\n\n return generateTableInfoFromTables(\n selectedTables,\n this.appDataSource,\n this.sampleRowsInTableInfo,\n this.customDescription\n );\n }\n\n /**\n * Execute a SQL command and return a string representing the results.\n * If the statement returns rows, a string of the results is returned.\n * If the statement returns no rows, an empty string is returned.\n */\n async run(command: string, fetch: \"all\" | \"one\" = \"all\"): Promise<string> {\n // TODO: Potential security issue here\n const res = await this.appDataSource.query(command);\n\n if (fetch === \"all\") {\n return JSON.stringify(res);\n }\n\n if (res?.length > 0) {\n return JSON.stringify(res[0]);\n }\n\n return \"\";\n }\n\n serialize(): SerializedSqlDatabase {\n return {\n _type: \"sql_database\",\n appDataSourceOptions: this.appDataSourceOptions,\n includesTables: this.includesTables,\n ignoreTables: this.ignoreTables,\n sampleRowsInTableInfo: this.sampleRowsInTableInfo,\n };\n }\n\n /** @ignore */\n static async imports() {\n try {\n const { DataSource } = await import(\"typeorm\");\n return { DataSource };\n } catch (e) {\n console.error(e);\n throw new Error(\n \"Failed to load typeorm. Please install it with eg. `yarn add typeorm`.\"\n );\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AA8BA,IAAa,cAAb,MAAa,oBACHA,kCAAAA,aAEV;CACE,eAAe,CAAC,aAAa,
|
|
1
|
+
{"version":3,"file":"sql_db.cjs","names":["Serializable","getTableAndColumnsName","generateTableInfoFromTables"],"sources":["../src/sql_db.ts"],"sourcesContent":["import type { DataSource as DataSourceT, DataSourceOptions } from \"typeorm\";\nimport { Serializable } from \"@langchain/core/load/serializable\";\nimport {\n generateTableInfoFromTables,\n getTableAndColumnsName,\n SerializedSqlDatabase,\n SqlDatabaseDataSourceParams,\n SqlDatabaseOptionsParams,\n SqlTable,\n verifyIgnoreTablesExistInDatabase,\n verifyIncludeTablesExistInDatabase,\n verifyListTablesExistInDatabase,\n} from \"./util/sql_utils.js\";\n\nexport type { SqlDatabaseDataSourceParams, SqlDatabaseOptionsParams };\n\n/**\n * Class that represents a SQL database in the LangChain framework.\n *\n * @security **Security Notice**\n * This class generates SQL queries for the given database.\n * The SQLDatabase class provides a getTableInfo method that can be used\n * to get column information as well as sample data from the table.\n * To mitigate risk of leaking sensitive data, limit permissions\n * to read and scope to the tables that are needed.\n * Optionally, use the includesTables or ignoreTables class parameters\n * to limit which tables can/cannot be accessed.\n *\n * @link See https://js.langchain.com/docs/security for more information.\n */\nexport class SqlDatabase\n extends Serializable\n implements SqlDatabaseOptionsParams, SqlDatabaseDataSourceParams\n{\n lc_namespace = [\"langchain\", \"sql_db\"];\n\n toJSON() {\n return this.toJSONNotImplemented();\n }\n\n appDataSourceOptions: DataSourceOptions;\n\n appDataSource: DataSourceT;\n\n allTables: Array<SqlTable> = [];\n\n includesTables: Array<string> = [];\n\n ignoreTables: Array<string> = [];\n\n sampleRowsInTableInfo = 3;\n\n customDescription?: Record<string, string>;\n\n protected constructor(fields: SqlDatabaseDataSourceParams) {\n super(...arguments);\n this.appDataSource = fields.appDataSource;\n this.appDataSourceOptions = fields.appDataSource.options;\n if (fields?.includesTables && fields?.ignoreTables) {\n throw new Error(\"Cannot specify both includeTables and ignoreTables\");\n }\n this.includesTables = fields?.includesTables ?? [];\n this.ignoreTables = fields?.ignoreTables ?? [];\n this.sampleRowsInTableInfo =\n fields?.sampleRowsInTableInfo ?? this.sampleRowsInTableInfo;\n }\n\n static async fromDataSourceParams(\n fields: SqlDatabaseDataSourceParams\n ): Promise<SqlDatabase> {\n const sqlDatabase = new SqlDatabase(fields);\n if (!sqlDatabase.appDataSource.isInitialized) {\n await sqlDatabase.appDataSource.initialize();\n }\n sqlDatabase.allTables = await getTableAndColumnsName(\n sqlDatabase.appDataSource\n );\n sqlDatabase.customDescription = Object.fromEntries(\n Object.entries(fields?.customDescription ?? {}).filter(([key, _]) =>\n sqlDatabase.allTables\n .map((table: SqlTable) => table.tableName)\n .includes(key)\n )\n );\n verifyIncludeTablesExistInDatabase(\n sqlDatabase.allTables,\n sqlDatabase.includesTables\n );\n verifyIgnoreTablesExistInDatabase(\n sqlDatabase.allTables,\n sqlDatabase.ignoreTables\n );\n return sqlDatabase;\n }\n\n static async fromOptionsParams(\n fields: SqlDatabaseOptionsParams\n ): Promise<SqlDatabase> {\n const { DataSource } = await import(\"typeorm\");\n const dataSource = new DataSource(fields.appDataSourceOptions);\n return SqlDatabase.fromDataSourceParams({\n ...fields,\n appDataSource: dataSource,\n });\n }\n\n /**\n * Get information about specified tables.\n *\n * Follows best practices as specified in: Rajkumar et al, 2022\n * (https://arxiv.org/abs/2204.00498)\n *\n * If `sample_rows_in_table_info`, the specified number of sample rows will be\n * appended to each table description. This can increase performance as\n * demonstrated in the paper.\n */\n async getTableInfo(targetTables?: Array<string>): Promise<string> {\n let selectedTables =\n this.includesTables.length > 0\n ? this.allTables.filter((currentTable) =>\n this.includesTables.includes(currentTable.tableName)\n )\n : this.allTables;\n\n if (this.ignoreTables.length > 0) {\n selectedTables = selectedTables.filter(\n (currentTable) => !this.ignoreTables.includes(currentTable.tableName)\n );\n }\n\n if (targetTables && targetTables.length > 0) {\n verifyListTablesExistInDatabase(\n this.allTables,\n targetTables,\n \"Wrong target table name:\"\n );\n selectedTables = this.allTables.filter((currentTable) =>\n targetTables.includes(currentTable.tableName)\n );\n }\n\n return generateTableInfoFromTables(\n selectedTables,\n this.appDataSource,\n this.sampleRowsInTableInfo,\n this.customDescription\n );\n }\n\n /**\n * Execute a SQL command and return a string representing the results.\n * If the statement returns rows, a string of the results is returned.\n * If the statement returns no rows, an empty string is returned.\n */\n async run(command: string, fetch: \"all\" | \"one\" = \"all\"): Promise<string> {\n // TODO: Potential security issue here\n const res = await this.appDataSource.query(command);\n\n if (fetch === \"all\") {\n return JSON.stringify(res);\n }\n\n if (res?.length > 0) {\n return JSON.stringify(res[0]);\n }\n\n return \"\";\n }\n\n serialize(): SerializedSqlDatabase {\n return {\n _type: \"sql_database\",\n appDataSourceOptions: this.appDataSourceOptions,\n includesTables: this.includesTables,\n ignoreTables: this.ignoreTables,\n sampleRowsInTableInfo: this.sampleRowsInTableInfo,\n };\n }\n\n /** @ignore */\n static async imports() {\n try {\n const { DataSource } = await import(\"typeorm\");\n return { DataSource };\n } catch (e) {\n console.error(e);\n throw new Error(\n \"Failed to load typeorm. Please install it with eg. `yarn add typeorm`.\"\n );\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AA8BA,IAAa,cAAb,MAAa,oBACHA,kCAAAA,aAEV;CACE,eAAe,CAAC,aAAa,QAAQ;CAErC,SAAS;EACP,OAAO,KAAK,qBAAqB;CACnC;CAEA;CAEA;CAEA,YAA6B,CAAC;CAE9B,iBAAgC,CAAC;CAEjC,eAA8B,CAAC;CAE/B,wBAAwB;CAExB;CAEA,YAAsB,QAAqC;EACzD,MAAM,GAAG,SAAS;EAClB,KAAK,gBAAgB,OAAO;EAC5B,KAAK,uBAAuB,OAAO,cAAc;EACjD,IAAI,QAAQ,kBAAkB,QAAQ,cACpC,MAAM,IAAI,MAAM,oDAAoD;EAEtE,KAAK,iBAAiB,QAAQ,kBAAkB,CAAC;EACjD,KAAK,eAAe,QAAQ,gBAAgB,CAAC;EAC7C,KAAK,wBACH,QAAQ,yBAAyB,KAAK;CAC1C;CAEA,aAAa,qBACX,QACsB;EACtB,MAAM,cAAc,IAAI,YAAY,MAAM;EAC1C,IAAI,CAAC,YAAY,cAAc,eAC7B,MAAM,YAAY,cAAc,WAAW;EAE7C,YAAY,YAAY,MAAMC,kBAAAA,uBAC5B,YAAY,aACd;EACA,YAAY,oBAAoB,OAAO,YACrC,OAAO,QAAQ,QAAQ,qBAAqB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,OAC5D,YAAY,UACT,KAAK,UAAoB,MAAM,SAAS,CAAC,CACzC,SAAS,GAAG,CACjB,CACF;EACA,kBAAA,mCACE,YAAY,WACZ,YAAY,cACd;EACA,kBAAA,kCACE,YAAY,WACZ,YAAY,YACd;EACA,OAAO;CACT;CAEA,aAAa,kBACX,QACsB;EACtB,MAAM,EAAE,eAAe,MAAM,OAAO;EACpC,MAAM,aAAa,IAAI,WAAW,OAAO,oBAAoB;EAC7D,OAAO,YAAY,qBAAqB;GACtC,GAAG;GACH,eAAe;EACjB,CAAC;CACH;;;;;;;;;;;CAYA,MAAM,aAAa,cAA+C;EAChE,IAAI,iBACF,KAAK,eAAe,SAAS,IACzB,KAAK,UAAU,QAAQ,iBACrB,KAAK,eAAe,SAAS,aAAa,SAAS,CACrD,IACA,KAAK;EAEX,IAAI,KAAK,aAAa,SAAS,GAC7B,iBAAiB,eAAe,QAC7B,iBAAiB,CAAC,KAAK,aAAa,SAAS,aAAa,SAAS,CACtE;EAGF,IAAI,gBAAgB,aAAa,SAAS,GAAG;GAC3C,kBAAA,gCACE,KAAK,WACL,cACA,0BACF;GACA,iBAAiB,KAAK,UAAU,QAAQ,iBACtC,aAAa,SAAS,aAAa,SAAS,CAC9C;EACF;EAEA,OAAOC,kBAAAA,4BACL,gBACA,KAAK,eACL,KAAK,uBACL,KAAK,iBACP;CACF;;;;;;CAOA,MAAM,IAAI,SAAiB,QAAuB,OAAwB;EAExE,MAAM,MAAM,MAAM,KAAK,cAAc,MAAM,OAAO;EAElD,IAAI,UAAU,OACZ,OAAO,KAAK,UAAU,GAAG;EAG3B,IAAI,KAAK,SAAS,GAChB,OAAO,KAAK,UAAU,IAAI,EAAE;EAG9B,OAAO;CACT;CAEA,YAAmC;EACjC,OAAO;GACL,OAAO;GACP,sBAAsB,KAAK;GAC3B,gBAAgB,KAAK;GACrB,cAAc,KAAK;GACnB,uBAAuB,KAAK;EAC9B;CACF;;CAGA,aAAa,UAAU;EACrB,IAAI;GACF,MAAM,EAAE,eAAe,MAAM,OAAO;GACpC,OAAO,EAAE,WAAW;EACtB,SAAS,GAAG;GACV,QAAQ,MAAM,CAAC;GACf,MAAM,IAAI,MACR,wEACF;EACF;CACF;AACF"}
|
package/dist/sql_db.d.cts
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import { SerializedSqlDatabase, SqlDatabaseDataSourceParams, SqlDatabaseOptionsParams, SqlTable } from "./util/sql_utils.cjs";
|
|
2
|
-
import * as _$_langchain_core_load_serializable0 from "@langchain/core/load/serializable";
|
|
3
2
|
import { Serializable } from "@langchain/core/load/serializable";
|
|
4
3
|
import { DataSource, DataSourceOptions } from "typeorm";
|
|
5
|
-
|
|
6
4
|
//#region src/sql_db.d.ts
|
|
7
5
|
/**
|
|
8
6
|
* Class that represents a SQL database in the LangChain framework.
|
|
@@ -20,7 +18,7 @@ import { DataSource, DataSourceOptions } from "typeorm";
|
|
|
20
18
|
*/
|
|
21
19
|
declare class SqlDatabase extends Serializable implements SqlDatabaseOptionsParams, SqlDatabaseDataSourceParams {
|
|
22
20
|
lc_namespace: string[];
|
|
23
|
-
toJSON():
|
|
21
|
+
toJSON(): import("@langchain/core/load/serializable").SerializedNotImplemented;
|
|
24
22
|
appDataSourceOptions: DataSourceOptions;
|
|
25
23
|
appDataSource: DataSource;
|
|
26
24
|
allTables: Array<SqlTable>;
|
package/dist/sql_db.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sql_db.d.cts","names":[],"sources":["../src/sql_db.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"sql_db.d.cts","names":[],"sources":["../src/sql_db.ts"],"mappings":";;;;;;;;;;;;;;;;;;cA8Ba,oBACH,wBACG,0BAA0B;EAErC;EAEA,sDAAM;EAIN,sBAAsB;EAEtB,eAAe;EAEf,WAAW,MAAM;EAEjB,gBAAgB;EAEhB,cAAc;EAEd;EAEA,oBAAoB;YAEX,YAAa,QAAQ;SAajB,qBACX,QAAQ,8BACP,QAAQ;SA0BE,kBACX,QAAQ,2BACP,QAAQ;;;;;;;;;;;EAmBL,aAAa,eAAe,gBAAgB;;;;;;EAsC5C,IAAI,iBAAiB,wBAA+B;EAe1D,aAAa;;SAWA,WAAO"}
|
package/dist/sql_db.d.ts
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import { SerializedSqlDatabase, SqlDatabaseDataSourceParams, SqlDatabaseOptionsParams, SqlTable } from "./util/sql_utils.js";
|
|
2
|
-
import * as _$_langchain_core_load_serializable0 from "@langchain/core/load/serializable";
|
|
3
2
|
import { Serializable } from "@langchain/core/load/serializable";
|
|
4
3
|
import { DataSource, DataSourceOptions } from "typeorm";
|
|
5
|
-
|
|
6
4
|
//#region src/sql_db.d.ts
|
|
7
5
|
/**
|
|
8
6
|
* Class that represents a SQL database in the LangChain framework.
|
|
@@ -20,7 +18,7 @@ import { DataSource, DataSourceOptions } from "typeorm";
|
|
|
20
18
|
*/
|
|
21
19
|
declare class SqlDatabase extends Serializable implements SqlDatabaseOptionsParams, SqlDatabaseDataSourceParams {
|
|
22
20
|
lc_namespace: string[];
|
|
23
|
-
toJSON():
|
|
21
|
+
toJSON(): import("@langchain/core/load/serializable").SerializedNotImplemented;
|
|
24
22
|
appDataSourceOptions: DataSourceOptions;
|
|
25
23
|
appDataSource: DataSource;
|
|
26
24
|
allTables: Array<SqlTable>;
|
package/dist/sql_db.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sql_db.d.ts","names":[],"sources":["../src/sql_db.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"sql_db.d.ts","names":[],"sources":["../src/sql_db.ts"],"mappings":";;;;;;;;;;;;;;;;;;cA8Ba,oBACH,wBACG,0BAA0B;EAErC;EAEA,sDAAM;EAIN,sBAAsB;EAEtB,eAAe;EAEf,WAAW,MAAM;EAEjB,gBAAgB;EAEhB,cAAc;EAEd;EAEA,oBAAoB;YAEX,YAAa,QAAQ;SAajB,qBACX,QAAQ,8BACP,QAAQ;SA0BE,kBACX,QAAQ,2BACP,QAAQ;;;;;;;;;;;EAmBL,aAAa,eAAe,gBAAgB;;;;;;EAsC5C,IAAI,iBAAiB,wBAA+B;EAe1D,aAAa;;SAWA,WAAO"}
|
package/dist/sql_db.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sql_db.js","names":[],"sources":["../src/sql_db.ts"],"sourcesContent":["import type { DataSource as DataSourceT, DataSourceOptions } from \"typeorm\";\nimport { Serializable } from \"@langchain/core/load/serializable\";\nimport {\n generateTableInfoFromTables,\n getTableAndColumnsName,\n SerializedSqlDatabase,\n SqlDatabaseDataSourceParams,\n SqlDatabaseOptionsParams,\n SqlTable,\n verifyIgnoreTablesExistInDatabase,\n verifyIncludeTablesExistInDatabase,\n verifyListTablesExistInDatabase,\n} from \"./util/sql_utils.js\";\n\nexport type { SqlDatabaseDataSourceParams, SqlDatabaseOptionsParams };\n\n/**\n * Class that represents a SQL database in the LangChain framework.\n *\n * @security **Security Notice**\n * This class generates SQL queries for the given database.\n * The SQLDatabase class provides a getTableInfo method that can be used\n * to get column information as well as sample data from the table.\n * To mitigate risk of leaking sensitive data, limit permissions\n * to read and scope to the tables that are needed.\n * Optionally, use the includesTables or ignoreTables class parameters\n * to limit which tables can/cannot be accessed.\n *\n * @link See https://js.langchain.com/docs/security for more information.\n */\nexport class SqlDatabase\n extends Serializable\n implements SqlDatabaseOptionsParams, SqlDatabaseDataSourceParams\n{\n lc_namespace = [\"langchain\", \"sql_db\"];\n\n toJSON() {\n return this.toJSONNotImplemented();\n }\n\n appDataSourceOptions: DataSourceOptions;\n\n appDataSource: DataSourceT;\n\n allTables: Array<SqlTable> = [];\n\n includesTables: Array<string> = [];\n\n ignoreTables: Array<string> = [];\n\n sampleRowsInTableInfo = 3;\n\n customDescription?: Record<string, string>;\n\n protected constructor(fields: SqlDatabaseDataSourceParams) {\n super(...arguments);\n this.appDataSource = fields.appDataSource;\n this.appDataSourceOptions = fields.appDataSource.options;\n if (fields?.includesTables && fields?.ignoreTables) {\n throw new Error(\"Cannot specify both includeTables and ignoreTables\");\n }\n this.includesTables = fields?.includesTables ?? [];\n this.ignoreTables = fields?.ignoreTables ?? [];\n this.sampleRowsInTableInfo =\n fields?.sampleRowsInTableInfo ?? this.sampleRowsInTableInfo;\n }\n\n static async fromDataSourceParams(\n fields: SqlDatabaseDataSourceParams\n ): Promise<SqlDatabase> {\n const sqlDatabase = new SqlDatabase(fields);\n if (!sqlDatabase.appDataSource.isInitialized) {\n await sqlDatabase.appDataSource.initialize();\n }\n sqlDatabase.allTables = await getTableAndColumnsName(\n sqlDatabase.appDataSource\n );\n sqlDatabase.customDescription = Object.fromEntries(\n Object.entries(fields?.customDescription ?? {}).filter(([key, _]) =>\n sqlDatabase.allTables\n .map((table: SqlTable) => table.tableName)\n .includes(key)\n )\n );\n verifyIncludeTablesExistInDatabase(\n sqlDatabase.allTables,\n sqlDatabase.includesTables\n );\n verifyIgnoreTablesExistInDatabase(\n sqlDatabase.allTables,\n sqlDatabase.ignoreTables\n );\n return sqlDatabase;\n }\n\n static async fromOptionsParams(\n fields: SqlDatabaseOptionsParams\n ): Promise<SqlDatabase> {\n const { DataSource } = await import(\"typeorm\");\n const dataSource = new DataSource(fields.appDataSourceOptions);\n return SqlDatabase.fromDataSourceParams({\n ...fields,\n appDataSource: dataSource,\n });\n }\n\n /**\n * Get information about specified tables.\n *\n * Follows best practices as specified in: Rajkumar et al, 2022\n * (https://arxiv.org/abs/2204.00498)\n *\n * If `sample_rows_in_table_info`, the specified number of sample rows will be\n * appended to each table description. This can increase performance as\n * demonstrated in the paper.\n */\n async getTableInfo(targetTables?: Array<string>): Promise<string> {\n let selectedTables =\n this.includesTables.length > 0\n ? this.allTables.filter((currentTable) =>\n this.includesTables.includes(currentTable.tableName)\n )\n : this.allTables;\n\n if (this.ignoreTables.length > 0) {\n selectedTables = selectedTables.filter(\n (currentTable) => !this.ignoreTables.includes(currentTable.tableName)\n );\n }\n\n if (targetTables && targetTables.length > 0) {\n verifyListTablesExistInDatabase(\n this.allTables,\n targetTables,\n \"Wrong target table name:\"\n );\n selectedTables = this.allTables.filter((currentTable) =>\n targetTables.includes(currentTable.tableName)\n );\n }\n\n return generateTableInfoFromTables(\n selectedTables,\n this.appDataSource,\n this.sampleRowsInTableInfo,\n this.customDescription\n );\n }\n\n /**\n * Execute a SQL command and return a string representing the results.\n * If the statement returns rows, a string of the results is returned.\n * If the statement returns no rows, an empty string is returned.\n */\n async run(command: string, fetch: \"all\" | \"one\" = \"all\"): Promise<string> {\n // TODO: Potential security issue here\n const res = await this.appDataSource.query(command);\n\n if (fetch === \"all\") {\n return JSON.stringify(res);\n }\n\n if (res?.length > 0) {\n return JSON.stringify(res[0]);\n }\n\n return \"\";\n }\n\n serialize(): SerializedSqlDatabase {\n return {\n _type: \"sql_database\",\n appDataSourceOptions: this.appDataSourceOptions,\n includesTables: this.includesTables,\n ignoreTables: this.ignoreTables,\n sampleRowsInTableInfo: this.sampleRowsInTableInfo,\n };\n }\n\n /** @ignore */\n static async imports() {\n try {\n const { DataSource } = await import(\"typeorm\");\n return { DataSource };\n } catch (e) {\n console.error(e);\n throw new Error(\n \"Failed to load typeorm. Please install it with eg. `yarn add typeorm`.\"\n );\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AA8BA,IAAa,cAAb,MAAa,oBACH,aAEV;CACE,eAAe,CAAC,aAAa,
|
|
1
|
+
{"version":3,"file":"sql_db.js","names":[],"sources":["../src/sql_db.ts"],"sourcesContent":["import type { DataSource as DataSourceT, DataSourceOptions } from \"typeorm\";\nimport { Serializable } from \"@langchain/core/load/serializable\";\nimport {\n generateTableInfoFromTables,\n getTableAndColumnsName,\n SerializedSqlDatabase,\n SqlDatabaseDataSourceParams,\n SqlDatabaseOptionsParams,\n SqlTable,\n verifyIgnoreTablesExistInDatabase,\n verifyIncludeTablesExistInDatabase,\n verifyListTablesExistInDatabase,\n} from \"./util/sql_utils.js\";\n\nexport type { SqlDatabaseDataSourceParams, SqlDatabaseOptionsParams };\n\n/**\n * Class that represents a SQL database in the LangChain framework.\n *\n * @security **Security Notice**\n * This class generates SQL queries for the given database.\n * The SQLDatabase class provides a getTableInfo method that can be used\n * to get column information as well as sample data from the table.\n * To mitigate risk of leaking sensitive data, limit permissions\n * to read and scope to the tables that are needed.\n * Optionally, use the includesTables or ignoreTables class parameters\n * to limit which tables can/cannot be accessed.\n *\n * @link See https://js.langchain.com/docs/security for more information.\n */\nexport class SqlDatabase\n extends Serializable\n implements SqlDatabaseOptionsParams, SqlDatabaseDataSourceParams\n{\n lc_namespace = [\"langchain\", \"sql_db\"];\n\n toJSON() {\n return this.toJSONNotImplemented();\n }\n\n appDataSourceOptions: DataSourceOptions;\n\n appDataSource: DataSourceT;\n\n allTables: Array<SqlTable> = [];\n\n includesTables: Array<string> = [];\n\n ignoreTables: Array<string> = [];\n\n sampleRowsInTableInfo = 3;\n\n customDescription?: Record<string, string>;\n\n protected constructor(fields: SqlDatabaseDataSourceParams) {\n super(...arguments);\n this.appDataSource = fields.appDataSource;\n this.appDataSourceOptions = fields.appDataSource.options;\n if (fields?.includesTables && fields?.ignoreTables) {\n throw new Error(\"Cannot specify both includeTables and ignoreTables\");\n }\n this.includesTables = fields?.includesTables ?? [];\n this.ignoreTables = fields?.ignoreTables ?? [];\n this.sampleRowsInTableInfo =\n fields?.sampleRowsInTableInfo ?? this.sampleRowsInTableInfo;\n }\n\n static async fromDataSourceParams(\n fields: SqlDatabaseDataSourceParams\n ): Promise<SqlDatabase> {\n const sqlDatabase = new SqlDatabase(fields);\n if (!sqlDatabase.appDataSource.isInitialized) {\n await sqlDatabase.appDataSource.initialize();\n }\n sqlDatabase.allTables = await getTableAndColumnsName(\n sqlDatabase.appDataSource\n );\n sqlDatabase.customDescription = Object.fromEntries(\n Object.entries(fields?.customDescription ?? {}).filter(([key, _]) =>\n sqlDatabase.allTables\n .map((table: SqlTable) => table.tableName)\n .includes(key)\n )\n );\n verifyIncludeTablesExistInDatabase(\n sqlDatabase.allTables,\n sqlDatabase.includesTables\n );\n verifyIgnoreTablesExistInDatabase(\n sqlDatabase.allTables,\n sqlDatabase.ignoreTables\n );\n return sqlDatabase;\n }\n\n static async fromOptionsParams(\n fields: SqlDatabaseOptionsParams\n ): Promise<SqlDatabase> {\n const { DataSource } = await import(\"typeorm\");\n const dataSource = new DataSource(fields.appDataSourceOptions);\n return SqlDatabase.fromDataSourceParams({\n ...fields,\n appDataSource: dataSource,\n });\n }\n\n /**\n * Get information about specified tables.\n *\n * Follows best practices as specified in: Rajkumar et al, 2022\n * (https://arxiv.org/abs/2204.00498)\n *\n * If `sample_rows_in_table_info`, the specified number of sample rows will be\n * appended to each table description. This can increase performance as\n * demonstrated in the paper.\n */\n async getTableInfo(targetTables?: Array<string>): Promise<string> {\n let selectedTables =\n this.includesTables.length > 0\n ? this.allTables.filter((currentTable) =>\n this.includesTables.includes(currentTable.tableName)\n )\n : this.allTables;\n\n if (this.ignoreTables.length > 0) {\n selectedTables = selectedTables.filter(\n (currentTable) => !this.ignoreTables.includes(currentTable.tableName)\n );\n }\n\n if (targetTables && targetTables.length > 0) {\n verifyListTablesExistInDatabase(\n this.allTables,\n targetTables,\n \"Wrong target table name:\"\n );\n selectedTables = this.allTables.filter((currentTable) =>\n targetTables.includes(currentTable.tableName)\n );\n }\n\n return generateTableInfoFromTables(\n selectedTables,\n this.appDataSource,\n this.sampleRowsInTableInfo,\n this.customDescription\n );\n }\n\n /**\n * Execute a SQL command and return a string representing the results.\n * If the statement returns rows, a string of the results is returned.\n * If the statement returns no rows, an empty string is returned.\n */\n async run(command: string, fetch: \"all\" | \"one\" = \"all\"): Promise<string> {\n // TODO: Potential security issue here\n const res = await this.appDataSource.query(command);\n\n if (fetch === \"all\") {\n return JSON.stringify(res);\n }\n\n if (res?.length > 0) {\n return JSON.stringify(res[0]);\n }\n\n return \"\";\n }\n\n serialize(): SerializedSqlDatabase {\n return {\n _type: \"sql_database\",\n appDataSourceOptions: this.appDataSourceOptions,\n includesTables: this.includesTables,\n ignoreTables: this.ignoreTables,\n sampleRowsInTableInfo: this.sampleRowsInTableInfo,\n };\n }\n\n /** @ignore */\n static async imports() {\n try {\n const { DataSource } = await import(\"typeorm\");\n return { DataSource };\n } catch (e) {\n console.error(e);\n throw new Error(\n \"Failed to load typeorm. Please install it with eg. `yarn add typeorm`.\"\n );\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AA8BA,IAAa,cAAb,MAAa,oBACH,aAEV;CACE,eAAe,CAAC,aAAa,QAAQ;CAErC,SAAS;EACP,OAAO,KAAK,qBAAqB;CACnC;CAEA;CAEA;CAEA,YAA6B,CAAC;CAE9B,iBAAgC,CAAC;CAEjC,eAA8B,CAAC;CAE/B,wBAAwB;CAExB;CAEA,YAAsB,QAAqC;EACzD,MAAM,GAAG,SAAS;EAClB,KAAK,gBAAgB,OAAO;EAC5B,KAAK,uBAAuB,OAAO,cAAc;EACjD,IAAI,QAAQ,kBAAkB,QAAQ,cACpC,MAAM,IAAI,MAAM,oDAAoD;EAEtE,KAAK,iBAAiB,QAAQ,kBAAkB,CAAC;EACjD,KAAK,eAAe,QAAQ,gBAAgB,CAAC;EAC7C,KAAK,wBACH,QAAQ,yBAAyB,KAAK;CAC1C;CAEA,aAAa,qBACX,QACsB;EACtB,MAAM,cAAc,IAAI,YAAY,MAAM;EAC1C,IAAI,CAAC,YAAY,cAAc,eAC7B,MAAM,YAAY,cAAc,WAAW;EAE7C,YAAY,YAAY,MAAM,uBAC5B,YAAY,aACd;EACA,YAAY,oBAAoB,OAAO,YACrC,OAAO,QAAQ,QAAQ,qBAAqB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,OAC5D,YAAY,UACT,KAAK,UAAoB,MAAM,SAAS,CAAC,CACzC,SAAS,GAAG,CACjB,CACF;EACA,mCACE,YAAY,WACZ,YAAY,cACd;EACA,kCACE,YAAY,WACZ,YAAY,YACd;EACA,OAAO;CACT;CAEA,aAAa,kBACX,QACsB;EACtB,MAAM,EAAE,eAAe,MAAM,OAAO;EACpC,MAAM,aAAa,IAAI,WAAW,OAAO,oBAAoB;EAC7D,OAAO,YAAY,qBAAqB;GACtC,GAAG;GACH,eAAe;EACjB,CAAC;CACH;;;;;;;;;;;CAYA,MAAM,aAAa,cAA+C;EAChE,IAAI,iBACF,KAAK,eAAe,SAAS,IACzB,KAAK,UAAU,QAAQ,iBACrB,KAAK,eAAe,SAAS,aAAa,SAAS,CACrD,IACA,KAAK;EAEX,IAAI,KAAK,aAAa,SAAS,GAC7B,iBAAiB,eAAe,QAC7B,iBAAiB,CAAC,KAAK,aAAa,SAAS,aAAa,SAAS,CACtE;EAGF,IAAI,gBAAgB,aAAa,SAAS,GAAG;GAC3C,gCACE,KAAK,WACL,cACA,0BACF;GACA,iBAAiB,KAAK,UAAU,QAAQ,iBACtC,aAAa,SAAS,aAAa,SAAS,CAC9C;EACF;EAEA,OAAO,4BACL,gBACA,KAAK,eACL,KAAK,uBACL,KAAK,iBACP;CACF;;;;;;CAOA,MAAM,IAAI,SAAiB,QAAuB,OAAwB;EAExE,MAAM,MAAM,MAAM,KAAK,cAAc,MAAM,OAAO;EAElD,IAAI,UAAU,OACZ,OAAO,KAAK,UAAU,GAAG;EAG3B,IAAI,KAAK,SAAS,GAChB,OAAO,KAAK,UAAU,IAAI,EAAE;EAG9B,OAAO;CACT;CAEA,YAAmC;EACjC,OAAO;GACL,OAAO;GACP,sBAAsB,KAAK;GAC3B,gBAAgB,KAAK;GACrB,cAAc,KAAK;GACnB,uBAAuB,KAAK;EAC9B;CACF;;CAGA,aAAa,UAAU;EACrB,IAAI;GACF,MAAM,EAAE,eAAe,MAAM,OAAO;GACpC,OAAO,EAAE,WAAW;EACtB,SAAS,GAAG;GACV,QAAQ,MAAM,CAAC;GACf,MAAM,IAAI,MACR,wEACF;EACF;CACF;AACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encoder_backed.cjs","names":["BaseStore","Document"],"sources":["../../src/storage/encoder_backed.ts"],"sourcesContent":["import { Document } from \"@langchain/core/documents\";\nimport { BaseStore } from \"@langchain/core/stores\";\n\n/**\n * Class that provides a layer of abstraction over the base storage,\n * allowing for the encoding and decoding of keys and values. It extends\n * the BaseStore class.\n */\n// oxlint-disable-next-line @typescript-eslint/no-explicit-any\nexport class EncoderBackedStore<K, V, SerializedType = any> extends BaseStore<\n K,\n V\n> {\n lc_namespace = [\"langchain\", \"storage\"];\n\n store: BaseStore<string, SerializedType>;\n\n keyEncoder: (key: K) => string;\n\n valueSerializer: (value: V) => SerializedType;\n\n valueDeserializer: (value: SerializedType) => V;\n\n constructor(fields: {\n store: BaseStore<string, SerializedType>;\n keyEncoder: (key: K) => string;\n valueSerializer: (value: V) => SerializedType;\n valueDeserializer: (value: SerializedType) => V;\n }) {\n super(fields);\n this.store = fields.store;\n this.keyEncoder = fields.keyEncoder;\n this.valueSerializer = fields.valueSerializer;\n this.valueDeserializer = fields.valueDeserializer;\n }\n\n /**\n * Method to get multiple keys at once. It works with the encoded keys and\n * serialized values.\n * @param keys Array of keys to get\n * @returns Promise that resolves with an array of values or undefined for each key\n */\n async mget(keys: K[]): Promise<(V | undefined)[]> {\n const encodedKeys = keys.map(this.keyEncoder);\n const values = await this.store.mget(encodedKeys);\n return values.map((value) => {\n if (value === undefined) {\n return undefined;\n }\n return this.valueDeserializer(value);\n });\n }\n\n /**\n * Method to set multiple keys at once. It works with the encoded keys and\n * serialized values.\n * @param keyValuePairs Array of key-value pairs to set\n * @returns Promise that resolves when the operation is complete\n */\n async mset(keyValuePairs: [K, V][]): Promise<void> {\n const encodedPairs: [string, SerializedType][] = keyValuePairs.map(\n ([key, value]) => [this.keyEncoder(key), this.valueSerializer(value)]\n );\n return this.store.mset(encodedPairs);\n }\n\n /**\n * Method to delete multiple keys at once. It works with the encoded keys.\n * @param keys Array of keys to delete\n * @returns Promise that resolves when the operation is complete\n */\n async mdelete(keys: K[]): Promise<void> {\n const encodedKeys = keys.map(this.keyEncoder);\n return this.store.mdelete(encodedKeys);\n }\n\n /**\n * Method to yield keys. It works with the encoded keys.\n * @param prefix Optional prefix to filter keys\n * @returns AsyncGenerator that yields keys\n */\n async *yieldKeys(prefix?: string | undefined): AsyncGenerator<string | K> {\n yield* this.store.yieldKeys(prefix);\n }\n}\n\nexport function createDocumentStoreFromByteStore(\n store: BaseStore<string, Uint8Array>\n) {\n const encoder = new TextEncoder();\n const decoder = new TextDecoder();\n return new EncoderBackedStore({\n store,\n keyEncoder: (key: string) => key,\n valueSerializer: (doc: Document) =>\n encoder.encode(\n JSON.stringify({ pageContent: doc.pageContent, metadata: doc.metadata })\n ),\n valueDeserializer: (bytes: Uint8Array) =>\n new Document(JSON.parse(decoder.decode(bytes))),\n });\n}\n"],"mappings":";;;;;;;;;;;;;;AASA,IAAa,qBAAb,cAAoEA,uBAAAA,UAGlE;CACA,eAAe,CAAC,aAAa,
|
|
1
|
+
{"version":3,"file":"encoder_backed.cjs","names":["BaseStore","Document"],"sources":["../../src/storage/encoder_backed.ts"],"sourcesContent":["import { Document } from \"@langchain/core/documents\";\nimport { BaseStore } from \"@langchain/core/stores\";\n\n/**\n * Class that provides a layer of abstraction over the base storage,\n * allowing for the encoding and decoding of keys and values. It extends\n * the BaseStore class.\n */\n// oxlint-disable-next-line @typescript-eslint/no-explicit-any\nexport class EncoderBackedStore<K, V, SerializedType = any> extends BaseStore<\n K,\n V\n> {\n lc_namespace = [\"langchain\", \"storage\"];\n\n store: BaseStore<string, SerializedType>;\n\n keyEncoder: (key: K) => string;\n\n valueSerializer: (value: V) => SerializedType;\n\n valueDeserializer: (value: SerializedType) => V;\n\n constructor(fields: {\n store: BaseStore<string, SerializedType>;\n keyEncoder: (key: K) => string;\n valueSerializer: (value: V) => SerializedType;\n valueDeserializer: (value: SerializedType) => V;\n }) {\n super(fields);\n this.store = fields.store;\n this.keyEncoder = fields.keyEncoder;\n this.valueSerializer = fields.valueSerializer;\n this.valueDeserializer = fields.valueDeserializer;\n }\n\n /**\n * Method to get multiple keys at once. It works with the encoded keys and\n * serialized values.\n * @param keys Array of keys to get\n * @returns Promise that resolves with an array of values or undefined for each key\n */\n async mget(keys: K[]): Promise<(V | undefined)[]> {\n const encodedKeys = keys.map(this.keyEncoder);\n const values = await this.store.mget(encodedKeys);\n return values.map((value) => {\n if (value === undefined) {\n return undefined;\n }\n return this.valueDeserializer(value);\n });\n }\n\n /**\n * Method to set multiple keys at once. It works with the encoded keys and\n * serialized values.\n * @param keyValuePairs Array of key-value pairs to set\n * @returns Promise that resolves when the operation is complete\n */\n async mset(keyValuePairs: [K, V][]): Promise<void> {\n const encodedPairs: [string, SerializedType][] = keyValuePairs.map(\n ([key, value]) => [this.keyEncoder(key), this.valueSerializer(value)]\n );\n return this.store.mset(encodedPairs);\n }\n\n /**\n * Method to delete multiple keys at once. It works with the encoded keys.\n * @param keys Array of keys to delete\n * @returns Promise that resolves when the operation is complete\n */\n async mdelete(keys: K[]): Promise<void> {\n const encodedKeys = keys.map(this.keyEncoder);\n return this.store.mdelete(encodedKeys);\n }\n\n /**\n * Method to yield keys. It works with the encoded keys.\n * @param prefix Optional prefix to filter keys\n * @returns AsyncGenerator that yields keys\n */\n async *yieldKeys(prefix?: string | undefined): AsyncGenerator<string | K> {\n yield* this.store.yieldKeys(prefix);\n }\n}\n\nexport function createDocumentStoreFromByteStore(\n store: BaseStore<string, Uint8Array>\n) {\n const encoder = new TextEncoder();\n const decoder = new TextDecoder();\n return new EncoderBackedStore({\n store,\n keyEncoder: (key: string) => key,\n valueSerializer: (doc: Document) =>\n encoder.encode(\n JSON.stringify({ pageContent: doc.pageContent, metadata: doc.metadata })\n ),\n valueDeserializer: (bytes: Uint8Array) =>\n new Document(JSON.parse(decoder.decode(bytes))),\n });\n}\n"],"mappings":";;;;;;;;;;;;;;AASA,IAAa,qBAAb,cAAoEA,uBAAAA,UAGlE;CACA,eAAe,CAAC,aAAa,SAAS;CAEtC;CAEA;CAEA;CAEA;CAEA,YAAY,QAKT;EACD,MAAM,MAAM;EACZ,KAAK,QAAQ,OAAO;EACpB,KAAK,aAAa,OAAO;EACzB,KAAK,kBAAkB,OAAO;EAC9B,KAAK,oBAAoB,OAAO;CAClC;;;;;;;CAQA,MAAM,KAAK,MAAuC;EAChD,MAAM,cAAc,KAAK,IAAI,KAAK,UAAU;EAE5C,QAAO,MADc,KAAK,MAAM,KAAK,WAAW,EAAA,CAClC,KAAK,UAAU;GAC3B,IAAI,UAAU,KAAA,GACZ;GAEF,OAAO,KAAK,kBAAkB,KAAK;EACrC,CAAC;CACH;;;;;;;CAQA,MAAM,KAAK,eAAwC;EACjD,MAAM,eAA2C,cAAc,KAC5D,CAAC,KAAK,WAAW,CAAC,KAAK,WAAW,GAAG,GAAG,KAAK,gBAAgB,KAAK,CAAC,CACtE;EACA,OAAO,KAAK,MAAM,KAAK,YAAY;CACrC;;;;;;CAOA,MAAM,QAAQ,MAA0B;EACtC,MAAM,cAAc,KAAK,IAAI,KAAK,UAAU;EAC5C,OAAO,KAAK,MAAM,QAAQ,WAAW;CACvC;;;;;;CAOA,OAAO,UAAU,QAAyD;EACxE,OAAO,KAAK,MAAM,UAAU,MAAM;CACpC;AACF;AAEA,SAAgB,iCACd,OACA;CACA,MAAM,UAAU,IAAI,YAAY;CAChC,MAAM,UAAU,IAAI,YAAY;CAChC,OAAO,IAAI,mBAAmB;EAC5B;EACA,aAAa,QAAgB;EAC7B,kBAAkB,QAChB,QAAQ,OACN,KAAK,UAAU;GAAE,aAAa,IAAI;GAAa,UAAU,IAAI;EAAS,CAAC,CACzE;EACF,oBAAoB,UAClB,IAAIC,0BAAAA,SAAS,KAAK,MAAM,QAAQ,OAAO,KAAK,CAAC,CAAC;CAClD,CAAC;AACH"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encoder_backed.d.cts","names":[],"sources":["../../src/storage/encoder_backed.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"encoder_backed.d.cts","names":[],"sources":["../../src/storage/encoder_backed.ts"],"mappings":";;;;;;;;cASa,mBAAmB,GAAG,GAAG,8BAA8B,UAClE,GACA;EAEA;EAEA,OAAO,kBAAkB;EAEzB,aAAa,KAAK;EAElB,kBAAkB,OAAO,MAAM;EAE/B,oBAAoB,OAAO,mBAAmB;EAE9C,YAAY;IACV,OAAO,kBAAkB;IACzB,aAAa,KAAK;IAClB,kBAAkB,OAAO,MAAM;IAC/B,oBAAoB,OAAO,mBAAmB;;;;;;;;EAe1C,KAAK,MAAM,MAAM,SAAS;;;;;;;EAiB1B,KAAK,gBAAgB,GAAG,OAAO;;;;;;EAY/B,QAAQ,MAAM,MAAM;;;;;;EAUnB,UAAU,8BAA8B,wBAAwB;;iBAKzD,iCACd,OAAO,kBAAkB,cAAW,2BAAA,SAAA,sBAAA,WAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encoder_backed.d.ts","names":[],"sources":["../../src/storage/encoder_backed.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"encoder_backed.d.ts","names":[],"sources":["../../src/storage/encoder_backed.ts"],"mappings":";;;;;;;;cASa,mBAAmB,GAAG,GAAG,8BAA8B,UAClE,GACA;EAEA;EAEA,OAAO,kBAAkB;EAEzB,aAAa,KAAK;EAElB,kBAAkB,OAAO,MAAM;EAE/B,oBAAoB,OAAO,mBAAmB;EAE9C,YAAY;IACV,OAAO,kBAAkB;IACzB,aAAa,KAAK;IAClB,kBAAkB,OAAO,MAAM;IAC/B,oBAAoB,OAAO,mBAAmB;;;;;;;;EAe1C,KAAK,MAAM,MAAM,SAAS;;;;;;;EAiB1B,KAAK,gBAAgB,GAAG,OAAO;;;;;;EAY/B,QAAQ,MAAM,MAAM;;;;;;EAUnB,UAAU,8BAA8B,wBAAwB;;iBAKzD,iCACd,OAAO,kBAAkB,cAAW,2BAAA,SAAA,sBAAA,WAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encoder_backed.js","names":[],"sources":["../../src/storage/encoder_backed.ts"],"sourcesContent":["import { Document } from \"@langchain/core/documents\";\nimport { BaseStore } from \"@langchain/core/stores\";\n\n/**\n * Class that provides a layer of abstraction over the base storage,\n * allowing for the encoding and decoding of keys and values. It extends\n * the BaseStore class.\n */\n// oxlint-disable-next-line @typescript-eslint/no-explicit-any\nexport class EncoderBackedStore<K, V, SerializedType = any> extends BaseStore<\n K,\n V\n> {\n lc_namespace = [\"langchain\", \"storage\"];\n\n store: BaseStore<string, SerializedType>;\n\n keyEncoder: (key: K) => string;\n\n valueSerializer: (value: V) => SerializedType;\n\n valueDeserializer: (value: SerializedType) => V;\n\n constructor(fields: {\n store: BaseStore<string, SerializedType>;\n keyEncoder: (key: K) => string;\n valueSerializer: (value: V) => SerializedType;\n valueDeserializer: (value: SerializedType) => V;\n }) {\n super(fields);\n this.store = fields.store;\n this.keyEncoder = fields.keyEncoder;\n this.valueSerializer = fields.valueSerializer;\n this.valueDeserializer = fields.valueDeserializer;\n }\n\n /**\n * Method to get multiple keys at once. It works with the encoded keys and\n * serialized values.\n * @param keys Array of keys to get\n * @returns Promise that resolves with an array of values or undefined for each key\n */\n async mget(keys: K[]): Promise<(V | undefined)[]> {\n const encodedKeys = keys.map(this.keyEncoder);\n const values = await this.store.mget(encodedKeys);\n return values.map((value) => {\n if (value === undefined) {\n return undefined;\n }\n return this.valueDeserializer(value);\n });\n }\n\n /**\n * Method to set multiple keys at once. It works with the encoded keys and\n * serialized values.\n * @param keyValuePairs Array of key-value pairs to set\n * @returns Promise that resolves when the operation is complete\n */\n async mset(keyValuePairs: [K, V][]): Promise<void> {\n const encodedPairs: [string, SerializedType][] = keyValuePairs.map(\n ([key, value]) => [this.keyEncoder(key), this.valueSerializer(value)]\n );\n return this.store.mset(encodedPairs);\n }\n\n /**\n * Method to delete multiple keys at once. It works with the encoded keys.\n * @param keys Array of keys to delete\n * @returns Promise that resolves when the operation is complete\n */\n async mdelete(keys: K[]): Promise<void> {\n const encodedKeys = keys.map(this.keyEncoder);\n return this.store.mdelete(encodedKeys);\n }\n\n /**\n * Method to yield keys. It works with the encoded keys.\n * @param prefix Optional prefix to filter keys\n * @returns AsyncGenerator that yields keys\n */\n async *yieldKeys(prefix?: string | undefined): AsyncGenerator<string | K> {\n yield* this.store.yieldKeys(prefix);\n }\n}\n\nexport function createDocumentStoreFromByteStore(\n store: BaseStore<string, Uint8Array>\n) {\n const encoder = new TextEncoder();\n const decoder = new TextDecoder();\n return new EncoderBackedStore({\n store,\n keyEncoder: (key: string) => key,\n valueSerializer: (doc: Document) =>\n encoder.encode(\n JSON.stringify({ pageContent: doc.pageContent, metadata: doc.metadata })\n ),\n valueDeserializer: (bytes: Uint8Array) =>\n new Document(JSON.parse(decoder.decode(bytes))),\n });\n}\n"],"mappings":";;;;;;;;;;;;;AASA,IAAa,qBAAb,cAAoE,UAGlE;CACA,eAAe,CAAC,aAAa,
|
|
1
|
+
{"version":3,"file":"encoder_backed.js","names":[],"sources":["../../src/storage/encoder_backed.ts"],"sourcesContent":["import { Document } from \"@langchain/core/documents\";\nimport { BaseStore } from \"@langchain/core/stores\";\n\n/**\n * Class that provides a layer of abstraction over the base storage,\n * allowing for the encoding and decoding of keys and values. It extends\n * the BaseStore class.\n */\n// oxlint-disable-next-line @typescript-eslint/no-explicit-any\nexport class EncoderBackedStore<K, V, SerializedType = any> extends BaseStore<\n K,\n V\n> {\n lc_namespace = [\"langchain\", \"storage\"];\n\n store: BaseStore<string, SerializedType>;\n\n keyEncoder: (key: K) => string;\n\n valueSerializer: (value: V) => SerializedType;\n\n valueDeserializer: (value: SerializedType) => V;\n\n constructor(fields: {\n store: BaseStore<string, SerializedType>;\n keyEncoder: (key: K) => string;\n valueSerializer: (value: V) => SerializedType;\n valueDeserializer: (value: SerializedType) => V;\n }) {\n super(fields);\n this.store = fields.store;\n this.keyEncoder = fields.keyEncoder;\n this.valueSerializer = fields.valueSerializer;\n this.valueDeserializer = fields.valueDeserializer;\n }\n\n /**\n * Method to get multiple keys at once. It works with the encoded keys and\n * serialized values.\n * @param keys Array of keys to get\n * @returns Promise that resolves with an array of values or undefined for each key\n */\n async mget(keys: K[]): Promise<(V | undefined)[]> {\n const encodedKeys = keys.map(this.keyEncoder);\n const values = await this.store.mget(encodedKeys);\n return values.map((value) => {\n if (value === undefined) {\n return undefined;\n }\n return this.valueDeserializer(value);\n });\n }\n\n /**\n * Method to set multiple keys at once. It works with the encoded keys and\n * serialized values.\n * @param keyValuePairs Array of key-value pairs to set\n * @returns Promise that resolves when the operation is complete\n */\n async mset(keyValuePairs: [K, V][]): Promise<void> {\n const encodedPairs: [string, SerializedType][] = keyValuePairs.map(\n ([key, value]) => [this.keyEncoder(key), this.valueSerializer(value)]\n );\n return this.store.mset(encodedPairs);\n }\n\n /**\n * Method to delete multiple keys at once. It works with the encoded keys.\n * @param keys Array of keys to delete\n * @returns Promise that resolves when the operation is complete\n */\n async mdelete(keys: K[]): Promise<void> {\n const encodedKeys = keys.map(this.keyEncoder);\n return this.store.mdelete(encodedKeys);\n }\n\n /**\n * Method to yield keys. It works with the encoded keys.\n * @param prefix Optional prefix to filter keys\n * @returns AsyncGenerator that yields keys\n */\n async *yieldKeys(prefix?: string | undefined): AsyncGenerator<string | K> {\n yield* this.store.yieldKeys(prefix);\n }\n}\n\nexport function createDocumentStoreFromByteStore(\n store: BaseStore<string, Uint8Array>\n) {\n const encoder = new TextEncoder();\n const decoder = new TextDecoder();\n return new EncoderBackedStore({\n store,\n keyEncoder: (key: string) => key,\n valueSerializer: (doc: Document) =>\n encoder.encode(\n JSON.stringify({ pageContent: doc.pageContent, metadata: doc.metadata })\n ),\n valueDeserializer: (bytes: Uint8Array) =>\n new Document(JSON.parse(decoder.decode(bytes))),\n });\n}\n"],"mappings":";;;;;;;;;;;;;AASA,IAAa,qBAAb,cAAoE,UAGlE;CACA,eAAe,CAAC,aAAa,SAAS;CAEtC;CAEA;CAEA;CAEA;CAEA,YAAY,QAKT;EACD,MAAM,MAAM;EACZ,KAAK,QAAQ,OAAO;EACpB,KAAK,aAAa,OAAO;EACzB,KAAK,kBAAkB,OAAO;EAC9B,KAAK,oBAAoB,OAAO;CAClC;;;;;;;CAQA,MAAM,KAAK,MAAuC;EAChD,MAAM,cAAc,KAAK,IAAI,KAAK,UAAU;EAE5C,QAAO,MADc,KAAK,MAAM,KAAK,WAAW,EAAA,CAClC,KAAK,UAAU;GAC3B,IAAI,UAAU,KAAA,GACZ;GAEF,OAAO,KAAK,kBAAkB,KAAK;EACrC,CAAC;CACH;;;;;;;CAQA,MAAM,KAAK,eAAwC;EACjD,MAAM,eAA2C,cAAc,KAC5D,CAAC,KAAK,WAAW,CAAC,KAAK,WAAW,GAAG,GAAG,KAAK,gBAAgB,KAAK,CAAC,CACtE;EACA,OAAO,KAAK,MAAM,KAAK,YAAY;CACrC;;;;;;CAOA,MAAM,QAAQ,MAA0B;EACtC,MAAM,cAAc,KAAK,IAAI,KAAK,UAAU;EAC5C,OAAO,KAAK,MAAM,QAAQ,WAAW;CACvC;;;;;;CAOA,OAAO,UAAU,QAAyD;EACxE,OAAO,KAAK,MAAM,UAAU,MAAM;CACpC;AACF;AAEA,SAAgB,iCACd,OACA;CACA,MAAM,UAAU,IAAI,YAAY;CAChC,MAAM,UAAU,IAAI,YAAY;CAChC,OAAO,IAAI,mBAAmB;EAC5B;EACA,aAAa,QAAgB;EAC7B,kBAAkB,QAChB,QAAQ,OACN,KAAK,UAAU;GAAE,aAAa,IAAI;GAAa,UAAU,IAAI;EAAS,CAAC,CACzE;EACF,oBAAoB,UAClB,IAAI,SAAS,KAAK,MAAM,QAAQ,OAAO,KAAK,CAAC,CAAC;CAClD,CAAC;AACH"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file_system.cjs","names":["BaseStore","fs","path"],"sources":["../../src/storage/file_system.ts"],"sourcesContent":["import * as fs from \"node:fs/promises\";\nimport * as path from \"node:path\";\nimport { BaseStore } from \"@langchain/core/stores\";\n\n/**\n * File system implementation of the BaseStore using a dictionary. Used for\n * storing key-value pairs in the file system.\n * @example\n * ```typescript\n * const store = await LocalFileStore.fromPath(\"./messages\");\n * await store.mset(\n * Array.from({ length: 5 }).map((_, index) => [\n * `message:id:${index}`,\n * new TextEncoder().encode(\n * JSON.stringify(\n * index % 2 === 0\n * ? new AIMessage(\"ai stuff...\")\n * : new HumanMessage(\"human stuff...\"),\n * ),\n * ),\n * ]),\n * );\n * const retrievedMessages = await store.mget([\"message:id:0\", \"message:id:1\"]);\n * console.log(retrievedMessages.map((v) => new TextDecoder().decode(v)));\n * for await (const key of store.yieldKeys(\"message:id:\")) {\n * await store.mdelete([key]);\n * }\n * ```\n *\n * @security **Security Notice** This file store\n * can alter any text file in the provided directory and any subfolders.\n * Make sure that the path you specify when initializing the store is free\n * of other files.\n */\nexport class LocalFileStore extends BaseStore<string, Uint8Array> {\n lc_namespace = [\"langchain\", \"storage\"];\n\n rootPath: string;\n\n private keyLocks: Map<string, Promise<void>> = new Map();\n\n constructor(fields: { rootPath: string }) {\n super(fields);\n this.rootPath = fields.rootPath;\n }\n\n /**\n * Read and parse the file at the given path.\n * @param key The key to read the file for.\n * @returns Promise that resolves to the parsed file content.\n */\n private async getParsedFile(key: string): Promise<Uint8Array | undefined> {\n // Validate the key to prevent path traversal\n if (!/^[a-zA-Z0-9_\\-:.]+$/.test(key)) {\n throw new Error(\n \"Invalid key. Only alphanumeric characters, underscores, hyphens, colons, and periods are allowed.\"\n );\n }\n try {\n const fileContent = await fs.readFile(this.getFullPath(key));\n if (!fileContent) {\n return undefined;\n }\n return fileContent;\n // oxlint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (e: any) {\n // File does not exist yet.\n if (\"code\" in e && e.code === \"ENOENT\") {\n return undefined;\n }\n throw new Error(\n `Error reading and parsing file at path: ${\n this.rootPath\n }.\\nError: ${JSON.stringify(e)}`\n );\n }\n }\n\n /**\n * Writes the given key-value pairs to the file at the given path.\n * @param fileContent An object with the key-value pairs to be written to the file.\n */\n private async setFileContent(content: Uint8Array, key: string) {\n await this.withKeyLock(key, async () => {\n const fullPath = this.getFullPath(key);\n try {\n await this.writeFileAtomically(content, fullPath);\n } catch (error) {\n throw new Error(\n `Error writing file at path: ${fullPath}.\\nError: ${JSON.stringify(\n error\n )}`\n );\n }\n });\n }\n\n /**\n * Returns the full path of the file where the value of the given key is stored.\n * @param key the key to get the full path for\n */\n private getFullPath(key: string): string {\n try {\n const keyAsTxtFile = `${key}.txt`;\n\n // Validate the key to prevent path traversal\n if (!/^[a-zA-Z0-9_.\\-/]+$/.test(key)) {\n throw new Error(`Invalid characters in key: ${key}`);\n }\n\n const fullPath = path.resolve(this.rootPath, keyAsTxtFile);\n const commonPath = path.resolve(this.rootPath);\n\n if (!fullPath.startsWith(commonPath)) {\n throw new Error(\n `Invalid key: ${key}. Key should be relative to the root path. ` +\n `Root path: ${this.rootPath}, Full path: ${fullPath}`\n );\n }\n\n return fullPath;\n } catch (e) {\n throw new Error(\n `Error getting full path for key: ${key}.\\nError: ${String(e)}`\n );\n }\n }\n\n /**\n * Retrieves the values associated with the given keys from the store.\n * @param keys Keys to retrieve values for.\n * @returns Array of values associated with the given keys.\n */\n async mget(keys: string[]) {\n const values: (Uint8Array | undefined)[] = [];\n for (const key of keys) {\n const fileContent = await this.getParsedFile(key);\n values.push(fileContent);\n }\n return values;\n }\n\n /**\n * Sets the values for the given keys in the store.\n * The last value for duplicate keys will be used.\n * @param keyValuePairs Array of key-value pairs to set in the store.\n * @returns Promise that resolves when all key-value pairs have been set.\n */\n async mset(keyValuePairs: [string, Uint8Array][]): Promise<void> {\n const deduped = new Map<string, Uint8Array>();\n for (const [key, value] of keyValuePairs) {\n deduped.set(key, value);\n }\n\n await Promise.all(\n Array.from(deduped.entries(), ([key, value]) =>\n this.setFileContent(value, key)\n )\n );\n }\n\n /**\n * Deletes the given keys and their associated values from the store.\n * @param keys Keys to delete from the store.\n * @returns Promise that resolves when all keys have been deleted.\n */\n async mdelete(keys: string[]): Promise<void> {\n await Promise.all(\n keys.map((key) =>\n this.withKeyLock(key, async () => {\n try {\n await fs.unlink(this.getFullPath(key));\n } catch (error) {\n if (!error || (error as { code?: string }).code !== \"ENOENT\") {\n throw error;\n }\n }\n })\n )\n );\n }\n\n /**\n * Asynchronous generator that yields keys from the store. If a prefix is\n * provided, it only yields keys that start with the prefix.\n * @param prefix Optional prefix to filter keys.\n * @returns AsyncGenerator that yields keys from the store.\n */\n async *yieldKeys(prefix?: string): AsyncGenerator<string> {\n const allFiles: string[] = await fs.readdir(this.rootPath);\n const allKeys = allFiles\n .filter((file) => file.endsWith(\".txt\"))\n .map((file) => file.replace(/\\.txt$/, \"\"));\n for (const key of allKeys) {\n if (prefix === undefined || key.startsWith(prefix)) {\n yield key;\n }\n }\n }\n\n /**\n * Static method for initializing the class.\n * Preforms a check to see if the directory exists, and if not, creates it.\n * @param path Path to the directory.\n * @returns Promise that resolves to an instance of the class.\n */\n static async fromPath(rootPath: string): Promise<LocalFileStore> {\n try {\n // Verifies the directory exists at the provided path, and that it is readable and writable.\n await fs.access(rootPath, fs.constants.R_OK | fs.constants.W_OK);\n } catch {\n try {\n // Directory does not exist, create it.\n await fs.mkdir(rootPath, { recursive: true });\n } catch (error) {\n throw new Error(\n `An error occurred creating directory at: ${rootPath}.\\nError: ${JSON.stringify(\n error\n )}`\n );\n }\n }\n\n // Clean up orphaned temp files left by interrupted atomic writes.\n try {\n const entries = await fs.readdir(rootPath);\n await Promise.all(\n entries\n .filter((file) => file.endsWith(\".tmp\"))\n .map((tempFile) =>\n fs.unlink(path.join(rootPath, tempFile)).catch(() => {})\n )\n );\n } catch {\n // Ignore cleanup errors.\n }\n\n return new this({ rootPath });\n }\n\n /**\n * Ensures calls for the same key run sequentially by chaining promises.\n * @param key Key to serialize operations for.\n * @param fn Async work to execute while the lock is held.\n * @returns Promise resolving with the callback result once the lock releases.\n */\n private async withKeyLock<T>(key: string, fn: () => Promise<T>): Promise<T> {\n const previous = this.keyLocks.get(key) ?? Promise.resolve();\n const waitForPrevious = previous.catch(() => {});\n\n let resolveCurrent: (() => void) | undefined;\n const current = new Promise<void>((resolve) => {\n resolveCurrent = resolve;\n });\n\n const tail = waitForPrevious.then(() => current);\n this.keyLocks.set(key, tail);\n\n await waitForPrevious;\n try {\n return await fn();\n } finally {\n resolveCurrent?.();\n if (this.keyLocks.get(key) === tail) {\n this.keyLocks.delete(key);\n }\n }\n }\n\n /**\n * Writes data to a temporary file before atomically renaming it into place.\n * @param content Serialized value to persist.\n * @param fullPath Destination path for the stored key.\n */\n private async writeFileAtomically(content: Uint8Array, fullPath: string) {\n const directory = path.dirname(fullPath);\n await fs.mkdir(directory, { recursive: true });\n\n const tempPath = `${fullPath}.${Date.now()}-${Math.random()\n .toString(16)\n .slice(2)}.tmp`;\n\n try {\n await fs.writeFile(tempPath, content);\n\n try {\n await fs.rename(tempPath, fullPath);\n } catch (renameError) {\n const code = (renameError as { code?: string }).code;\n if (renameError && (code === \"EPERM\" || code === \"EACCES\")) {\n await fs.writeFile(fullPath, content);\n await fs.unlink(tempPath).catch(() => {});\n } else {\n throw renameError;\n }\n }\n } catch (error) {\n await fs.unlink(tempPath).catch(() => {});\n throw error;\n }\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"file_system.cjs","names":["BaseStore","fs","path"],"sources":["../../src/storage/file_system.ts"],"sourcesContent":["import * as fs from \"node:fs/promises\";\nimport * as path from \"node:path\";\nimport { BaseStore } from \"@langchain/core/stores\";\n\n/**\n * File system implementation of the BaseStore using a dictionary. Used for\n * storing key-value pairs in the file system.\n * @example\n * ```typescript\n * const store = await LocalFileStore.fromPath(\"./messages\");\n * await store.mset(\n * Array.from({ length: 5 }).map((_, index) => [\n * `message:id:${index}`,\n * new TextEncoder().encode(\n * JSON.stringify(\n * index % 2 === 0\n * ? new AIMessage(\"ai stuff...\")\n * : new HumanMessage(\"human stuff...\"),\n * ),\n * ),\n * ]),\n * );\n * const retrievedMessages = await store.mget([\"message:id:0\", \"message:id:1\"]);\n * console.log(retrievedMessages.map((v) => new TextDecoder().decode(v)));\n * for await (const key of store.yieldKeys(\"message:id:\")) {\n * await store.mdelete([key]);\n * }\n * ```\n *\n * @security **Security Notice** This file store\n * can alter any text file in the provided directory and any subfolders.\n * Make sure that the path you specify when initializing the store is free\n * of other files.\n */\nexport class LocalFileStore extends BaseStore<string, Uint8Array> {\n lc_namespace = [\"langchain\", \"storage\"];\n\n rootPath: string;\n\n private keyLocks: Map<string, Promise<void>> = new Map();\n\n constructor(fields: { rootPath: string }) {\n super(fields);\n this.rootPath = fields.rootPath;\n }\n\n /**\n * Read and parse the file at the given path.\n * @param key The key to read the file for.\n * @returns Promise that resolves to the parsed file content.\n */\n private async getParsedFile(key: string): Promise<Uint8Array | undefined> {\n // Validate the key to prevent path traversal\n if (!/^[a-zA-Z0-9_\\-:.]+$/.test(key)) {\n throw new Error(\n \"Invalid key. Only alphanumeric characters, underscores, hyphens, colons, and periods are allowed.\"\n );\n }\n try {\n const fileContent = await fs.readFile(this.getFullPath(key));\n if (!fileContent) {\n return undefined;\n }\n return fileContent;\n // oxlint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (e: any) {\n // File does not exist yet.\n if (\"code\" in e && e.code === \"ENOENT\") {\n return undefined;\n }\n throw new Error(\n `Error reading and parsing file at path: ${\n this.rootPath\n }.\\nError: ${JSON.stringify(e)}`\n );\n }\n }\n\n /**\n * Writes the given key-value pairs to the file at the given path.\n * @param fileContent An object with the key-value pairs to be written to the file.\n */\n private async setFileContent(content: Uint8Array, key: string) {\n await this.withKeyLock(key, async () => {\n const fullPath = this.getFullPath(key);\n try {\n await this.writeFileAtomically(content, fullPath);\n } catch (error) {\n throw new Error(\n `Error writing file at path: ${fullPath}.\\nError: ${JSON.stringify(\n error\n )}`\n );\n }\n });\n }\n\n /**\n * Returns the full path of the file where the value of the given key is stored.\n * @param key the key to get the full path for\n */\n private getFullPath(key: string): string {\n try {\n const keyAsTxtFile = `${key}.txt`;\n\n // Validate the key to prevent path traversal\n if (!/^[a-zA-Z0-9_.\\-/]+$/.test(key)) {\n throw new Error(`Invalid characters in key: ${key}`);\n }\n\n const fullPath = path.resolve(this.rootPath, keyAsTxtFile);\n const commonPath = path.resolve(this.rootPath);\n\n if (!fullPath.startsWith(commonPath)) {\n throw new Error(\n `Invalid key: ${key}. Key should be relative to the root path. ` +\n `Root path: ${this.rootPath}, Full path: ${fullPath}`\n );\n }\n\n return fullPath;\n } catch (e) {\n throw new Error(\n `Error getting full path for key: ${key}.\\nError: ${String(e)}`\n );\n }\n }\n\n /**\n * Retrieves the values associated with the given keys from the store.\n * @param keys Keys to retrieve values for.\n * @returns Array of values associated with the given keys.\n */\n async mget(keys: string[]) {\n const values: (Uint8Array | undefined)[] = [];\n for (const key of keys) {\n const fileContent = await this.getParsedFile(key);\n values.push(fileContent);\n }\n return values;\n }\n\n /**\n * Sets the values for the given keys in the store.\n * The last value for duplicate keys will be used.\n * @param keyValuePairs Array of key-value pairs to set in the store.\n * @returns Promise that resolves when all key-value pairs have been set.\n */\n async mset(keyValuePairs: [string, Uint8Array][]): Promise<void> {\n const deduped = new Map<string, Uint8Array>();\n for (const [key, value] of keyValuePairs) {\n deduped.set(key, value);\n }\n\n await Promise.all(\n Array.from(deduped.entries(), ([key, value]) =>\n this.setFileContent(value, key)\n )\n );\n }\n\n /**\n * Deletes the given keys and their associated values from the store.\n * @param keys Keys to delete from the store.\n * @returns Promise that resolves when all keys have been deleted.\n */\n async mdelete(keys: string[]): Promise<void> {\n await Promise.all(\n keys.map((key) =>\n this.withKeyLock(key, async () => {\n try {\n await fs.unlink(this.getFullPath(key));\n } catch (error) {\n if (!error || (error as { code?: string }).code !== \"ENOENT\") {\n throw error;\n }\n }\n })\n )\n );\n }\n\n /**\n * Asynchronous generator that yields keys from the store. If a prefix is\n * provided, it only yields keys that start with the prefix.\n * @param prefix Optional prefix to filter keys.\n * @returns AsyncGenerator that yields keys from the store.\n */\n async *yieldKeys(prefix?: string): AsyncGenerator<string> {\n const allFiles: string[] = await fs.readdir(this.rootPath);\n const allKeys = allFiles\n .filter((file) => file.endsWith(\".txt\"))\n .map((file) => file.replace(/\\.txt$/, \"\"));\n for (const key of allKeys) {\n if (prefix === undefined || key.startsWith(prefix)) {\n yield key;\n }\n }\n }\n\n /**\n * Static method for initializing the class.\n * Preforms a check to see if the directory exists, and if not, creates it.\n * @param path Path to the directory.\n * @returns Promise that resolves to an instance of the class.\n */\n static async fromPath(rootPath: string): Promise<LocalFileStore> {\n try {\n // Verifies the directory exists at the provided path, and that it is readable and writable.\n await fs.access(rootPath, fs.constants.R_OK | fs.constants.W_OK);\n } catch {\n try {\n // Directory does not exist, create it.\n await fs.mkdir(rootPath, { recursive: true });\n } catch (error) {\n throw new Error(\n `An error occurred creating directory at: ${rootPath}.\\nError: ${JSON.stringify(\n error\n )}`\n );\n }\n }\n\n // Clean up orphaned temp files left by interrupted atomic writes.\n try {\n const entries = await fs.readdir(rootPath);\n await Promise.all(\n entries\n .filter((file) => file.endsWith(\".tmp\"))\n .map((tempFile) =>\n fs.unlink(path.join(rootPath, tempFile)).catch(() => {})\n )\n );\n } catch {\n // Ignore cleanup errors.\n }\n\n return new this({ rootPath });\n }\n\n /**\n * Ensures calls for the same key run sequentially by chaining promises.\n * @param key Key to serialize operations for.\n * @param fn Async work to execute while the lock is held.\n * @returns Promise resolving with the callback result once the lock releases.\n */\n private async withKeyLock<T>(key: string, fn: () => Promise<T>): Promise<T> {\n const previous = this.keyLocks.get(key) ?? Promise.resolve();\n const waitForPrevious = previous.catch(() => {});\n\n let resolveCurrent: (() => void) | undefined;\n const current = new Promise<void>((resolve) => {\n resolveCurrent = resolve;\n });\n\n const tail = waitForPrevious.then(() => current);\n this.keyLocks.set(key, tail);\n\n await waitForPrevious;\n try {\n return await fn();\n } finally {\n resolveCurrent?.();\n if (this.keyLocks.get(key) === tail) {\n this.keyLocks.delete(key);\n }\n }\n }\n\n /**\n * Writes data to a temporary file before atomically renaming it into place.\n * @param content Serialized value to persist.\n * @param fullPath Destination path for the stored key.\n */\n private async writeFileAtomically(content: Uint8Array, fullPath: string) {\n const directory = path.dirname(fullPath);\n await fs.mkdir(directory, { recursive: true });\n\n const tempPath = `${fullPath}.${Date.now()}-${Math.random()\n .toString(16)\n .slice(2)}.tmp`;\n\n try {\n await fs.writeFile(tempPath, content);\n\n try {\n await fs.rename(tempPath, fullPath);\n } catch (renameError) {\n const code = (renameError as { code?: string }).code;\n if (renameError && (code === \"EPERM\" || code === \"EACCES\")) {\n await fs.writeFile(fullPath, content);\n await fs.unlink(tempPath).catch(() => {});\n } else {\n throw renameError;\n }\n }\n } catch (error) {\n await fs.unlink(tempPath).catch(() => {});\n throw error;\n }\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { BaseStore } from "@langchain/core/stores";
|
|
2
|
-
|
|
3
2
|
//#region src/storage/file_system.d.ts
|
|
4
3
|
/**
|
|
5
4
|
* File system implementation of the BaseStore using a dictionary. Used for
|
|
@@ -38,7 +37,16 @@ declare class LocalFileStore extends BaseStore<string, Uint8Array> {
|
|
|
38
37
|
constructor(fields: {
|
|
39
38
|
rootPath: string;
|
|
40
39
|
});
|
|
40
|
+
/**
|
|
41
|
+
* Read and parse the file at the given path.
|
|
42
|
+
* @param key The key to read the file for.
|
|
43
|
+
* @returns Promise that resolves to the parsed file content.
|
|
44
|
+
*/
|
|
41
45
|
private getParsedFile;
|
|
46
|
+
/**
|
|
47
|
+
* Writes the given key-value pairs to the file at the given path.
|
|
48
|
+
* @param fileContent An object with the key-value pairs to be written to the file.
|
|
49
|
+
*/
|
|
42
50
|
private setFileContent;
|
|
43
51
|
/**
|
|
44
52
|
* Returns the full path of the file where the value of the given key is stored.
|
|
@@ -78,7 +86,18 @@ declare class LocalFileStore extends BaseStore<string, Uint8Array> {
|
|
|
78
86
|
* @returns Promise that resolves to an instance of the class.
|
|
79
87
|
*/
|
|
80
88
|
static fromPath(rootPath: string): Promise<LocalFileStore>;
|
|
89
|
+
/**
|
|
90
|
+
* Ensures calls for the same key run sequentially by chaining promises.
|
|
91
|
+
* @param key Key to serialize operations for.
|
|
92
|
+
* @param fn Async work to execute while the lock is held.
|
|
93
|
+
* @returns Promise resolving with the callback result once the lock releases.
|
|
94
|
+
*/
|
|
81
95
|
private withKeyLock;
|
|
96
|
+
/**
|
|
97
|
+
* Writes data to a temporary file before atomically renaming it into place.
|
|
98
|
+
* @param content Serialized value to persist.
|
|
99
|
+
* @param fullPath Destination path for the stored key.
|
|
100
|
+
*/
|
|
82
101
|
private writeFileAtomically;
|
|
83
102
|
}
|
|
84
103
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file_system.d.cts","names":[],"sources":["../../src/storage/file_system.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"file_system.d.cts","names":[],"sources":["../../src/storage/file_system.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAkCa,uBAAuB,kBAAkB;EACpD;EAEA;UAEQ;EAER,YAAY;IAAU;;;;;;;UAUR;;;;;UA+BA;;;;;UAmBN;;;;;;EAgCF,KAAK,iBAAc,SAAA,WAAA;;;;;;;EAenB,KAAK,wBAAwB,gBAAgB;;;;;;EAkB7C,QAAQ,iBAAiB;;;;;;;EAsBxB,UAAU,kBAAkB;;;;;;;SAkBtB,SAAS,mBAAmB,QAAQ;;;;;;;UAwCnC;;;;;;UA4BA"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { BaseStore } from "@langchain/core/stores";
|
|
2
|
-
|
|
3
2
|
//#region src/storage/file_system.d.ts
|
|
4
3
|
/**
|
|
5
4
|
* File system implementation of the BaseStore using a dictionary. Used for
|
|
@@ -38,7 +37,16 @@ declare class LocalFileStore extends BaseStore<string, Uint8Array> {
|
|
|
38
37
|
constructor(fields: {
|
|
39
38
|
rootPath: string;
|
|
40
39
|
});
|
|
40
|
+
/**
|
|
41
|
+
* Read and parse the file at the given path.
|
|
42
|
+
* @param key The key to read the file for.
|
|
43
|
+
* @returns Promise that resolves to the parsed file content.
|
|
44
|
+
*/
|
|
41
45
|
private getParsedFile;
|
|
46
|
+
/**
|
|
47
|
+
* Writes the given key-value pairs to the file at the given path.
|
|
48
|
+
* @param fileContent An object with the key-value pairs to be written to the file.
|
|
49
|
+
*/
|
|
42
50
|
private setFileContent;
|
|
43
51
|
/**
|
|
44
52
|
* Returns the full path of the file where the value of the given key is stored.
|
|
@@ -78,7 +86,18 @@ declare class LocalFileStore extends BaseStore<string, Uint8Array> {
|
|
|
78
86
|
* @returns Promise that resolves to an instance of the class.
|
|
79
87
|
*/
|
|
80
88
|
static fromPath(rootPath: string): Promise<LocalFileStore>;
|
|
89
|
+
/**
|
|
90
|
+
* Ensures calls for the same key run sequentially by chaining promises.
|
|
91
|
+
* @param key Key to serialize operations for.
|
|
92
|
+
* @param fn Async work to execute while the lock is held.
|
|
93
|
+
* @returns Promise resolving with the callback result once the lock releases.
|
|
94
|
+
*/
|
|
81
95
|
private withKeyLock;
|
|
96
|
+
/**
|
|
97
|
+
* Writes data to a temporary file before atomically renaming it into place.
|
|
98
|
+
* @param content Serialized value to persist.
|
|
99
|
+
* @param fullPath Destination path for the stored key.
|
|
100
|
+
*/
|
|
82
101
|
private writeFileAtomically;
|
|
83
102
|
}
|
|
84
103
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file_system.d.ts","names":[],"sources":["../../src/storage/file_system.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"file_system.d.ts","names":[],"sources":["../../src/storage/file_system.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAkCa,uBAAuB,kBAAkB;EACpD;EAEA;UAEQ;EAER,YAAY;IAAU;;;;;;;UAUR;;;;;UA+BA;;;;;UAmBN;;;;;;EAgCF,KAAK,iBAAc,SAAA,WAAA;;;;;;;EAenB,KAAK,wBAAwB,gBAAgB;;;;;;EAkB7C,QAAQ,iBAAiB;;;;;;;EAsBxB,UAAU,kBAAkB;;;;;;;SAkBtB,SAAS,mBAAmB,QAAQ;;;;;;;UAwCnC;;;;;;UA4BA"}
|