@langchain/core 1.0.0-alpha.3 → 1.0.0-alpha.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -19
- package/dist/caches/base.cjs +2 -2
- package/dist/caches/base.cjs.map +1 -1
- package/dist/callbacks/base.d.ts.map +1 -1
- package/dist/document_loaders/langsmith.cjs +1 -1
- package/dist/document_loaders/langsmith.cjs.map +1 -1
- package/dist/document_loaders/langsmith.js +1 -1
- package/dist/document_loaders/langsmith.js.map +1 -1
- package/dist/embeddings.cjs.map +1 -1
- package/dist/embeddings.d.cts +6 -6
- package/dist/embeddings.d.cts.map +1 -1
- package/dist/embeddings.d.ts +6 -6
- package/dist/embeddings.d.ts.map +1 -1
- package/dist/embeddings.js.map +1 -1
- package/dist/errors/index.cjs.map +1 -1
- package/dist/errors/index.js.map +1 -1
- package/dist/indexing/base.cjs +2 -2
- package/dist/indexing/base.cjs.map +1 -1
- package/dist/indexing/base.d.cts +0 -3
- package/dist/indexing/base.d.cts.map +1 -1
- package/dist/indexing/base.d.ts +0 -3
- package/dist/indexing/base.d.ts.map +1 -1
- package/dist/indexing/base.js +2 -2
- package/dist/indexing/base.js.map +1 -1
- package/dist/language_models/base.cjs +1 -1
- package/dist/language_models/base.cjs.map +1 -1
- package/dist/language_models/base.d.cts +3 -3
- package/dist/language_models/base.d.cts.map +1 -1
- package/dist/language_models/base.d.ts +3 -3
- package/dist/language_models/base.d.ts.map +1 -1
- package/dist/language_models/base.js +1 -1
- package/dist/language_models/base.js.map +1 -1
- package/dist/language_models/chat_models.cjs.map +1 -1
- package/dist/language_models/chat_models.d.ts.map +1 -1
- package/dist/language_models/chat_models.js.map +1 -1
- package/dist/language_models/llms.cjs.map +1 -1
- package/dist/language_models/llms.js.map +1 -1
- package/dist/load/import_map.cjs +1 -5
- package/dist/load/import_map.cjs.map +1 -1
- package/dist/load/import_map.js +3 -7
- package/dist/load/import_map.js.map +1 -1
- package/dist/load/index.cjs.map +1 -1
- package/dist/load/index.js.map +1 -1
- package/dist/load/serializable.cjs.map +1 -1
- package/dist/load/serializable.d.cts +1 -3
- package/dist/load/serializable.d.cts.map +1 -1
- package/dist/load/serializable.d.ts +1 -3
- package/dist/load/serializable.d.ts.map +1 -1
- package/dist/load/serializable.js.map +1 -1
- package/dist/messages/ai.cjs +2 -2
- package/dist/messages/ai.cjs.map +1 -1
- package/dist/messages/ai.js +2 -2
- package/dist/messages/ai.js.map +1 -1
- package/dist/messages/base.cjs +5 -5
- package/dist/messages/base.cjs.map +1 -1
- package/dist/messages/base.d.cts +1 -2
- package/dist/messages/base.d.cts.map +1 -1
- package/dist/messages/base.d.ts +1 -2
- package/dist/messages/base.d.ts.map +1 -1
- package/dist/messages/base.js +5 -5
- package/dist/messages/base.js.map +1 -1
- package/dist/messages/block_translators/utils.cjs +1 -1
- package/dist/messages/block_translators/utils.cjs.map +1 -1
- package/dist/messages/block_translators/utils.js +1 -1
- package/dist/messages/block_translators/utils.js.map +1 -1
- package/dist/messages/index.cjs +1 -1
- package/dist/messages/index.js +1 -1
- package/dist/messages/modifier.cjs +4 -1
- package/dist/messages/modifier.cjs.map +1 -1
- package/dist/messages/modifier.js +4 -1
- package/dist/messages/modifier.js.map +1 -1
- package/dist/messages/tool.cjs +7 -7
- package/dist/messages/tool.cjs.map +1 -1
- package/dist/messages/tool.js +7 -7
- package/dist/messages/tool.js.map +1 -1
- package/dist/messages/transformers.cjs +2 -2
- package/dist/messages/transformers.cjs.map +1 -1
- package/dist/messages/transformers.js +2 -2
- package/dist/messages/transformers.js.map +1 -1
- package/dist/messages/utils.cjs +5 -0
- package/dist/messages/utils.cjs.map +1 -1
- package/dist/messages/utils.js +5 -0
- package/dist/messages/utils.js.map +1 -1
- package/dist/output_parsers/list.cjs +1 -1
- package/dist/output_parsers/list.cjs.map +1 -1
- package/dist/output_parsers/list.js +1 -1
- package/dist/output_parsers/list.js.map +1 -1
- package/dist/output_parsers/openai_functions/json_output_functions_parsers.d.cts +1 -1
- package/dist/output_parsers/openai_functions/json_output_functions_parsers.d.ts +1 -1
- package/dist/output_parsers/openai_tools/json_output_tools_parsers.cjs +1 -1
- package/dist/output_parsers/openai_tools/json_output_tools_parsers.cjs.map +1 -1
- package/dist/output_parsers/openai_tools/json_output_tools_parsers.js +1 -1
- package/dist/output_parsers/openai_tools/json_output_tools_parsers.js.map +1 -1
- package/dist/output_parsers/structured.cjs +2 -1
- package/dist/output_parsers/structured.cjs.map +1 -1
- package/dist/output_parsers/structured.js +2 -1
- package/dist/output_parsers/structured.js.map +1 -1
- package/dist/prompts/chat.cjs +3 -1
- package/dist/prompts/chat.cjs.map +1 -1
- package/dist/prompts/chat.d.cts +4 -12
- package/dist/prompts/chat.d.cts.map +1 -1
- package/dist/prompts/chat.d.ts +4 -12
- package/dist/prompts/chat.d.ts.map +1 -1
- package/dist/prompts/chat.js +3 -1
- package/dist/prompts/chat.js.map +1 -1
- package/dist/prompts/image.cjs.map +1 -1
- package/dist/prompts/image.d.cts +0 -2
- package/dist/prompts/image.d.cts.map +1 -1
- package/dist/prompts/image.d.ts +0 -2
- package/dist/prompts/image.d.ts.map +1 -1
- package/dist/prompts/image.js.map +1 -1
- package/dist/prompts/pipeline.cjs.map +1 -1
- package/dist/prompts/pipeline.js.map +1 -1
- package/dist/prompts/prompt.cjs.map +1 -1
- package/dist/prompts/prompt.d.cts +4 -16
- package/dist/prompts/prompt.d.cts.map +1 -1
- package/dist/prompts/prompt.d.ts +4 -16
- package/dist/prompts/prompt.d.ts.map +1 -1
- package/dist/prompts/prompt.js.map +1 -1
- package/dist/prompts/structured.cjs.map +1 -1
- package/dist/prompts/structured.js.map +1 -1
- package/dist/prompts/template.cjs +4 -2
- package/dist/prompts/template.cjs.map +1 -1
- package/dist/prompts/template.js +4 -2
- package/dist/prompts/template.js.map +1 -1
- package/dist/runnables/base.cjs +6 -6
- package/dist/runnables/base.cjs.map +1 -1
- package/dist/runnables/base.d.cts +0 -3
- package/dist/runnables/base.d.cts.map +1 -1
- package/dist/runnables/base.d.ts +0 -3
- package/dist/runnables/base.d.ts.map +1 -1
- package/dist/runnables/base.js +6 -6
- package/dist/runnables/base.js.map +1 -1
- package/dist/runnables/branch.cjs +2 -2
- package/dist/runnables/branch.cjs.map +1 -1
- package/dist/runnables/branch.js +2 -2
- package/dist/runnables/branch.js.map +1 -1
- package/dist/runnables/config.cjs.map +1 -1
- package/dist/runnables/config.js.map +1 -1
- package/dist/runnables/graph.cjs +1 -1
- package/dist/runnables/graph.cjs.map +1 -1
- package/dist/runnables/graph.js +1 -1
- package/dist/runnables/graph.js.map +1 -1
- package/dist/runnables/graph_mermaid.cjs +26 -3
- package/dist/runnables/graph_mermaid.cjs.map +1 -1
- package/dist/runnables/graph_mermaid.js +26 -3
- package/dist/runnables/graph_mermaid.js.map +1 -1
- package/dist/runnables/remote.cjs.map +1 -1
- package/dist/runnables/remote.js.map +1 -1
- package/dist/runnables/types.d.cts +0 -1
- package/dist/runnables/types.d.cts.map +1 -1
- package/dist/runnables/types.d.ts +0 -1
- package/dist/runnables/types.d.ts.map +1 -1
- package/dist/singletons/async_local_storage/context.cjs.map +1 -1
- package/dist/singletons/async_local_storage/context.d.cts +0 -1
- package/dist/singletons/async_local_storage/context.d.cts.map +1 -1
- package/dist/singletons/async_local_storage/context.d.ts +0 -1
- package/dist/singletons/async_local_storage/context.d.ts.map +1 -1
- package/dist/singletons/async_local_storage/context.js.map +1 -1
- package/dist/singletons/callbacks.cjs.map +1 -1
- package/dist/singletons/callbacks.js.map +1 -1
- package/dist/tools/index.cjs.map +1 -1
- package/dist/tools/index.d.cts +2 -2
- package/dist/tools/index.d.cts.map +1 -1
- package/dist/tools/index.d.ts +2 -2
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/types.d.cts +5 -5
- package/dist/tools/types.d.cts.map +1 -1
- package/dist/tools/types.d.ts +5 -5
- package/dist/tools/types.d.ts.map +1 -1
- package/dist/tracers/base.cjs.map +1 -1
- package/dist/tracers/base.js.map +1 -1
- package/dist/tracers/console.cjs +1 -1
- package/dist/tracers/console.cjs.map +1 -1
- package/dist/tracers/console.js +1 -1
- package/dist/tracers/console.js.map +1 -1
- package/dist/tracers/event_stream.cjs +1 -1
- package/dist/tracers/event_stream.cjs.map +1 -1
- package/dist/tracers/event_stream.d.cts +0 -1
- package/dist/tracers/event_stream.d.cts.map +1 -1
- package/dist/tracers/event_stream.d.ts +0 -1
- package/dist/tracers/event_stream.d.ts.map +1 -1
- package/dist/tracers/event_stream.js +1 -1
- package/dist/tracers/event_stream.js.map +1 -1
- package/dist/tracers/log_stream.cjs.map +1 -1
- package/dist/tracers/log_stream.js.map +1 -1
- package/dist/tracers/tracer_langchain.cjs.map +1 -1
- package/dist/tracers/tracer_langchain.js.map +1 -1
- package/dist/utils/chunk_array.cjs.map +1 -1
- package/dist/utils/chunk_array.js.map +1 -1
- package/dist/utils/env.cjs +1 -1
- package/dist/utils/env.cjs.map +1 -1
- package/dist/utils/env.js +1 -1
- package/dist/utils/env.js.map +1 -1
- package/dist/utils/event_source_parse.cjs.map +1 -1
- package/dist/utils/event_source_parse.d.cts.map +1 -1
- package/dist/utils/event_source_parse.d.ts.map +1 -1
- package/dist/utils/event_source_parse.js.map +1 -1
- package/dist/utils/hash.cjs +3 -8
- package/dist/utils/hash.cjs.map +1 -1
- package/dist/utils/hash.d.cts +1 -2
- package/dist/utils/hash.d.cts.map +1 -1
- package/dist/utils/hash.d.ts +1 -2
- package/dist/utils/hash.d.ts.map +1 -1
- package/dist/utils/hash.js +2 -6
- package/dist/utils/hash.js.map +1 -1
- package/dist/utils/js-sha256/hash.cjs +0 -9
- package/dist/utils/js-sha256/hash.cjs.map +1 -1
- package/dist/utils/js-sha256/hash.js +1 -5
- package/dist/utils/js-sha256/hash.js.map +1 -1
- package/dist/utils/json.cjs +2 -2
- package/dist/utils/json.cjs.map +1 -1
- package/dist/utils/json.js +2 -2
- package/dist/utils/json.js.map +1 -1
- package/dist/utils/json_schema.cjs +3 -2
- package/dist/utils/json_schema.cjs.map +1 -1
- package/dist/utils/json_schema.d.cts +8 -4
- package/dist/utils/json_schema.d.cts.map +1 -1
- package/dist/utils/json_schema.d.ts +8 -4
- package/dist/utils/json_schema.d.ts.map +1 -1
- package/dist/utils/json_schema.js +2 -1
- package/dist/utils/json_schema.js.map +1 -1
- package/dist/utils/stream.cjs.map +1 -1
- package/dist/utils/stream.js.map +1 -1
- package/dist/utils/testing/index.cjs.map +1 -1
- package/dist/utils/testing/index.d.cts +4 -9
- package/dist/utils/testing/index.d.cts.map +1 -1
- package/dist/utils/testing/index.d.ts +4 -9
- package/dist/utils/testing/index.d.ts.map +1 -1
- package/dist/utils/testing/index.js.map +1 -1
- package/dist/utils/zod-to-json-schema/Options.cjs +40 -0
- package/dist/utils/zod-to-json-schema/Options.cjs.map +1 -0
- package/dist/utils/zod-to-json-schema/Options.js +37 -0
- package/dist/utils/zod-to-json-schema/Options.js.map +1 -0
- package/dist/utils/zod-to-json-schema/Refs.cjs +30 -0
- package/dist/utils/zod-to-json-schema/Refs.cjs.map +1 -0
- package/dist/utils/zod-to-json-schema/Refs.js +30 -0
- package/dist/utils/zod-to-json-schema/Refs.js.map +1 -0
- package/dist/utils/zod-to-json-schema/errorMessages.cjs +18 -0
- package/dist/utils/zod-to-json-schema/errorMessages.cjs.map +1 -0
- package/dist/utils/zod-to-json-schema/errorMessages.d.cts +11 -0
- package/dist/utils/zod-to-json-schema/errorMessages.d.cts.map +1 -0
- package/dist/utils/zod-to-json-schema/errorMessages.d.ts +11 -0
- package/dist/utils/zod-to-json-schema/errorMessages.d.ts.map +1 -0
- package/dist/utils/zod-to-json-schema/errorMessages.js +16 -0
- package/dist/utils/zod-to-json-schema/errorMessages.js.map +1 -0
- package/dist/utils/zod-to-json-schema/getRelativePath.cjs +11 -0
- package/dist/utils/zod-to-json-schema/getRelativePath.cjs.map +1 -0
- package/dist/utils/zod-to-json-schema/getRelativePath.js +10 -0
- package/dist/utils/zod-to-json-schema/getRelativePath.js.map +1 -0
- package/dist/utils/zod-to-json-schema/index.cjs +37 -0
- package/dist/utils/zod-to-json-schema/index.js +37 -0
- package/dist/utils/zod-to-json-schema/parseDef.cjs +57 -0
- package/dist/utils/zod-to-json-schema/parseDef.cjs.map +1 -0
- package/dist/utils/zod-to-json-schema/parseDef.js +57 -0
- package/dist/utils/zod-to-json-schema/parseDef.js.map +1 -0
- package/dist/utils/zod-to-json-schema/parseTypes.d.cts +38 -0
- package/dist/utils/zod-to-json-schema/parseTypes.d.cts.map +1 -0
- package/dist/utils/zod-to-json-schema/parseTypes.d.ts +38 -0
- package/dist/utils/zod-to-json-schema/parseTypes.d.ts.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/any.cjs +17 -0
- package/dist/utils/zod-to-json-schema/parsers/any.cjs.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/any.d.cts +7 -0
- package/dist/utils/zod-to-json-schema/parsers/any.d.cts.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/any.d.ts +7 -0
- package/dist/utils/zod-to-json-schema/parsers/any.d.ts.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/any.js +17 -0
- package/dist/utils/zod-to-json-schema/parsers/any.js.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/array.cjs +24 -0
- package/dist/utils/zod-to-json-schema/parsers/array.cjs.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/array.d.cts +14 -0
- package/dist/utils/zod-to-json-schema/parsers/array.d.cts.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/array.d.ts +15 -0
- package/dist/utils/zod-to-json-schema/parsers/array.d.ts.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/array.js +23 -0
- package/dist/utils/zod-to-json-schema/parsers/array.js.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/bigint.cjs +36 -0
- package/dist/utils/zod-to-json-schema/parsers/bigint.cjs.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/bigint.d.cts +16 -0
- package/dist/utils/zod-to-json-schema/parsers/bigint.d.cts.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/bigint.d.ts +17 -0
- package/dist/utils/zod-to-json-schema/parsers/bigint.d.ts.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/bigint.js +36 -0
- package/dist/utils/zod-to-json-schema/parsers/bigint.js.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/boolean.cjs +9 -0
- package/dist/utils/zod-to-json-schema/parsers/boolean.cjs.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/boolean.d.cts +7 -0
- package/dist/utils/zod-to-json-schema/parsers/boolean.d.cts.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/boolean.d.ts +7 -0
- package/dist/utils/zod-to-json-schema/parsers/boolean.d.ts.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/boolean.js +8 -0
- package/dist/utils/zod-to-json-schema/parsers/boolean.js.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/branded.cjs +10 -0
- package/dist/utils/zod-to-json-schema/parsers/branded.cjs.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/branded.js +10 -0
- package/dist/utils/zod-to-json-schema/parsers/branded.js.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/catch.cjs +10 -0
- package/dist/utils/zod-to-json-schema/parsers/catch.cjs.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/catch.js +10 -0
- package/dist/utils/zod-to-json-schema/parsers/catch.js.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/date.cjs +39 -0
- package/dist/utils/zod-to-json-schema/parsers/date.cjs.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/date.d.cts +17 -0
- package/dist/utils/zod-to-json-schema/parsers/date.d.cts.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/date.d.ts +17 -0
- package/dist/utils/zod-to-json-schema/parsers/date.d.ts.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/date.js +39 -0
- package/dist/utils/zod-to-json-schema/parsers/date.js.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/default.cjs +13 -0
- package/dist/utils/zod-to-json-schema/parsers/default.cjs.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/default.js +13 -0
- package/dist/utils/zod-to-json-schema/parsers/default.js.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/effects.cjs +11 -0
- package/dist/utils/zod-to-json-schema/parsers/effects.cjs.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/effects.js +11 -0
- package/dist/utils/zod-to-json-schema/parsers/effects.js.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/enum.cjs +12 -0
- package/dist/utils/zod-to-json-schema/parsers/enum.cjs.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/enum.d.cts +8 -0
- package/dist/utils/zod-to-json-schema/parsers/enum.d.cts.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/enum.d.ts +10 -0
- package/dist/utils/zod-to-json-schema/parsers/enum.d.ts.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/enum.js +11 -0
- package/dist/utils/zod-to-json-schema/parsers/enum.js.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/intersection.cjs +47 -0
- package/dist/utils/zod-to-json-schema/parsers/intersection.cjs.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/intersection.d.cts +10 -0
- package/dist/utils/zod-to-json-schema/parsers/intersection.d.cts.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/intersection.d.ts +11 -0
- package/dist/utils/zod-to-json-schema/parsers/intersection.d.ts.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/intersection.js +47 -0
- package/dist/utils/zod-to-json-schema/parsers/intersection.js.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/literal.cjs +18 -0
- package/dist/utils/zod-to-json-schema/parsers/literal.cjs.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/literal.d.cts +11 -0
- package/dist/utils/zod-to-json-schema/parsers/literal.d.cts.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/literal.d.ts +12 -0
- package/dist/utils/zod-to-json-schema/parsers/literal.d.ts.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/literal.js +17 -0
- package/dist/utils/zod-to-json-schema/parsers/literal.js.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/map.cjs +40 -0
- package/dist/utils/zod-to-json-schema/parsers/map.cjs.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/map.d.cts +17 -0
- package/dist/utils/zod-to-json-schema/parsers/map.d.cts.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/map.d.ts +17 -0
- package/dist/utils/zod-to-json-schema/parsers/map.d.ts.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/map.js +40 -0
- package/dist/utils/zod-to-json-schema/parsers/map.js.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/nativeEnum.cjs +18 -0
- package/dist/utils/zod-to-json-schema/parsers/nativeEnum.cjs.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/nativeEnum.d.cts +8 -0
- package/dist/utils/zod-to-json-schema/parsers/nativeEnum.d.cts.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/nativeEnum.d.ts +10 -0
- package/dist/utils/zod-to-json-schema/parsers/nativeEnum.d.ts.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/nativeEnum.js +17 -0
- package/dist/utils/zod-to-json-schema/parsers/nativeEnum.js.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/never.cjs +13 -0
- package/dist/utils/zod-to-json-schema/parsers/never.cjs.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/never.d.cts +9 -0
- package/dist/utils/zod-to-json-schema/parsers/never.d.cts.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/never.d.ts +9 -0
- package/dist/utils/zod-to-json-schema/parsers/never.d.ts.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/never.js +13 -0
- package/dist/utils/zod-to-json-schema/parsers/never.js.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/null.cjs +12 -0
- package/dist/utils/zod-to-json-schema/parsers/null.cjs.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/null.d.cts +7 -0
- package/dist/utils/zod-to-json-schema/parsers/null.d.cts.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/null.d.ts +7 -0
- package/dist/utils/zod-to-json-schema/parsers/null.d.ts.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/null.js +11 -0
- package/dist/utils/zod-to-json-schema/parsers/null.js.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/nullable.cjs +46 -0
- package/dist/utils/zod-to-json-schema/parsers/nullable.cjs.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/nullable.d.cts +12 -0
- package/dist/utils/zod-to-json-schema/parsers/nullable.d.cts.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/nullable.d.ts +13 -0
- package/dist/utils/zod-to-json-schema/parsers/nullable.d.ts.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/nullable.js +46 -0
- package/dist/utils/zod-to-json-schema/parsers/nullable.js.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/number.cjs +37 -0
- package/dist/utils/zod-to-json-schema/parsers/number.cjs.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/number.d.cts +15 -0
- package/dist/utils/zod-to-json-schema/parsers/number.d.cts.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/number.d.ts +16 -0
- package/dist/utils/zod-to-json-schema/parsers/number.d.ts.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/number.js +37 -0
- package/dist/utils/zod-to-json-schema/parsers/number.js.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/object.cjs +64 -0
- package/dist/utils/zod-to-json-schema/parsers/object.cjs.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/object.d.cts +12 -0
- package/dist/utils/zod-to-json-schema/parsers/object.d.cts.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/object.d.ts +13 -0
- package/dist/utils/zod-to-json-schema/parsers/object.d.ts.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/object.js +64 -0
- package/dist/utils/zod-to-json-schema/parsers/object.js.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/optional.cjs +20 -0
- package/dist/utils/zod-to-json-schema/parsers/optional.cjs.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/optional.js +20 -0
- package/dist/utils/zod-to-json-schema/parsers/optional.js.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/pipeline.cjs +28 -0
- package/dist/utils/zod-to-json-schema/parsers/pipeline.cjs.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/pipeline.js +28 -0
- package/dist/utils/zod-to-json-schema/parsers/pipeline.js.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/promise.cjs +10 -0
- package/dist/utils/zod-to-json-schema/parsers/promise.cjs.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/promise.js +10 -0
- package/dist/utils/zod-to-json-schema/parsers/promise.js.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/readonly.cjs +10 -0
- package/dist/utils/zod-to-json-schema/parsers/readonly.cjs.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/readonly.js +10 -0
- package/dist/utils/zod-to-json-schema/parsers/readonly.js.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/record.cjs +57 -0
- package/dist/utils/zod-to-json-schema/parsers/record.cjs.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/record.d.cts +14 -0
- package/dist/utils/zod-to-json-schema/parsers/record.d.cts.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/record.d.ts +15 -0
- package/dist/utils/zod-to-json-schema/parsers/record.d.ts.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/record.js +56 -0
- package/dist/utils/zod-to-json-schema/parsers/record.js.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/set.cjs +22 -0
- package/dist/utils/zod-to-json-schema/parsers/set.cjs.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/set.d.cts +15 -0
- package/dist/utils/zod-to-json-schema/parsers/set.d.cts.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/set.d.ts +16 -0
- package/dist/utils/zod-to-json-schema/parsers/set.d.ts.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/set.js +22 -0
- package/dist/utils/zod-to-json-schema/parsers/set.js.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/string.cjs +255 -0
- package/dist/utils/zod-to-json-schema/parsers/string.cjs.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/string.d.cts +28 -0
- package/dist/utils/zod-to-json-schema/parsers/string.d.cts.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/string.d.ts +29 -0
- package/dist/utils/zod-to-json-schema/parsers/string.d.ts.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/string.js +254 -0
- package/dist/utils/zod-to-json-schema/parsers/string.js.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/tuple.cjs +38 -0
- package/dist/utils/zod-to-json-schema/parsers/tuple.cjs.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/tuple.d.cts +15 -0
- package/dist/utils/zod-to-json-schema/parsers/tuple.d.cts.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/tuple.d.ts +16 -0
- package/dist/utils/zod-to-json-schema/parsers/tuple.d.ts.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/tuple.js +38 -0
- package/dist/utils/zod-to-json-schema/parsers/tuple.js.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/undefined.cjs +10 -0
- package/dist/utils/zod-to-json-schema/parsers/undefined.cjs.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/undefined.d.cts +9 -0
- package/dist/utils/zod-to-json-schema/parsers/undefined.d.cts.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/undefined.d.ts +9 -0
- package/dist/utils/zod-to-json-schema/parsers/undefined.d.ts.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/undefined.js +10 -0
- package/dist/utils/zod-to-json-schema/parsers/undefined.js.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/union.cjs +67 -0
- package/dist/utils/zod-to-json-schema/parsers/union.cjs.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/union.d.cts +24 -0
- package/dist/utils/zod-to-json-schema/parsers/union.d.cts.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/union.d.ts +25 -0
- package/dist/utils/zod-to-json-schema/parsers/union.d.ts.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/union.js +66 -0
- package/dist/utils/zod-to-json-schema/parsers/union.js.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/unknown.cjs +10 -0
- package/dist/utils/zod-to-json-schema/parsers/unknown.cjs.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/unknown.d.cts +7 -0
- package/dist/utils/zod-to-json-schema/parsers/unknown.d.cts.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/unknown.d.ts +7 -0
- package/dist/utils/zod-to-json-schema/parsers/unknown.d.ts.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/unknown.js +10 -0
- package/dist/utils/zod-to-json-schema/parsers/unknown.js.map +1 -0
- package/dist/utils/zod-to-json-schema/selectParser.cjs +81 -0
- package/dist/utils/zod-to-json-schema/selectParser.cjs.map +1 -0
- package/dist/utils/zod-to-json-schema/selectParser.js +80 -0
- package/dist/utils/zod-to-json-schema/selectParser.js.map +1 -0
- package/dist/utils/zod-to-json-schema/zodToJsonSchema.cjs +70 -0
- package/dist/utils/zod-to-json-schema/zodToJsonSchema.cjs.map +1 -0
- package/dist/utils/zod-to-json-schema/zodToJsonSchema.js +70 -0
- package/dist/utils/zod-to-json-schema/zodToJsonSchema.js.map +1 -0
- package/package.json +7 -36
- package/dist/utils/js-sha1/hash.cjs +0 -291
- package/dist/utils/js-sha1/hash.cjs.map +0 -1
- package/dist/utils/js-sha1/hash.d.cts +0 -9
- package/dist/utils/js-sha1/hash.d.cts.map +0 -1
- package/dist/utils/js-sha1/hash.d.ts +0 -9
- package/dist/utils/js-sha1/hash.d.ts.map +0 -1
- package/dist/utils/js-sha1/hash.js +0 -284
- package/dist/utils/js-sha1/hash.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json_schema.cjs","names":["schema: InteropZodType | JSONSchema","isZodSchemaV4","interopZodTransformInputSchema","isZodObjectV4","interopZodObjectStrict","isZodSchemaV3","schema: unknown"],"sources":["../../src/utils/json_schema.ts"],"sourcesContent":["import { toJSONSchema } from \"zod/v4/core\";\nimport {
|
|
1
|
+
{"version":3,"file":"json_schema.cjs","names":["schema: InteropZodType | JSONSchema","isZodSchemaV4","interopZodTransformInputSchema","isZodObjectV4","interopZodObjectStrict","isZodSchemaV3","zodToJsonSchema","schema: unknown"],"sources":["../../src/utils/json_schema.ts"],"sourcesContent":["import { toJSONSchema } from \"zod/v4/core\";\nimport { dereference, type Schema } from \"@cfworker/json-schema\";\nimport {\n isZodSchemaV3,\n isZodSchemaV4,\n InteropZodType,\n interopZodObjectStrict,\n isZodObjectV4,\n ZodObjectV4,\n interopZodTransformInputSchema,\n} from \"./types/zod.js\";\nimport {\n type JsonSchema7Type as JSONSchema,\n zodToJsonSchema,\n} from \"./zod-to-json-schema/index.js\";\n\nexport { deepCompareStrict, Validator } from \"@cfworker/json-schema\";\n\n/**\n * Converts a Zod schema or JSON schema to a JSON schema.\n * @param schema - The schema to convert.\n * @returns The converted schema.\n */\nexport function toJsonSchema(schema: InteropZodType | JSONSchema): JSONSchema {\n if (isZodSchemaV4(schema)) {\n const inputSchema = interopZodTransformInputSchema(schema, true);\n if (isZodObjectV4(inputSchema)) {\n const strictSchema = interopZodObjectStrict(\n inputSchema,\n true\n ) as ZodObjectV4;\n return toJSONSchema(strictSchema);\n } else {\n return toJSONSchema(schema);\n }\n }\n if (isZodSchemaV3(schema)) {\n return zodToJsonSchema(schema);\n }\n return schema as JSONSchema;\n}\n\n/**\n * Validates if a JSON schema validates only strings. May return false negatives in some edge cases\n * (like recursive or unresolvable refs).\n *\n * @param schema - The schema to validate.\n * @returns `true` if the schema validates only strings, `false` otherwise.\n */\nexport function validatesOnlyStrings(schema: unknown): boolean {\n // Null, undefined, or empty schema\n if (\n !schema ||\n typeof schema !== \"object\" ||\n Object.keys(schema).length === 0 ||\n Array.isArray(schema)\n ) {\n return false; // Validates anything, not just strings\n }\n\n // Explicit type constraint\n if (\"type\" in schema) {\n if (typeof schema.type === \"string\") {\n return schema.type === \"string\";\n }\n\n if (Array.isArray(schema.type)) {\n // not sure why someone would do `\"type\": [\"string\"]` or especially `\"type\": [\"string\",\n // \"string\", \"string\", ...]` but we're not here to judge\n return schema.type.every((t) => t === \"string\");\n }\n return false; // Invalid or non-string type\n }\n\n // Enum with only string values\n if (\"enum\" in schema) {\n return (\n Array.isArray(schema.enum) &&\n schema.enum.length > 0 &&\n schema.enum.every((val) => typeof val === \"string\")\n );\n }\n\n // String constant\n if (\"const\" in schema) {\n return typeof schema.const === \"string\";\n }\n\n // Schema combinations\n if (\"allOf\" in schema && Array.isArray(schema.allOf)) {\n // If any subschema validates only strings, then the overall schema validates only strings\n return schema.allOf.some((subschema) => validatesOnlyStrings(subschema));\n }\n\n if (\n (\"anyOf\" in schema && Array.isArray(schema.anyOf)) ||\n (\"oneOf\" in schema && Array.isArray(schema.oneOf))\n ) {\n const subschemas = (\n \"anyOf\" in schema ? schema.anyOf : schema.oneOf\n ) as unknown[];\n\n // All subschemas must validate only strings\n return (\n subschemas.length > 0 &&\n subschemas.every((subschema) => validatesOnlyStrings(subschema))\n );\n }\n\n // We're not going to try on this one, it's too complex - we just assume if it has a \"not\" key and hasn't matched one of the above checks, it's not a string schema.\n if (\"not\" in schema) {\n return false; // The not case can validate non-strings\n }\n\n if (\"$ref\" in schema && typeof schema.$ref === \"string\") {\n const ref = schema.$ref as string;\n const resolved = dereference(schema as Schema);\n if (resolved[ref]) {\n return validatesOnlyStrings(resolved[ref]);\n }\n return false;\n }\n\n // ignore recursive refs and other cases where type is omitted for now\n // ignore other cases for now where type is omitted\n\n return false;\n}\n\n// Re-export of the types used throughout langchain for json schema serialization.\n// The plan is to eventually nix zod-to-json-schema altogether in place for\n// zod v4 / a more standardized way of serializing validated inputs, so its re-exported\n// here to remove the dependency on zod-to-json-schema in downstream packages until\n// a determination is made.\n\nexport {\n type JsonSchema7Type,\n type JsonSchema7Type as JSONSchema,\n type JsonSchema7ArrayType,\n type JsonSchema7ObjectType,\n type JsonSchema7StringType,\n type JsonSchema7NumberType,\n type JsonSchema7NullableType,\n} from \"./zod-to-json-schema/index.js\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAuBA,SAAgB,aAAaA,QAAiD;AAC5E,KAAIC,0BAAc,OAAO,EAAE;EACzB,MAAM,cAAcC,2CAA+B,QAAQ,KAAK;AAChE,MAAIC,0BAAc,YAAY,EAAE;GAC9B,MAAM,eAAeC,mCACnB,aACA,KACD;AACD,wCAAoB,aAAa;EAClC,MACC,sCAAoB,OAAO;CAE9B;AACD,KAAIC,0BAAc,OAAO,CACvB,QAAOC,wCAAgB,OAAO;AAEhC,QAAO;AACR;;;;;;;;AASD,SAAgB,qBAAqBC,QAA0B;AAE7D,KACE,CAAC,UACD,OAAO,WAAW,YAClB,OAAO,KAAK,OAAO,CAAC,WAAW,KAC/B,MAAM,QAAQ,OAAO,CAErB,QAAO;AAIT,KAAI,UAAU,QAAQ;AACpB,MAAI,OAAO,OAAO,SAAS,SACzB,QAAO,OAAO,SAAS;AAGzB,MAAI,MAAM,QAAQ,OAAO,KAAK,CAG5B,QAAO,OAAO,KAAK,MAAM,CAAC,MAAM,MAAM,SAAS;AAEjD,SAAO;CACR;AAGD,KAAI,UAAU,OACZ,QACE,MAAM,QAAQ,OAAO,KAAK,IAC1B,OAAO,KAAK,SAAS,KACrB,OAAO,KAAK,MAAM,CAAC,QAAQ,OAAO,QAAQ,SAAS;AAKvD,KAAI,WAAW,OACb,QAAO,OAAO,OAAO,UAAU;AAIjC,KAAI,WAAW,UAAU,MAAM,QAAQ,OAAO,MAAM,CAElD,QAAO,OAAO,MAAM,KAAK,CAAC,cAAc,qBAAqB,UAAU,CAAC;AAG1E,KACG,WAAW,UAAU,MAAM,QAAQ,OAAO,MAAM,IAChD,WAAW,UAAU,MAAM,QAAQ,OAAO,MAAM,EACjD;EACA,MAAM,aACJ,WAAW,SAAS,OAAO,QAAQ,OAAO;AAI5C,SACE,WAAW,SAAS,KACpB,WAAW,MAAM,CAAC,cAAc,qBAAqB,UAAU,CAAC;CAEnE;AAGD,KAAI,SAAS,OACX,QAAO;AAGT,KAAI,UAAU,UAAU,OAAO,OAAO,SAAS,UAAU;EACvD,MAAM,MAAM,OAAO;EACnB,MAAM,mDAAuB,OAAiB;AAC9C,MAAI,SAAS,KACX,QAAO,qBAAqB,SAAS,KAAK;AAE5C,SAAO;CACR;AAKD,QAAO;AACR"}
|
|
@@ -1,15 +1,19 @@
|
|
|
1
1
|
import { InteropZodType } from "./types/zod.cjs";
|
|
2
|
-
import { JsonSchema7ArrayType
|
|
2
|
+
import { JsonSchema7ArrayType } from "./zod-to-json-schema/parsers/array.cjs";
|
|
3
|
+
import { JsonSchema7NumberType } from "./zod-to-json-schema/parsers/number.cjs";
|
|
4
|
+
import { JsonSchema7StringType } from "./zod-to-json-schema/parsers/string.cjs";
|
|
5
|
+
import { JsonSchema7NullableType } from "./zod-to-json-schema/parsers/nullable.cjs";
|
|
6
|
+
import { JsonSchema7ObjectType } from "./zod-to-json-schema/parsers/object.cjs";
|
|
7
|
+
import { JsonSchema7Type } from "./zod-to-json-schema/parseTypes.cjs";
|
|
3
8
|
import { Validator, deepCompareStrict } from "@cfworker/json-schema";
|
|
4
9
|
|
|
5
10
|
//#region src/utils/json_schema.d.ts
|
|
6
|
-
|
|
7
11
|
/**
|
|
8
12
|
* Converts a Zod schema or JSON schema to a JSON schema.
|
|
9
13
|
* @param schema - The schema to convert.
|
|
10
14
|
* @returns The converted schema.
|
|
11
15
|
*/
|
|
12
|
-
declare function toJsonSchema(schema: InteropZodType | JsonSchema7Type
|
|
16
|
+
declare function toJsonSchema(schema: InteropZodType | JsonSchema7Type): JsonSchema7Type;
|
|
13
17
|
/**
|
|
14
18
|
* Validates if a JSON schema validates only strings. May return false negatives in some edge cases
|
|
15
19
|
* (like recursive or unresolvable refs).
|
|
@@ -24,5 +28,5 @@ declare function validatesOnlyStrings(schema: unknown): boolean;
|
|
|
24
28
|
// here to remove the dependency on zod-to-json-schema in downstream packages until
|
|
25
29
|
// a determination is made.
|
|
26
30
|
//#endregion
|
|
27
|
-
export { type JSONSchema, type JsonSchema7ArrayType, type JsonSchema7NullableType, type JsonSchema7NumberType, type JsonSchema7ObjectType, type JsonSchema7StringType, type JsonSchema7Type, Validator, deepCompareStrict, toJsonSchema, validatesOnlyStrings };
|
|
31
|
+
export { type JsonSchema7Type as JSONSchema, type JsonSchema7ArrayType, type JsonSchema7NullableType, type JsonSchema7NumberType, type JsonSchema7ObjectType, type JsonSchema7StringType, type JsonSchema7Type, Validator, deepCompareStrict, toJsonSchema, validatesOnlyStrings };
|
|
28
32
|
//# sourceMappingURL=json_schema.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json_schema.d.cts","names":["
|
|
1
|
+
{"version":3,"file":"json_schema.d.cts","names":["InteropZodType","JsonSchema7Type","JSONSchema","deepCompareStrict","Validator","toJsonSchema","validatesOnlyStrings","JsonSchema7ArrayType","JsonSchema7ObjectType","JsonSchema7StringType","JsonSchema7NumberType","JsonSchema7NullableType"],"sources":["../../src/utils/json_schema.d.ts"],"sourcesContent":["import { InteropZodType } from \"./types/zod.js\";\nimport { type JsonSchema7Type as JSONSchema } from \"./zod-to-json-schema/index.js\";\nexport { deepCompareStrict, Validator } from \"@cfworker/json-schema\";\n/**\n * Converts a Zod schema or JSON schema to a JSON schema.\n * @param schema - The schema to convert.\n * @returns The converted schema.\n */\nexport declare function toJsonSchema(schema: InteropZodType | JSONSchema): JSONSchema;\n/**\n * Validates if a JSON schema validates only strings. May return false negatives in some edge cases\n * (like recursive or unresolvable refs).\n *\n * @param schema - The schema to validate.\n * @returns `true` if the schema validates only strings, `false` otherwise.\n */\nexport declare function validatesOnlyStrings(schema: unknown): boolean;\n// Re-export of the types used throughout langchain for json schema serialization.\n// The plan is to eventually nix zod-to-json-schema altogether in place for\n// zod v4 / a more standardized way of serializing validated inputs, so its re-exported\n// here to remove the dependency on zod-to-json-schema in downstream packages until\n// a determination is made.\nexport { type JsonSchema7Type, type JsonSchema7Type as JSONSchema, type JsonSchema7ArrayType, type JsonSchema7ObjectType, type JsonSchema7StringType, type JsonSchema7NumberType, type JsonSchema7NullableType, } from \"./zod-to-json-schema/index.js\";\n"],"mappings":";;;;;;;;;;;;;;;iBAQwBK,YAAAA,SAAqBL,iBAAiBE,kBAAaA;;AAA3E;;;;;AAAqF;AAQ7DI,iBAAAA,oBAAAA,CAAoB,MAAA,EAAA,OAAA,CAAA,EAAA,OAAA"}
|
|
@@ -1,15 +1,19 @@
|
|
|
1
1
|
import { InteropZodType } from "./types/zod.js";
|
|
2
|
-
import { JsonSchema7ArrayType
|
|
2
|
+
import { JsonSchema7ArrayType } from "./zod-to-json-schema/parsers/array.js";
|
|
3
|
+
import { JsonSchema7NumberType } from "./zod-to-json-schema/parsers/number.js";
|
|
4
|
+
import { JsonSchema7StringType } from "./zod-to-json-schema/parsers/string.js";
|
|
5
|
+
import { JsonSchema7NullableType } from "./zod-to-json-schema/parsers/nullable.js";
|
|
6
|
+
import { JsonSchema7ObjectType } from "./zod-to-json-schema/parsers/object.js";
|
|
7
|
+
import { JsonSchema7Type } from "./zod-to-json-schema/parseTypes.js";
|
|
3
8
|
import { Validator, deepCompareStrict } from "@cfworker/json-schema";
|
|
4
9
|
|
|
5
10
|
//#region src/utils/json_schema.d.ts
|
|
6
|
-
|
|
7
11
|
/**
|
|
8
12
|
* Converts a Zod schema or JSON schema to a JSON schema.
|
|
9
13
|
* @param schema - The schema to convert.
|
|
10
14
|
* @returns The converted schema.
|
|
11
15
|
*/
|
|
12
|
-
declare function toJsonSchema(schema: InteropZodType | JsonSchema7Type
|
|
16
|
+
declare function toJsonSchema(schema: InteropZodType | JsonSchema7Type): JsonSchema7Type;
|
|
13
17
|
/**
|
|
14
18
|
* Validates if a JSON schema validates only strings. May return false negatives in some edge cases
|
|
15
19
|
* (like recursive or unresolvable refs).
|
|
@@ -24,5 +28,5 @@ declare function validatesOnlyStrings(schema: unknown): boolean;
|
|
|
24
28
|
// here to remove the dependency on zod-to-json-schema in downstream packages until
|
|
25
29
|
// a determination is made.
|
|
26
30
|
//#endregion
|
|
27
|
-
export { type JSONSchema, type JsonSchema7ArrayType, type JsonSchema7NullableType, type JsonSchema7NumberType, type JsonSchema7ObjectType, type JsonSchema7StringType, type JsonSchema7Type, Validator, deepCompareStrict, toJsonSchema, validatesOnlyStrings };
|
|
31
|
+
export { type JsonSchema7Type as JSONSchema, type JsonSchema7ArrayType, type JsonSchema7NullableType, type JsonSchema7NumberType, type JsonSchema7ObjectType, type JsonSchema7StringType, type JsonSchema7Type, Validator, deepCompareStrict, toJsonSchema, validatesOnlyStrings };
|
|
28
32
|
//# sourceMappingURL=json_schema.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json_schema.d.ts","names":["
|
|
1
|
+
{"version":3,"file":"json_schema.d.ts","names":["InteropZodType","JsonSchema7Type","JSONSchema","deepCompareStrict","Validator","toJsonSchema","validatesOnlyStrings","JsonSchema7ArrayType","JsonSchema7ObjectType","JsonSchema7StringType","JsonSchema7NumberType","JsonSchema7NullableType"],"sources":["../../src/utils/json_schema.d.ts"],"sourcesContent":["import { InteropZodType } from \"./types/zod.js\";\nimport { type JsonSchema7Type as JSONSchema } from \"./zod-to-json-schema/index.js\";\nexport { deepCompareStrict, Validator } from \"@cfworker/json-schema\";\n/**\n * Converts a Zod schema or JSON schema to a JSON schema.\n * @param schema - The schema to convert.\n * @returns The converted schema.\n */\nexport declare function toJsonSchema(schema: InteropZodType | JSONSchema): JSONSchema;\n/**\n * Validates if a JSON schema validates only strings. May return false negatives in some edge cases\n * (like recursive or unresolvable refs).\n *\n * @param schema - The schema to validate.\n * @returns `true` if the schema validates only strings, `false` otherwise.\n */\nexport declare function validatesOnlyStrings(schema: unknown): boolean;\n// Re-export of the types used throughout langchain for json schema serialization.\n// The plan is to eventually nix zod-to-json-schema altogether in place for\n// zod v4 / a more standardized way of serializing validated inputs, so its re-exported\n// here to remove the dependency on zod-to-json-schema in downstream packages until\n// a determination is made.\nexport { type JsonSchema7Type, type JsonSchema7Type as JSONSchema, type JsonSchema7ArrayType, type JsonSchema7ObjectType, type JsonSchema7StringType, type JsonSchema7NumberType, type JsonSchema7NullableType, } from \"./zod-to-json-schema/index.js\";\n"],"mappings":";;;;;;;;;;;;;;;iBAQwBK,YAAAA,SAAqBL,iBAAiBE,kBAAaA;;AAA3E;;;;;AAAqF;AAQ7DI,iBAAAA,oBAAAA,CAAoB,MAAA,EAAA,OAAA,CAAA,EAAA,OAAA"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { __export } from "../_virtual/rolldown_runtime.js";
|
|
2
2
|
import { interopZodObjectStrict, interopZodTransformInputSchema, isZodObjectV4, isZodSchemaV3, isZodSchemaV4 } from "./types/zod.js";
|
|
3
|
+
import { zodToJsonSchema } from "./zod-to-json-schema/zodToJsonSchema.js";
|
|
4
|
+
import "./zod-to-json-schema/index.js";
|
|
3
5
|
import { toJSONSchema } from "zod/v4/core";
|
|
4
|
-
import { zodToJsonSchema } from "zod-to-json-schema";
|
|
5
6
|
import { Validator, deepCompareStrict, dereference } from "@cfworker/json-schema";
|
|
6
7
|
|
|
7
8
|
//#region src/utils/json_schema.ts
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json_schema.js","names":["schema: InteropZodType | JSONSchema","schema: unknown"],"sources":["../../src/utils/json_schema.ts"],"sourcesContent":["import { toJSONSchema } from \"zod/v4/core\";\nimport {
|
|
1
|
+
{"version":3,"file":"json_schema.js","names":["schema: InteropZodType | JSONSchema","schema: unknown"],"sources":["../../src/utils/json_schema.ts"],"sourcesContent":["import { toJSONSchema } from \"zod/v4/core\";\nimport { dereference, type Schema } from \"@cfworker/json-schema\";\nimport {\n isZodSchemaV3,\n isZodSchemaV4,\n InteropZodType,\n interopZodObjectStrict,\n isZodObjectV4,\n ZodObjectV4,\n interopZodTransformInputSchema,\n} from \"./types/zod.js\";\nimport {\n type JsonSchema7Type as JSONSchema,\n zodToJsonSchema,\n} from \"./zod-to-json-schema/index.js\";\n\nexport { deepCompareStrict, Validator } from \"@cfworker/json-schema\";\n\n/**\n * Converts a Zod schema or JSON schema to a JSON schema.\n * @param schema - The schema to convert.\n * @returns The converted schema.\n */\nexport function toJsonSchema(schema: InteropZodType | JSONSchema): JSONSchema {\n if (isZodSchemaV4(schema)) {\n const inputSchema = interopZodTransformInputSchema(schema, true);\n if (isZodObjectV4(inputSchema)) {\n const strictSchema = interopZodObjectStrict(\n inputSchema,\n true\n ) as ZodObjectV4;\n return toJSONSchema(strictSchema);\n } else {\n return toJSONSchema(schema);\n }\n }\n if (isZodSchemaV3(schema)) {\n return zodToJsonSchema(schema);\n }\n return schema as JSONSchema;\n}\n\n/**\n * Validates if a JSON schema validates only strings. May return false negatives in some edge cases\n * (like recursive or unresolvable refs).\n *\n * @param schema - The schema to validate.\n * @returns `true` if the schema validates only strings, `false` otherwise.\n */\nexport function validatesOnlyStrings(schema: unknown): boolean {\n // Null, undefined, or empty schema\n if (\n !schema ||\n typeof schema !== \"object\" ||\n Object.keys(schema).length === 0 ||\n Array.isArray(schema)\n ) {\n return false; // Validates anything, not just strings\n }\n\n // Explicit type constraint\n if (\"type\" in schema) {\n if (typeof schema.type === \"string\") {\n return schema.type === \"string\";\n }\n\n if (Array.isArray(schema.type)) {\n // not sure why someone would do `\"type\": [\"string\"]` or especially `\"type\": [\"string\",\n // \"string\", \"string\", ...]` but we're not here to judge\n return schema.type.every((t) => t === \"string\");\n }\n return false; // Invalid or non-string type\n }\n\n // Enum with only string values\n if (\"enum\" in schema) {\n return (\n Array.isArray(schema.enum) &&\n schema.enum.length > 0 &&\n schema.enum.every((val) => typeof val === \"string\")\n );\n }\n\n // String constant\n if (\"const\" in schema) {\n return typeof schema.const === \"string\";\n }\n\n // Schema combinations\n if (\"allOf\" in schema && Array.isArray(schema.allOf)) {\n // If any subschema validates only strings, then the overall schema validates only strings\n return schema.allOf.some((subschema) => validatesOnlyStrings(subschema));\n }\n\n if (\n (\"anyOf\" in schema && Array.isArray(schema.anyOf)) ||\n (\"oneOf\" in schema && Array.isArray(schema.oneOf))\n ) {\n const subschemas = (\n \"anyOf\" in schema ? schema.anyOf : schema.oneOf\n ) as unknown[];\n\n // All subschemas must validate only strings\n return (\n subschemas.length > 0 &&\n subschemas.every((subschema) => validatesOnlyStrings(subschema))\n );\n }\n\n // We're not going to try on this one, it's too complex - we just assume if it has a \"not\" key and hasn't matched one of the above checks, it's not a string schema.\n if (\"not\" in schema) {\n return false; // The not case can validate non-strings\n }\n\n if (\"$ref\" in schema && typeof schema.$ref === \"string\") {\n const ref = schema.$ref as string;\n const resolved = dereference(schema as Schema);\n if (resolved[ref]) {\n return validatesOnlyStrings(resolved[ref]);\n }\n return false;\n }\n\n // ignore recursive refs and other cases where type is omitted for now\n // ignore other cases for now where type is omitted\n\n return false;\n}\n\n// Re-export of the types used throughout langchain for json schema serialization.\n// The plan is to eventually nix zod-to-json-schema altogether in place for\n// zod v4 / a more standardized way of serializing validated inputs, so its re-exported\n// here to remove the dependency on zod-to-json-schema in downstream packages until\n// a determination is made.\n\nexport {\n type JsonSchema7Type,\n type JsonSchema7Type as JSONSchema,\n type JsonSchema7ArrayType,\n type JsonSchema7ObjectType,\n type JsonSchema7StringType,\n type JsonSchema7NumberType,\n type JsonSchema7NullableType,\n} from \"./zod-to-json-schema/index.js\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAuBA,SAAgB,aAAaA,QAAiD;AAC5E,KAAI,cAAc,OAAO,EAAE;EACzB,MAAM,cAAc,+BAA+B,QAAQ,KAAK;AAChE,MAAI,cAAc,YAAY,EAAE;GAC9B,MAAM,eAAe,uBACnB,aACA,KACD;AACD,UAAO,aAAa,aAAa;EAClC,MACC,QAAO,aAAa,OAAO;CAE9B;AACD,KAAI,cAAc,OAAO,CACvB,QAAO,gBAAgB,OAAO;AAEhC,QAAO;AACR;;;;;;;;AASD,SAAgB,qBAAqBC,QAA0B;AAE7D,KACE,CAAC,UACD,OAAO,WAAW,YAClB,OAAO,KAAK,OAAO,CAAC,WAAW,KAC/B,MAAM,QAAQ,OAAO,CAErB,QAAO;AAIT,KAAI,UAAU,QAAQ;AACpB,MAAI,OAAO,OAAO,SAAS,SACzB,QAAO,OAAO,SAAS;AAGzB,MAAI,MAAM,QAAQ,OAAO,KAAK,CAG5B,QAAO,OAAO,KAAK,MAAM,CAAC,MAAM,MAAM,SAAS;AAEjD,SAAO;CACR;AAGD,KAAI,UAAU,OACZ,QACE,MAAM,QAAQ,OAAO,KAAK,IAC1B,OAAO,KAAK,SAAS,KACrB,OAAO,KAAK,MAAM,CAAC,QAAQ,OAAO,QAAQ,SAAS;AAKvD,KAAI,WAAW,OACb,QAAO,OAAO,OAAO,UAAU;AAIjC,KAAI,WAAW,UAAU,MAAM,QAAQ,OAAO,MAAM,CAElD,QAAO,OAAO,MAAM,KAAK,CAAC,cAAc,qBAAqB,UAAU,CAAC;AAG1E,KACG,WAAW,UAAU,MAAM,QAAQ,OAAO,MAAM,IAChD,WAAW,UAAU,MAAM,QAAQ,OAAO,MAAM,EACjD;EACA,MAAM,aACJ,WAAW,SAAS,OAAO,QAAQ,OAAO;AAI5C,SACE,WAAW,SAAS,KACpB,WAAW,MAAM,CAAC,cAAc,qBAAqB,UAAU,CAAC;CAEnE;AAGD,KAAI,SAAS,OACX,QAAO;AAGT,KAAI,UAAU,UAAU,OAAO,OAAO,SAAS,UAAU;EACvD,MAAM,MAAM,OAAO;EACnB,MAAM,WAAW,YAAY,OAAiB;AAC9C,MAAI,SAAS,KACX,QAAO,qBAAqB,SAAS,KAAK;AAE5C,SAAO;CACR;AAKD,QAAO;AACR"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream.cjs","names":["e: any","stream: ReadableStream<T>","generator: AsyncGenerator<T>","iter: AsyncGenerator<T>","buffer","first: T","second: T","params: {\n generator: AsyncGenerator<T>;\n startSetup?: () => Promise<S>;\n config?: unknown;\n signal?: AbortSignal;\n }","AsyncLocalStorageProviderSingleton","pickRunnableConfigKeys","raceWithSignal","value?: TReturn | PromiseLike<TReturn>","e: Error","to: (\n g: AsyncGenerator<T, TReturn, TNext>,\n s: S,\n ...args: A\n ) => AsyncGenerator<U, UReturn, UNext>","generator: AsyncGenerator<T, TReturn, TNext>","startSetup: () => Promise<S>","signal: AbortSignal | undefined"],"sources":["../../src/utils/stream.ts"],"sourcesContent":["import { pickRunnableConfigKeys } from \"../runnables/config.js\";\nimport { AsyncLocalStorageProviderSingleton } from \"../singletons/index.js\";\nimport type { IterableReadableStreamInterface } from \"../types/_internal.js\";\nimport { raceWithSignal } from \"./signal.js\";\n\n// Re-exported for backwards compatibility\n// Do NOT import this type from this file inside the project. Instead, always import from `types/_internal.js`\n// when using internally\nexport type { IterableReadableStreamInterface };\n\n/*\n * Support async iterator syntax for ReadableStreams in all environments.\n * Source: https://github.com/MattiasBuelens/web-streams-polyfill/pull/122#issuecomment-1627354490\n */\nexport class IterableReadableStream<T>\n extends ReadableStream<T>\n implements IterableReadableStreamInterface<T>\n{\n public reader: ReadableStreamDefaultReader<T>;\n\n ensureReader() {\n if (!this.reader) {\n this.reader = this.getReader();\n }\n }\n\n async next(): Promise<IteratorResult<T>> {\n this.ensureReader();\n try {\n const result = await this.reader.read();\n if (result.done) {\n this.reader.releaseLock(); // release lock when stream becomes closed\n return {\n done: true,\n value: undefined,\n };\n } else {\n return {\n done: false,\n value: result.value,\n };\n }\n } catch (e) {\n this.reader.releaseLock(); // release lock when stream becomes errored\n throw e;\n }\n }\n\n async return(): Promise<IteratorResult<T>> {\n this.ensureReader();\n // If wrapped in a Node stream, cancel is already called.\n if (this.locked) {\n const cancelPromise = this.reader.cancel(); // cancel first, but don't await yet\n this.reader.releaseLock(); // release lock first\n await cancelPromise; // now await it\n }\n return { done: true, value: undefined };\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n async throw(e: any): Promise<IteratorResult<T>> {\n this.ensureReader();\n if (this.locked) {\n const cancelPromise = this.reader.cancel(); // cancel first, but don't await yet\n this.reader.releaseLock(); // release lock first\n await cancelPromise; // now await it\n }\n throw e;\n }\n\n [Symbol.asyncIterator]() {\n return this;\n }\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore Not present in Node 18 types, required in latest Node 22\n async [Symbol.asyncDispose]() {\n await this.return();\n }\n\n static fromReadableStream<T>(stream: ReadableStream<T>) {\n // From https://developer.mozilla.org/en-US/docs/Web/API/Streams_API/Using_readable_streams#reading_the_stream\n const reader = stream.getReader();\n return new IterableReadableStream<T>({\n start(controller) {\n return pump();\n function pump(): Promise<T | undefined> {\n return reader.read().then(({ done, value }) => {\n // When no more data needs to be consumed, close the stream\n if (done) {\n controller.close();\n return;\n }\n // Enqueue the next data chunk into our target stream\n controller.enqueue(value);\n return pump();\n });\n }\n },\n cancel() {\n reader.releaseLock();\n },\n });\n }\n\n static fromAsyncGenerator<T>(generator: AsyncGenerator<T>) {\n return new IterableReadableStream<T>({\n async pull(controller) {\n const { value, done } = await generator.next();\n // When no more data needs to be consumed, close the stream\n if (done) {\n controller.close();\n }\n // Fix: `else if (value)` will hang the streaming when nullish value (e.g. empty string) is pulled\n controller.enqueue(value);\n },\n async cancel(reason) {\n await generator.return(reason);\n },\n });\n }\n}\n\nexport function atee<T>(\n iter: AsyncGenerator<T>,\n length = 2\n): AsyncGenerator<T>[] {\n const buffers = Array.from(\n { length },\n () => [] as Array<IteratorResult<T> | IteratorReturnResult<T>>\n );\n return buffers.map(async function* makeIter(buffer) {\n while (true) {\n if (buffer.length === 0) {\n const result = await iter.next();\n for (const buffer of buffers) {\n buffer.push(result);\n }\n } else if (buffer[0].done) {\n return;\n } else {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n yield buffer.shift()!.value;\n }\n }\n });\n}\n\nexport function concat<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n T extends Array<any> | string | number | Record<string, any> | any\n>(first: T, second: T): T {\n if (Array.isArray(first) && Array.isArray(second)) {\n return first.concat(second) as T;\n } else if (typeof first === \"string\" && typeof second === \"string\") {\n return (first + second) as T;\n } else if (typeof first === \"number\" && typeof second === \"number\") {\n return (first + second) as T;\n } else if (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n \"concat\" in (first as any) &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n typeof (first as any).concat === \"function\"\n ) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (first as any).concat(second) as T;\n } else if (typeof first === \"object\" && typeof second === \"object\") {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const chunk = { ...first } as Record<string, any>;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n for (const [key, value] of Object.entries(second as Record<string, any>)) {\n if (key in chunk && !Array.isArray(chunk[key])) {\n chunk[key] = concat(chunk[key], value);\n } else {\n chunk[key] = value;\n }\n }\n return chunk as T;\n } else {\n throw new Error(`Cannot concat ${typeof first} and ${typeof second}`);\n }\n}\n\nexport class AsyncGeneratorWithSetup<\n S = unknown,\n T = unknown,\n TReturn = unknown,\n TNext = unknown\n> implements AsyncGenerator<T, TReturn, TNext>\n{\n private generator: AsyncGenerator<T>;\n\n public setup: Promise<S>;\n\n public config?: unknown;\n\n public signal?: AbortSignal;\n\n private firstResult: Promise<IteratorResult<T>>;\n\n private firstResultUsed = false;\n\n constructor(params: {\n generator: AsyncGenerator<T>;\n startSetup?: () => Promise<S>;\n config?: unknown;\n signal?: AbortSignal;\n }) {\n this.generator = params.generator;\n this.config = params.config;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.signal = params.signal ?? (this.config as any)?.signal;\n // setup is a promise that resolves only after the first iterator value\n // is available. this is useful when setup of several piped generators\n // needs to happen in logical order, ie. in the order in which input to\n // to each generator is available.\n this.setup = new Promise((resolve, reject) => {\n void AsyncLocalStorageProviderSingleton.runWithConfig(\n pickRunnableConfigKeys(\n params.config as Record<string, unknown> | undefined\n ),\n async () => {\n this.firstResult = params.generator.next();\n if (params.startSetup) {\n this.firstResult.then(params.startSetup).then(resolve, reject);\n } else {\n this.firstResult.then((_result) => resolve(undefined as S), reject);\n }\n },\n true\n );\n });\n }\n\n async next(...args: [] | [TNext]): Promise<IteratorResult<T>> {\n this.signal?.throwIfAborted();\n\n if (!this.firstResultUsed) {\n this.firstResultUsed = true;\n return this.firstResult;\n }\n\n return AsyncLocalStorageProviderSingleton.runWithConfig(\n pickRunnableConfigKeys(\n this.config as Record<string, unknown> | undefined\n ),\n this.signal\n ? async () => {\n return raceWithSignal(this.generator.next(...args), this.signal);\n }\n : async () => {\n return this.generator.next(...args);\n },\n true\n );\n }\n\n async return(\n value?: TReturn | PromiseLike<TReturn>\n ): Promise<IteratorResult<T>> {\n return this.generator.return(value);\n }\n\n async throw(e: Error): Promise<IteratorResult<T>> {\n return this.generator.throw(e);\n }\n\n [Symbol.asyncIterator]() {\n return this;\n }\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore Not present in Node 18 types, required in latest Node 22\n async [Symbol.asyncDispose]() {\n await this.return();\n }\n}\n\nexport async function pipeGeneratorWithSetup<\n S,\n A extends unknown[],\n T,\n TReturn,\n TNext,\n U,\n UReturn,\n UNext\n>(\n to: (\n g: AsyncGenerator<T, TReturn, TNext>,\n s: S,\n ...args: A\n ) => AsyncGenerator<U, UReturn, UNext>,\n generator: AsyncGenerator<T, TReturn, TNext>,\n startSetup: () => Promise<S>,\n signal: AbortSignal | undefined,\n ...args: A\n) {\n const gen = new AsyncGeneratorWithSetup({\n generator,\n startSetup,\n signal,\n });\n const setup = await gen.setup;\n return { output: to(gen, setup, ...args), setup };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"stream.cjs","names":["e: any","stream: ReadableStream<T>","generator: AsyncGenerator<T>","iter: AsyncGenerator<T>","buffer","first: T","second: T","params: {\n generator: AsyncGenerator<T>;\n startSetup?: () => Promise<S>;\n config?: unknown;\n signal?: AbortSignal;\n }","AsyncLocalStorageProviderSingleton","pickRunnableConfigKeys","raceWithSignal","value?: TReturn | PromiseLike<TReturn>","e: Error","to: (\n g: AsyncGenerator<T, TReturn, TNext>,\n s: S,\n ...args: A\n ) => AsyncGenerator<U, UReturn, UNext>","generator: AsyncGenerator<T, TReturn, TNext>","startSetup: () => Promise<S>","signal: AbortSignal | undefined"],"sources":["../../src/utils/stream.ts"],"sourcesContent":["import { pickRunnableConfigKeys } from \"../runnables/config.js\";\nimport { AsyncLocalStorageProviderSingleton } from \"../singletons/index.js\";\nimport type { IterableReadableStreamInterface } from \"../types/_internal.js\";\nimport { raceWithSignal } from \"./signal.js\";\n\n// Re-exported for backwards compatibility\n// Do NOT import this type from this file inside the project. Instead, always import from `types/_internal.js`\n// when using internally\nexport type { IterableReadableStreamInterface };\n\n/*\n * Support async iterator syntax for ReadableStreams in all environments.\n * Source: https://github.com/MattiasBuelens/web-streams-polyfill/pull/122#issuecomment-1627354490\n */\nexport class IterableReadableStream<T>\n extends ReadableStream<T>\n implements IterableReadableStreamInterface<T>\n{\n public reader: ReadableStreamDefaultReader<T>;\n\n ensureReader() {\n if (!this.reader) {\n this.reader = this.getReader();\n }\n }\n\n async next(): Promise<IteratorResult<T>> {\n this.ensureReader();\n try {\n const result = await this.reader.read();\n if (result.done) {\n this.reader.releaseLock(); // release lock when stream becomes closed\n return {\n done: true,\n value: undefined,\n };\n } else {\n return {\n done: false,\n value: result.value,\n };\n }\n } catch (e) {\n this.reader.releaseLock(); // release lock when stream becomes errored\n throw e;\n }\n }\n\n async return(): Promise<IteratorResult<T>> {\n this.ensureReader();\n // If wrapped in a Node stream, cancel is already called.\n if (this.locked) {\n const cancelPromise = this.reader.cancel(); // cancel first, but don't await yet\n this.reader.releaseLock(); // release lock first\n await cancelPromise; // now await it\n }\n return { done: true, value: undefined };\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n async throw(e: any): Promise<IteratorResult<T>> {\n this.ensureReader();\n if (this.locked) {\n const cancelPromise = this.reader.cancel(); // cancel first, but don't await yet\n this.reader.releaseLock(); // release lock first\n await cancelPromise; // now await it\n }\n throw e;\n }\n\n [Symbol.asyncIterator]() {\n return this;\n }\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore Not present in Node 18 types, required in latest Node 22\n async [Symbol.asyncDispose]() {\n await this.return();\n }\n\n static fromReadableStream<T>(stream: ReadableStream<T>) {\n // From https://developer.mozilla.org/en-US/docs/Web/API/Streams_API/Using_readable_streams#reading_the_stream\n const reader = stream.getReader();\n return new IterableReadableStream<T>({\n start(controller) {\n return pump();\n function pump(): Promise<T | undefined> {\n return reader.read().then(({ done, value }) => {\n // When no more data needs to be consumed, close the stream\n if (done) {\n controller.close();\n return;\n }\n // Enqueue the next data chunk into our target stream\n controller.enqueue(value);\n return pump();\n });\n }\n },\n cancel() {\n reader.releaseLock();\n },\n });\n }\n\n static fromAsyncGenerator<T>(generator: AsyncGenerator<T>) {\n return new IterableReadableStream<T>({\n async pull(controller) {\n const { value, done } = await generator.next();\n // When no more data needs to be consumed, close the stream\n if (done) {\n controller.close();\n }\n // Fix: `else if (value)` will hang the streaming when nullish value (e.g. empty string) is pulled\n controller.enqueue(value);\n },\n async cancel(reason) {\n await generator.return(reason);\n },\n });\n }\n}\n\nexport function atee<T>(\n iter: AsyncGenerator<T>,\n length = 2\n): AsyncGenerator<T>[] {\n const buffers = Array.from(\n { length },\n () => [] as Array<IteratorResult<T> | IteratorReturnResult<T>>\n );\n return buffers.map(async function* makeIter(buffer) {\n while (true) {\n if (buffer.length === 0) {\n const result = await iter.next();\n for (const buffer of buffers) {\n buffer.push(result);\n }\n } else if (buffer[0].done) {\n return;\n } else {\n yield buffer.shift()!.value;\n }\n }\n });\n}\n\nexport function concat<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n T extends Array<any> | string | number | Record<string, any> | any\n>(first: T, second: T): T {\n if (Array.isArray(first) && Array.isArray(second)) {\n return first.concat(second) as T;\n } else if (typeof first === \"string\" && typeof second === \"string\") {\n return (first + second) as T;\n } else if (typeof first === \"number\" && typeof second === \"number\") {\n return (first + second) as T;\n } else if (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n \"concat\" in (first as any) &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n typeof (first as any).concat === \"function\"\n ) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (first as any).concat(second) as T;\n } else if (typeof first === \"object\" && typeof second === \"object\") {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const chunk = { ...first } as Record<string, any>;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n for (const [key, value] of Object.entries(second as Record<string, any>)) {\n if (key in chunk && !Array.isArray(chunk[key])) {\n chunk[key] = concat(chunk[key], value);\n } else {\n chunk[key] = value;\n }\n }\n return chunk as T;\n } else {\n throw new Error(`Cannot concat ${typeof first} and ${typeof second}`);\n }\n}\n\nexport class AsyncGeneratorWithSetup<\n S = unknown,\n T = unknown,\n TReturn = unknown,\n TNext = unknown\n> implements AsyncGenerator<T, TReturn, TNext>\n{\n private generator: AsyncGenerator<T>;\n\n public setup: Promise<S>;\n\n public config?: unknown;\n\n public signal?: AbortSignal;\n\n private firstResult: Promise<IteratorResult<T>>;\n\n private firstResultUsed = false;\n\n constructor(params: {\n generator: AsyncGenerator<T>;\n startSetup?: () => Promise<S>;\n config?: unknown;\n signal?: AbortSignal;\n }) {\n this.generator = params.generator;\n this.config = params.config;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.signal = params.signal ?? (this.config as any)?.signal;\n // setup is a promise that resolves only after the first iterator value\n // is available. this is useful when setup of several piped generators\n // needs to happen in logical order, ie. in the order in which input to\n // to each generator is available.\n this.setup = new Promise((resolve, reject) => {\n // eslint-disable-next-line no-void\n void AsyncLocalStorageProviderSingleton.runWithConfig(\n pickRunnableConfigKeys(\n params.config as Record<string, unknown> | undefined\n ),\n async () => {\n this.firstResult = params.generator.next();\n if (params.startSetup) {\n this.firstResult.then(params.startSetup).then(resolve, reject);\n } else {\n this.firstResult.then((_result) => resolve(undefined as S), reject);\n }\n },\n true\n );\n });\n }\n\n async next(...args: [] | [TNext]): Promise<IteratorResult<T>> {\n this.signal?.throwIfAborted();\n\n if (!this.firstResultUsed) {\n this.firstResultUsed = true;\n return this.firstResult;\n }\n\n return AsyncLocalStorageProviderSingleton.runWithConfig(\n pickRunnableConfigKeys(\n this.config as Record<string, unknown> | undefined\n ),\n this.signal\n ? async () => {\n return raceWithSignal(this.generator.next(...args), this.signal);\n }\n : async () => {\n return this.generator.next(...args);\n },\n true\n );\n }\n\n async return(\n value?: TReturn | PromiseLike<TReturn>\n ): Promise<IteratorResult<T>> {\n return this.generator.return(value);\n }\n\n async throw(e: Error): Promise<IteratorResult<T>> {\n return this.generator.throw(e);\n }\n\n [Symbol.asyncIterator]() {\n return this;\n }\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore Not present in Node 18 types, required in latest Node 22\n async [Symbol.asyncDispose]() {\n await this.return();\n }\n}\n\nexport async function pipeGeneratorWithSetup<\n S,\n A extends unknown[],\n T,\n TReturn,\n TNext,\n U,\n UReturn,\n UNext\n>(\n to: (\n g: AsyncGenerator<T, TReturn, TNext>,\n s: S,\n ...args: A\n ) => AsyncGenerator<U, UReturn, UNext>,\n generator: AsyncGenerator<T, TReturn, TNext>,\n startSetup: () => Promise<S>,\n signal: AbortSignal | undefined,\n ...args: A\n) {\n const gen = new AsyncGeneratorWithSetup({\n generator,\n startSetup,\n signal,\n });\n const setup = await gen.setup;\n return { output: to(gen, setup, ...args), setup };\n}\n"],"mappings":"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"}
|
package/dist/utils/stream.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream.js","names":["e: any","stream: ReadableStream<T>","generator: AsyncGenerator<T>","iter: AsyncGenerator<T>","buffer","first: T","second: T","params: {\n generator: AsyncGenerator<T>;\n startSetup?: () => Promise<S>;\n config?: unknown;\n signal?: AbortSignal;\n }","value?: TReturn | PromiseLike<TReturn>","e: Error","to: (\n g: AsyncGenerator<T, TReturn, TNext>,\n s: S,\n ...args: A\n ) => AsyncGenerator<U, UReturn, UNext>","generator: AsyncGenerator<T, TReturn, TNext>","startSetup: () => Promise<S>","signal: AbortSignal | undefined"],"sources":["../../src/utils/stream.ts"],"sourcesContent":["import { pickRunnableConfigKeys } from \"../runnables/config.js\";\nimport { AsyncLocalStorageProviderSingleton } from \"../singletons/index.js\";\nimport type { IterableReadableStreamInterface } from \"../types/_internal.js\";\nimport { raceWithSignal } from \"./signal.js\";\n\n// Re-exported for backwards compatibility\n// Do NOT import this type from this file inside the project. Instead, always import from `types/_internal.js`\n// when using internally\nexport type { IterableReadableStreamInterface };\n\n/*\n * Support async iterator syntax for ReadableStreams in all environments.\n * Source: https://github.com/MattiasBuelens/web-streams-polyfill/pull/122#issuecomment-1627354490\n */\nexport class IterableReadableStream<T>\n extends ReadableStream<T>\n implements IterableReadableStreamInterface<T>\n{\n public reader: ReadableStreamDefaultReader<T>;\n\n ensureReader() {\n if (!this.reader) {\n this.reader = this.getReader();\n }\n }\n\n async next(): Promise<IteratorResult<T>> {\n this.ensureReader();\n try {\n const result = await this.reader.read();\n if (result.done) {\n this.reader.releaseLock(); // release lock when stream becomes closed\n return {\n done: true,\n value: undefined,\n };\n } else {\n return {\n done: false,\n value: result.value,\n };\n }\n } catch (e) {\n this.reader.releaseLock(); // release lock when stream becomes errored\n throw e;\n }\n }\n\n async return(): Promise<IteratorResult<T>> {\n this.ensureReader();\n // If wrapped in a Node stream, cancel is already called.\n if (this.locked) {\n const cancelPromise = this.reader.cancel(); // cancel first, but don't await yet\n this.reader.releaseLock(); // release lock first\n await cancelPromise; // now await it\n }\n return { done: true, value: undefined };\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n async throw(e: any): Promise<IteratorResult<T>> {\n this.ensureReader();\n if (this.locked) {\n const cancelPromise = this.reader.cancel(); // cancel first, but don't await yet\n this.reader.releaseLock(); // release lock first\n await cancelPromise; // now await it\n }\n throw e;\n }\n\n [Symbol.asyncIterator]() {\n return this;\n }\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore Not present in Node 18 types, required in latest Node 22\n async [Symbol.asyncDispose]() {\n await this.return();\n }\n\n static fromReadableStream<T>(stream: ReadableStream<T>) {\n // From https://developer.mozilla.org/en-US/docs/Web/API/Streams_API/Using_readable_streams#reading_the_stream\n const reader = stream.getReader();\n return new IterableReadableStream<T>({\n start(controller) {\n return pump();\n function pump(): Promise<T | undefined> {\n return reader.read().then(({ done, value }) => {\n // When no more data needs to be consumed, close the stream\n if (done) {\n controller.close();\n return;\n }\n // Enqueue the next data chunk into our target stream\n controller.enqueue(value);\n return pump();\n });\n }\n },\n cancel() {\n reader.releaseLock();\n },\n });\n }\n\n static fromAsyncGenerator<T>(generator: AsyncGenerator<T>) {\n return new IterableReadableStream<T>({\n async pull(controller) {\n const { value, done } = await generator.next();\n // When no more data needs to be consumed, close the stream\n if (done) {\n controller.close();\n }\n // Fix: `else if (value)` will hang the streaming when nullish value (e.g. empty string) is pulled\n controller.enqueue(value);\n },\n async cancel(reason) {\n await generator.return(reason);\n },\n });\n }\n}\n\nexport function atee<T>(\n iter: AsyncGenerator<T>,\n length = 2\n): AsyncGenerator<T>[] {\n const buffers = Array.from(\n { length },\n () => [] as Array<IteratorResult<T> | IteratorReturnResult<T>>\n );\n return buffers.map(async function* makeIter(buffer) {\n while (true) {\n if (buffer.length === 0) {\n const result = await iter.next();\n for (const buffer of buffers) {\n buffer.push(result);\n }\n } else if (buffer[0].done) {\n return;\n } else {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n yield buffer.shift()!.value;\n }\n }\n });\n}\n\nexport function concat<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n T extends Array<any> | string | number | Record<string, any> | any\n>(first: T, second: T): T {\n if (Array.isArray(first) && Array.isArray(second)) {\n return first.concat(second) as T;\n } else if (typeof first === \"string\" && typeof second === \"string\") {\n return (first + second) as T;\n } else if (typeof first === \"number\" && typeof second === \"number\") {\n return (first + second) as T;\n } else if (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n \"concat\" in (first as any) &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n typeof (first as any).concat === \"function\"\n ) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (first as any).concat(second) as T;\n } else if (typeof first === \"object\" && typeof second === \"object\") {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const chunk = { ...first } as Record<string, any>;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n for (const [key, value] of Object.entries(second as Record<string, any>)) {\n if (key in chunk && !Array.isArray(chunk[key])) {\n chunk[key] = concat(chunk[key], value);\n } else {\n chunk[key] = value;\n }\n }\n return chunk as T;\n } else {\n throw new Error(`Cannot concat ${typeof first} and ${typeof second}`);\n }\n}\n\nexport class AsyncGeneratorWithSetup<\n S = unknown,\n T = unknown,\n TReturn = unknown,\n TNext = unknown\n> implements AsyncGenerator<T, TReturn, TNext>\n{\n private generator: AsyncGenerator<T>;\n\n public setup: Promise<S>;\n\n public config?: unknown;\n\n public signal?: AbortSignal;\n\n private firstResult: Promise<IteratorResult<T>>;\n\n private firstResultUsed = false;\n\n constructor(params: {\n generator: AsyncGenerator<T>;\n startSetup?: () => Promise<S>;\n config?: unknown;\n signal?: AbortSignal;\n }) {\n this.generator = params.generator;\n this.config = params.config;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.signal = params.signal ?? (this.config as any)?.signal;\n // setup is a promise that resolves only after the first iterator value\n // is available. this is useful when setup of several piped generators\n // needs to happen in logical order, ie. in the order in which input to\n // to each generator is available.\n this.setup = new Promise((resolve, reject) => {\n void AsyncLocalStorageProviderSingleton.runWithConfig(\n pickRunnableConfigKeys(\n params.config as Record<string, unknown> | undefined\n ),\n async () => {\n this.firstResult = params.generator.next();\n if (params.startSetup) {\n this.firstResult.then(params.startSetup).then(resolve, reject);\n } else {\n this.firstResult.then((_result) => resolve(undefined as S), reject);\n }\n },\n true\n );\n });\n }\n\n async next(...args: [] | [TNext]): Promise<IteratorResult<T>> {\n this.signal?.throwIfAborted();\n\n if (!this.firstResultUsed) {\n this.firstResultUsed = true;\n return this.firstResult;\n }\n\n return AsyncLocalStorageProviderSingleton.runWithConfig(\n pickRunnableConfigKeys(\n this.config as Record<string, unknown> | undefined\n ),\n this.signal\n ? async () => {\n return raceWithSignal(this.generator.next(...args), this.signal);\n }\n : async () => {\n return this.generator.next(...args);\n },\n true\n );\n }\n\n async return(\n value?: TReturn | PromiseLike<TReturn>\n ): Promise<IteratorResult<T>> {\n return this.generator.return(value);\n }\n\n async throw(e: Error): Promise<IteratorResult<T>> {\n return this.generator.throw(e);\n }\n\n [Symbol.asyncIterator]() {\n return this;\n }\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore Not present in Node 18 types, required in latest Node 22\n async [Symbol.asyncDispose]() {\n await this.return();\n }\n}\n\nexport async function pipeGeneratorWithSetup<\n S,\n A extends unknown[],\n T,\n TReturn,\n TNext,\n U,\n UReturn,\n UNext\n>(\n to: (\n g: AsyncGenerator<T, TReturn, TNext>,\n s: S,\n ...args: A\n ) => AsyncGenerator<U, UReturn, UNext>,\n generator: AsyncGenerator<T, TReturn, TNext>,\n startSetup: () => Promise<S>,\n signal: AbortSignal | undefined,\n ...args: A\n) {\n const gen = new AsyncGeneratorWithSetup({\n generator,\n startSetup,\n signal,\n });\n const setup = await gen.setup;\n return { output: to(gen, setup, ...args), setup };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"stream.js","names":["e: any","stream: ReadableStream<T>","generator: AsyncGenerator<T>","iter: AsyncGenerator<T>","buffer","first: T","second: T","params: {\n generator: AsyncGenerator<T>;\n startSetup?: () => Promise<S>;\n config?: unknown;\n signal?: AbortSignal;\n }","value?: TReturn | PromiseLike<TReturn>","e: Error","to: (\n g: AsyncGenerator<T, TReturn, TNext>,\n s: S,\n ...args: A\n ) => AsyncGenerator<U, UReturn, UNext>","generator: AsyncGenerator<T, TReturn, TNext>","startSetup: () => Promise<S>","signal: AbortSignal | undefined"],"sources":["../../src/utils/stream.ts"],"sourcesContent":["import { pickRunnableConfigKeys } from \"../runnables/config.js\";\nimport { AsyncLocalStorageProviderSingleton } from \"../singletons/index.js\";\nimport type { IterableReadableStreamInterface } from \"../types/_internal.js\";\nimport { raceWithSignal } from \"./signal.js\";\n\n// Re-exported for backwards compatibility\n// Do NOT import this type from this file inside the project. Instead, always import from `types/_internal.js`\n// when using internally\nexport type { IterableReadableStreamInterface };\n\n/*\n * Support async iterator syntax for ReadableStreams in all environments.\n * Source: https://github.com/MattiasBuelens/web-streams-polyfill/pull/122#issuecomment-1627354490\n */\nexport class IterableReadableStream<T>\n extends ReadableStream<T>\n implements IterableReadableStreamInterface<T>\n{\n public reader: ReadableStreamDefaultReader<T>;\n\n ensureReader() {\n if (!this.reader) {\n this.reader = this.getReader();\n }\n }\n\n async next(): Promise<IteratorResult<T>> {\n this.ensureReader();\n try {\n const result = await this.reader.read();\n if (result.done) {\n this.reader.releaseLock(); // release lock when stream becomes closed\n return {\n done: true,\n value: undefined,\n };\n } else {\n return {\n done: false,\n value: result.value,\n };\n }\n } catch (e) {\n this.reader.releaseLock(); // release lock when stream becomes errored\n throw e;\n }\n }\n\n async return(): Promise<IteratorResult<T>> {\n this.ensureReader();\n // If wrapped in a Node stream, cancel is already called.\n if (this.locked) {\n const cancelPromise = this.reader.cancel(); // cancel first, but don't await yet\n this.reader.releaseLock(); // release lock first\n await cancelPromise; // now await it\n }\n return { done: true, value: undefined };\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n async throw(e: any): Promise<IteratorResult<T>> {\n this.ensureReader();\n if (this.locked) {\n const cancelPromise = this.reader.cancel(); // cancel first, but don't await yet\n this.reader.releaseLock(); // release lock first\n await cancelPromise; // now await it\n }\n throw e;\n }\n\n [Symbol.asyncIterator]() {\n return this;\n }\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore Not present in Node 18 types, required in latest Node 22\n async [Symbol.asyncDispose]() {\n await this.return();\n }\n\n static fromReadableStream<T>(stream: ReadableStream<T>) {\n // From https://developer.mozilla.org/en-US/docs/Web/API/Streams_API/Using_readable_streams#reading_the_stream\n const reader = stream.getReader();\n return new IterableReadableStream<T>({\n start(controller) {\n return pump();\n function pump(): Promise<T | undefined> {\n return reader.read().then(({ done, value }) => {\n // When no more data needs to be consumed, close the stream\n if (done) {\n controller.close();\n return;\n }\n // Enqueue the next data chunk into our target stream\n controller.enqueue(value);\n return pump();\n });\n }\n },\n cancel() {\n reader.releaseLock();\n },\n });\n }\n\n static fromAsyncGenerator<T>(generator: AsyncGenerator<T>) {\n return new IterableReadableStream<T>({\n async pull(controller) {\n const { value, done } = await generator.next();\n // When no more data needs to be consumed, close the stream\n if (done) {\n controller.close();\n }\n // Fix: `else if (value)` will hang the streaming when nullish value (e.g. empty string) is pulled\n controller.enqueue(value);\n },\n async cancel(reason) {\n await generator.return(reason);\n },\n });\n }\n}\n\nexport function atee<T>(\n iter: AsyncGenerator<T>,\n length = 2\n): AsyncGenerator<T>[] {\n const buffers = Array.from(\n { length },\n () => [] as Array<IteratorResult<T> | IteratorReturnResult<T>>\n );\n return buffers.map(async function* makeIter(buffer) {\n while (true) {\n if (buffer.length === 0) {\n const result = await iter.next();\n for (const buffer of buffers) {\n buffer.push(result);\n }\n } else if (buffer[0].done) {\n return;\n } else {\n yield buffer.shift()!.value;\n }\n }\n });\n}\n\nexport function concat<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n T extends Array<any> | string | number | Record<string, any> | any\n>(first: T, second: T): T {\n if (Array.isArray(first) && Array.isArray(second)) {\n return first.concat(second) as T;\n } else if (typeof first === \"string\" && typeof second === \"string\") {\n return (first + second) as T;\n } else if (typeof first === \"number\" && typeof second === \"number\") {\n return (first + second) as T;\n } else if (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n \"concat\" in (first as any) &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n typeof (first as any).concat === \"function\"\n ) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (first as any).concat(second) as T;\n } else if (typeof first === \"object\" && typeof second === \"object\") {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const chunk = { ...first } as Record<string, any>;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n for (const [key, value] of Object.entries(second as Record<string, any>)) {\n if (key in chunk && !Array.isArray(chunk[key])) {\n chunk[key] = concat(chunk[key], value);\n } else {\n chunk[key] = value;\n }\n }\n return chunk as T;\n } else {\n throw new Error(`Cannot concat ${typeof first} and ${typeof second}`);\n }\n}\n\nexport class AsyncGeneratorWithSetup<\n S = unknown,\n T = unknown,\n TReturn = unknown,\n TNext = unknown\n> implements AsyncGenerator<T, TReturn, TNext>\n{\n private generator: AsyncGenerator<T>;\n\n public setup: Promise<S>;\n\n public config?: unknown;\n\n public signal?: AbortSignal;\n\n private firstResult: Promise<IteratorResult<T>>;\n\n private firstResultUsed = false;\n\n constructor(params: {\n generator: AsyncGenerator<T>;\n startSetup?: () => Promise<S>;\n config?: unknown;\n signal?: AbortSignal;\n }) {\n this.generator = params.generator;\n this.config = params.config;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.signal = params.signal ?? (this.config as any)?.signal;\n // setup is a promise that resolves only after the first iterator value\n // is available. this is useful when setup of several piped generators\n // needs to happen in logical order, ie. in the order in which input to\n // to each generator is available.\n this.setup = new Promise((resolve, reject) => {\n // eslint-disable-next-line no-void\n void AsyncLocalStorageProviderSingleton.runWithConfig(\n pickRunnableConfigKeys(\n params.config as Record<string, unknown> | undefined\n ),\n async () => {\n this.firstResult = params.generator.next();\n if (params.startSetup) {\n this.firstResult.then(params.startSetup).then(resolve, reject);\n } else {\n this.firstResult.then((_result) => resolve(undefined as S), reject);\n }\n },\n true\n );\n });\n }\n\n async next(...args: [] | [TNext]): Promise<IteratorResult<T>> {\n this.signal?.throwIfAborted();\n\n if (!this.firstResultUsed) {\n this.firstResultUsed = true;\n return this.firstResult;\n }\n\n return AsyncLocalStorageProviderSingleton.runWithConfig(\n pickRunnableConfigKeys(\n this.config as Record<string, unknown> | undefined\n ),\n this.signal\n ? async () => {\n return raceWithSignal(this.generator.next(...args), this.signal);\n }\n : async () => {\n return this.generator.next(...args);\n },\n true\n );\n }\n\n async return(\n value?: TReturn | PromiseLike<TReturn>\n ): Promise<IteratorResult<T>> {\n return this.generator.return(value);\n }\n\n async throw(e: Error): Promise<IteratorResult<T>> {\n return this.generator.throw(e);\n }\n\n [Symbol.asyncIterator]() {\n return this;\n }\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore Not present in Node 18 types, required in latest Node 22\n async [Symbol.asyncDispose]() {\n await this.return();\n }\n}\n\nexport async function pipeGeneratorWithSetup<\n S,\n A extends unknown[],\n T,\n TReturn,\n TNext,\n U,\n UReturn,\n UNext\n>(\n to: (\n g: AsyncGenerator<T, TReturn, TNext>,\n s: S,\n ...args: A\n ) => AsyncGenerator<U, UReturn, UNext>,\n generator: AsyncGenerator<T, TReturn, TNext>,\n startSetup: () => Promise<S>,\n signal: AbortSignal | undefined,\n ...args: A\n) {\n const gen = new AsyncGeneratorWithSetup({\n generator,\n startSetup,\n signal,\n });\n const setup = await gen.setup;\n return { output: to(gen, setup, ...args), setup };\n}\n"],"mappings":";;;;;;;;;;;;;;;AAcA,IAAa,yBAAb,MAAa,+BACH,eAEV;CACE,AAAO;CAEP,eAAe;AACb,MAAI,CAAC,KAAK,QACR,KAAK,SAAS,KAAK,WAAW;CAEjC;CAED,MAAM,OAAmC;EACvC,KAAK,cAAc;AACnB,MAAI;GACF,MAAM,SAAS,MAAM,KAAK,OAAO,MAAM;AACvC,OAAI,OAAO,MAAM;IACf,KAAK,OAAO,aAAa;AACzB,WAAO;KACL,MAAM;KACN,OAAO;IACR;GACF,MACC,QAAO;IACL,MAAM;IACN,OAAO,OAAO;GACf;EAEJ,SAAQ,GAAG;GACV,KAAK,OAAO,aAAa;AACzB,SAAM;EACP;CACF;CAED,MAAM,SAAqC;EACzC,KAAK,cAAc;AAEnB,MAAI,KAAK,QAAQ;GACf,MAAM,gBAAgB,KAAK,OAAO,QAAQ;GAC1C,KAAK,OAAO,aAAa;GACzB,MAAM;EACP;AACD,SAAO;GAAE,MAAM;GAAM,OAAO;EAAW;CACxC;CAGD,MAAM,MAAMA,GAAoC;EAC9C,KAAK,cAAc;AACnB,MAAI,KAAK,QAAQ;GACf,MAAM,gBAAgB,KAAK,OAAO,QAAQ;GAC1C,KAAK,OAAO,aAAa;GACzB,MAAM;EACP;AACD,QAAM;CACP;CAED,CAAC,OAAO,iBAAiB;AACvB,SAAO;CACR;CAID,OAAO,OAAO,gBAAgB;EAC5B,MAAM,KAAK,QAAQ;CACpB;CAED,OAAO,mBAAsBC,QAA2B;EAEtD,MAAM,SAAS,OAAO,WAAW;AACjC,SAAO,IAAI,uBAA0B;GACnC,MAAM,YAAY;AAChB,WAAO,MAAM;IACb,SAAS,OAA+B;AACtC,YAAO,OAAO,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,OAAO,KAAK;AAE7C,UAAI,MAAM;OACR,WAAW,OAAO;AAClB;MACD;MAED,WAAW,QAAQ,MAAM;AACzB,aAAO,MAAM;KACd,EAAC;IACH;GACF;GACD,SAAS;IACP,OAAO,aAAa;GACrB;EACF;CACF;CAED,OAAO,mBAAsBC,WAA8B;AACzD,SAAO,IAAI,uBAA0B;GACnC,MAAM,KAAK,YAAY;IACrB,MAAM,EAAE,OAAO,MAAM,GAAG,MAAM,UAAU,MAAM;AAE9C,QAAI,MACF,WAAW,OAAO;IAGpB,WAAW,QAAQ,MAAM;GAC1B;GACD,MAAM,OAAO,QAAQ;IACnB,MAAM,UAAU,OAAO,OAAO;GAC/B;EACF;CACF;AACF;AAED,SAAgB,KACdC,MACA,SAAS,GACY;CACrB,MAAM,UAAU,MAAM,KACpB,EAAE,OAAQ,GACV,MAAM,CAAE,EACT;AACD,QAAO,QAAQ,IAAI,gBAAgB,SAAS,QAAQ;AAClD,SAAO,KACL,KAAI,OAAO,WAAW,GAAG;GACvB,MAAM,SAAS,MAAM,KAAK,MAAM;AAChC,QAAK,MAAMC,YAAU,SACnBA,SAAO,KAAK,OAAO;EAEtB,WAAU,OAAO,GAAG,KACnB;OAEA,MAAM,OAAO,OAAO,CAAE;CAG3B,EAAC;AACH;AAED,SAAgB,OAGdC,OAAUC,QAAc;AACxB,KAAI,MAAM,QAAQ,MAAM,IAAI,MAAM,QAAQ,OAAO,CAC/C,QAAO,MAAM,OAAO,OAAO;UAClB,OAAO,UAAU,YAAY,OAAO,WAAW,SACxD,QAAQ,QAAQ;UACP,OAAO,UAAU,YAAY,OAAO,WAAW,SACxD,QAAQ,QAAQ;UAGhB,YAAa,SAEb,OAAQ,MAAc,WAAW,WAGjC,QAAQ,MAAc,OAAO,OAAO;UAC3B,OAAO,UAAU,YAAY,OAAO,WAAW,UAAU;EAElE,MAAM,QAAQ,EAAE,GAAG,MAAO;AAE1B,OAAK,MAAM,CAAC,KAAK,MAAM,IAAI,OAAO,QAAQ,OAA8B,CACtE,KAAI,OAAO,SAAS,CAAC,MAAM,QAAQ,MAAM,KAAK,EAC5C,MAAM,OAAO,OAAO,MAAM,MAAM,MAAM;OAEtC,MAAM,OAAO;AAGjB,SAAO;CACR,MACC,OAAM,IAAI,MAAM,CAAC,cAAc,EAAE,OAAO,MAAM,KAAK,EAAE,OAAO,QAAQ;AAEvE;AAED,IAAa,0BAAb,MAMA;CACE,AAAQ;CAER,AAAO;CAEP,AAAO;CAEP,AAAO;CAEP,AAAQ;CAER,AAAQ,kBAAkB;CAE1B,YAAYC,QAKT;EACD,KAAK,YAAY,OAAO;EACxB,KAAK,SAAS,OAAO;EAErB,KAAK,SAAS,OAAO,UAAW,KAAK,QAAgB;EAKrD,KAAK,QAAQ,IAAI,QAAQ,CAAC,SAAS,WAAW;GAEvC,mCAAmC,cACtC,uBACE,OAAO,OACR,EACD,YAAY;IACV,KAAK,cAAc,OAAO,UAAU,MAAM;AAC1C,QAAI,OAAO,YACT,KAAK,YAAY,KAAK,OAAO,WAAW,CAAC,KAAK,SAAS,OAAO;SAE9D,KAAK,YAAY,KAAK,CAAC,YAAY,QAAQ,OAAe,EAAE,OAAO;GAEtE,GACD,KACD;EACF;CACF;CAED,MAAM,KAAK,GAAG,MAAgD;EAC5D,KAAK,QAAQ,gBAAgB;AAE7B,MAAI,CAAC,KAAK,iBAAiB;GACzB,KAAK,kBAAkB;AACvB,UAAO,KAAK;EACb;AAED,SAAO,mCAAmC,cACxC,uBACE,KAAK,OACN,EACD,KAAK,SACD,YAAY;AACV,UAAO,eAAe,KAAK,UAAU,KAAK,GAAG,KAAK,EAAE,KAAK,OAAO;EACjE,IACD,YAAY;AACV,UAAO,KAAK,UAAU,KAAK,GAAG,KAAK;EACpC,GACL,KACD;CACF;CAED,MAAM,OACJC,OAC4B;AAC5B,SAAO,KAAK,UAAU,OAAO,MAAM;CACpC;CAED,MAAM,MAAMC,GAAsC;AAChD,SAAO,KAAK,UAAU,MAAM,EAAE;CAC/B;CAED,CAAC,OAAO,iBAAiB;AACvB,SAAO;CACR;CAID,OAAO,OAAO,gBAAgB;EAC5B,MAAM,KAAK,QAAQ;CACpB;AACF;AAED,eAAsB,uBAUpBC,IAKAC,WACAC,YACAC,QACA,GAAG,MACH;CACA,MAAM,MAAM,IAAI,wBAAwB;EACtC;EACA;EACA;CACD;CACD,MAAM,QAAQ,MAAM,IAAI;AACxB,QAAO;EAAE,QAAQ,GAAG,KAAK,OAAO,GAAG,KAAK;EAAE;CAAO;AAClD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","names":["BaseOutputParser","text: string","Runnable","fields: { returnOptions?: boolean }","input: string","options?: Partial<BaseCallbackConfig>","LLM","fields: { response?: string; thrownErrorString?: string } & BaseLLMParams","prompt: string","_options: this[\"ParsedCallOptions\"]","runManager?: CallbackManagerForLLMRun","fields: {\n sleep?: number;\n responses?: string[];\n thrownErrorString?: string;\n } & BaseLLMParams","_options?: this[\"ParsedCallOptions\"]","BaseChatModel","messages: BaseMessage[]","options?: this[\"ParsedCallOptions\"]","AIMessage","tools: (StructuredTool | ToolSpec)[]","toJsonSchema","_runManager?: CallbackManagerForLLMRun","generation: ChatResult","_messages: BaseMessage[]","ChatGenerationChunk","AIMessageChunk","BaseRetriever","Document","fields?: { output: Document[] }","_query: string","params: FakeChatInput","options: this[\"ParsedCallOptions\"]","_params:\n | StructuredOutputMethodParams<RunOutput, boolean>\n | InteropZodType<RunOutput>\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n | Record<string, any>","_config?: StructuredOutputMethodOptions<boolean>","RunnableLambda","BaseChatMessageHistory","message: BaseMessage","message: string","HumanMessage","BaseListChatMessageHistory","BaseTracer","run: Run","StructuredTool","fields: FakeToolParams<T>","arg: ToolInputSchemaOutputType<T>","_runManager?: CallbackManagerForToolRun","Embeddings","params?: EmbeddingsParams","documents: string[]","_: string","params?: SyntheticEmbeddingsParams","document: string","ret: number[]","ret","VectorStore","embeddings: EmbeddingsInterface","cosine","documents: Document[]","vectors: number[][]","query: number[]","k: number","filter?: this[\"FilterType\"]","memoryVector: MemoryVector","result: [Document, number][]","texts: string[]","metadatas: object[] | object","dbConfig?: FakeVectorStoreArgs","docs: Document[]"],"sources":["../../../src/utils/testing/index.ts"],"sourcesContent":["/* eslint-disable no-promise-executor-return */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/no-unused-vars */\n\nimport {\n BaseCallbackConfig,\n CallbackManagerForLLMRun,\n CallbackManagerForToolRun,\n} from \"../../callbacks/manager.js\";\nimport {\n BaseChatMessageHistory,\n BaseListChatMessageHistory,\n} from \"../../chat_history.js\";\nimport { Document } from \"../../documents/document.js\";\nimport {\n BaseChatModel,\n BaseChatModelCallOptions,\n BaseChatModelParams,\n} from \"../../language_models/chat_models.js\";\nimport { BaseLLMParams, LLM } from \"../../language_models/llms.js\";\nimport {\n BaseMessage,\n AIMessage,\n AIMessageChunk,\n HumanMessage,\n} from \"../../messages/index.js\";\nimport { BaseOutputParser } from \"../../output_parsers/base.js\";\nimport {\n GenerationChunk,\n type ChatResult,\n ChatGenerationChunk,\n} from \"../../outputs.js\";\nimport { BaseRetriever } from \"../../retrievers/index.js\";\nimport { Runnable, RunnableLambda } from \"../../runnables/base.js\";\nimport { StructuredTool, ToolParams } from \"../../tools/index.js\";\nimport { ToolInputSchemaOutputType } from \"../../tools/types.js\";\nimport { BaseTracer, Run } from \"../../tracers/base.js\";\nimport {\n Embeddings,\n EmbeddingsInterface,\n EmbeddingsParams,\n} from \"../../embeddings.js\";\nimport {\n StructuredOutputMethodParams,\n BaseLanguageModelInput,\n StructuredOutputMethodOptions,\n} from \"../../language_models/base.js\";\n\nimport { toJsonSchema } from \"../json_schema.js\";\n\nimport { VectorStore } from \"../../vectorstores.js\";\nimport { cosine } from \"../ml-distance/similarities.js\";\nimport { InteropZodObject, InteropZodType } from \"../types/zod.js\";\n\n/**\n * Parser for comma-separated values. It splits the input text by commas\n * and trims the resulting values.\n */\nexport class FakeSplitIntoListParser extends BaseOutputParser<string[]> {\n lc_namespace = [\"tests\", \"fake\"];\n\n getFormatInstructions() {\n return \"\";\n }\n\n async parse(text: string): Promise<string[]> {\n return text.split(\",\").map((value) => value.trim());\n }\n}\n\nexport class FakeRunnable extends Runnable<string, Record<string, any>> {\n lc_namespace = [\"tests\", \"fake\"];\n\n returnOptions?: boolean;\n\n constructor(fields: { returnOptions?: boolean }) {\n super(fields);\n this.returnOptions = fields.returnOptions;\n }\n\n async invoke(\n input: string,\n options?: Partial<BaseCallbackConfig>\n ): Promise<Record<string, any>> {\n if (this.returnOptions) {\n return options ?? {};\n }\n return { input };\n }\n}\n\nexport class FakeLLM extends LLM {\n response?: string;\n\n thrownErrorString?: string;\n\n constructor(\n fields: { response?: string; thrownErrorString?: string } & BaseLLMParams\n ) {\n super(fields);\n this.response = fields.response;\n this.thrownErrorString = fields.thrownErrorString;\n }\n\n _llmType() {\n return \"fake\";\n }\n\n async _call(\n prompt: string,\n _options: this[\"ParsedCallOptions\"],\n runManager?: CallbackManagerForLLMRun\n ): Promise<string> {\n if (this.thrownErrorString) {\n throw new Error(this.thrownErrorString);\n }\n const response = this.response ?? prompt;\n await runManager?.handleLLMNewToken(response);\n return response;\n }\n}\n\nexport class FakeStreamingLLM extends LLM {\n sleep?: number = 50;\n\n responses?: string[];\n\n thrownErrorString?: string;\n\n constructor(\n fields: {\n sleep?: number;\n responses?: string[];\n thrownErrorString?: string;\n } & BaseLLMParams\n ) {\n super(fields);\n this.sleep = fields.sleep ?? this.sleep;\n this.responses = fields.responses;\n this.thrownErrorString = fields.thrownErrorString;\n }\n\n _llmType() {\n return \"fake\";\n }\n\n async _call(prompt: string): Promise<string> {\n if (this.thrownErrorString) {\n throw new Error(this.thrownErrorString);\n }\n const response = this.responses?.[0];\n this.responses = this.responses?.slice(1);\n return response ?? prompt;\n }\n\n async *_streamResponseChunks(\n input: string,\n _options?: this[\"ParsedCallOptions\"],\n runManager?: CallbackManagerForLLMRun\n ) {\n if (this.thrownErrorString) {\n throw new Error(this.thrownErrorString);\n }\n const response = this.responses?.[0];\n this.responses = this.responses?.slice(1);\n for (const c of response ?? input) {\n await new Promise((resolve) => setTimeout(resolve, this.sleep));\n yield { text: c, generationInfo: {} } as GenerationChunk;\n await runManager?.handleLLMNewToken(c);\n }\n }\n}\n\nexport class FakeChatModel extends BaseChatModel {\n _combineLLMOutput() {\n return [];\n }\n\n _llmType(): string {\n return \"fake\";\n }\n\n async _generate(\n messages: BaseMessage[],\n options?: this[\"ParsedCallOptions\"],\n runManager?: CallbackManagerForLLMRun\n ): Promise<ChatResult> {\n if (options?.stop?.length) {\n return {\n generations: [\n {\n message: new AIMessage(options.stop[0]),\n text: options.stop[0],\n },\n ],\n };\n }\n const text = messages\n .map((m) => {\n if (typeof m.content === \"string\") {\n return m.content;\n }\n return JSON.stringify(m.content, null, 2);\n })\n .join(\"\\n\");\n await runManager?.handleLLMNewToken(text);\n return {\n generations: [\n {\n message: new AIMessage(text),\n text,\n },\n ],\n llmOutput: {},\n };\n }\n}\n\nexport class FakeStreamingChatModel extends BaseChatModel<FakeStreamingChatModelCallOptions> {\n sleep = 50;\n\n responses: BaseMessage[] = [];\n\n chunks: AIMessageChunk[] = [];\n\n toolStyle: \"openai\" | \"anthropic\" | \"bedrock\" | \"google\" = \"openai\";\n\n thrownErrorString?: string;\n\n private tools: (StructuredTool | ToolSpec)[] = [];\n\n constructor({\n sleep = 50,\n responses = [],\n chunks = [],\n toolStyle = \"openai\",\n thrownErrorString,\n ...rest\n }: FakeStreamingChatModelFields & BaseLLMParams) {\n super(rest);\n this.sleep = sleep;\n this.responses = responses;\n this.chunks = chunks;\n this.toolStyle = toolStyle;\n this.thrownErrorString = thrownErrorString;\n }\n\n _llmType() {\n return \"fake\";\n }\n\n bindTools(tools: (StructuredTool | ToolSpec)[]) {\n const merged = [...this.tools, ...tools];\n\n const toolDicts = merged.map((t) => {\n switch (this.toolStyle) {\n case \"openai\":\n return {\n type: \"function\",\n function: {\n name: t.name,\n description: t.description,\n parameters: toJsonSchema(t.schema),\n },\n };\n case \"anthropic\":\n return {\n name: t.name,\n description: t.description,\n input_schema: toJsonSchema(t.schema),\n };\n case \"bedrock\":\n return {\n toolSpec: {\n name: t.name,\n description: t.description,\n inputSchema: toJsonSchema(t.schema),\n },\n };\n case \"google\":\n return {\n name: t.name,\n description: t.description,\n parameters: toJsonSchema(t.schema),\n };\n default:\n throw new Error(`Unsupported tool style: ${this.toolStyle}`);\n }\n });\n\n const wrapped =\n this.toolStyle === \"google\"\n ? [{ functionDeclarations: toolDicts }]\n : toolDicts;\n\n /* creating a *new* instance – mirrors LangChain .bind semantics for type-safety and avoiding noise */\n const next = new FakeStreamingChatModel({\n sleep: this.sleep,\n responses: this.responses,\n chunks: this.chunks,\n toolStyle: this.toolStyle,\n thrownErrorString: this.thrownErrorString,\n });\n next.tools = merged;\n\n return next.withConfig({ tools: wrapped } as BaseChatModelCallOptions);\n }\n\n async _generate(\n messages: BaseMessage[],\n _options: this[\"ParsedCallOptions\"],\n _runManager?: CallbackManagerForLLMRun\n ): Promise<ChatResult> {\n if (this.thrownErrorString) {\n throw new Error(this.thrownErrorString);\n }\n\n const content = this.responses?.[0]?.content ?? messages[0].content ?? \"\";\n\n const generation: ChatResult = {\n generations: [\n {\n text: \"\",\n message: new AIMessage({\n content,\n tool_calls: this.chunks?.[0]?.tool_calls,\n }),\n },\n ],\n };\n\n return generation;\n }\n\n async *_streamResponseChunks(\n _messages: BaseMessage[],\n _options: this[\"ParsedCallOptions\"],\n runManager?: CallbackManagerForLLMRun\n ): AsyncGenerator<ChatGenerationChunk> {\n if (this.thrownErrorString) {\n throw new Error(this.thrownErrorString);\n }\n if (this.chunks?.length) {\n for (const msgChunk of this.chunks) {\n const cg = new ChatGenerationChunk({\n message: new AIMessageChunk({\n content: msgChunk.content,\n tool_calls: msgChunk.tool_calls,\n additional_kwargs: msgChunk.additional_kwargs ?? {},\n }),\n text: msgChunk.content?.toString() ?? \"\",\n });\n\n yield cg;\n await runManager?.handleLLMNewToken(\n msgChunk.content as string,\n undefined,\n undefined,\n undefined,\n undefined,\n { chunk: cg }\n );\n }\n return;\n }\n\n const fallback =\n this.responses?.[0] ??\n new AIMessage(\n typeof _messages[0].content === \"string\" ? _messages[0].content : \"\"\n );\n const text = typeof fallback.content === \"string\" ? fallback.content : \"\";\n\n for (const ch of text) {\n await new Promise((r) => setTimeout(r, this.sleep));\n const cg = new ChatGenerationChunk({\n message: new AIMessageChunk({ content: ch }),\n text: ch,\n });\n yield cg;\n await runManager?.handleLLMNewToken(\n ch,\n undefined,\n undefined,\n undefined,\n undefined,\n { chunk: cg }\n );\n }\n }\n}\n\nexport class FakeRetriever extends BaseRetriever {\n lc_namespace = [\"test\", \"fake\"];\n\n output = [\n new Document({ pageContent: \"foo\" }),\n new Document({ pageContent: \"bar\" }),\n ];\n\n constructor(fields?: { output: Document[] }) {\n super();\n this.output = fields?.output ?? this.output;\n }\n\n async _getRelevantDocuments(\n _query: string\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ): Promise<Document<Record<string, any>>[]> {\n return this.output;\n }\n}\n/** Minimal shape actually needed by `bindTools` */\nexport interface ToolSpec {\n name: string;\n description?: string;\n schema: InteropZodType | Record<string, unknown>; // Either a Zod schema *or* a plain JSON-Schema object\n}\n/**\n * Interface specific to the Fake Streaming Chat model.\n */\nexport interface FakeStreamingChatModelCallOptions\n extends BaseChatModelCallOptions {}\n/**\n * Interface for the Constructor-field specific to the Fake Streaming Chat model (all optional because we fill in defaults).\n */\nexport interface FakeStreamingChatModelFields extends BaseChatModelParams {\n /** Milliseconds to pause between fallback char-by-char chunks */\n sleep?: number;\n\n /** Full AI messages to fall back to when no `chunks` supplied */\n responses?: BaseMessage[];\n\n /** Exact chunks to emit (can include tool-call deltas) */\n chunks?: AIMessageChunk[];\n\n /** How tool specs are formatted in `bindTools` */\n toolStyle?: \"openai\" | \"anthropic\" | \"bedrock\" | \"google\";\n\n /** Throw this error instead of streaming (useful in tests) */\n thrownErrorString?: string;\n}\n\n/**\n * Interface for the input parameters specific to the Fake List Chat model.\n */\nexport interface FakeChatInput extends BaseChatModelParams {\n /** Responses to return */\n responses: string[];\n\n /** Time to sleep in milliseconds between responses */\n sleep?: number;\n\n emitCustomEvent?: boolean;\n}\n\nexport interface FakeListChatModelCallOptions extends BaseChatModelCallOptions {\n thrownErrorString?: string;\n}\n\n/**\n * A fake Chat Model that returns a predefined list of responses. It can be used\n * for testing purposes.\n * @example\n * ```typescript\n * const chat = new FakeListChatModel({\n * responses: [\"I'll callback later.\", \"You 'console' them!\"]\n * });\n *\n * const firstMessage = new HumanMessage(\"You want to hear a JavaScript joke?\");\n * const secondMessage = new HumanMessage(\"How do you cheer up a JavaScript developer?\");\n *\n * // Call the chat model with a message and log the response\n * const firstResponse = await chat.call([firstMessage]);\n * console.log({ firstResponse });\n *\n * const secondResponse = await chat.call([secondMessage]);\n * console.log({ secondResponse });\n * ```\n */\nexport class FakeListChatModel extends BaseChatModel<FakeListChatModelCallOptions> {\n static lc_name() {\n return \"FakeListChatModel\";\n }\n\n lc_serializable = true;\n\n responses: string[];\n\n i = 0;\n\n sleep?: number;\n\n emitCustomEvent = false;\n\n constructor(params: FakeChatInput) {\n super(params);\n const { responses, sleep, emitCustomEvent } = params;\n this.responses = responses;\n this.sleep = sleep;\n this.emitCustomEvent = emitCustomEvent ?? this.emitCustomEvent;\n }\n\n _combineLLMOutput() {\n return [];\n }\n\n _llmType(): string {\n return \"fake-list\";\n }\n\n async _generate(\n _messages: BaseMessage[],\n options?: this[\"ParsedCallOptions\"],\n runManager?: CallbackManagerForLLMRun\n ): Promise<ChatResult> {\n await this._sleepIfRequested();\n if (options?.thrownErrorString) {\n throw new Error(options.thrownErrorString);\n }\n if (this.emitCustomEvent) {\n await runManager?.handleCustomEvent(\"some_test_event\", {\n someval: true,\n });\n }\n\n if (options?.stop?.length) {\n return {\n generations: [this._formatGeneration(options.stop[0])],\n };\n } else {\n const response = this._currentResponse();\n this._incrementResponse();\n\n return {\n generations: [this._formatGeneration(response)],\n llmOutput: {},\n };\n }\n }\n\n _formatGeneration(text: string) {\n return {\n message: new AIMessage(text),\n text,\n };\n }\n\n async *_streamResponseChunks(\n _messages: BaseMessage[],\n options: this[\"ParsedCallOptions\"],\n runManager?: CallbackManagerForLLMRun\n ): AsyncGenerator<ChatGenerationChunk> {\n const response = this._currentResponse();\n this._incrementResponse();\n if (this.emitCustomEvent) {\n await runManager?.handleCustomEvent(\"some_test_event\", {\n someval: true,\n });\n }\n\n for await (const text of response) {\n await this._sleepIfRequested();\n if (options?.thrownErrorString) {\n throw new Error(options.thrownErrorString);\n }\n const chunk = this._createResponseChunk(text);\n yield chunk;\n void runManager?.handleLLMNewToken(text);\n }\n }\n\n async _sleepIfRequested() {\n if (this.sleep !== undefined) {\n await this._sleep();\n }\n }\n\n async _sleep() {\n return new Promise<void>((resolve) => {\n setTimeout(() => resolve(), this.sleep);\n });\n }\n\n _createResponseChunk(text: string): ChatGenerationChunk {\n return new ChatGenerationChunk({\n message: new AIMessageChunk({ content: text }),\n text,\n });\n }\n\n _currentResponse() {\n return this.responses[this.i];\n }\n\n _incrementResponse() {\n if (this.i < this.responses.length - 1) {\n this.i += 1;\n } else {\n this.i = 0;\n }\n }\n\n withStructuredOutput<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n RunOutput extends Record<string, any> = Record<string, any>\n >(\n _params:\n | StructuredOutputMethodParams<RunOutput, false>\n | InteropZodType<RunOutput>\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n | Record<string, any>,\n config?: StructuredOutputMethodOptions<false>\n ): Runnable<BaseLanguageModelInput, RunOutput>;\n\n withStructuredOutput<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n RunOutput extends Record<string, any> = Record<string, any>\n >(\n _params:\n | StructuredOutputMethodParams<RunOutput, true>\n | InteropZodType<RunOutput>\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n | Record<string, any>,\n config?: StructuredOutputMethodOptions<true>\n ): Runnable<BaseLanguageModelInput, { raw: BaseMessage; parsed: RunOutput }>;\n\n withStructuredOutput<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n RunOutput extends Record<string, any> = Record<string, any>\n >(\n _params:\n | StructuredOutputMethodParams<RunOutput, boolean>\n | InteropZodType<RunOutput>\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n | Record<string, any>,\n _config?: StructuredOutputMethodOptions<boolean>\n ):\n | Runnable<BaseLanguageModelInput, RunOutput>\n | Runnable<\n BaseLanguageModelInput,\n { raw: BaseMessage; parsed: RunOutput }\n > {\n return RunnableLambda.from(async (input) => {\n const message = await this.invoke(input);\n if (message.tool_calls?.[0]?.args) {\n return message.tool_calls[0].args as RunOutput;\n }\n if (typeof message.content === \"string\") {\n return JSON.parse(message.content);\n }\n throw new Error(\"No structured output found\");\n }) as Runnable;\n }\n}\n\nexport class FakeChatMessageHistory extends BaseChatMessageHistory {\n lc_namespace = [\"langchain_core\", \"message\", \"fake\"];\n\n messages: Array<BaseMessage> = [];\n\n constructor() {\n super();\n }\n\n async getMessages(): Promise<BaseMessage[]> {\n return this.messages;\n }\n\n async addMessage(message: BaseMessage): Promise<void> {\n this.messages.push(message);\n }\n\n async addUserMessage(message: string): Promise<void> {\n this.messages.push(new HumanMessage(message));\n }\n\n async addAIChatMessage(message: string): Promise<void> {\n this.messages.push(new AIMessage(message));\n }\n\n async clear(): Promise<void> {\n this.messages = [];\n }\n}\n\nexport class FakeListChatMessageHistory extends BaseListChatMessageHistory {\n lc_namespace = [\"langchain_core\", \"message\", \"fake\"];\n\n messages: Array<BaseMessage> = [];\n\n constructor() {\n super();\n }\n\n async addMessage(message: BaseMessage): Promise<void> {\n this.messages.push(message);\n }\n\n async getMessages(): Promise<BaseMessage[]> {\n return this.messages;\n }\n}\n\nexport class FakeTracer extends BaseTracer {\n name = \"fake_tracer\";\n\n runs: Run[] = [];\n\n constructor() {\n super();\n }\n\n protected persistRun(run: Run): Promise<void> {\n this.runs.push(run);\n return Promise.resolve();\n }\n}\n\nexport interface FakeToolParams<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n T extends InteropZodObject = InteropZodObject\n> extends ToolParams {\n name: string;\n description: string;\n schema: T;\n}\n\nexport class FakeTool<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n T extends InteropZodObject = InteropZodObject\n> extends StructuredTool<T> {\n name: string;\n\n description: string;\n\n schema: T;\n\n constructor(fields: FakeToolParams<T>) {\n super(fields);\n this.name = fields.name;\n this.description = fields.description;\n this.schema = fields.schema;\n }\n\n protected async _call(\n arg: ToolInputSchemaOutputType<T>,\n _runManager?: CallbackManagerForToolRun\n ): Promise<string> {\n return JSON.stringify(arg);\n }\n}\n\n/**\n * A class that provides fake embeddings by overriding the embedDocuments\n * and embedQuery methods to return fixed values.\n */\nexport class FakeEmbeddings extends Embeddings {\n constructor(params?: EmbeddingsParams) {\n super(params ?? {});\n }\n\n /**\n * Generates fixed embeddings for a list of documents.\n * @param documents List of documents to generate embeddings for.\n * @returns A promise that resolves with a list of fixed embeddings for each document.\n */\n embedDocuments(documents: string[]): Promise<number[][]> {\n return Promise.resolve(documents.map(() => [0.1, 0.2, 0.3, 0.4]));\n }\n\n /**\n * Generates a fixed embedding for a query.\n * @param _ The query to generate an embedding for.\n * @returns A promise that resolves with a fixed embedding for the query.\n */\n embedQuery(_: string): Promise<number[]> {\n return Promise.resolve([0.1, 0.2, 0.3, 0.4]);\n }\n}\n\n/**\n * An interface that defines additional parameters specific to the\n * SyntheticEmbeddings class.\n */\ninterface SyntheticEmbeddingsParams extends EmbeddingsParams {\n vectorSize: number;\n}\n\n/**\n * A class that provides synthetic embeddings by overriding the\n * embedDocuments and embedQuery methods to generate embeddings based on\n * the input documents. The embeddings are generated by converting each\n * document into chunks, calculating a numerical value for each chunk, and\n * returning an array of these values as the embedding.\n */\nexport class SyntheticEmbeddings\n extends Embeddings\n implements SyntheticEmbeddingsParams\n{\n vectorSize: number;\n\n constructor(params?: SyntheticEmbeddingsParams) {\n super(params ?? {});\n this.vectorSize = params?.vectorSize ?? 4;\n }\n\n /**\n * Generates synthetic embeddings for a list of documents.\n * @param documents List of documents to generate embeddings for.\n * @returns A promise that resolves with a list of synthetic embeddings for each document.\n */\n async embedDocuments(documents: string[]): Promise<number[][]> {\n return Promise.all(documents.map((doc) => this.embedQuery(doc)));\n }\n\n /**\n * Generates a synthetic embedding for a document. The document is\n * converted into chunks, a numerical value is calculated for each chunk,\n * and an array of these values is returned as the embedding.\n * @param document The document to generate an embedding for.\n * @returns A promise that resolves with a synthetic embedding for the document.\n */\n async embedQuery(document: string): Promise<number[]> {\n let doc = document;\n\n // Only use the letters (and space) from the document, and make them lower case\n doc = doc.toLowerCase().replaceAll(/[^a-z ]/g, \"\");\n\n // Pad the document to make sure it has a divisible number of chunks\n const padMod = doc.length % this.vectorSize;\n const padGapSize = padMod === 0 ? 0 : this.vectorSize - padMod;\n const padSize = doc.length + padGapSize;\n doc = doc.padEnd(padSize, \" \");\n\n // Break it into chunks\n const chunkSize = doc.length / this.vectorSize;\n const docChunk = [];\n for (let co = 0; co < doc.length; co += chunkSize) {\n docChunk.push(doc.slice(co, co + chunkSize));\n }\n\n // Turn each chunk into a number\n const ret: number[] = docChunk.map((s) => {\n let sum = 0;\n // Get a total value by adding the value of each character in the string\n for (let co = 0; co < s.length; co += 1) {\n sum += s === \" \" ? 0 : s.charCodeAt(co);\n }\n // Reduce this to a number between 0 and 25 inclusive\n // Then get the fractional number by dividing it by 26\n const ret = (sum % 26) / 26;\n return ret;\n });\n\n return ret;\n }\n}\n\nexport class 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 * Interface representing a vector in memory. It includes the content\n * (text), the corresponding embedding (vector), and any associated\n * metadata.\n */\ninterface MemoryVector {\n content: string;\n embedding: number[];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n metadata: Record<string, any>;\n}\n\n/**\n * Interface for the arguments that can be passed to the\n * `FakeVectorStore` constructor. It includes an optional `similarity`\n * function.\n */\nexport interface FakeVectorStoreArgs {\n similarity?: typeof cosine;\n}\n\n/**\n * Class that extends `VectorStore` to store vectors in memory. Provides\n * methods for adding documents, performing similarity searches, and\n * creating instances from texts, documents, or an existing index.\n */\nexport class FakeVectorStore extends VectorStore {\n declare FilterType: (doc: Document) => boolean;\n\n memoryVectors: MemoryVector[] = [];\n\n similarity: typeof cosine;\n\n _vectorstoreType(): string {\n return \"memory\";\n }\n\n constructor(\n embeddings: EmbeddingsInterface,\n { similarity, ...rest }: FakeVectorStoreArgs = {}\n ) {\n super(embeddings, rest);\n\n this.similarity = similarity ?? cosine;\n }\n\n /**\n * Method to add documents to the memory vector store. It extracts the\n * text from each document, generates embeddings for them, and adds the\n * resulting vectors to the store.\n * @param documents Array of `Document` instances to be added to the store.\n * @returns Promise that resolves when all documents have been added.\n */\n async addDocuments(documents: Document[]): Promise<void> {\n const texts = documents.map(({ pageContent }) => pageContent);\n return this.addVectors(\n await this.embeddings.embedDocuments(texts),\n documents\n );\n }\n\n /**\n * Method to add vectors to the memory vector store. It creates\n * `MemoryVector` instances for each vector and document pair and adds\n * them to the store.\n * @param vectors Array of vectors to be added to the store.\n * @param documents Array of `Document` instances corresponding to the vectors.\n * @returns Promise that resolves when all vectors have been added.\n */\n async addVectors(vectors: number[][], documents: Document[]): Promise<void> {\n const memoryVectors = vectors.map((embedding, idx) => ({\n content: documents[idx].pageContent,\n embedding,\n metadata: documents[idx].metadata,\n }));\n\n this.memoryVectors = this.memoryVectors.concat(memoryVectors);\n }\n\n /**\n * Method to perform a similarity search in the memory vector store. It\n * calculates the similarity between the query vector and each vector in\n * the store, sorts the results by similarity, and returns the top `k`\n * results along with their scores.\n * @param query Query vector to compare against the vectors in the store.\n * @param k Number of top results to return.\n * @param filter Optional filter function to apply to the vectors before performing the search.\n * @returns Promise that resolves with an array of tuples, each containing a `Document` and its similarity score.\n */\n async similaritySearchVectorWithScore(\n query: number[],\n k: number,\n filter?: this[\"FilterType\"]\n ): Promise<[Document, number][]> {\n const filterFunction = (memoryVector: MemoryVector) => {\n if (!filter) {\n return true;\n }\n\n const doc = new Document({\n metadata: memoryVector.metadata,\n pageContent: memoryVector.content,\n });\n return filter(doc);\n };\n const filteredMemoryVectors = this.memoryVectors.filter(filterFunction);\n const searches = filteredMemoryVectors\n .map((vector, index) => ({\n similarity: this.similarity(query, vector.embedding),\n index,\n }))\n .sort((a, b) => (a.similarity > b.similarity ? -1 : 0))\n .slice(0, k);\n\n const result: [Document, number][] = searches.map((search) => [\n new Document({\n metadata: filteredMemoryVectors[search.index].metadata,\n pageContent: filteredMemoryVectors[search.index].content,\n }),\n search.similarity,\n ]);\n\n return result;\n }\n\n /**\n * Static method to create a `FakeVectorStore` instance from an array of\n * texts. It creates a `Document` for each text and metadata pair, and\n * adds them to the store.\n * @param texts Array of texts to be added to the store.\n * @param metadatas Array or single object of metadata corresponding to the texts.\n * @param embeddings `Embeddings` instance used to generate embeddings for the texts.\n * @param dbConfig Optional `FakeVectorStoreArgs` to configure the `FakeVectorStore` instance.\n * @returns Promise that resolves with a new `FakeVectorStore` instance.\n */\n static async fromTexts(\n texts: string[],\n metadatas: object[] | object,\n embeddings: EmbeddingsInterface,\n dbConfig?: FakeVectorStoreArgs\n ): Promise<FakeVectorStore> {\n const docs: Document[] = [];\n for (let i = 0; i < texts.length; i += 1) {\n const metadata = Array.isArray(metadatas) ? metadatas[i] : metadatas;\n const newDoc = new Document({\n pageContent: texts[i],\n metadata,\n });\n docs.push(newDoc);\n }\n return FakeVectorStore.fromDocuments(docs, embeddings, dbConfig);\n }\n\n /**\n * Static method to create a `FakeVectorStore` instance from an array of\n * `Document` instances. It adds the documents to the store.\n * @param docs Array of `Document` instances to be added to the store.\n * @param embeddings `Embeddings` instance used to generate embeddings for the documents.\n * @param dbConfig Optional `FakeVectorStoreArgs` to configure the `FakeVectorStore` instance.\n * @returns Promise that resolves with a new `FakeVectorStore` instance.\n */\n static async fromDocuments(\n docs: Document[],\n embeddings: EmbeddingsInterface,\n dbConfig?: FakeVectorStoreArgs\n ): Promise<FakeVectorStore> {\n const instance = new this(embeddings, dbConfig);\n await instance.addDocuments(docs);\n return instance;\n }\n\n /**\n * Static method to create a `FakeVectorStore` instance from an existing\n * index. It creates a new `FakeVectorStore` instance without adding any\n * documents or vectors.\n * @param embeddings `Embeddings` instance used to generate embeddings for the documents.\n * @param dbConfig Optional `FakeVectorStoreArgs` to configure the `FakeVectorStore` instance.\n * @returns Promise that resolves with a new `FakeVectorStore` instance.\n */\n static async fromExistingIndex(\n embeddings: EmbeddingsInterface,\n dbConfig?: FakeVectorStoreArgs\n ): Promise<FakeVectorStore> {\n const instance = new this(embeddings, dbConfig);\n return instance;\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","names":["BaseOutputParser","text: string","Runnable","fields: { returnOptions?: boolean }","input: string","options?: Partial<BaseCallbackConfig>","LLM","fields: { response?: string; thrownErrorString?: string } & BaseLLMParams","prompt: string","_options: this[\"ParsedCallOptions\"]","runManager?: CallbackManagerForLLMRun","fields: {\n sleep?: number;\n responses?: string[];\n thrownErrorString?: string;\n } & BaseLLMParams","_options?: this[\"ParsedCallOptions\"]","BaseChatModel","messages: BaseMessage[]","options?: this[\"ParsedCallOptions\"]","AIMessage","tools: (StructuredTool | ToolSpec)[]","toJsonSchema","_runManager?: CallbackManagerForLLMRun","generation: ChatResult","_messages: BaseMessage[]","ChatGenerationChunk","AIMessageChunk","BaseRetriever","Document","fields?: { output: Document[] }","_query: string","params: FakeChatInput","options: this[\"ParsedCallOptions\"]","_params:\n | StructuredOutputMethodParams<RunOutput, boolean>\n | InteropZodType<RunOutput>\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n | Record<string, any>","_config?: StructuredOutputMethodOptions<boolean>","RunnableLambda","BaseChatMessageHistory","message: BaseMessage","message: string","HumanMessage","BaseListChatMessageHistory","BaseTracer","run: Run","StructuredTool","fields: FakeToolParams<T>","arg: ToolInputSchemaOutputType<T>","_runManager?: CallbackManagerForToolRun","Embeddings","params?: EmbeddingsParams","documents: string[]","_: string","params?: SyntheticEmbeddingsParams","document: string","ret: number[]","ret","VectorStore","embeddings: EmbeddingsInterface","cosine","documents: Document[]","vectors: number[][]","query: number[]","k: number","filter?: this[\"FilterType\"]","memoryVector: MemoryVector","result: [Document, number][]","texts: string[]","metadatas: object[] | object","dbConfig?: FakeVectorStoreArgs","docs: Document[]"],"sources":["../../../src/utils/testing/index.ts"],"sourcesContent":["import {\n BaseCallbackConfig,\n CallbackManagerForLLMRun,\n CallbackManagerForToolRun,\n} from \"../../callbacks/manager.js\";\nimport {\n BaseChatMessageHistory,\n BaseListChatMessageHistory,\n} from \"../../chat_history.js\";\nimport { Document } from \"../../documents/document.js\";\nimport {\n BaseChatModel,\n BaseChatModelCallOptions,\n BaseChatModelParams,\n} from \"../../language_models/chat_models.js\";\nimport { BaseLLMParams, LLM } from \"../../language_models/llms.js\";\nimport {\n BaseMessage,\n AIMessage,\n AIMessageChunk,\n HumanMessage,\n} from \"../../messages/index.js\";\nimport { BaseOutputParser } from \"../../output_parsers/base.js\";\nimport {\n GenerationChunk,\n type ChatResult,\n ChatGenerationChunk,\n} from \"../../outputs.js\";\nimport { BaseRetriever } from \"../../retrievers/index.js\";\nimport { Runnable, RunnableLambda } from \"../../runnables/base.js\";\nimport { StructuredTool, ToolParams } from \"../../tools/index.js\";\nimport { ToolInputSchemaOutputType } from \"../../tools/types.js\";\nimport { BaseTracer, Run } from \"../../tracers/base.js\";\nimport {\n Embeddings,\n EmbeddingsInterface,\n EmbeddingsParams,\n} from \"../../embeddings.js\";\nimport {\n StructuredOutputMethodParams,\n BaseLanguageModelInput,\n StructuredOutputMethodOptions,\n} from \"../../language_models/base.js\";\n\nimport { toJsonSchema } from \"../json_schema.js\";\n\nimport { VectorStore } from \"../../vectorstores.js\";\nimport { cosine } from \"../ml-distance/similarities.js\";\nimport { InteropZodObject, InteropZodType } from \"../types/zod.js\";\n\n/**\n * Parser for comma-separated values. It splits the input text by commas\n * and trims the resulting values.\n */\nexport class FakeSplitIntoListParser extends BaseOutputParser<string[]> {\n lc_namespace = [\"tests\", \"fake\"];\n\n getFormatInstructions() {\n return \"\";\n }\n\n async parse(text: string): Promise<string[]> {\n return text.split(\",\").map((value) => value.trim());\n }\n}\n\nexport class FakeRunnable extends Runnable<string, Record<string, unknown>> {\n lc_namespace = [\"tests\", \"fake\"];\n\n returnOptions?: boolean;\n\n constructor(fields: { returnOptions?: boolean }) {\n super(fields);\n this.returnOptions = fields.returnOptions;\n }\n\n async invoke(\n input: string,\n options?: Partial<BaseCallbackConfig>\n ): Promise<Record<string, unknown>> {\n if (this.returnOptions) {\n return options ?? {};\n }\n return { input };\n }\n}\n\nexport class FakeLLM extends LLM {\n response?: string;\n\n thrownErrorString?: string;\n\n constructor(\n fields: { response?: string; thrownErrorString?: string } & BaseLLMParams\n ) {\n super(fields);\n this.response = fields.response;\n this.thrownErrorString = fields.thrownErrorString;\n }\n\n _llmType() {\n return \"fake\";\n }\n\n async _call(\n prompt: string,\n _options: this[\"ParsedCallOptions\"],\n runManager?: CallbackManagerForLLMRun\n ): Promise<string> {\n if (this.thrownErrorString) {\n throw new Error(this.thrownErrorString);\n }\n const response = this.response ?? prompt;\n await runManager?.handleLLMNewToken(response);\n return response;\n }\n}\n\nexport class FakeStreamingLLM extends LLM {\n sleep?: number = 50;\n\n responses?: string[];\n\n thrownErrorString?: string;\n\n constructor(\n fields: {\n sleep?: number;\n responses?: string[];\n thrownErrorString?: string;\n } & BaseLLMParams\n ) {\n super(fields);\n this.sleep = fields.sleep ?? this.sleep;\n this.responses = fields.responses;\n this.thrownErrorString = fields.thrownErrorString;\n }\n\n _llmType() {\n return \"fake\";\n }\n\n async _call(prompt: string): Promise<string> {\n if (this.thrownErrorString) {\n throw new Error(this.thrownErrorString);\n }\n const response = this.responses?.[0];\n this.responses = this.responses?.slice(1);\n return response ?? prompt;\n }\n\n async *_streamResponseChunks(\n input: string,\n _options?: this[\"ParsedCallOptions\"],\n runManager?: CallbackManagerForLLMRun\n ) {\n if (this.thrownErrorString) {\n throw new Error(this.thrownErrorString);\n }\n const response = this.responses?.[0];\n this.responses = this.responses?.slice(1);\n for (const c of response ?? input) {\n await new Promise((resolve) => setTimeout(resolve, this.sleep));\n yield { text: c, generationInfo: {} } as GenerationChunk;\n await runManager?.handleLLMNewToken(c);\n }\n }\n}\n\nexport class FakeChatModel extends BaseChatModel {\n _combineLLMOutput() {\n return [];\n }\n\n _llmType(): string {\n return \"fake\";\n }\n\n async _generate(\n messages: BaseMessage[],\n options?: this[\"ParsedCallOptions\"],\n runManager?: CallbackManagerForLLMRun\n ): Promise<ChatResult> {\n if (options?.stop?.length) {\n return {\n generations: [\n {\n message: new AIMessage(options.stop[0]),\n text: options.stop[0],\n },\n ],\n };\n }\n const text = messages\n .map((m) => {\n if (typeof m.content === \"string\") {\n return m.content;\n }\n return JSON.stringify(m.content, null, 2);\n })\n .join(\"\\n\");\n await runManager?.handleLLMNewToken(text);\n return {\n generations: [\n {\n message: new AIMessage(text),\n text,\n },\n ],\n llmOutput: {},\n };\n }\n}\n\nexport class FakeStreamingChatModel extends BaseChatModel<FakeStreamingChatModelCallOptions> {\n sleep = 50;\n\n responses: BaseMessage[] = [];\n\n chunks: AIMessageChunk[] = [];\n\n toolStyle: \"openai\" | \"anthropic\" | \"bedrock\" | \"google\" = \"openai\";\n\n thrownErrorString?: string;\n\n private tools: (StructuredTool | ToolSpec)[] = [];\n\n constructor({\n sleep = 50,\n responses = [],\n chunks = [],\n toolStyle = \"openai\",\n thrownErrorString,\n ...rest\n }: FakeStreamingChatModelFields & BaseLLMParams) {\n super(rest);\n this.sleep = sleep;\n this.responses = responses;\n this.chunks = chunks;\n this.toolStyle = toolStyle;\n this.thrownErrorString = thrownErrorString;\n }\n\n _llmType() {\n return \"fake\";\n }\n\n bindTools(tools: (StructuredTool | ToolSpec)[]) {\n const merged = [...this.tools, ...tools];\n\n const toolDicts = merged.map((t) => {\n switch (this.toolStyle) {\n case \"openai\":\n return {\n type: \"function\",\n function: {\n name: t.name,\n description: t.description,\n parameters: toJsonSchema(t.schema),\n },\n };\n case \"anthropic\":\n return {\n name: t.name,\n description: t.description,\n input_schema: toJsonSchema(t.schema),\n };\n case \"bedrock\":\n return {\n toolSpec: {\n name: t.name,\n description: t.description,\n inputSchema: toJsonSchema(t.schema),\n },\n };\n case \"google\":\n return {\n name: t.name,\n description: t.description,\n parameters: toJsonSchema(t.schema),\n };\n default:\n throw new Error(`Unsupported tool style: ${this.toolStyle}`);\n }\n });\n\n const wrapped =\n this.toolStyle === \"google\"\n ? [{ functionDeclarations: toolDicts }]\n : toolDicts;\n\n /* creating a *new* instance – mirrors LangChain .bind semantics for type-safety and avoiding noise */\n const next = new FakeStreamingChatModel({\n sleep: this.sleep,\n responses: this.responses,\n chunks: this.chunks,\n toolStyle: this.toolStyle,\n thrownErrorString: this.thrownErrorString,\n });\n next.tools = merged;\n\n return next.withConfig({ tools: wrapped } as BaseChatModelCallOptions);\n }\n\n async _generate(\n messages: BaseMessage[],\n _options: this[\"ParsedCallOptions\"],\n _runManager?: CallbackManagerForLLMRun\n ): Promise<ChatResult> {\n if (this.thrownErrorString) {\n throw new Error(this.thrownErrorString);\n }\n\n const content = this.responses?.[0]?.content ?? messages[0].content ?? \"\";\n\n const generation: ChatResult = {\n generations: [\n {\n text: \"\",\n message: new AIMessage({\n content,\n tool_calls: this.chunks?.[0]?.tool_calls,\n }),\n },\n ],\n };\n\n return generation;\n }\n\n async *_streamResponseChunks(\n _messages: BaseMessage[],\n _options: this[\"ParsedCallOptions\"],\n runManager?: CallbackManagerForLLMRun\n ): AsyncGenerator<ChatGenerationChunk> {\n if (this.thrownErrorString) {\n throw new Error(this.thrownErrorString);\n }\n if (this.chunks?.length) {\n for (const msgChunk of this.chunks) {\n const cg = new ChatGenerationChunk({\n message: new AIMessageChunk({\n content: msgChunk.content,\n tool_calls: msgChunk.tool_calls,\n additional_kwargs: msgChunk.additional_kwargs ?? {},\n }),\n text: msgChunk.content?.toString() ?? \"\",\n });\n\n yield cg;\n await runManager?.handleLLMNewToken(\n msgChunk.content as string,\n undefined,\n undefined,\n undefined,\n undefined,\n { chunk: cg }\n );\n }\n return;\n }\n\n const fallback =\n this.responses?.[0] ??\n new AIMessage(\n typeof _messages[0].content === \"string\" ? _messages[0].content : \"\"\n );\n const text = typeof fallback.content === \"string\" ? fallback.content : \"\";\n\n for (const ch of text) {\n await new Promise((r) => setTimeout(r, this.sleep));\n const cg = new ChatGenerationChunk({\n message: new AIMessageChunk({ content: ch }),\n text: ch,\n });\n yield cg;\n await runManager?.handleLLMNewToken(\n ch,\n undefined,\n undefined,\n undefined,\n undefined,\n { chunk: cg }\n );\n }\n }\n}\n\nexport class FakeRetriever extends BaseRetriever {\n lc_namespace = [\"test\", \"fake\"];\n\n output = [\n new Document({ pageContent: \"foo\" }),\n new Document({ pageContent: \"bar\" }),\n ];\n\n constructor(fields?: { output: Document[] }) {\n super();\n this.output = fields?.output ?? this.output;\n }\n\n async _getRelevantDocuments(\n _query: string\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ): Promise<Document<Record<string, any>>[]> {\n return this.output;\n }\n}\n/** Minimal shape actually needed by `bindTools` */\nexport interface ToolSpec {\n name: string;\n description?: string;\n schema: InteropZodType | Record<string, unknown>; // Either a Zod schema *or* a plain JSON-Schema object\n}\n/**\n * Interface specific to the Fake Streaming Chat model.\n */\nexport interface FakeStreamingChatModelCallOptions\n extends BaseChatModelCallOptions {}\n/**\n * Interface for the Constructor-field specific to the Fake Streaming Chat model (all optional because we fill in defaults).\n */\nexport interface FakeStreamingChatModelFields extends BaseChatModelParams {\n /** Milliseconds to pause between fallback char-by-char chunks */\n sleep?: number;\n\n /** Full AI messages to fall back to when no `chunks` supplied */\n responses?: BaseMessage[];\n\n /** Exact chunks to emit (can include tool-call deltas) */\n chunks?: AIMessageChunk[];\n\n /** How tool specs are formatted in `bindTools` */\n toolStyle?: \"openai\" | \"anthropic\" | \"bedrock\" | \"google\";\n\n /** Throw this error instead of streaming (useful in tests) */\n thrownErrorString?: string;\n}\n\n/**\n * Interface for the input parameters specific to the Fake List Chat model.\n */\nexport interface FakeChatInput extends BaseChatModelParams {\n /** Responses to return */\n responses: string[];\n\n /** Time to sleep in milliseconds between responses */\n sleep?: number;\n\n emitCustomEvent?: boolean;\n}\n\nexport interface FakeListChatModelCallOptions extends BaseChatModelCallOptions {\n thrownErrorString?: string;\n}\n\n/**\n * A fake Chat Model that returns a predefined list of responses. It can be used\n * for testing purposes.\n * @example\n * ```typescript\n * const chat = new FakeListChatModel({\n * responses: [\"I'll callback later.\", \"You 'console' them!\"]\n * });\n *\n * const firstMessage = new HumanMessage(\"You want to hear a JavaScript joke?\");\n * const secondMessage = new HumanMessage(\"How do you cheer up a JavaScript developer?\");\n *\n * // Call the chat model with a message and log the response\n * const firstResponse = await chat.call([firstMessage]);\n * console.log({ firstResponse });\n *\n * const secondResponse = await chat.call([secondMessage]);\n * console.log({ secondResponse });\n * ```\n */\nexport class FakeListChatModel extends BaseChatModel<FakeListChatModelCallOptions> {\n static lc_name() {\n return \"FakeListChatModel\";\n }\n\n lc_serializable = true;\n\n responses: string[];\n\n i = 0;\n\n sleep?: number;\n\n emitCustomEvent = false;\n\n constructor(params: FakeChatInput) {\n super(params);\n const { responses, sleep, emitCustomEvent } = params;\n this.responses = responses;\n this.sleep = sleep;\n this.emitCustomEvent = emitCustomEvent ?? this.emitCustomEvent;\n }\n\n _combineLLMOutput() {\n return [];\n }\n\n _llmType(): string {\n return \"fake-list\";\n }\n\n async _generate(\n _messages: BaseMessage[],\n options?: this[\"ParsedCallOptions\"],\n runManager?: CallbackManagerForLLMRun\n ): Promise<ChatResult> {\n await this._sleepIfRequested();\n if (options?.thrownErrorString) {\n throw new Error(options.thrownErrorString);\n }\n if (this.emitCustomEvent) {\n await runManager?.handleCustomEvent(\"some_test_event\", {\n someval: true,\n });\n }\n\n if (options?.stop?.length) {\n return {\n generations: [this._formatGeneration(options.stop[0])],\n };\n } else {\n const response = this._currentResponse();\n this._incrementResponse();\n\n return {\n generations: [this._formatGeneration(response)],\n llmOutput: {},\n };\n }\n }\n\n _formatGeneration(text: string) {\n return {\n message: new AIMessage(text),\n text,\n };\n }\n\n async *_streamResponseChunks(\n _messages: BaseMessage[],\n options: this[\"ParsedCallOptions\"],\n runManager?: CallbackManagerForLLMRun\n ): AsyncGenerator<ChatGenerationChunk> {\n const response = this._currentResponse();\n this._incrementResponse();\n if (this.emitCustomEvent) {\n await runManager?.handleCustomEvent(\"some_test_event\", {\n someval: true,\n });\n }\n\n for await (const text of response) {\n await this._sleepIfRequested();\n if (options?.thrownErrorString) {\n throw new Error(options.thrownErrorString);\n }\n const chunk = this._createResponseChunk(text);\n yield chunk;\n // eslint-disable-next-line no-void\n void runManager?.handleLLMNewToken(text);\n }\n }\n\n async _sleepIfRequested() {\n if (this.sleep !== undefined) {\n await this._sleep();\n }\n }\n\n async _sleep() {\n return new Promise<void>((resolve) => {\n setTimeout(() => resolve(), this.sleep);\n });\n }\n\n _createResponseChunk(text: string): ChatGenerationChunk {\n return new ChatGenerationChunk({\n message: new AIMessageChunk({ content: text }),\n text,\n });\n }\n\n _currentResponse() {\n return this.responses[this.i];\n }\n\n _incrementResponse() {\n if (this.i < this.responses.length - 1) {\n this.i += 1;\n } else {\n this.i = 0;\n }\n }\n\n withStructuredOutput<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n RunOutput extends Record<string, any> = Record<string, any>\n >(\n _params:\n | StructuredOutputMethodParams<RunOutput, false>\n | InteropZodType<RunOutput>\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n | Record<string, any>,\n config?: StructuredOutputMethodOptions<false>\n ): Runnable<BaseLanguageModelInput, RunOutput>;\n\n withStructuredOutput<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n RunOutput extends Record<string, any> = Record<string, any>\n >(\n _params:\n | StructuredOutputMethodParams<RunOutput, true>\n | InteropZodType<RunOutput>\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n | Record<string, any>,\n config?: StructuredOutputMethodOptions<true>\n ): Runnable<BaseLanguageModelInput, { raw: BaseMessage; parsed: RunOutput }>;\n\n withStructuredOutput<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n RunOutput extends Record<string, any> = Record<string, any>\n >(\n _params:\n | StructuredOutputMethodParams<RunOutput, boolean>\n | InteropZodType<RunOutput>\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n | Record<string, any>,\n _config?: StructuredOutputMethodOptions<boolean>\n ):\n | Runnable<BaseLanguageModelInput, RunOutput>\n | Runnable<\n BaseLanguageModelInput,\n { raw: BaseMessage; parsed: RunOutput }\n > {\n return RunnableLambda.from(async (input) => {\n const message = await this.invoke(input);\n if (message.tool_calls?.[0]?.args) {\n return message.tool_calls[0].args as RunOutput;\n }\n if (typeof message.content === \"string\") {\n return JSON.parse(message.content);\n }\n throw new Error(\"No structured output found\");\n }) as Runnable;\n }\n}\n\nexport class FakeChatMessageHistory extends BaseChatMessageHistory {\n lc_namespace = [\"langchain_core\", \"message\", \"fake\"];\n\n messages: Array<BaseMessage> = [];\n\n constructor() {\n super();\n }\n\n async getMessages(): Promise<BaseMessage[]> {\n return this.messages;\n }\n\n async addMessage(message: BaseMessage): Promise<void> {\n this.messages.push(message);\n }\n\n async addUserMessage(message: string): Promise<void> {\n this.messages.push(new HumanMessage(message));\n }\n\n async addAIChatMessage(message: string): Promise<void> {\n this.messages.push(new AIMessage(message));\n }\n\n async clear(): Promise<void> {\n this.messages = [];\n }\n}\n\nexport class FakeListChatMessageHistory extends BaseListChatMessageHistory {\n lc_namespace = [\"langchain_core\", \"message\", \"fake\"];\n\n messages: Array<BaseMessage> = [];\n\n constructor() {\n super();\n }\n\n async addMessage(message: BaseMessage): Promise<void> {\n this.messages.push(message);\n }\n\n async getMessages(): Promise<BaseMessage[]> {\n return this.messages;\n }\n}\n\nexport class FakeTracer extends BaseTracer {\n name = \"fake_tracer\";\n\n runs: Run[] = [];\n\n constructor() {\n super();\n }\n\n protected persistRun(run: Run): Promise<void> {\n this.runs.push(run);\n return Promise.resolve();\n }\n}\n\nexport interface FakeToolParams<T extends InteropZodObject = InteropZodObject>\n extends ToolParams {\n name: string;\n description: string;\n schema: T;\n}\n\nexport class FakeTool<\n T extends InteropZodObject = InteropZodObject\n> extends StructuredTool<T> {\n name: string;\n\n description: string;\n\n schema: T;\n\n constructor(fields: FakeToolParams<T>) {\n super(fields);\n this.name = fields.name;\n this.description = fields.description;\n this.schema = fields.schema;\n }\n\n protected async _call(\n arg: ToolInputSchemaOutputType<T>,\n _runManager?: CallbackManagerForToolRun\n ): Promise<string> {\n return JSON.stringify(arg);\n }\n}\n\n/**\n * A class that provides fake embeddings by overriding the embedDocuments\n * and embedQuery methods to return fixed values.\n */\nexport class FakeEmbeddings extends Embeddings {\n constructor(params?: EmbeddingsParams) {\n super(params ?? {});\n }\n\n /**\n * Generates fixed embeddings for a list of documents.\n * @param documents List of documents to generate embeddings for.\n * @returns A promise that resolves with a list of fixed embeddings for each document.\n */\n embedDocuments(documents: string[]): Promise<number[][]> {\n return Promise.resolve(documents.map(() => [0.1, 0.2, 0.3, 0.4]));\n }\n\n /**\n * Generates a fixed embedding for a query.\n * @param _ The query to generate an embedding for.\n * @returns A promise that resolves with a fixed embedding for the query.\n */\n embedQuery(_: string): Promise<number[]> {\n return Promise.resolve([0.1, 0.2, 0.3, 0.4]);\n }\n}\n\n/**\n * An interface that defines additional parameters specific to the\n * SyntheticEmbeddings class.\n */\ninterface SyntheticEmbeddingsParams extends EmbeddingsParams {\n vectorSize: number;\n}\n\n/**\n * A class that provides synthetic embeddings by overriding the\n * embedDocuments and embedQuery methods to generate embeddings based on\n * the input documents. The embeddings are generated by converting each\n * document into chunks, calculating a numerical value for each chunk, and\n * returning an array of these values as the embedding.\n */\nexport class SyntheticEmbeddings\n extends Embeddings\n implements SyntheticEmbeddingsParams\n{\n vectorSize: number;\n\n constructor(params?: SyntheticEmbeddingsParams) {\n super(params ?? {});\n this.vectorSize = params?.vectorSize ?? 4;\n }\n\n /**\n * Generates synthetic embeddings for a list of documents.\n * @param documents List of documents to generate embeddings for.\n * @returns A promise that resolves with a list of synthetic embeddings for each document.\n */\n async embedDocuments(documents: string[]): Promise<number[][]> {\n return Promise.all(documents.map((doc) => this.embedQuery(doc)));\n }\n\n /**\n * Generates a synthetic embedding for a document. The document is\n * converted into chunks, a numerical value is calculated for each chunk,\n * and an array of these values is returned as the embedding.\n * @param document The document to generate an embedding for.\n * @returns A promise that resolves with a synthetic embedding for the document.\n */\n async embedQuery(document: string): Promise<number[]> {\n let doc = document;\n\n // Only use the letters (and space) from the document, and make them lower case\n doc = doc.toLowerCase().replaceAll(/[^a-z ]/g, \"\");\n\n // Pad the document to make sure it has a divisible number of chunks\n const padMod = doc.length % this.vectorSize;\n const padGapSize = padMod === 0 ? 0 : this.vectorSize - padMod;\n const padSize = doc.length + padGapSize;\n doc = doc.padEnd(padSize, \" \");\n\n // Break it into chunks\n const chunkSize = doc.length / this.vectorSize;\n const docChunk = [];\n for (let co = 0; co < doc.length; co += chunkSize) {\n docChunk.push(doc.slice(co, co + chunkSize));\n }\n\n // Turn each chunk into a number\n const ret: number[] = docChunk.map((s) => {\n let sum = 0;\n // Get a total value by adding the value of each character in the string\n for (let co = 0; co < s.length; co += 1) {\n sum += s === \" \" ? 0 : s.charCodeAt(co);\n }\n // Reduce this to a number between 0 and 25 inclusive\n // Then get the fractional number by dividing it by 26\n const ret = (sum % 26) / 26;\n return ret;\n });\n\n return ret;\n }\n}\n\nexport class 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 * Interface representing a vector in memory. It includes the content\n * (text), the corresponding embedding (vector), and any associated\n * metadata.\n */\ninterface MemoryVector {\n content: string;\n embedding: number[];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n metadata: Record<string, any>;\n}\n\n/**\n * Interface for the arguments that can be passed to the\n * `FakeVectorStore` constructor. It includes an optional `similarity`\n * function.\n */\nexport interface FakeVectorStoreArgs {\n similarity?: typeof cosine;\n}\n\n/**\n * Class that extends `VectorStore` to store vectors in memory. Provides\n * methods for adding documents, performing similarity searches, and\n * creating instances from texts, documents, or an existing index.\n */\nexport class FakeVectorStore extends VectorStore {\n declare FilterType: (doc: Document) => boolean;\n\n memoryVectors: MemoryVector[] = [];\n\n similarity: typeof cosine;\n\n _vectorstoreType(): string {\n return \"memory\";\n }\n\n constructor(\n embeddings: EmbeddingsInterface,\n { similarity, ...rest }: FakeVectorStoreArgs = {}\n ) {\n super(embeddings, rest);\n\n this.similarity = similarity ?? cosine;\n }\n\n /**\n * Method to add documents to the memory vector store. It extracts the\n * text from each document, generates embeddings for them, and adds the\n * resulting vectors to the store.\n * @param documents Array of `Document` instances to be added to the store.\n * @returns Promise that resolves when all documents have been added.\n */\n async addDocuments(documents: Document[]): Promise<void> {\n const texts = documents.map(({ pageContent }) => pageContent);\n return this.addVectors(\n await this.embeddings.embedDocuments(texts),\n documents\n );\n }\n\n /**\n * Method to add vectors to the memory vector store. It creates\n * `MemoryVector` instances for each vector and document pair and adds\n * them to the store.\n * @param vectors Array of vectors to be added to the store.\n * @param documents Array of `Document` instances corresponding to the vectors.\n * @returns Promise that resolves when all vectors have been added.\n */\n async addVectors(vectors: number[][], documents: Document[]): Promise<void> {\n const memoryVectors = vectors.map((embedding, idx) => ({\n content: documents[idx].pageContent,\n embedding,\n metadata: documents[idx].metadata,\n }));\n\n this.memoryVectors = this.memoryVectors.concat(memoryVectors);\n }\n\n /**\n * Method to perform a similarity search in the memory vector store. It\n * calculates the similarity between the query vector and each vector in\n * the store, sorts the results by similarity, and returns the top `k`\n * results along with their scores.\n * @param query Query vector to compare against the vectors in the store.\n * @param k Number of top results to return.\n * @param filter Optional filter function to apply to the vectors before performing the search.\n * @returns Promise that resolves with an array of tuples, each containing a `Document` and its similarity score.\n */\n async similaritySearchVectorWithScore(\n query: number[],\n k: number,\n filter?: this[\"FilterType\"]\n ): Promise<[Document, number][]> {\n const filterFunction = (memoryVector: MemoryVector) => {\n if (!filter) {\n return true;\n }\n\n const doc = new Document({\n metadata: memoryVector.metadata,\n pageContent: memoryVector.content,\n });\n return filter(doc);\n };\n const filteredMemoryVectors = this.memoryVectors.filter(filterFunction);\n const searches = filteredMemoryVectors\n .map((vector, index) => ({\n similarity: this.similarity(query, vector.embedding),\n index,\n }))\n .sort((a, b) => (a.similarity > b.similarity ? -1 : 0))\n .slice(0, k);\n\n const result: [Document, number][] = searches.map((search) => [\n new Document({\n metadata: filteredMemoryVectors[search.index].metadata,\n pageContent: filteredMemoryVectors[search.index].content,\n }),\n search.similarity,\n ]);\n\n return result;\n }\n\n /**\n * Static method to create a `FakeVectorStore` instance from an array of\n * texts. It creates a `Document` for each text and metadata pair, and\n * adds them to the store.\n * @param texts Array of texts to be added to the store.\n * @param metadatas Array or single object of metadata corresponding to the texts.\n * @param embeddings `Embeddings` instance used to generate embeddings for the texts.\n * @param dbConfig Optional `FakeVectorStoreArgs` to configure the `FakeVectorStore` instance.\n * @returns Promise that resolves with a new `FakeVectorStore` instance.\n */\n static async fromTexts(\n texts: string[],\n metadatas: object[] | object,\n embeddings: EmbeddingsInterface,\n dbConfig?: FakeVectorStoreArgs\n ): Promise<FakeVectorStore> {\n const docs: Document[] = [];\n for (let i = 0; i < texts.length; i += 1) {\n const metadata = Array.isArray(metadatas) ? metadatas[i] : metadatas;\n const newDoc = new Document({\n pageContent: texts[i],\n metadata,\n });\n docs.push(newDoc);\n }\n return FakeVectorStore.fromDocuments(docs, embeddings, dbConfig);\n }\n\n /**\n * Static method to create a `FakeVectorStore` instance from an array of\n * `Document` instances. It adds the documents to the store.\n * @param docs Array of `Document` instances to be added to the store.\n * @param embeddings `Embeddings` instance used to generate embeddings for the documents.\n * @param dbConfig Optional `FakeVectorStoreArgs` to configure the `FakeVectorStore` instance.\n * @returns Promise that resolves with a new `FakeVectorStore` instance.\n */\n static async fromDocuments(\n docs: Document[],\n embeddings: EmbeddingsInterface,\n dbConfig?: FakeVectorStoreArgs\n ): Promise<FakeVectorStore> {\n const instance = new this(embeddings, dbConfig);\n await instance.addDocuments(docs);\n return instance;\n }\n\n /**\n * Static method to create a `FakeVectorStore` instance from an existing\n * index. It creates a new `FakeVectorStore` instance without adding any\n * documents or vectors.\n * @param embeddings `Embeddings` instance used to generate embeddings for the documents.\n * @param dbConfig Optional `FakeVectorStoreArgs` to configure the `FakeVectorStore` instance.\n * @returns Promise that resolves with a new `FakeVectorStore` instance.\n */\n static async fromExistingIndex(\n embeddings: EmbeddingsInterface,\n dbConfig?: FakeVectorStoreArgs\n ): Promise<FakeVectorStore> {\n const instance = new this(embeddings, dbConfig);\n return instance;\n }\n}\n"],"mappings":"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"}
|
|
@@ -20,7 +20,6 @@ import { VectorStore } from "../../vectorstores.cjs";
|
|
|
20
20
|
import { cosine } from "../ml-distance/similarities.cjs";
|
|
21
21
|
|
|
22
22
|
//#region src/utils/testing/index.d.ts
|
|
23
|
-
|
|
24
23
|
/**
|
|
25
24
|
* Parser for comma-separated values. It splits the input text by commas
|
|
26
25
|
* and trims the resulting values.
|
|
@@ -30,13 +29,13 @@ declare class FakeSplitIntoListParser extends BaseOutputParser<string[]> {
|
|
|
30
29
|
getFormatInstructions(): string;
|
|
31
30
|
parse(text: string): Promise<string[]>;
|
|
32
31
|
}
|
|
33
|
-
declare class FakeRunnable extends Runnable<string, Record<string,
|
|
32
|
+
declare class FakeRunnable extends Runnable<string, Record<string, unknown>> {
|
|
34
33
|
lc_namespace: string[];
|
|
35
34
|
returnOptions?: boolean;
|
|
36
35
|
constructor(fields: {
|
|
37
36
|
returnOptions?: boolean;
|
|
38
37
|
});
|
|
39
|
-
invoke(input: string, options?: Partial<BaseCallbackConfig>): Promise<Record<string,
|
|
38
|
+
invoke(input: string, options?: Partial<BaseCallbackConfig>): Promise<Record<string, unknown>>;
|
|
40
39
|
}
|
|
41
40
|
declare class FakeLLM extends LLM {
|
|
42
41
|
response?: string;
|
|
@@ -212,16 +211,12 @@ declare class FakeTracer extends BaseTracer {
|
|
|
212
211
|
constructor();
|
|
213
212
|
protected persistRun(run: Run): Promise<void>;
|
|
214
213
|
}
|
|
215
|
-
interface FakeToolParams<
|
|
216
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
217
|
-
T extends InteropZodObject = InteropZodObject> extends ToolParams {
|
|
214
|
+
interface FakeToolParams<T extends InteropZodObject = InteropZodObject> extends ToolParams {
|
|
218
215
|
name: string;
|
|
219
216
|
description: string;
|
|
220
217
|
schema: T;
|
|
221
218
|
}
|
|
222
|
-
declare class FakeTool<
|
|
223
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
224
|
-
T extends InteropZodObject = InteropZodObject> extends StructuredTool<T> {
|
|
219
|
+
declare class FakeTool<T extends InteropZodObject = InteropZodObject> extends StructuredTool<T> {
|
|
225
220
|
name: string;
|
|
226
221
|
description: string;
|
|
227
222
|
schema: T;
|