@librechat/agents 3.2.32 → 3.2.34
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/_virtual/_rolldown/runtime.cjs +23 -0
- package/dist/cjs/agents/AgentContext.cjs +844 -1046
- package/dist/cjs/agents/AgentContext.cjs.map +1 -1
- package/dist/cjs/common/constants.cjs +13 -13
- package/dist/cjs/common/constants.cjs.map +1 -1
- package/dist/cjs/common/enum.cjs +233 -240
- package/dist/cjs/common/enum.cjs.map +1 -1
- package/dist/cjs/common/index.cjs +2 -0
- package/dist/cjs/events.cjs +121 -169
- package/dist/cjs/events.cjs.map +1 -1
- package/dist/cjs/graphs/Graph.cjs +1389 -1807
- package/dist/cjs/graphs/Graph.cjs.map +1 -1
- package/dist/cjs/graphs/MultiAgentGraph.cjs +713 -945
- package/dist/cjs/graphs/MultiAgentGraph.cjs.map +1 -1
- package/dist/cjs/graphs/index.cjs +2 -0
- package/dist/cjs/hitl/askUserQuestion.cjs +60 -62
- package/dist/cjs/hitl/askUserQuestion.cjs.map +1 -1
- package/dist/cjs/hitl/index.cjs +1 -0
- package/dist/cjs/hooks/HookRegistry.cjs +176 -202
- package/dist/cjs/hooks/HookRegistry.cjs.map +1 -1
- package/dist/cjs/hooks/createToolPolicyHook.cjs +71 -101
- package/dist/cjs/hooks/createToolPolicyHook.cjs.map +1 -1
- package/dist/cjs/hooks/createWorkspacePolicyHook.cjs +170 -273
- package/dist/cjs/hooks/createWorkspacePolicyHook.cjs.map +1 -1
- package/dist/cjs/hooks/executeHooks.cjs +227 -282
- package/dist/cjs/hooks/executeHooks.cjs.map +1 -1
- package/dist/cjs/hooks/index.cjs +6 -0
- package/dist/cjs/hooks/matchers.cjs +196 -230
- package/dist/cjs/hooks/matchers.cjs.map +1 -1
- package/dist/cjs/hooks/types.cjs +24 -24
- package/dist/cjs/hooks/types.cjs.map +1 -1
- package/dist/cjs/instrumentation.cjs +110 -137
- package/dist/cjs/instrumentation.cjs.map +1 -1
- package/dist/cjs/langchain/google-common.cjs +0 -3
- package/dist/cjs/langchain/index.cjs +80 -43
- package/dist/cjs/langchain/language_models/chat_models.cjs +0 -3
- package/dist/cjs/langchain/messages/tool.cjs +0 -3
- package/dist/cjs/langchain/messages.cjs +35 -18
- package/dist/cjs/langchain/openai.cjs +0 -3
- package/dist/cjs/langchain/prompts.cjs +5 -8
- package/dist/cjs/langchain/runnables.cjs +11 -10
- package/dist/cjs/langchain/tools.cjs +14 -11
- package/dist/cjs/langchain/utils/env.cjs +5 -8
- package/dist/cjs/langfuse.cjs +60 -79
- package/dist/cjs/langfuse.cjs.map +1 -1
- package/dist/cjs/langfuseToolOutputTracing.cjs +267 -399
- package/dist/cjs/langfuseToolOutputTracing.cjs.map +1 -1
- package/dist/cjs/llm/anthropic/index.cjs +432 -562
- package/dist/cjs/llm/anthropic/index.cjs.map +1 -1
- package/dist/cjs/llm/anthropic/types.cjs +23 -47
- package/dist/cjs/llm/anthropic/types.cjs.map +1 -1
- package/dist/cjs/llm/anthropic/utils/message_inputs.cjs +441 -731
- package/dist/cjs/llm/anthropic/utils/message_inputs.cjs.map +1 -1
- package/dist/cjs/llm/anthropic/utils/message_outputs.cjs +171 -256
- package/dist/cjs/llm/anthropic/utils/message_outputs.cjs.map +1 -1
- package/dist/cjs/llm/anthropic/utils/output_parsers.cjs +2 -0
- package/dist/cjs/llm/anthropic/utils/tools.cjs +12 -26
- package/dist/cjs/llm/anthropic/utils/tools.cjs.map +1 -1
- package/dist/cjs/llm/bedrock/index.cjs +214 -240
- package/dist/cjs/llm/bedrock/index.cjs.map +1 -1
- package/dist/cjs/llm/bedrock/toolCache.cjs +84 -106
- package/dist/cjs/llm/bedrock/toolCache.cjs.map +1 -1
- package/dist/cjs/llm/bedrock/utils/index.cjs +2 -0
- package/dist/cjs/llm/bedrock/utils/message_inputs.cjs +357 -620
- package/dist/cjs/llm/bedrock/utils/message_inputs.cjs.map +1 -1
- package/dist/cjs/llm/bedrock/utils/message_outputs.cjs +141 -149
- package/dist/cjs/llm/bedrock/utils/message_outputs.cjs.map +1 -1
- package/dist/cjs/llm/fake.cjs +86 -96
- package/dist/cjs/llm/fake.cjs.map +1 -1
- package/dist/cjs/llm/google/index.cjs +183 -237
- package/dist/cjs/llm/google/index.cjs.map +1 -1
- package/dist/cjs/llm/google/utils/common.cjs +404 -674
- package/dist/cjs/llm/google/utils/common.cjs.map +1 -1
- package/dist/cjs/llm/google/utils/zod_to_genai_parameters.cjs +2 -0
- package/dist/cjs/llm/init.cjs +44 -53
- package/dist/cjs/llm/init.cjs.map +1 -1
- package/dist/cjs/llm/invoke.cjs +142 -182
- package/dist/cjs/llm/invoke.cjs.map +1 -1
- package/dist/cjs/llm/openai/index.cjs +1035 -1273
- package/dist/cjs/llm/openai/index.cjs.map +1 -1
- package/dist/cjs/llm/openai/utils/index.cjs +189 -316
- package/dist/cjs/llm/openai/utils/index.cjs.map +1 -1
- package/dist/cjs/llm/openrouter/index.cjs +102 -153
- package/dist/cjs/llm/openrouter/index.cjs.map +1 -1
- package/dist/cjs/llm/openrouter/toolCache.cjs +35 -44
- package/dist/cjs/llm/openrouter/toolCache.cjs.map +1 -1
- package/dist/cjs/llm/providers.cjs +29 -37
- package/dist/cjs/llm/providers.cjs.map +1 -1
- package/dist/cjs/llm/request.cjs +20 -33
- package/dist/cjs/llm/request.cjs.map +1 -1
- package/dist/cjs/llm/vertexai/index.cjs +446 -453
- package/dist/cjs/llm/vertexai/index.cjs.map +1 -1
- package/dist/cjs/main.cjs +547 -528
- package/dist/cjs/messages/anthropicToolCache.cjs +68 -119
- package/dist/cjs/messages/anthropicToolCache.cjs.map +1 -1
- package/dist/cjs/messages/cache.cjs +305 -418
- package/dist/cjs/messages/cache.cjs.map +1 -1
- package/dist/cjs/messages/content.cjs +36 -49
- package/dist/cjs/messages/content.cjs.map +1 -1
- package/dist/cjs/messages/contextPruning.cjs +112 -145
- package/dist/cjs/messages/contextPruning.cjs.map +1 -1
- package/dist/cjs/messages/contextPruningSettings.cjs +36 -46
- package/dist/cjs/messages/contextPruningSettings.cjs.map +1 -1
- package/dist/cjs/messages/core.cjs +256 -397
- package/dist/cjs/messages/core.cjs.map +1 -1
- package/dist/cjs/messages/format.cjs +904 -1387
- package/dist/cjs/messages/format.cjs.map +1 -1
- package/dist/cjs/messages/ids.cjs +16 -20
- package/dist/cjs/messages/ids.cjs.map +1 -1
- package/dist/cjs/messages/index.cjs +12 -0
- package/dist/cjs/messages/langchain.cjs +18 -18
- package/dist/cjs/messages/langchain.cjs.map +1 -1
- package/dist/cjs/messages/prune.cjs +1054 -1517
- package/dist/cjs/messages/prune.cjs.map +1 -1
- package/dist/cjs/messages/recency.cjs +77 -95
- package/dist/cjs/messages/recency.cjs.map +1 -1
- package/dist/cjs/messages/reducer.cjs +63 -78
- package/dist/cjs/messages/reducer.cjs.map +1 -1
- package/dist/cjs/messages/tools.cjs +51 -79
- package/dist/cjs/messages/tools.cjs.map +1 -1
- package/dist/cjs/openai/index.cjs +171 -217
- package/dist/cjs/openai/index.cjs.map +1 -1
- package/dist/cjs/responses/index.cjs +302 -391
- package/dist/cjs/responses/index.cjs.map +1 -1
- package/dist/cjs/run.cjs +903 -1113
- package/dist/cjs/run.cjs.map +1 -1
- package/dist/cjs/session/AgentSession.cjs +805 -986
- package/dist/cjs/session/AgentSession.cjs.map +1 -1
- package/dist/cjs/session/JsonlSessionStore.cjs +327 -410
- package/dist/cjs/session/JsonlSessionStore.cjs.map +1 -1
- package/dist/cjs/session/handlers.cjs +192 -208
- package/dist/cjs/session/handlers.cjs.map +1 -1
- package/dist/cjs/session/ids.cjs +9 -10
- package/dist/cjs/session/ids.cjs.map +1 -1
- package/dist/cjs/session/index.cjs +4 -0
- package/dist/cjs/session/messageSerialization.cjs +94 -156
- package/dist/cjs/session/messageSerialization.cjs.map +1 -1
- package/dist/cjs/splitStream.cjs +147 -206
- package/dist/cjs/splitStream.cjs.map +1 -1
- package/dist/cjs/stream.cjs +874 -1344
- package/dist/cjs/stream.cjs.map +1 -1
- package/dist/cjs/summarization/index.cjs +57 -101
- package/dist/cjs/summarization/index.cjs.map +1 -1
- package/dist/cjs/summarization/node.cjs +643 -796
- package/dist/cjs/summarization/node.cjs.map +1 -1
- package/dist/cjs/tools/BashExecutor.cjs +110 -136
- package/dist/cjs/tools/BashExecutor.cjs.map +1 -1
- package/dist/cjs/tools/BashProgrammaticToolCalling.cjs +165 -245
- package/dist/cjs/tools/BashProgrammaticToolCalling.cjs.map +1 -1
- package/dist/cjs/tools/Calculator.cjs +36 -57
- package/dist/cjs/tools/Calculator.cjs.map +1 -1
- package/dist/cjs/tools/CodeExecutor.cjs +126 -168
- package/dist/cjs/tools/CodeExecutor.cjs.map +1 -1
- package/dist/cjs/tools/CodeSessionFileSummary.cjs +36 -46
- package/dist/cjs/tools/CodeSessionFileSummary.cjs.map +1 -1
- package/dist/cjs/tools/ProgrammaticToolCalling.cjs +459 -649
- package/dist/cjs/tools/ProgrammaticToolCalling.cjs.map +1 -1
- package/dist/cjs/tools/ReadFile.cjs +17 -20
- package/dist/cjs/tools/ReadFile.cjs.map +1 -1
- package/dist/cjs/tools/SkillTool.cjs +26 -27
- package/dist/cjs/tools/SkillTool.cjs.map +1 -1
- package/dist/cjs/tools/SubagentTool.cjs +59 -61
- package/dist/cjs/tools/SubagentTool.cjs.map +1 -1
- package/dist/cjs/tools/ToolNode.cjs +2146 -2686
- package/dist/cjs/tools/ToolNode.cjs.map +1 -1
- package/dist/cjs/tools/ToolSearch.cjs +663 -825
- package/dist/cjs/tools/ToolSearch.cjs.map +1 -1
- package/dist/cjs/tools/cloudflare/CloudflareBridgeRuntime.cjs +248 -340
- package/dist/cjs/tools/cloudflare/CloudflareBridgeRuntime.cjs.map +1 -1
- package/dist/cjs/tools/cloudflare/CloudflareProgrammaticToolCalling.cjs +170 -197
- package/dist/cjs/tools/cloudflare/CloudflareProgrammaticToolCalling.cjs.map +1 -1
- package/dist/cjs/tools/cloudflare/CloudflareSandboxExecutionEngine.cjs +425 -520
- package/dist/cjs/tools/cloudflare/CloudflareSandboxExecutionEngine.cjs.map +1 -1
- package/dist/cjs/tools/cloudflare/CloudflareSandboxTools.cjs +91 -124
- package/dist/cjs/tools/cloudflare/CloudflareSandboxTools.cjs.map +1 -1
- package/dist/cjs/tools/cloudflare/index.cjs +4 -0
- package/dist/cjs/tools/eagerEventExecution.cjs +75 -99
- package/dist/cjs/tools/eagerEventExecution.cjs.map +1 -1
- package/dist/cjs/tools/handlers.cjs +200 -262
- package/dist/cjs/tools/handlers.cjs.map +1 -1
- package/dist/cjs/tools/local/CompileCheckTool.cjs +150 -212
- package/dist/cjs/tools/local/CompileCheckTool.cjs.map +1 -1
- package/dist/cjs/tools/local/FileCheckpointer.cjs +77 -85
- package/dist/cjs/tools/local/FileCheckpointer.cjs.map +1 -1
- package/dist/cjs/tools/local/LocalCodingTools.cjs +763 -1022
- package/dist/cjs/tools/local/LocalCodingTools.cjs.map +1 -1
- package/dist/cjs/tools/local/LocalExecutionEngine.cjs +666 -941
- package/dist/cjs/tools/local/LocalExecutionEngine.cjs.map +1 -1
- package/dist/cjs/tools/local/LocalExecutionTools.cjs +49 -92
- package/dist/cjs/tools/local/LocalExecutionTools.cjs.map +1 -1
- package/dist/cjs/tools/local/LocalProgrammaticToolCalling.cjs +286 -354
- package/dist/cjs/tools/local/LocalProgrammaticToolCalling.cjs.map +1 -1
- package/dist/cjs/tools/local/attachments.cjs +108 -165
- package/dist/cjs/tools/local/attachments.cjs.map +1 -1
- package/dist/cjs/tools/local/bashAst.cjs +99 -113
- package/dist/cjs/tools/local/bashAst.cjs.map +1 -1
- package/dist/cjs/tools/local/editStrategies.cjs +126 -169
- package/dist/cjs/tools/local/editStrategies.cjs.map +1 -1
- package/dist/cjs/tools/local/index.cjs +12 -0
- package/dist/cjs/tools/local/resolveLocalExecutionTools.cjs +136 -218
- package/dist/cjs/tools/local/resolveLocalExecutionTools.cjs.map +1 -1
- package/dist/cjs/tools/local/syntaxCheck.cjs +142 -161
- package/dist/cjs/tools/local/syntaxCheck.cjs.map +1 -1
- package/dist/cjs/tools/local/textEncoding.cjs +25 -23
- package/dist/cjs/tools/local/textEncoding.cjs.map +1 -1
- package/dist/cjs/tools/local/workspaceFS.cjs +38 -46
- package/dist/cjs/tools/local/workspaceFS.cjs.map +1 -1
- package/dist/cjs/tools/ptcTimeout.cjs +27 -47
- package/dist/cjs/tools/ptcTimeout.cjs.map +1 -1
- package/dist/cjs/tools/schema.cjs +24 -23
- package/dist/cjs/tools/schema.cjs.map +1 -1
- package/dist/cjs/tools/search/anthropic.cjs +24 -33
- package/dist/cjs/tools/search/anthropic.cjs.map +1 -1
- package/dist/cjs/tools/search/content.cjs +95 -137
- package/dist/cjs/tools/search/content.cjs.map +1 -1
- package/dist/cjs/tools/search/firecrawl.cjs +141 -172
- package/dist/cjs/tools/search/firecrawl.cjs.map +1 -1
- package/dist/cjs/tools/search/format.cjs +128 -196
- package/dist/cjs/tools/search/format.cjs.map +1 -1
- package/dist/cjs/tools/search/highlights.cjs +165 -232
- package/dist/cjs/tools/search/highlights.cjs.map +1 -1
- package/dist/cjs/tools/search/index.cjs +2 -0
- package/dist/cjs/tools/search/rerankers.cjs +151 -174
- package/dist/cjs/tools/search/rerankers.cjs.map +1 -1
- package/dist/cjs/tools/search/schema.cjs +40 -39
- package/dist/cjs/tools/search/schema.cjs.map +1 -1
- package/dist/cjs/tools/search/search.cjs +428 -530
- package/dist/cjs/tools/search/search.cjs.map +1 -1
- package/dist/cjs/tools/search/serper-scraper.cjs +106 -127
- package/dist/cjs/tools/search/serper-scraper.cjs.map +1 -1
- package/dist/cjs/tools/search/tavily-scraper.cjs +129 -181
- package/dist/cjs/tools/search/tavily-scraper.cjs.map +1 -1
- package/dist/cjs/tools/search/tavily-search.cjs +295 -359
- package/dist/cjs/tools/search/tavily-search.cjs.map +1 -1
- package/dist/cjs/tools/search/tool.cjs +260 -299
- package/dist/cjs/tools/search/tool.cjs.map +1 -1
- package/dist/cjs/tools/search/utils.cjs +74 -117
- package/dist/cjs/tools/search/utils.cjs.map +1 -1
- package/dist/cjs/tools/skillCatalog.cjs +54 -72
- package/dist/cjs/tools/skillCatalog.cjs.map +1 -1
- package/dist/cjs/tools/streamedToolCallSeals.cjs +46 -34
- package/dist/cjs/tools/streamedToolCallSeals.cjs.map +1 -1
- package/dist/cjs/tools/subagent/SubagentExecutor.cjs +612 -771
- package/dist/cjs/tools/subagent/SubagentExecutor.cjs.map +1 -1
- package/dist/cjs/tools/subagent/index.cjs +1 -0
- package/dist/cjs/tools/toolOutputReferences.cjs +523 -630
- package/dist/cjs/tools/toolOutputReferences.cjs.map +1 -1
- package/dist/cjs/utils/callbacks.cjs +11 -21
- package/dist/cjs/utils/callbacks.cjs.map +1 -1
- package/dist/cjs/utils/errors.cjs +70 -95
- package/dist/cjs/utils/errors.cjs.map +1 -1
- package/dist/cjs/utils/events.cjs +32 -42
- package/dist/cjs/utils/events.cjs.map +1 -1
- package/dist/cjs/utils/graph.cjs +8 -12
- package/dist/cjs/utils/graph.cjs.map +1 -1
- package/dist/cjs/utils/handlers.cjs +60 -82
- package/dist/cjs/utils/handlers.cjs.map +1 -1
- package/dist/cjs/utils/index.cjs +9 -0
- package/dist/cjs/utils/llm.cjs +19 -27
- package/dist/cjs/utils/llm.cjs.map +1 -1
- package/dist/cjs/utils/misc.cjs +30 -46
- package/dist/cjs/utils/misc.cjs.map +1 -1
- package/dist/cjs/utils/run.cjs +50 -66
- package/dist/cjs/utils/run.cjs.map +1 -1
- package/dist/cjs/utils/schema.cjs +11 -19
- package/dist/cjs/utils/schema.cjs.map +1 -1
- package/dist/cjs/utils/title.cjs +71 -106
- package/dist/cjs/utils/title.cjs.map +1 -1
- package/dist/cjs/utils/tokens.cjs +186 -283
- package/dist/cjs/utils/tokens.cjs.map +1 -1
- package/dist/cjs/utils/truncation.cjs +95 -114
- package/dist/cjs/utils/truncation.cjs.map +1 -1
- package/dist/esm/agents/AgentContext.mjs +844 -1044
- package/dist/esm/agents/AgentContext.mjs.map +1 -1
- package/dist/esm/common/constants.mjs +13 -11
- package/dist/esm/common/constants.mjs.map +1 -1
- package/dist/esm/common/enum.mjs +221 -238
- package/dist/esm/common/enum.mjs.map +1 -1
- package/dist/esm/common/index.mjs +3 -0
- package/dist/esm/events.mjs +121 -167
- package/dist/esm/events.mjs.map +1 -1
- package/dist/esm/graphs/Graph.mjs +1388 -1804
- package/dist/esm/graphs/Graph.mjs.map +1 -1
- package/dist/esm/graphs/MultiAgentGraph.mjs +713 -943
- package/dist/esm/graphs/MultiAgentGraph.mjs.map +1 -1
- package/dist/esm/graphs/index.mjs +3 -0
- package/dist/esm/hitl/askUserQuestion.mjs +60 -60
- package/dist/esm/hitl/askUserQuestion.mjs.map +1 -1
- package/dist/esm/hitl/index.mjs +2 -0
- package/dist/esm/hooks/HookRegistry.mjs +176 -200
- package/dist/esm/hooks/HookRegistry.mjs.map +1 -1
- package/dist/esm/hooks/createToolPolicyHook.mjs +71 -99
- package/dist/esm/hooks/createToolPolicyHook.mjs.map +1 -1
- package/dist/esm/hooks/createWorkspacePolicyHook.mjs +170 -271
- package/dist/esm/hooks/createWorkspacePolicyHook.mjs.map +1 -1
- package/dist/esm/hooks/executeHooks.mjs +227 -280
- package/dist/esm/hooks/executeHooks.mjs.map +1 -1
- package/dist/esm/hooks/index.mjs +7 -0
- package/dist/esm/hooks/matchers.mjs +196 -228
- package/dist/esm/hooks/matchers.mjs.map +1 -1
- package/dist/esm/hooks/types.mjs +24 -22
- package/dist/esm/hooks/types.mjs.map +1 -1
- package/dist/esm/instrumentation.mjs +109 -132
- package/dist/esm/instrumentation.mjs.map +1 -1
- package/dist/esm/langchain/google-common.mjs +1 -2
- package/dist/esm/langchain/index.mjs +5 -5
- package/dist/esm/langchain/language_models/chat_models.mjs +1 -2
- package/dist/esm/langchain/messages/tool.mjs +1 -2
- package/dist/esm/langchain/messages.mjs +2 -2
- package/dist/esm/langchain/openai.mjs +1 -2
- package/dist/esm/langchain/prompts.mjs +2 -2
- package/dist/esm/langchain/runnables.mjs +2 -2
- package/dist/esm/langchain/tools.mjs +2 -2
- package/dist/esm/langchain/utils/env.mjs +2 -2
- package/dist/esm/langfuse.mjs +60 -76
- package/dist/esm/langfuse.mjs.map +1 -1
- package/dist/esm/langfuseToolOutputTracing.mjs +267 -395
- package/dist/esm/langfuseToolOutputTracing.mjs.map +1 -1
- package/dist/esm/llm/anthropic/index.mjs +432 -559
- package/dist/esm/llm/anthropic/index.mjs.map +1 -1
- package/dist/esm/llm/anthropic/types.mjs +23 -45
- package/dist/esm/llm/anthropic/types.mjs.map +1 -1
- package/dist/esm/llm/anthropic/utils/message_inputs.mjs +439 -725
- package/dist/esm/llm/anthropic/utils/message_inputs.mjs.map +1 -1
- package/dist/esm/llm/anthropic/utils/message_outputs.mjs +171 -253
- package/dist/esm/llm/anthropic/utils/message_outputs.mjs.map +1 -1
- package/dist/esm/llm/anthropic/utils/output_parsers.mjs +3 -0
- package/dist/esm/llm/anthropic/utils/tools.mjs +12 -24
- package/dist/esm/llm/anthropic/utils/tools.mjs.map +1 -1
- package/dist/esm/llm/bedrock/index.mjs +214 -238
- package/dist/esm/llm/bedrock/index.mjs.map +1 -1
- package/dist/esm/llm/bedrock/toolCache.mjs +84 -104
- package/dist/esm/llm/bedrock/toolCache.mjs.map +1 -1
- package/dist/esm/llm/bedrock/utils/index.mjs +3 -0
- package/dist/esm/llm/bedrock/utils/message_inputs.mjs +357 -618
- package/dist/esm/llm/bedrock/utils/message_inputs.mjs.map +1 -1
- package/dist/esm/llm/bedrock/utils/message_outputs.mjs +140 -147
- package/dist/esm/llm/bedrock/utils/message_outputs.mjs.map +1 -1
- package/dist/esm/llm/fake.mjs +86 -94
- package/dist/esm/llm/fake.mjs.map +1 -1
- package/dist/esm/llm/google/index.mjs +183 -235
- package/dist/esm/llm/google/index.mjs.map +1 -1
- package/dist/esm/llm/google/utils/common.mjs +403 -666
- package/dist/esm/llm/google/utils/common.mjs.map +1 -1
- package/dist/esm/llm/google/utils/zod_to_genai_parameters.mjs +3 -0
- package/dist/esm/llm/init.mjs +44 -51
- package/dist/esm/llm/init.mjs.map +1 -1
- package/dist/esm/llm/invoke.mjs +142 -180
- package/dist/esm/llm/invoke.mjs.map +1 -1
- package/dist/esm/llm/openai/index.mjs +1035 -1268
- package/dist/esm/llm/openai/index.mjs.map +1 -1
- package/dist/esm/llm/openai/utils/index.mjs +188 -312
- package/dist/esm/llm/openai/utils/index.mjs.map +1 -1
- package/dist/esm/llm/openrouter/index.mjs +102 -151
- package/dist/esm/llm/openrouter/index.mjs.map +1 -1
- package/dist/esm/llm/openrouter/toolCache.mjs +35 -42
- package/dist/esm/llm/openrouter/toolCache.mjs.map +1 -1
- package/dist/esm/llm/providers.mjs +29 -34
- package/dist/esm/llm/providers.mjs.map +1 -1
- package/dist/esm/llm/request.mjs +20 -31
- package/dist/esm/llm/request.mjs.map +1 -1
- package/dist/esm/llm/vertexai/index.mjs +446 -449
- package/dist/esm/llm/vertexai/index.mjs.map +1 -1
- package/dist/esm/main.mjs +99 -87
- package/dist/esm/messages/anthropicToolCache.mjs +68 -117
- package/dist/esm/messages/anthropicToolCache.mjs.map +1 -1
- package/dist/esm/messages/cache.mjs +305 -416
- package/dist/esm/messages/cache.mjs.map +1 -1
- package/dist/esm/messages/content.mjs +36 -47
- package/dist/esm/messages/content.mjs.map +1 -1
- package/dist/esm/messages/contextPruning.mjs +112 -143
- package/dist/esm/messages/contextPruning.mjs.map +1 -1
- package/dist/esm/messages/contextPruningSettings.mjs +36 -44
- package/dist/esm/messages/contextPruningSettings.mjs.map +1 -1
- package/dist/esm/messages/core.mjs +254 -393
- package/dist/esm/messages/core.mjs.map +1 -1
- package/dist/esm/messages/format.mjs +902 -1383
- package/dist/esm/messages/format.mjs.map +1 -1
- package/dist/esm/messages/ids.mjs +16 -18
- package/dist/esm/messages/ids.mjs.map +1 -1
- package/dist/esm/messages/index.mjs +13 -0
- package/dist/esm/messages/langchain.mjs +18 -16
- package/dist/esm/messages/langchain.mjs.map +1 -1
- package/dist/esm/messages/prune.mjs +1053 -1514
- package/dist/esm/messages/prune.mjs.map +1 -1
- package/dist/esm/messages/recency.mjs +77 -93
- package/dist/esm/messages/recency.mjs.map +1 -1
- package/dist/esm/messages/reducer.mjs +63 -76
- package/dist/esm/messages/reducer.mjs.map +1 -1
- package/dist/esm/messages/tools.mjs +49 -75
- package/dist/esm/messages/tools.mjs.map +1 -1
- package/dist/esm/openai/index.mjs +170 -215
- package/dist/esm/openai/index.mjs.map +1 -1
- package/dist/esm/responses/index.mjs +301 -389
- package/dist/esm/responses/index.mjs.map +1 -1
- package/dist/esm/run.mjs +903 -1111
- package/dist/esm/run.mjs.map +1 -1
- package/dist/esm/session/AgentSession.mjs +806 -985
- package/dist/esm/session/AgentSession.mjs.map +1 -1
- package/dist/esm/session/JsonlSessionStore.mjs +326 -407
- package/dist/esm/session/JsonlSessionStore.mjs.map +1 -1
- package/dist/esm/session/handlers.mjs +192 -206
- package/dist/esm/session/handlers.mjs.map +1 -1
- package/dist/esm/session/ids.mjs +9 -8
- package/dist/esm/session/ids.mjs.map +1 -1
- package/dist/esm/session/index.mjs +5 -0
- package/dist/esm/session/messageSerialization.mjs +94 -154
- package/dist/esm/session/messageSerialization.mjs.map +1 -1
- package/dist/esm/splitStream.mjs +147 -204
- package/dist/esm/splitStream.mjs.map +1 -1
- package/dist/esm/stream.mjs +872 -1341
- package/dist/esm/stream.mjs.map +1 -1
- package/dist/esm/summarization/index.mjs +57 -99
- package/dist/esm/summarization/index.mjs.map +1 -1
- package/dist/esm/summarization/node.mjs +640 -790
- package/dist/esm/summarization/node.mjs.map +1 -1
- package/dist/esm/tools/BashExecutor.mjs +103 -129
- package/dist/esm/tools/BashExecutor.mjs.map +1 -1
- package/dist/esm/tools/BashProgrammaticToolCalling.mjs +162 -239
- package/dist/esm/tools/BashProgrammaticToolCalling.mjs.map +1 -1
- package/dist/esm/tools/Calculator.mjs +34 -36
- package/dist/esm/tools/Calculator.mjs.map +1 -1
- package/dist/esm/tools/CodeExecutor.mjs +123 -164
- package/dist/esm/tools/CodeExecutor.mjs.map +1 -1
- package/dist/esm/tools/CodeSessionFileSummary.mjs +36 -44
- package/dist/esm/tools/CodeSessionFileSummary.mjs.map +1 -1
- package/dist/esm/tools/ProgrammaticToolCalling.mjs +454 -644
- package/dist/esm/tools/ProgrammaticToolCalling.mjs.map +1 -1
- package/dist/esm/tools/ReadFile.mjs +17 -18
- package/dist/esm/tools/ReadFile.mjs.map +1 -1
- package/dist/esm/tools/SkillTool.mjs +26 -25
- package/dist/esm/tools/SkillTool.mjs.map +1 -1
- package/dist/esm/tools/SubagentTool.mjs +59 -59
- package/dist/esm/tools/SubagentTool.mjs.map +1 -1
- package/dist/esm/tools/ToolNode.mjs +2144 -2684
- package/dist/esm/tools/ToolNode.mjs.map +1 -1
- package/dist/esm/tools/ToolSearch.mjs +659 -804
- package/dist/esm/tools/ToolSearch.mjs.map +1 -1
- package/dist/esm/tools/cloudflare/CloudflareBridgeRuntime.mjs +248 -338
- package/dist/esm/tools/cloudflare/CloudflareBridgeRuntime.mjs.map +1 -1
- package/dist/esm/tools/cloudflare/CloudflareProgrammaticToolCalling.mjs +170 -195
- package/dist/esm/tools/cloudflare/CloudflareProgrammaticToolCalling.mjs.map +1 -1
- package/dist/esm/tools/cloudflare/CloudflareSandboxExecutionEngine.mjs +424 -517
- package/dist/esm/tools/cloudflare/CloudflareSandboxExecutionEngine.mjs.map +1 -1
- package/dist/esm/tools/cloudflare/CloudflareSandboxTools.mjs +91 -122
- package/dist/esm/tools/cloudflare/CloudflareSandboxTools.mjs.map +1 -1
- package/dist/esm/tools/cloudflare/index.mjs +5 -0
- package/dist/esm/tools/eagerEventExecution.mjs +75 -96
- package/dist/esm/tools/eagerEventExecution.mjs.map +1 -1
- package/dist/esm/tools/handlers.mjs +200 -260
- package/dist/esm/tools/handlers.mjs.map +1 -1
- package/dist/esm/tools/local/CompileCheckTool.mjs +150 -210
- package/dist/esm/tools/local/CompileCheckTool.mjs.map +1 -1
- package/dist/esm/tools/local/FileCheckpointer.mjs +77 -83
- package/dist/esm/tools/local/FileCheckpointer.mjs.map +1 -1
- package/dist/esm/tools/local/LocalCodingTools.mjs +760 -1017
- package/dist/esm/tools/local/LocalCodingTools.mjs.map +1 -1
- package/dist/esm/tools/local/LocalExecutionEngine.mjs +663 -936
- package/dist/esm/tools/local/LocalExecutionEngine.mjs.map +1 -1
- package/dist/esm/tools/local/LocalExecutionTools.mjs +49 -90
- package/dist/esm/tools/local/LocalExecutionTools.mjs.map +1 -1
- package/dist/esm/tools/local/LocalProgrammaticToolCalling.mjs +283 -349
- package/dist/esm/tools/local/LocalProgrammaticToolCalling.mjs.map +1 -1
- package/dist/esm/tools/local/attachments.mjs +108 -163
- package/dist/esm/tools/local/attachments.mjs.map +1 -1
- package/dist/esm/tools/local/bashAst.mjs +99 -111
- package/dist/esm/tools/local/bashAst.mjs.map +1 -1
- package/dist/esm/tools/local/editStrategies.mjs +126 -167
- package/dist/esm/tools/local/editStrategies.mjs.map +1 -1
- package/dist/esm/tools/local/index.mjs +13 -0
- package/dist/esm/tools/local/resolveLocalExecutionTools.mjs +136 -216
- package/dist/esm/tools/local/resolveLocalExecutionTools.mjs.map +1 -1
- package/dist/esm/tools/local/syntaxCheck.mjs +138 -155
- package/dist/esm/tools/local/syntaxCheck.mjs.map +1 -1
- package/dist/esm/tools/local/textEncoding.mjs +25 -21
- package/dist/esm/tools/local/textEncoding.mjs.map +1 -1
- package/dist/esm/tools/local/workspaceFS.mjs +38 -44
- package/dist/esm/tools/local/workspaceFS.mjs.map +1 -1
- package/dist/esm/tools/ptcTimeout.mjs +27 -42
- package/dist/esm/tools/ptcTimeout.mjs.map +1 -1
- package/dist/esm/tools/schema.mjs +24 -21
- package/dist/esm/tools/schema.mjs.map +1 -1
- package/dist/esm/tools/search/anthropic.mjs +24 -31
- package/dist/esm/tools/search/anthropic.mjs.map +1 -1
- package/dist/esm/tools/search/content.mjs +93 -116
- package/dist/esm/tools/search/content.mjs.map +1 -1
- package/dist/esm/tools/search/firecrawl.mjs +139 -169
- package/dist/esm/tools/search/firecrawl.mjs.map +1 -1
- package/dist/esm/tools/search/format.mjs +128 -194
- package/dist/esm/tools/search/format.mjs.map +1 -1
- package/dist/esm/tools/search/highlights.mjs +165 -230
- package/dist/esm/tools/search/highlights.mjs.map +1 -1
- package/dist/esm/tools/search/index.mjs +3 -0
- package/dist/esm/tools/search/rerankers.mjs +149 -168
- package/dist/esm/tools/search/rerankers.mjs.map +1 -1
- package/dist/esm/tools/search/schema.mjs +39 -37
- package/dist/esm/tools/search/schema.mjs.map +1 -1
- package/dist/esm/tools/search/search.mjs +426 -528
- package/dist/esm/tools/search/search.mjs.map +1 -1
- package/dist/esm/tools/search/serper-scraper.mjs +104 -124
- package/dist/esm/tools/search/serper-scraper.mjs.map +1 -1
- package/dist/esm/tools/search/tavily-scraper.mjs +127 -178
- package/dist/esm/tools/search/tavily-scraper.mjs.map +1 -1
- package/dist/esm/tools/search/tavily-search.mjs +293 -357
- package/dist/esm/tools/search/tavily-search.mjs.map +1 -1
- package/dist/esm/tools/search/tool.mjs +259 -297
- package/dist/esm/tools/search/tool.mjs.map +1 -1
- package/dist/esm/tools/search/utils.mjs +74 -115
- package/dist/esm/tools/search/utils.mjs.map +1 -1
- package/dist/esm/tools/skillCatalog.mjs +54 -70
- package/dist/esm/tools/skillCatalog.mjs.map +1 -1
- package/dist/esm/tools/streamedToolCallSeals.mjs +42 -31
- package/dist/esm/tools/streamedToolCallSeals.mjs.map +1 -1
- package/dist/esm/tools/subagent/SubagentExecutor.mjs +612 -768
- package/dist/esm/tools/subagent/SubagentExecutor.mjs.map +1 -1
- package/dist/esm/tools/subagent/index.mjs +2 -0
- package/dist/esm/tools/toolOutputReferences.mjs +523 -624
- package/dist/esm/tools/toolOutputReferences.mjs.map +1 -1
- package/dist/esm/utils/callbacks.mjs +11 -19
- package/dist/esm/utils/callbacks.mjs.map +1 -1
- package/dist/esm/utils/errors.mjs +70 -93
- package/dist/esm/utils/errors.mjs.map +1 -1
- package/dist/esm/utils/events.mjs +32 -40
- package/dist/esm/utils/events.mjs.map +1 -1
- package/dist/esm/utils/graph.mjs +8 -10
- package/dist/esm/utils/graph.mjs.map +1 -1
- package/dist/esm/utils/handlers.mjs +60 -80
- package/dist/esm/utils/handlers.mjs.map +1 -1
- package/dist/esm/utils/index.mjs +10 -0
- package/dist/esm/utils/llm.mjs +19 -25
- package/dist/esm/utils/llm.mjs.map +1 -1
- package/dist/esm/utils/misc.mjs +30 -44
- package/dist/esm/utils/misc.mjs.map +1 -1
- package/dist/esm/utils/run.mjs +50 -64
- package/dist/esm/utils/run.mjs.map +1 -1
- package/dist/esm/utils/schema.mjs +11 -17
- package/dist/esm/utils/schema.mjs.map +1 -1
- package/dist/esm/utils/title.mjs +71 -104
- package/dist/esm/utils/title.mjs.map +1 -1
- package/dist/esm/utils/tokens.mjs +186 -281
- package/dist/esm/utils/tokens.mjs.map +1 -1
- package/dist/esm/utils/truncation.mjs +95 -112
- package/dist/esm/utils/truncation.mjs.map +1 -1
- package/dist/types/llm/bedrock/utils/index.d.ts +1 -1
- package/dist/types/llm/bedrock/utils/message_outputs.d.ts +9 -0
- package/dist/types/llm/vertexai/index.d.ts +10 -0
- package/dist/types/tools/ToolNode.d.ts +8 -0
- package/dist/types/tools/search/tool.d.ts +17 -0
- package/dist/types/tools/search/types.d.ts +4 -0
- package/dist/types/tools/streamedToolCallSeals.d.ts +5 -1
- package/dist/types/types/tools.d.ts +10 -0
- package/package.json +4 -10
- package/src/__tests__/stream.eagerEventExecution.test.ts +703 -0
- package/src/llm/bedrock/index.ts +40 -0
- package/src/llm/bedrock/streamSealDispatch.test.ts +158 -0
- package/src/llm/bedrock/utils/index.ts +1 -0
- package/src/llm/bedrock/utils/message_outputs.test.ts +85 -0
- package/src/llm/bedrock/utils/message_outputs.ts +43 -0
- package/src/llm/google/utils/common.test.ts +64 -0
- package/src/llm/google/utils/common.ts +18 -0
- package/src/llm/openai/index.ts +95 -1
- package/src/llm/openai/sequentialToolCallSeals.test.ts +199 -0
- package/src/llm/vertexai/index.ts +31 -0
- package/src/llm/vertexai/sealStreamedToolCalls.test.ts +88 -0
- package/src/llm/vertexai/streamSealDispatch.test.ts +148 -0
- package/src/stream.ts +40 -6
- package/src/tools/ToolNode.ts +85 -3
- package/src/tools/__tests__/ToolNode.onResultCompletion.test.ts +368 -0
- package/src/tools/search/highlights.ts +9 -1
- package/src/tools/search/search.ts +41 -3
- package/src/tools/search/source-processing.test.ts +373 -0
- package/src/tools/search/tool.ts +22 -2
- package/src/tools/search/types.ts +4 -0
- package/src/tools/streamedToolCallSeals.ts +37 -9
- package/src/types/tools.ts +10 -0
- package/dist/cjs/langchain/google-common.cjs.map +0 -1
- package/dist/cjs/langchain/index.cjs.map +0 -1
- package/dist/cjs/langchain/language_models/chat_models.cjs.map +0 -1
- package/dist/cjs/langchain/messages/tool.cjs.map +0 -1
- package/dist/cjs/langchain/messages.cjs.map +0 -1
- package/dist/cjs/langchain/openai.cjs.map +0 -1
- package/dist/cjs/langchain/prompts.cjs.map +0 -1
- package/dist/cjs/langchain/runnables.cjs.map +0 -1
- package/dist/cjs/langchain/tools.cjs.map +0 -1
- package/dist/cjs/langchain/utils/env.cjs.map +0 -1
- package/dist/cjs/main.cjs.map +0 -1
- package/dist/esm/langchain/google-common.mjs.map +0 -1
- package/dist/esm/langchain/index.mjs.map +0 -1
- package/dist/esm/langchain/language_models/chat_models.mjs.map +0 -1
- package/dist/esm/langchain/messages/tool.mjs.map +0 -1
- package/dist/esm/langchain/messages.mjs.map +0 -1
- package/dist/esm/langchain/openai.mjs.map +0 -1
- package/dist/esm/langchain/prompts.mjs.map +0 -1
- package/dist/esm/langchain/runnables.mjs.map +0 -1
- package/dist/esm/langchain/tools.mjs.map +0 -1
- package/dist/esm/langchain/utils/env.mjs.map +0 -1
- package/dist/esm/main.mjs.map +0 -1
|
@@ -1,610 +1,480 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
var tools = require('./utils/tools.cjs');
|
|
9
|
-
|
|
1
|
+
const require_message_inputs = require("./utils/message_inputs.cjs");
|
|
2
|
+
const require_message_outputs = require("./utils/message_outputs.cjs");
|
|
3
|
+
const require_tools = require("./utils/tools.cjs");
|
|
4
|
+
let _langchain_core_messages = require("@langchain/core/messages");
|
|
5
|
+
let _langchain_core_outputs = require("@langchain/core/outputs");
|
|
6
|
+
let _langchain_anthropic = require("@langchain/anthropic");
|
|
7
|
+
//#region src/llm/anthropic/index.ts
|
|
10
8
|
const DEFAULT_STREAM_DELAY = 25;
|
|
11
9
|
const MAX_STREAM_QUEUE_CHUNKS = 256;
|
|
12
10
|
const MAX_STREAM_QUEUE_TEXT_CHARS = 8192;
|
|
13
11
|
const STREAM_CHUNK_MIN_SIZE = 4;
|
|
14
|
-
const STREAM_BOUNDARIES = new Set([
|
|
12
|
+
const STREAM_BOUNDARIES = new Set([
|
|
13
|
+
" ",
|
|
14
|
+
".",
|
|
15
|
+
",",
|
|
16
|
+
"!",
|
|
17
|
+
"?",
|
|
18
|
+
";",
|
|
19
|
+
":"
|
|
20
|
+
]);
|
|
15
21
|
const ANTHROPIC_TOOL_BETAS = {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
22
|
+
tool_search_tool_regex_20251119: "advanced-tool-use-2025-11-20",
|
|
23
|
+
tool_search_tool_bm25_20251119: "advanced-tool-use-2025-11-20",
|
|
24
|
+
memory_20250818: "context-management-2025-06-27",
|
|
25
|
+
web_fetch_20250910: "web-fetch-2025-09-10",
|
|
26
|
+
code_execution_20250825: "code-execution-2025-08-25",
|
|
27
|
+
computer_20251124: "computer-use-2025-11-24",
|
|
28
|
+
computer_20250124: "computer-use-2025-01-24",
|
|
29
|
+
mcp_toolset: "mcp-client-2025-11-20"
|
|
24
30
|
};
|
|
25
31
|
function _toolsInParams(params) {
|
|
26
|
-
|
|
32
|
+
return !!(params.tools && params.tools.length > 0);
|
|
27
33
|
}
|
|
28
34
|
function _documentsInParams(params) {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
'type' in maybeBlock &&
|
|
38
|
-
maybeBlock.type === 'document' &&
|
|
39
|
-
'citations' in maybeBlock &&
|
|
40
|
-
maybeBlock.citations != null &&
|
|
41
|
-
typeof maybeBlock.citations === 'object' &&
|
|
42
|
-
'enabled' in maybeBlock.citations &&
|
|
43
|
-
maybeBlock.citations.enabled === true) {
|
|
44
|
-
return true;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
return false;
|
|
35
|
+
for (const message of params.messages) {
|
|
36
|
+
if (typeof message.content === "string") continue;
|
|
37
|
+
for (const block of message.content) {
|
|
38
|
+
const maybeBlock = block;
|
|
39
|
+
if (typeof maybeBlock === "object" && maybeBlock !== null && "type" in maybeBlock && maybeBlock.type === "document" && "citations" in maybeBlock && maybeBlock.citations != null && typeof maybeBlock.citations === "object" && "enabled" in maybeBlock.citations && maybeBlock.citations.enabled === true) return true;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return false;
|
|
49
43
|
}
|
|
50
44
|
function _thinkingInParams(params) {
|
|
51
|
-
|
|
52
|
-
(params.thinking.type === 'enabled' || params.thinking.type === 'adaptive'));
|
|
45
|
+
return !!(params.thinking && (params.thinking.type === "enabled" || params.thinking.type === "adaptive"));
|
|
53
46
|
}
|
|
54
47
|
function _compactionInParams(params) {
|
|
55
|
-
|
|
48
|
+
return params.context_management?.edits?.some((edit) => edit.type === "compact_20260112") === true;
|
|
56
49
|
}
|
|
57
50
|
function isThinkingEnabled(thinking) {
|
|
58
|
-
|
|
51
|
+
return thinking.type === "enabled" || thinking.type === "adaptive";
|
|
59
52
|
}
|
|
60
53
|
function isOpus47Model(model) {
|
|
61
|
-
|
|
54
|
+
return /^claude-opus-4-7(?:-|$)/.test(model ?? "");
|
|
62
55
|
}
|
|
63
56
|
function combineBetas(...betaGroups) {
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
betas.add(beta);
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
return [...betas];
|
|
57
|
+
const betas = /* @__PURE__ */ new Set();
|
|
58
|
+
for (const betaGroup of betaGroups) for (const beta of betaGroup ?? []) betas.add(beta);
|
|
59
|
+
return [...betas];
|
|
71
60
|
}
|
|
72
61
|
function getToolBetas(tools) {
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
betas.add(beta);
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
return [...betas];
|
|
62
|
+
const betas = /* @__PURE__ */ new Set();
|
|
63
|
+
for (const tool of tools ?? []) {
|
|
64
|
+
if (typeof tool !== "object" || !("type" in tool)) continue;
|
|
65
|
+
const beta = ANTHROPIC_TOOL_BETAS[String(tool.type)];
|
|
66
|
+
if (beta != null) betas.add(beta);
|
|
67
|
+
}
|
|
68
|
+
return [...betas];
|
|
84
69
|
}
|
|
85
70
|
function getCompactionBetas(contextManagement) {
|
|
86
|
-
|
|
87
|
-
? ['compact-2026-01-12']
|
|
88
|
-
: [];
|
|
71
|
+
return contextManagement?.edits?.some((edit) => edit.type === "compact_20260112") === true ? ["compact-2026-01-12"] : [];
|
|
89
72
|
}
|
|
90
73
|
function getTaskBudgetBetas(model, outputConfig) {
|
|
91
|
-
|
|
92
|
-
outputConfig != null &&
|
|
93
|
-
'task_budget' in outputConfig &&
|
|
94
|
-
outputConfig.task_budget != null
|
|
95
|
-
? ['task-budgets-2026-03-13']
|
|
96
|
-
: [];
|
|
74
|
+
return isOpus47Model(model) && outputConfig != null && "task_budget" in outputConfig && outputConfig.task_budget != null ? ["task-budgets-2026-03-13"] : [];
|
|
97
75
|
}
|
|
98
76
|
function isSetSamplingValue(value) {
|
|
99
|
-
|
|
77
|
+
return value != null && value !== -1;
|
|
100
78
|
}
|
|
101
79
|
function isNonDefaultTemperature(value) {
|
|
102
|
-
|
|
80
|
+
return isSetSamplingValue(value) && value !== 1;
|
|
103
81
|
}
|
|
104
|
-
function validateInvocationParamCompatibility({ model, thinking, topK, topP, temperature
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
throw new Error('topP is not supported for claude-opus-4-7 when set to non-default values');
|
|
118
|
-
}
|
|
119
|
-
if (isNonDefaultTemperature(temperature)) {
|
|
120
|
-
throw new Error('temperature is not supported for claude-opus-4-7 when set to non-default values');
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
if (!isThinkingEnabled(thinking)) {
|
|
124
|
-
return;
|
|
125
|
-
}
|
|
126
|
-
if (isSetSamplingValue(topK)) {
|
|
127
|
-
throw new Error('topK is not supported when thinking is enabled');
|
|
128
|
-
}
|
|
129
|
-
if (isSetSamplingValue(topP)) {
|
|
130
|
-
throw new Error('topP is not supported when thinking is enabled');
|
|
131
|
-
}
|
|
132
|
-
if (isNonDefaultTemperature(temperature)) {
|
|
133
|
-
throw new Error('temperature is not supported when thinking is enabled');
|
|
134
|
-
}
|
|
82
|
+
function validateInvocationParamCompatibility({ model, thinking, topK, topP, temperature }) {
|
|
83
|
+
const opus47 = isOpus47Model(model);
|
|
84
|
+
if (opus47 && thinking.type === "enabled") throw new Error("thinking.type=\"enabled\" is not supported for claude-opus-4-7; use thinking.type=\"adaptive\" instead");
|
|
85
|
+
if (opus47 && "budget_tokens" in thinking) throw new Error("thinking.budget_tokens is not supported for claude-opus-4-7; use outputConfig.effort instead");
|
|
86
|
+
if (opus47) {
|
|
87
|
+
if (isSetSamplingValue(topK)) throw new Error("topK is not supported for claude-opus-4-7; omit topK/topP/temperature or use model prompting instead");
|
|
88
|
+
if (isSetSamplingValue(topP) && topP !== 1) throw new Error("topP is not supported for claude-opus-4-7 when set to non-default values");
|
|
89
|
+
if (isNonDefaultTemperature(temperature)) throw new Error("temperature is not supported for claude-opus-4-7 when set to non-default values");
|
|
90
|
+
}
|
|
91
|
+
if (!isThinkingEnabled(thinking)) return;
|
|
92
|
+
if (isSetSamplingValue(topK)) throw new Error("topK is not supported when thinking is enabled");
|
|
93
|
+
if (isSetSamplingValue(topP)) throw new Error("topP is not supported when thinking is enabled");
|
|
94
|
+
if (isNonDefaultTemperature(temperature)) throw new Error("temperature is not supported when thinking is enabled");
|
|
135
95
|
}
|
|
136
|
-
function getSamplingParams({ model, thinking, topK, topP, temperature
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
...(isSetSamplingValue(topP) ? { top_p: topP } : {}),
|
|
144
|
-
};
|
|
96
|
+
function getSamplingParams({ model, thinking, topK, topP, temperature }) {
|
|
97
|
+
if (isThinkingEnabled(thinking) || isOpus47Model(model)) return {};
|
|
98
|
+
return {
|
|
99
|
+
...isSetSamplingValue(temperature) ? { temperature } : {},
|
|
100
|
+
...isSetSamplingValue(topK) ? { top_k: topK } : {},
|
|
101
|
+
...isSetSamplingValue(topP) ? { top_p: topP } : {}
|
|
102
|
+
};
|
|
145
103
|
}
|
|
146
104
|
function findStreamChunkBoundary(text, minSize) {
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
for (let position = minSize; position < text.length; position++) {
|
|
151
|
-
if (STREAM_BOUNDARIES.has(text[position])) {
|
|
152
|
-
return position + 1;
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
return text.length;
|
|
105
|
+
if (minSize >= text.length) return text.length;
|
|
106
|
+
for (let position = minSize; position < text.length; position++) if (STREAM_BOUNDARIES.has(text[position])) return position + 1;
|
|
107
|
+
return text.length;
|
|
156
108
|
}
|
|
157
109
|
function splitStreamToken(text) {
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
return chunks;
|
|
110
|
+
const chunks = [];
|
|
111
|
+
let currentIndex = 0;
|
|
112
|
+
while (currentIndex < text.length) {
|
|
113
|
+
const chunkSize = findStreamChunkBoundary(text.slice(currentIndex), STREAM_CHUNK_MIN_SIZE);
|
|
114
|
+
chunks.push(text.slice(currentIndex, currentIndex + chunkSize));
|
|
115
|
+
currentIndex += chunkSize;
|
|
116
|
+
}
|
|
117
|
+
return chunks;
|
|
167
118
|
}
|
|
168
|
-
function getCadencedStreamDelay({ targetDelay, lastVisibleTextAt, now
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
}
|
|
172
|
-
return Math.max(0, targetDelay - (now - lastVisibleTextAt));
|
|
119
|
+
function getCadencedStreamDelay({ targetDelay, lastVisibleTextAt, now }) {
|
|
120
|
+
if (targetDelay <= 0 || lastVisibleTextAt == null) return 0;
|
|
121
|
+
return Math.max(0, targetDelay - (now - lastVisibleTextAt));
|
|
173
122
|
}
|
|
174
123
|
async function waitForStreamDelay(delay, signal) {
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
}, delay);
|
|
191
|
-
signal?.addEventListener('abort', onAbort, { once: true });
|
|
192
|
-
if (isSignalAborted(signal)) {
|
|
193
|
-
onAbort();
|
|
194
|
-
}
|
|
195
|
-
});
|
|
124
|
+
if (delay <= 0 || isSignalAborted(signal)) return;
|
|
125
|
+
await new Promise((resolve) => {
|
|
126
|
+
const timeoutRef = {};
|
|
127
|
+
const onAbort = () => {
|
|
128
|
+
if (timeoutRef.current) clearTimeout(timeoutRef.current);
|
|
129
|
+
signal?.removeEventListener("abort", onAbort);
|
|
130
|
+
resolve();
|
|
131
|
+
};
|
|
132
|
+
timeoutRef.current = setTimeout(() => {
|
|
133
|
+
signal?.removeEventListener("abort", onAbort);
|
|
134
|
+
resolve();
|
|
135
|
+
}, delay);
|
|
136
|
+
signal?.addEventListener("abort", onAbort, { once: true });
|
|
137
|
+
if (isSignalAborted(signal)) onAbort();
|
|
138
|
+
});
|
|
196
139
|
}
|
|
197
140
|
function isSignalAborted(signal) {
|
|
198
|
-
|
|
141
|
+
return signal?.aborted === true;
|
|
199
142
|
}
|
|
200
143
|
function extractToken(chunk) {
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
else if (Array.isArray(chunk.content) &&
|
|
212
|
-
chunk.content.length >= 1 &&
|
|
213
|
-
'text' in chunk.content[0]) {
|
|
214
|
-
const text = chunk.content[0].text;
|
|
215
|
-
return typeof text === 'string' ? [text, 'content'] : [undefined];
|
|
216
|
-
}
|
|
217
|
-
else if (Array.isArray(chunk.content) &&
|
|
218
|
-
chunk.content.length >= 1 &&
|
|
219
|
-
'thinking' in chunk.content[0]) {
|
|
220
|
-
const thinking = chunk.content[0].thinking;
|
|
221
|
-
return typeof thinking === 'string' ? [thinking, 'content'] : [undefined];
|
|
222
|
-
}
|
|
223
|
-
return [undefined];
|
|
144
|
+
if (typeof chunk.content === "string") return [chunk.content, "string"];
|
|
145
|
+
else if (Array.isArray(chunk.content) && chunk.content.length >= 1 && "input" in chunk.content[0]) return typeof chunk.content[0].input === "string" ? [chunk.content[0].input, "input"] : [JSON.stringify(chunk.content[0].input), "input"];
|
|
146
|
+
else if (Array.isArray(chunk.content) && chunk.content.length >= 1 && "text" in chunk.content[0]) {
|
|
147
|
+
const text = chunk.content[0].text;
|
|
148
|
+
return typeof text === "string" ? [text, "content"] : [void 0];
|
|
149
|
+
} else if (Array.isArray(chunk.content) && chunk.content.length >= 1 && "thinking" in chunk.content[0]) {
|
|
150
|
+
const thinking = chunk.content[0].thinking;
|
|
151
|
+
return typeof thinking === "string" ? [thinking, "content"] : [void 0];
|
|
152
|
+
}
|
|
153
|
+
return [void 0];
|
|
224
154
|
}
|
|
225
155
|
function cloneChunk(text, tokenType, chunk) {
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
if (content.type === 'text') {
|
|
234
|
-
return new messages.AIMessageChunk(Object.assign({}, chunk, {
|
|
235
|
-
content: [Object.assign({}, content, { text })],
|
|
236
|
-
}));
|
|
237
|
-
}
|
|
238
|
-
else if (content.type === 'text_delta') {
|
|
239
|
-
return new messages.AIMessageChunk(Object.assign({}, chunk, {
|
|
240
|
-
content: [Object.assign({}, content, { text })],
|
|
241
|
-
}));
|
|
242
|
-
}
|
|
243
|
-
else if (typeof content.type === 'string' &&
|
|
244
|
-
content.type.startsWith('thinking')) {
|
|
245
|
-
return new messages.AIMessageChunk(Object.assign({}, chunk, {
|
|
246
|
-
content: [Object.assign({}, content, { thinking: text })],
|
|
247
|
-
}));
|
|
248
|
-
}
|
|
249
|
-
return chunk;
|
|
156
|
+
if (tokenType === "string") return new _langchain_core_messages.AIMessageChunk(Object.assign({}, chunk, { content: text }));
|
|
157
|
+
else if (tokenType === "input") return chunk;
|
|
158
|
+
const content = chunk.content[0];
|
|
159
|
+
if (content.type === "text") return new _langchain_core_messages.AIMessageChunk(Object.assign({}, chunk, { content: [Object.assign({}, content, { text })] }));
|
|
160
|
+
else if (content.type === "text_delta") return new _langchain_core_messages.AIMessageChunk(Object.assign({}, chunk, { content: [Object.assign({}, content, { text })] }));
|
|
161
|
+
else if (typeof content.type === "string" && content.type.startsWith("thinking")) return new _langchain_core_messages.AIMessageChunk(Object.assign({}, chunk, { content: [Object.assign({}, content, { thinking: text })] }));
|
|
162
|
+
return chunk;
|
|
250
163
|
}
|
|
251
164
|
function withIncrementalMessageDeltaUsage(chunk, previousOutputTokens) {
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
};
|
|
267
|
-
}
|
|
268
|
-
class CustomAnthropic extends anthropic.ChatAnthropicMessages {
|
|
269
|
-
_lc_stream_delay;
|
|
270
|
-
tools_in_params;
|
|
271
|
-
top_k;
|
|
272
|
-
outputConfig;
|
|
273
|
-
inferenceGeo;
|
|
274
|
-
contextManagement;
|
|
275
|
-
constructor(fields) {
|
|
276
|
-
super(fields);
|
|
277
|
-
this.resetTokenEvents();
|
|
278
|
-
this.setDirectFields(fields);
|
|
279
|
-
this._lc_stream_delay = Math.max(0, fields?._lc_stream_delay ?? DEFAULT_STREAM_DELAY);
|
|
280
|
-
this.outputConfig = fields?.outputConfig;
|
|
281
|
-
this.inferenceGeo = fields?.inferenceGeo;
|
|
282
|
-
this.contextManagement = fields?.contextManagement;
|
|
283
|
-
}
|
|
284
|
-
static lc_name() {
|
|
285
|
-
return 'LibreChatAnthropic';
|
|
286
|
-
}
|
|
287
|
-
/**
|
|
288
|
-
* Get the parameters used to invoke the model
|
|
289
|
-
*/
|
|
290
|
-
invocationParams(options) {
|
|
291
|
-
const tool_choice = tools.handleToolChoice(options?.tool_choice);
|
|
292
|
-
const callOptions = options;
|
|
293
|
-
const mergedOutputConfig = (() => {
|
|
294
|
-
const base = {
|
|
295
|
-
...this.outputConfig,
|
|
296
|
-
...callOptions?.outputConfig,
|
|
297
|
-
};
|
|
298
|
-
if (callOptions?.outputFormat && !base.format) {
|
|
299
|
-
base.format = callOptions.outputFormat;
|
|
300
|
-
}
|
|
301
|
-
return Object.keys(base).length > 0 ? base : undefined;
|
|
302
|
-
})();
|
|
303
|
-
const inferenceGeo = callOptions?.inferenceGeo ?? this.inferenceGeo;
|
|
304
|
-
const contextManagement = this.contextManagement;
|
|
305
|
-
const toolBetas = getToolBetas(options?.tools);
|
|
306
|
-
const compactionBetas = getCompactionBetas(contextManagement);
|
|
307
|
-
const taskBudgetBetas = getTaskBudgetBetas(this.model, mergedOutputConfig);
|
|
308
|
-
const formattedTools = this.formatStructuredToolToAnthropic(options?.tools);
|
|
309
|
-
const sharedParams = {
|
|
310
|
-
tools: formattedTools,
|
|
311
|
-
tool_choice,
|
|
312
|
-
thinking: this.thinking,
|
|
313
|
-
context_management: contextManagement,
|
|
314
|
-
...this.invocationKwargs,
|
|
315
|
-
container: callOptions?.container,
|
|
316
|
-
betas: combineBetas(this.betas, callOptions?.betas, toolBetas, compactionBetas, taskBudgetBetas),
|
|
317
|
-
output_config: mergedOutputConfig,
|
|
318
|
-
inference_geo: inferenceGeo,
|
|
319
|
-
mcp_servers: callOptions?.mcp_servers,
|
|
320
|
-
};
|
|
321
|
-
validateInvocationParamCompatibility({
|
|
322
|
-
model: this.model,
|
|
323
|
-
thinking: this.thinking,
|
|
324
|
-
topK: this.top_k,
|
|
325
|
-
topP: this.topP,
|
|
326
|
-
temperature: this.temperature,
|
|
327
|
-
});
|
|
328
|
-
return {
|
|
329
|
-
model: this.model,
|
|
330
|
-
stop_sequences: options?.stop ?? this.stopSequences,
|
|
331
|
-
stream: this.streaming,
|
|
332
|
-
max_tokens: this.maxTokens,
|
|
333
|
-
...getSamplingParams({
|
|
334
|
-
model: this.model,
|
|
335
|
-
thinking: this.thinking,
|
|
336
|
-
topK: this.top_k,
|
|
337
|
-
topP: this.topP,
|
|
338
|
-
temperature: this.temperature,
|
|
339
|
-
}),
|
|
340
|
-
...sharedParams,
|
|
341
|
-
};
|
|
342
|
-
}
|
|
343
|
-
resetTokenEvents() {
|
|
344
|
-
this.tools_in_params = undefined;
|
|
345
|
-
}
|
|
346
|
-
setDirectFields(fields) {
|
|
347
|
-
this.temperature = fields?.temperature ?? undefined;
|
|
348
|
-
this.topP = fields?.topP ?? undefined;
|
|
349
|
-
this.top_k = fields?.topK;
|
|
350
|
-
if (this.temperature === -1 || this.temperature === 1) {
|
|
351
|
-
this.temperature = undefined;
|
|
352
|
-
}
|
|
353
|
-
if (this.topP === -1) {
|
|
354
|
-
this.topP = undefined;
|
|
355
|
-
}
|
|
356
|
-
if (this.top_k === -1) {
|
|
357
|
-
this.top_k = undefined;
|
|
358
|
-
}
|
|
359
|
-
}
|
|
360
|
-
createGenerationChunk({ token, chunk, shouldStreamUsage, }) {
|
|
361
|
-
const usage_metadata = shouldStreamUsage ? chunk.usage_metadata : undefined;
|
|
362
|
-
return new outputs.ChatGenerationChunk({
|
|
363
|
-
message: new messages.AIMessageChunk({
|
|
364
|
-
// Just yield chunk as it is and tool_use will be concat by BaseChatModel._generateUncached().
|
|
365
|
-
content: chunk.content,
|
|
366
|
-
additional_kwargs: chunk.additional_kwargs,
|
|
367
|
-
tool_call_chunks: chunk.tool_call_chunks,
|
|
368
|
-
response_metadata: chunk.response_metadata,
|
|
369
|
-
usage_metadata,
|
|
370
|
-
id: chunk.id,
|
|
371
|
-
}),
|
|
372
|
-
text: token ?? '',
|
|
373
|
-
});
|
|
374
|
-
}
|
|
375
|
-
async createStreamWithRetry(request, options) {
|
|
376
|
-
return super.createStreamWithRetry(message_inputs.stripUnsupportedAssistantPrefill(request), options);
|
|
377
|
-
}
|
|
378
|
-
async completionWithRetry(request, options) {
|
|
379
|
-
return super.completionWithRetry(message_inputs.stripUnsupportedAssistantPrefill(request), options);
|
|
380
|
-
}
|
|
381
|
-
async *_streamResponseChunks(messages$1, options, runManager) {
|
|
382
|
-
this.resetTokenEvents();
|
|
383
|
-
const params = this.invocationParams(options);
|
|
384
|
-
const formattedMessages = message_inputs._convertMessagesToAnthropicPayload(messages$1);
|
|
385
|
-
const payload = message_inputs.stripUnsupportedAssistantPrefill({
|
|
386
|
-
...params,
|
|
387
|
-
...formattedMessages,
|
|
388
|
-
stream: true,
|
|
389
|
-
});
|
|
390
|
-
const coerceContentToString = !_toolsInParams(payload) &&
|
|
391
|
-
!_documentsInParams(payload) &&
|
|
392
|
-
!_thinkingInParams(payload) &&
|
|
393
|
-
!_compactionInParams(payload);
|
|
394
|
-
const stream = await this.createStreamWithRetry(payload, {
|
|
395
|
-
headers: options.headers,
|
|
396
|
-
signal: options.signal,
|
|
397
|
-
});
|
|
398
|
-
const shouldStreamUsage = options.streamUsage ?? this.streamUsage;
|
|
399
|
-
let messageDeltaOutputTokens = 0;
|
|
400
|
-
const queuedChunks = [];
|
|
401
|
-
const producerState = { done: false };
|
|
402
|
-
let queuedChunkIndex = 0;
|
|
403
|
-
let bufferedTextLength = 0;
|
|
404
|
-
let consumerClosed = false;
|
|
405
|
-
let notifyConsumer;
|
|
406
|
-
let notifyProducer;
|
|
407
|
-
const notifyConsumerForChunk = () => {
|
|
408
|
-
notifyConsumer?.();
|
|
409
|
-
notifyConsumer = undefined;
|
|
410
|
-
};
|
|
411
|
-
const notifyProducerForSpace = () => {
|
|
412
|
-
notifyProducer?.();
|
|
413
|
-
notifyProducer = undefined;
|
|
414
|
-
};
|
|
415
|
-
const hasQueuedChunks = () => queuedChunkIndex < queuedChunks.length;
|
|
416
|
-
const getQueuedChunkCount = () => queuedChunks.length - queuedChunkIndex;
|
|
417
|
-
const isQueueAtCapacity = () => getQueuedChunkCount() >= MAX_STREAM_QUEUE_CHUNKS ||
|
|
418
|
-
bufferedTextLength >= MAX_STREAM_QUEUE_TEXT_CHARS;
|
|
419
|
-
const waitForNextChunk = async () => {
|
|
420
|
-
if (hasQueuedChunks() ||
|
|
421
|
-
producerState.done ||
|
|
422
|
-
producerState.error != null) {
|
|
423
|
-
return;
|
|
424
|
-
}
|
|
425
|
-
await new Promise((resolve) => {
|
|
426
|
-
notifyConsumer = resolve;
|
|
427
|
-
});
|
|
428
|
-
};
|
|
429
|
-
const waitForQueueSpace = async () => {
|
|
430
|
-
while (isQueueAtCapacity() &&
|
|
431
|
-
!consumerClosed &&
|
|
432
|
-
!isSignalAborted(options.signal)) {
|
|
433
|
-
await new Promise((resolve) => {
|
|
434
|
-
const signal = options.signal;
|
|
435
|
-
const onAbort = () => {
|
|
436
|
-
signal?.removeEventListener('abort', onAbort);
|
|
437
|
-
resolve();
|
|
438
|
-
};
|
|
439
|
-
const onSpace = () => {
|
|
440
|
-
signal?.removeEventListener('abort', onAbort);
|
|
441
|
-
resolve();
|
|
442
|
-
};
|
|
443
|
-
notifyProducer = onSpace;
|
|
444
|
-
signal?.addEventListener('abort', onAbort, { once: true });
|
|
445
|
-
if (isSignalAborted(signal)) {
|
|
446
|
-
onAbort();
|
|
447
|
-
}
|
|
448
|
-
});
|
|
449
|
-
}
|
|
450
|
-
};
|
|
451
|
-
const dequeue = () => {
|
|
452
|
-
if (!hasQueuedChunks()) {
|
|
453
|
-
return undefined;
|
|
454
|
-
}
|
|
455
|
-
const queuedChunk = queuedChunks[queuedChunkIndex];
|
|
456
|
-
queuedChunkIndex++;
|
|
457
|
-
if (queuedChunkIndex > 128 &&
|
|
458
|
-
queuedChunkIndex * 2 >= queuedChunks.length) {
|
|
459
|
-
queuedChunks.splice(0, queuedChunkIndex);
|
|
460
|
-
queuedChunkIndex = 0;
|
|
461
|
-
}
|
|
462
|
-
return queuedChunk;
|
|
463
|
-
};
|
|
464
|
-
const enqueue = async (queuedChunk) => {
|
|
465
|
-
await waitForQueueSpace();
|
|
466
|
-
if (consumerClosed || isSignalAborted(options.signal)) {
|
|
467
|
-
stream.controller.abort();
|
|
468
|
-
throw new Error('AbortError: User aborted the request.');
|
|
469
|
-
}
|
|
470
|
-
queuedChunks.push(queuedChunk);
|
|
471
|
-
if (queuedChunk.smooth) {
|
|
472
|
-
bufferedTextLength += queuedChunk.textLength;
|
|
473
|
-
}
|
|
474
|
-
notifyConsumerForChunk();
|
|
475
|
-
};
|
|
476
|
-
const enqueueChunk = async ({ token, chunk, smooth, }) => {
|
|
477
|
-
await enqueue({
|
|
478
|
-
token,
|
|
479
|
-
smooth,
|
|
480
|
-
textLength: smooth ? token.length : 0,
|
|
481
|
-
chunk: this.createGenerationChunk({
|
|
482
|
-
token,
|
|
483
|
-
chunk,
|
|
484
|
-
shouldStreamUsage,
|
|
485
|
-
}),
|
|
486
|
-
});
|
|
487
|
-
};
|
|
488
|
-
const enqueueTextChunks = (token, tokenType, chunk) => {
|
|
489
|
-
if (token === '') {
|
|
490
|
-
return Promise.resolve();
|
|
491
|
-
}
|
|
492
|
-
if (this._lc_stream_delay <= 0) {
|
|
493
|
-
return enqueueChunk({ token, chunk, smooth: false });
|
|
494
|
-
}
|
|
495
|
-
const tokenChunks = splitStreamToken(token);
|
|
496
|
-
if (tokenChunks.length <= 1) {
|
|
497
|
-
return enqueueChunk({ token, chunk, smooth: true });
|
|
498
|
-
}
|
|
499
|
-
let emittedUsage = false;
|
|
500
|
-
return tokenChunks.reduce(async (previous, currentToken) => {
|
|
501
|
-
await previous;
|
|
502
|
-
const newChunk = cloneChunk(currentToken, tokenType, chunk);
|
|
503
|
-
const chunkForToken = emittedUsage && newChunk.usage_metadata != null
|
|
504
|
-
? new messages.AIMessageChunk(Object.assign({}, newChunk, { usage_metadata: undefined }))
|
|
505
|
-
: newChunk;
|
|
506
|
-
await enqueueChunk({
|
|
507
|
-
token: currentToken,
|
|
508
|
-
chunk: chunkForToken,
|
|
509
|
-
smooth: true,
|
|
510
|
-
});
|
|
511
|
-
if (newChunk.usage_metadata != null && !emittedUsage) {
|
|
512
|
-
emittedUsage = true;
|
|
513
|
-
}
|
|
514
|
-
}, Promise.resolve());
|
|
515
|
-
};
|
|
516
|
-
const producer = (async () => {
|
|
517
|
-
try {
|
|
518
|
-
for await (const data of stream) {
|
|
519
|
-
if (isSignalAborted(options.signal)) {
|
|
520
|
-
stream.controller.abort();
|
|
521
|
-
throw new Error('AbortError: User aborted the request.');
|
|
522
|
-
}
|
|
523
|
-
const result = message_outputs._makeMessageChunkFromAnthropicEvent(data, {
|
|
524
|
-
streamUsage: shouldStreamUsage,
|
|
525
|
-
coerceContentToString,
|
|
526
|
-
});
|
|
527
|
-
if (!result) {
|
|
528
|
-
continue;
|
|
529
|
-
}
|
|
530
|
-
let { chunk } = result;
|
|
531
|
-
if (data.type === 'message_delta') {
|
|
532
|
-
const incremental = withIncrementalMessageDeltaUsage(chunk, messageDeltaOutputTokens);
|
|
533
|
-
chunk = incremental.chunk;
|
|
534
|
-
messageDeltaOutputTokens = incremental.outputTokens;
|
|
535
|
-
}
|
|
536
|
-
const [token = '', tokenType] = extractToken(chunk);
|
|
537
|
-
if (!tokenType ||
|
|
538
|
-
tokenType === 'input' ||
|
|
539
|
-
(token === '' && (chunk.usage_metadata != null || chunk.id != null))) {
|
|
540
|
-
await enqueueChunk({ token, chunk, smooth: false });
|
|
541
|
-
continue;
|
|
542
|
-
}
|
|
543
|
-
await enqueueTextChunks(token, tokenType, chunk);
|
|
544
|
-
}
|
|
545
|
-
}
|
|
546
|
-
catch (error) {
|
|
547
|
-
producerState.error = error;
|
|
548
|
-
}
|
|
549
|
-
finally {
|
|
550
|
-
producerState.done = true;
|
|
551
|
-
notifyConsumerForChunk();
|
|
552
|
-
}
|
|
553
|
-
})();
|
|
554
|
-
let hasEmittedText = false;
|
|
555
|
-
let lastVisibleTextAt;
|
|
556
|
-
let keepStreaming = true;
|
|
557
|
-
try {
|
|
558
|
-
while (keepStreaming) {
|
|
559
|
-
if (isSignalAborted(options.signal)) {
|
|
560
|
-
stream.controller.abort();
|
|
561
|
-
throw new Error('AbortError: User aborted the request.');
|
|
562
|
-
}
|
|
563
|
-
await waitForNextChunk();
|
|
564
|
-
const queuedChunk = dequeue();
|
|
565
|
-
if (!queuedChunk) {
|
|
566
|
-
if (producerState.error != null) {
|
|
567
|
-
throw producerState.error;
|
|
568
|
-
}
|
|
569
|
-
if (producerState.done) {
|
|
570
|
-
keepStreaming = false;
|
|
571
|
-
}
|
|
572
|
-
continue;
|
|
573
|
-
}
|
|
574
|
-
if (queuedChunk.smooth) {
|
|
575
|
-
bufferedTextLength = Math.max(0, bufferedTextLength - queuedChunk.textLength);
|
|
576
|
-
notifyProducerForSpace();
|
|
577
|
-
await waitForStreamDelay(getCadencedStreamDelay({
|
|
578
|
-
targetDelay: hasEmittedText ? this._lc_stream_delay : 0,
|
|
579
|
-
lastVisibleTextAt,
|
|
580
|
-
now: Date.now(),
|
|
581
|
-
}), options.signal);
|
|
582
|
-
if (isSignalAborted(options.signal)) {
|
|
583
|
-
stream.controller.abort();
|
|
584
|
-
throw new Error('AbortError: User aborted the request.');
|
|
585
|
-
}
|
|
586
|
-
hasEmittedText = true;
|
|
587
|
-
lastVisibleTextAt = Date.now();
|
|
588
|
-
}
|
|
589
|
-
else {
|
|
590
|
-
notifyProducerForSpace();
|
|
591
|
-
}
|
|
592
|
-
yield queuedChunk.chunk;
|
|
593
|
-
await runManager?.handleLLMNewToken(queuedChunk.token, undefined, undefined, undefined, undefined, { chunk: queuedChunk.chunk });
|
|
594
|
-
}
|
|
595
|
-
}
|
|
596
|
-
finally {
|
|
597
|
-
consumerClosed = true;
|
|
598
|
-
if (!producerState.done) {
|
|
599
|
-
stream.controller.abort();
|
|
600
|
-
notifyProducerForSpace();
|
|
601
|
-
}
|
|
602
|
-
await producer;
|
|
603
|
-
this.resetTokenEvents();
|
|
604
|
-
}
|
|
605
|
-
}
|
|
165
|
+
const usage = chunk.usage_metadata;
|
|
166
|
+
if (usage == null) return {
|
|
167
|
+
chunk,
|
|
168
|
+
outputTokens: previousOutputTokens
|
|
169
|
+
};
|
|
170
|
+
const outputTokens = Math.max(0, usage.output_tokens - previousOutputTokens);
|
|
171
|
+
return {
|
|
172
|
+
chunk: new _langchain_core_messages.AIMessageChunk(Object.assign({}, chunk, { usage_metadata: {
|
|
173
|
+
...usage,
|
|
174
|
+
output_tokens: outputTokens,
|
|
175
|
+
total_tokens: usage.input_tokens + outputTokens
|
|
176
|
+
} })),
|
|
177
|
+
outputTokens: usage.output_tokens
|
|
178
|
+
};
|
|
606
179
|
}
|
|
607
|
-
|
|
180
|
+
var CustomAnthropic = class extends _langchain_anthropic.ChatAnthropicMessages {
|
|
181
|
+
_lc_stream_delay;
|
|
182
|
+
tools_in_params;
|
|
183
|
+
top_k;
|
|
184
|
+
outputConfig;
|
|
185
|
+
inferenceGeo;
|
|
186
|
+
contextManagement;
|
|
187
|
+
constructor(fields) {
|
|
188
|
+
super(fields);
|
|
189
|
+
this.resetTokenEvents();
|
|
190
|
+
this.setDirectFields(fields);
|
|
191
|
+
this._lc_stream_delay = Math.max(0, fields?._lc_stream_delay ?? DEFAULT_STREAM_DELAY);
|
|
192
|
+
this.outputConfig = fields?.outputConfig;
|
|
193
|
+
this.inferenceGeo = fields?.inferenceGeo;
|
|
194
|
+
this.contextManagement = fields?.contextManagement;
|
|
195
|
+
}
|
|
196
|
+
static lc_name() {
|
|
197
|
+
return "LibreChatAnthropic";
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Get the parameters used to invoke the model
|
|
201
|
+
*/
|
|
202
|
+
invocationParams(options) {
|
|
203
|
+
const tool_choice = require_tools.handleToolChoice(options?.tool_choice);
|
|
204
|
+
const callOptions = options;
|
|
205
|
+
const mergedOutputConfig = (() => {
|
|
206
|
+
const base = {
|
|
207
|
+
...this.outputConfig,
|
|
208
|
+
...callOptions?.outputConfig
|
|
209
|
+
};
|
|
210
|
+
if (callOptions?.outputFormat && !base.format) base.format = callOptions.outputFormat;
|
|
211
|
+
return Object.keys(base).length > 0 ? base : void 0;
|
|
212
|
+
})();
|
|
213
|
+
const inferenceGeo = callOptions?.inferenceGeo ?? this.inferenceGeo;
|
|
214
|
+
const contextManagement = this.contextManagement;
|
|
215
|
+
const toolBetas = getToolBetas(options?.tools);
|
|
216
|
+
const compactionBetas = getCompactionBetas(contextManagement);
|
|
217
|
+
const taskBudgetBetas = getTaskBudgetBetas(this.model, mergedOutputConfig);
|
|
218
|
+
const sharedParams = {
|
|
219
|
+
tools: this.formatStructuredToolToAnthropic(options?.tools),
|
|
220
|
+
tool_choice,
|
|
221
|
+
thinking: this.thinking,
|
|
222
|
+
context_management: contextManagement,
|
|
223
|
+
...this.invocationKwargs,
|
|
224
|
+
container: callOptions?.container,
|
|
225
|
+
betas: combineBetas(this.betas, callOptions?.betas, toolBetas, compactionBetas, taskBudgetBetas),
|
|
226
|
+
output_config: mergedOutputConfig,
|
|
227
|
+
inference_geo: inferenceGeo,
|
|
228
|
+
mcp_servers: callOptions?.mcp_servers
|
|
229
|
+
};
|
|
230
|
+
validateInvocationParamCompatibility({
|
|
231
|
+
model: this.model,
|
|
232
|
+
thinking: this.thinking,
|
|
233
|
+
topK: this.top_k,
|
|
234
|
+
topP: this.topP,
|
|
235
|
+
temperature: this.temperature
|
|
236
|
+
});
|
|
237
|
+
return {
|
|
238
|
+
model: this.model,
|
|
239
|
+
stop_sequences: options?.stop ?? this.stopSequences,
|
|
240
|
+
stream: this.streaming,
|
|
241
|
+
max_tokens: this.maxTokens,
|
|
242
|
+
...getSamplingParams({
|
|
243
|
+
model: this.model,
|
|
244
|
+
thinking: this.thinking,
|
|
245
|
+
topK: this.top_k,
|
|
246
|
+
topP: this.topP,
|
|
247
|
+
temperature: this.temperature
|
|
248
|
+
}),
|
|
249
|
+
...sharedParams
|
|
250
|
+
};
|
|
251
|
+
}
|
|
252
|
+
resetTokenEvents() {
|
|
253
|
+
this.tools_in_params = void 0;
|
|
254
|
+
}
|
|
255
|
+
setDirectFields(fields) {
|
|
256
|
+
this.temperature = fields?.temperature ?? void 0;
|
|
257
|
+
this.topP = fields?.topP ?? void 0;
|
|
258
|
+
this.top_k = fields?.topK;
|
|
259
|
+
if (this.temperature === -1 || this.temperature === 1) this.temperature = void 0;
|
|
260
|
+
if (this.topP === -1) this.topP = void 0;
|
|
261
|
+
if (this.top_k === -1) this.top_k = void 0;
|
|
262
|
+
}
|
|
263
|
+
createGenerationChunk({ token, chunk, shouldStreamUsage }) {
|
|
264
|
+
const usage_metadata = shouldStreamUsage ? chunk.usage_metadata : void 0;
|
|
265
|
+
return new _langchain_core_outputs.ChatGenerationChunk({
|
|
266
|
+
message: new _langchain_core_messages.AIMessageChunk({
|
|
267
|
+
content: chunk.content,
|
|
268
|
+
additional_kwargs: chunk.additional_kwargs,
|
|
269
|
+
tool_call_chunks: chunk.tool_call_chunks,
|
|
270
|
+
response_metadata: chunk.response_metadata,
|
|
271
|
+
usage_metadata,
|
|
272
|
+
id: chunk.id
|
|
273
|
+
}),
|
|
274
|
+
text: token ?? ""
|
|
275
|
+
});
|
|
276
|
+
}
|
|
277
|
+
async createStreamWithRetry(request, options) {
|
|
278
|
+
return super.createStreamWithRetry(require_message_inputs.stripUnsupportedAssistantPrefill(request), options);
|
|
279
|
+
}
|
|
280
|
+
async completionWithRetry(request, options) {
|
|
281
|
+
return super.completionWithRetry(require_message_inputs.stripUnsupportedAssistantPrefill(request), options);
|
|
282
|
+
}
|
|
283
|
+
async *_streamResponseChunks(messages, options, runManager) {
|
|
284
|
+
this.resetTokenEvents();
|
|
285
|
+
const params = this.invocationParams(options);
|
|
286
|
+
const formattedMessages = require_message_inputs._convertMessagesToAnthropicPayload(messages);
|
|
287
|
+
const payload = require_message_inputs.stripUnsupportedAssistantPrefill({
|
|
288
|
+
...params,
|
|
289
|
+
...formattedMessages,
|
|
290
|
+
stream: true
|
|
291
|
+
});
|
|
292
|
+
const coerceContentToString = !_toolsInParams(payload) && !_documentsInParams(payload) && !_thinkingInParams(payload) && !_compactionInParams(payload);
|
|
293
|
+
const stream = await this.createStreamWithRetry(payload, {
|
|
294
|
+
headers: options.headers,
|
|
295
|
+
signal: options.signal
|
|
296
|
+
});
|
|
297
|
+
const shouldStreamUsage = options.streamUsage ?? this.streamUsage;
|
|
298
|
+
let messageDeltaOutputTokens = 0;
|
|
299
|
+
const queuedChunks = [];
|
|
300
|
+
const producerState = { done: false };
|
|
301
|
+
let queuedChunkIndex = 0;
|
|
302
|
+
let bufferedTextLength = 0;
|
|
303
|
+
let consumerClosed = false;
|
|
304
|
+
let notifyConsumer;
|
|
305
|
+
let notifyProducer;
|
|
306
|
+
const notifyConsumerForChunk = () => {
|
|
307
|
+
notifyConsumer?.();
|
|
308
|
+
notifyConsumer = void 0;
|
|
309
|
+
};
|
|
310
|
+
const notifyProducerForSpace = () => {
|
|
311
|
+
notifyProducer?.();
|
|
312
|
+
notifyProducer = void 0;
|
|
313
|
+
};
|
|
314
|
+
const hasQueuedChunks = () => queuedChunkIndex < queuedChunks.length;
|
|
315
|
+
const getQueuedChunkCount = () => queuedChunks.length - queuedChunkIndex;
|
|
316
|
+
const isQueueAtCapacity = () => getQueuedChunkCount() >= MAX_STREAM_QUEUE_CHUNKS || bufferedTextLength >= MAX_STREAM_QUEUE_TEXT_CHARS;
|
|
317
|
+
const waitForNextChunk = async () => {
|
|
318
|
+
if (hasQueuedChunks() || producerState.done || producerState.error != null) return;
|
|
319
|
+
await new Promise((resolve) => {
|
|
320
|
+
notifyConsumer = resolve;
|
|
321
|
+
});
|
|
322
|
+
};
|
|
323
|
+
const waitForQueueSpace = async () => {
|
|
324
|
+
while (isQueueAtCapacity() && !consumerClosed && !isSignalAborted(options.signal)) await new Promise((resolve) => {
|
|
325
|
+
const signal = options.signal;
|
|
326
|
+
const onAbort = () => {
|
|
327
|
+
signal?.removeEventListener("abort", onAbort);
|
|
328
|
+
resolve();
|
|
329
|
+
};
|
|
330
|
+
const onSpace = () => {
|
|
331
|
+
signal?.removeEventListener("abort", onAbort);
|
|
332
|
+
resolve();
|
|
333
|
+
};
|
|
334
|
+
notifyProducer = onSpace;
|
|
335
|
+
signal?.addEventListener("abort", onAbort, { once: true });
|
|
336
|
+
if (isSignalAborted(signal)) onAbort();
|
|
337
|
+
});
|
|
338
|
+
};
|
|
339
|
+
const dequeue = () => {
|
|
340
|
+
if (!hasQueuedChunks()) return;
|
|
341
|
+
const queuedChunk = queuedChunks[queuedChunkIndex];
|
|
342
|
+
queuedChunkIndex++;
|
|
343
|
+
if (queuedChunkIndex > 128 && queuedChunkIndex * 2 >= queuedChunks.length) {
|
|
344
|
+
queuedChunks.splice(0, queuedChunkIndex);
|
|
345
|
+
queuedChunkIndex = 0;
|
|
346
|
+
}
|
|
347
|
+
return queuedChunk;
|
|
348
|
+
};
|
|
349
|
+
const enqueue = async (queuedChunk) => {
|
|
350
|
+
await waitForQueueSpace();
|
|
351
|
+
if (consumerClosed || isSignalAborted(options.signal)) {
|
|
352
|
+
stream.controller.abort();
|
|
353
|
+
throw new Error("AbortError: User aborted the request.");
|
|
354
|
+
}
|
|
355
|
+
queuedChunks.push(queuedChunk);
|
|
356
|
+
if (queuedChunk.smooth) bufferedTextLength += queuedChunk.textLength;
|
|
357
|
+
notifyConsumerForChunk();
|
|
358
|
+
};
|
|
359
|
+
const enqueueChunk = async ({ token, chunk, smooth }) => {
|
|
360
|
+
await enqueue({
|
|
361
|
+
token,
|
|
362
|
+
smooth,
|
|
363
|
+
textLength: smooth ? token.length : 0,
|
|
364
|
+
chunk: this.createGenerationChunk({
|
|
365
|
+
token,
|
|
366
|
+
chunk,
|
|
367
|
+
shouldStreamUsage
|
|
368
|
+
})
|
|
369
|
+
});
|
|
370
|
+
};
|
|
371
|
+
const enqueueTextChunks = (token, tokenType, chunk) => {
|
|
372
|
+
if (token === "") return Promise.resolve();
|
|
373
|
+
if (this._lc_stream_delay <= 0) return enqueueChunk({
|
|
374
|
+
token,
|
|
375
|
+
chunk,
|
|
376
|
+
smooth: false
|
|
377
|
+
});
|
|
378
|
+
const tokenChunks = splitStreamToken(token);
|
|
379
|
+
if (tokenChunks.length <= 1) return enqueueChunk({
|
|
380
|
+
token,
|
|
381
|
+
chunk,
|
|
382
|
+
smooth: true
|
|
383
|
+
});
|
|
384
|
+
let emittedUsage = false;
|
|
385
|
+
return tokenChunks.reduce(async (previous, currentToken) => {
|
|
386
|
+
await previous;
|
|
387
|
+
const newChunk = cloneChunk(currentToken, tokenType, chunk);
|
|
388
|
+
await enqueueChunk({
|
|
389
|
+
token: currentToken,
|
|
390
|
+
chunk: emittedUsage && newChunk.usage_metadata != null ? new _langchain_core_messages.AIMessageChunk(Object.assign({}, newChunk, { usage_metadata: void 0 })) : newChunk,
|
|
391
|
+
smooth: true
|
|
392
|
+
});
|
|
393
|
+
if (newChunk.usage_metadata != null && !emittedUsage) emittedUsage = true;
|
|
394
|
+
}, Promise.resolve());
|
|
395
|
+
};
|
|
396
|
+
const producer = (async () => {
|
|
397
|
+
try {
|
|
398
|
+
for await (const data of stream) {
|
|
399
|
+
if (isSignalAborted(options.signal)) {
|
|
400
|
+
stream.controller.abort();
|
|
401
|
+
throw new Error("AbortError: User aborted the request.");
|
|
402
|
+
}
|
|
403
|
+
const result = require_message_outputs._makeMessageChunkFromAnthropicEvent(data, {
|
|
404
|
+
streamUsage: shouldStreamUsage,
|
|
405
|
+
coerceContentToString
|
|
406
|
+
});
|
|
407
|
+
if (!result) continue;
|
|
408
|
+
let { chunk } = result;
|
|
409
|
+
if (data.type === "message_delta") {
|
|
410
|
+
const incremental = withIncrementalMessageDeltaUsage(chunk, messageDeltaOutputTokens);
|
|
411
|
+
chunk = incremental.chunk;
|
|
412
|
+
messageDeltaOutputTokens = incremental.outputTokens;
|
|
413
|
+
}
|
|
414
|
+
const [token = "", tokenType] = extractToken(chunk);
|
|
415
|
+
if (!tokenType || tokenType === "input" || token === "" && (chunk.usage_metadata != null || chunk.id != null)) {
|
|
416
|
+
await enqueueChunk({
|
|
417
|
+
token,
|
|
418
|
+
chunk,
|
|
419
|
+
smooth: false
|
|
420
|
+
});
|
|
421
|
+
continue;
|
|
422
|
+
}
|
|
423
|
+
await enqueueTextChunks(token, tokenType, chunk);
|
|
424
|
+
}
|
|
425
|
+
} catch (error) {
|
|
426
|
+
producerState.error = error;
|
|
427
|
+
} finally {
|
|
428
|
+
producerState.done = true;
|
|
429
|
+
notifyConsumerForChunk();
|
|
430
|
+
}
|
|
431
|
+
})();
|
|
432
|
+
let hasEmittedText = false;
|
|
433
|
+
let lastVisibleTextAt;
|
|
434
|
+
let keepStreaming = true;
|
|
435
|
+
try {
|
|
436
|
+
while (keepStreaming) {
|
|
437
|
+
if (isSignalAborted(options.signal)) {
|
|
438
|
+
stream.controller.abort();
|
|
439
|
+
throw new Error("AbortError: User aborted the request.");
|
|
440
|
+
}
|
|
441
|
+
await waitForNextChunk();
|
|
442
|
+
const queuedChunk = dequeue();
|
|
443
|
+
if (!queuedChunk) {
|
|
444
|
+
if (producerState.error != null) throw producerState.error;
|
|
445
|
+
if (producerState.done) keepStreaming = false;
|
|
446
|
+
continue;
|
|
447
|
+
}
|
|
448
|
+
if (queuedChunk.smooth) {
|
|
449
|
+
bufferedTextLength = Math.max(0, bufferedTextLength - queuedChunk.textLength);
|
|
450
|
+
notifyProducerForSpace();
|
|
451
|
+
await waitForStreamDelay(getCadencedStreamDelay({
|
|
452
|
+
targetDelay: hasEmittedText ? this._lc_stream_delay : 0,
|
|
453
|
+
lastVisibleTextAt,
|
|
454
|
+
now: Date.now()
|
|
455
|
+
}), options.signal);
|
|
456
|
+
if (isSignalAborted(options.signal)) {
|
|
457
|
+
stream.controller.abort();
|
|
458
|
+
throw new Error("AbortError: User aborted the request.");
|
|
459
|
+
}
|
|
460
|
+
hasEmittedText = true;
|
|
461
|
+
lastVisibleTextAt = Date.now();
|
|
462
|
+
} else notifyProducerForSpace();
|
|
463
|
+
yield queuedChunk.chunk;
|
|
464
|
+
await runManager?.handleLLMNewToken(queuedChunk.token, void 0, void 0, void 0, void 0, { chunk: queuedChunk.chunk });
|
|
465
|
+
}
|
|
466
|
+
} finally {
|
|
467
|
+
consumerClosed = true;
|
|
468
|
+
if (!producerState.done) {
|
|
469
|
+
stream.controller.abort();
|
|
470
|
+
notifyProducerForSpace();
|
|
471
|
+
}
|
|
472
|
+
await producer;
|
|
473
|
+
this.resetTokenEvents();
|
|
474
|
+
}
|
|
475
|
+
}
|
|
476
|
+
};
|
|
477
|
+
//#endregion
|
|
608
478
|
exports.CustomAnthropic = CustomAnthropic;
|
|
609
|
-
|
|
610
|
-
//# sourceMappingURL=index.cjs.map
|
|
479
|
+
|
|
480
|
+
//# sourceMappingURL=index.cjs.map
|