illuma-agents 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/dist/cjs/common/enum.cjs +163 -0
- package/dist/cjs/common/enum.cjs.map +1 -0
- package/dist/cjs/events.cjs +143 -0
- package/dist/cjs/events.cjs.map +1 -0
- package/dist/cjs/graphs/Graph.cjs +581 -0
- package/dist/cjs/graphs/Graph.cjs.map +1 -0
- package/dist/cjs/instrumentation.cjs +21 -0
- package/dist/cjs/instrumentation.cjs.map +1 -0
- package/dist/cjs/llm/anthropic/index.cjs +292 -0
- package/dist/cjs/llm/anthropic/index.cjs.map +1 -0
- package/dist/cjs/llm/anthropic/types.cjs +50 -0
- package/dist/cjs/llm/anthropic/types.cjs.map +1 -0
- package/dist/cjs/llm/anthropic/utils/message_inputs.cjs +553 -0
- package/dist/cjs/llm/anthropic/utils/message_inputs.cjs.map +1 -0
- package/dist/cjs/llm/anthropic/utils/message_outputs.cjs +218 -0
- package/dist/cjs/llm/anthropic/utils/message_outputs.cjs.map +1 -0
- package/dist/cjs/llm/anthropic/utils/tools.cjs +29 -0
- package/dist/cjs/llm/anthropic/utils/tools.cjs.map +1 -0
- package/dist/cjs/llm/fake.cjs +97 -0
- package/dist/cjs/llm/fake.cjs.map +1 -0
- package/dist/cjs/llm/google/index.cjs +147 -0
- package/dist/cjs/llm/google/index.cjs.map +1 -0
- package/dist/cjs/llm/google/utils/common.cjs +490 -0
- package/dist/cjs/llm/google/utils/common.cjs.map +1 -0
- package/dist/cjs/llm/ollama/index.cjs +70 -0
- package/dist/cjs/llm/ollama/index.cjs.map +1 -0
- package/dist/cjs/llm/ollama/utils.cjs +158 -0
- package/dist/cjs/llm/ollama/utils.cjs.map +1 -0
- package/dist/cjs/llm/openai/index.cjs +613 -0
- package/dist/cjs/llm/openai/index.cjs.map +1 -0
- package/dist/cjs/llm/openai/utils/index.cjs +677 -0
- package/dist/cjs/llm/openai/utils/index.cjs.map +1 -0
- package/dist/cjs/llm/openrouter/index.cjs +29 -0
- package/dist/cjs/llm/openrouter/index.cjs.map +1 -0
- package/dist/cjs/llm/providers.cjs +47 -0
- package/dist/cjs/llm/providers.cjs.map +1 -0
- package/dist/cjs/llm/text.cjs +69 -0
- package/dist/cjs/llm/text.cjs.map +1 -0
- package/dist/cjs/llm/vertexai/index.cjs +330 -0
- package/dist/cjs/llm/vertexai/index.cjs.map +1 -0
- package/dist/cjs/main.cjs +127 -0
- package/dist/cjs/main.cjs.map +1 -0
- package/dist/cjs/messages/core.cjs +359 -0
- package/dist/cjs/messages/core.cjs.map +1 -0
- package/dist/cjs/messages/format.cjs +455 -0
- package/dist/cjs/messages/format.cjs.map +1 -0
- package/dist/cjs/messages/ids.cjs +23 -0
- package/dist/cjs/messages/ids.cjs.map +1 -0
- package/dist/cjs/messages/prune.cjs +398 -0
- package/dist/cjs/messages/prune.cjs.map +1 -0
- package/dist/cjs/run.cjs +264 -0
- package/dist/cjs/run.cjs.map +1 -0
- package/dist/cjs/splitStream.cjs +210 -0
- package/dist/cjs/splitStream.cjs.map +1 -0
- package/dist/cjs/stream.cjs +504 -0
- package/dist/cjs/stream.cjs.map +1 -0
- package/dist/cjs/tools/CodeExecutor.cjs +192 -0
- package/dist/cjs/tools/CodeExecutor.cjs.map +1 -0
- package/dist/cjs/tools/ToolNode.cjs +125 -0
- package/dist/cjs/tools/ToolNode.cjs.map +1 -0
- package/dist/cjs/tools/handlers.cjs +250 -0
- package/dist/cjs/tools/handlers.cjs.map +1 -0
- package/dist/cjs/tools/search/anthropic.cjs +40 -0
- package/dist/cjs/tools/search/anthropic.cjs.map +1 -0
- package/dist/cjs/tools/search/content.cjs +140 -0
- package/dist/cjs/tools/search/content.cjs.map +1 -0
- package/dist/cjs/tools/search/firecrawl.cjs +179 -0
- package/dist/cjs/tools/search/firecrawl.cjs.map +1 -0
- package/dist/cjs/tools/search/format.cjs +203 -0
- package/dist/cjs/tools/search/format.cjs.map +1 -0
- package/dist/cjs/tools/search/highlights.cjs +245 -0
- package/dist/cjs/tools/search/highlights.cjs.map +1 -0
- package/dist/cjs/tools/search/rerankers.cjs +174 -0
- package/dist/cjs/tools/search/rerankers.cjs.map +1 -0
- package/dist/cjs/tools/search/schema.cjs +70 -0
- package/dist/cjs/tools/search/schema.cjs.map +1 -0
- package/dist/cjs/tools/search/search.cjs +561 -0
- package/dist/cjs/tools/search/search.cjs.map +1 -0
- package/dist/cjs/tools/search/serper-scraper.cjs +132 -0
- package/dist/cjs/tools/search/serper-scraper.cjs.map +1 -0
- package/dist/cjs/tools/search/tool.cjs +331 -0
- package/dist/cjs/tools/search/tool.cjs.map +1 -0
- package/dist/cjs/tools/search/utils.cjs +66 -0
- package/dist/cjs/tools/search/utils.cjs.map +1 -0
- package/dist/cjs/utils/graph.cjs +16 -0
- package/dist/cjs/utils/graph.cjs.map +1 -0
- package/dist/cjs/utils/llm.cjs +28 -0
- package/dist/cjs/utils/llm.cjs.map +1 -0
- package/dist/cjs/utils/misc.cjs +56 -0
- package/dist/cjs/utils/misc.cjs.map +1 -0
- package/dist/cjs/utils/run.cjs +69 -0
- package/dist/cjs/utils/run.cjs.map +1 -0
- package/dist/cjs/utils/title.cjs +111 -0
- package/dist/cjs/utils/title.cjs.map +1 -0
- package/dist/cjs/utils/tokens.cjs +65 -0
- package/dist/cjs/utils/tokens.cjs.map +1 -0
- package/dist/esm/common/enum.mjs +163 -0
- package/dist/esm/common/enum.mjs.map +1 -0
- package/dist/esm/events.mjs +135 -0
- package/dist/esm/events.mjs.map +1 -0
- package/dist/esm/graphs/Graph.mjs +578 -0
- package/dist/esm/graphs/Graph.mjs.map +1 -0
- package/dist/esm/instrumentation.mjs +19 -0
- package/dist/esm/instrumentation.mjs.map +1 -0
- package/dist/esm/llm/anthropic/index.mjs +290 -0
- package/dist/esm/llm/anthropic/index.mjs.map +1 -0
- package/dist/esm/llm/anthropic/types.mjs +48 -0
- package/dist/esm/llm/anthropic/types.mjs.map +1 -0
- package/dist/esm/llm/anthropic/utils/message_inputs.mjs +550 -0
- package/dist/esm/llm/anthropic/utils/message_inputs.mjs.map +1 -0
- package/dist/esm/llm/anthropic/utils/message_outputs.mjs +216 -0
- package/dist/esm/llm/anthropic/utils/message_outputs.mjs.map +1 -0
- package/dist/esm/llm/anthropic/utils/tools.mjs +27 -0
- package/dist/esm/llm/anthropic/utils/tools.mjs.map +1 -0
- package/dist/esm/llm/fake.mjs +94 -0
- package/dist/esm/llm/fake.mjs.map +1 -0
- package/dist/esm/llm/google/index.mjs +145 -0
- package/dist/esm/llm/google/index.mjs.map +1 -0
- package/dist/esm/llm/google/utils/common.mjs +484 -0
- package/dist/esm/llm/google/utils/common.mjs.map +1 -0
- package/dist/esm/llm/ollama/index.mjs +68 -0
- package/dist/esm/llm/ollama/index.mjs.map +1 -0
- package/dist/esm/llm/ollama/utils.mjs +155 -0
- package/dist/esm/llm/ollama/utils.mjs.map +1 -0
- package/dist/esm/llm/openai/index.mjs +604 -0
- package/dist/esm/llm/openai/index.mjs.map +1 -0
- package/dist/esm/llm/openai/utils/index.mjs +671 -0
- package/dist/esm/llm/openai/utils/index.mjs.map +1 -0
- package/dist/esm/llm/openrouter/index.mjs +27 -0
- package/dist/esm/llm/openrouter/index.mjs.map +1 -0
- package/dist/esm/llm/providers.mjs +43 -0
- package/dist/esm/llm/providers.mjs.map +1 -0
- package/dist/esm/llm/text.mjs +67 -0
- package/dist/esm/llm/text.mjs.map +1 -0
- package/dist/esm/llm/vertexai/index.mjs +328 -0
- package/dist/esm/llm/vertexai/index.mjs.map +1 -0
- package/dist/esm/main.mjs +20 -0
- package/dist/esm/main.mjs.map +1 -0
- package/dist/esm/messages/core.mjs +351 -0
- package/dist/esm/messages/core.mjs.map +1 -0
- package/dist/esm/messages/format.mjs +447 -0
- package/dist/esm/messages/format.mjs.map +1 -0
- package/dist/esm/messages/ids.mjs +21 -0
- package/dist/esm/messages/ids.mjs.map +1 -0
- package/dist/esm/messages/prune.mjs +393 -0
- package/dist/esm/messages/prune.mjs.map +1 -0
- package/dist/esm/run.mjs +261 -0
- package/dist/esm/run.mjs.map +1 -0
- package/dist/esm/splitStream.mjs +207 -0
- package/dist/esm/splitStream.mjs.map +1 -0
- package/dist/esm/stream.mjs +500 -0
- package/dist/esm/stream.mjs.map +1 -0
- package/dist/esm/tools/CodeExecutor.mjs +188 -0
- package/dist/esm/tools/CodeExecutor.mjs.map +1 -0
- package/dist/esm/tools/ToolNode.mjs +122 -0
- package/dist/esm/tools/ToolNode.mjs.map +1 -0
- package/dist/esm/tools/handlers.mjs +245 -0
- package/dist/esm/tools/handlers.mjs.map +1 -0
- package/dist/esm/tools/search/anthropic.mjs +37 -0
- package/dist/esm/tools/search/anthropic.mjs.map +1 -0
- package/dist/esm/tools/search/content.mjs +119 -0
- package/dist/esm/tools/search/content.mjs.map +1 -0
- package/dist/esm/tools/search/firecrawl.mjs +176 -0
- package/dist/esm/tools/search/firecrawl.mjs.map +1 -0
- package/dist/esm/tools/search/format.mjs +201 -0
- package/dist/esm/tools/search/format.mjs.map +1 -0
- package/dist/esm/tools/search/highlights.mjs +243 -0
- package/dist/esm/tools/search/highlights.mjs.map +1 -0
- package/dist/esm/tools/search/rerankers.mjs +168 -0
- package/dist/esm/tools/search/rerankers.mjs.map +1 -0
- package/dist/esm/tools/search/schema.mjs +61 -0
- package/dist/esm/tools/search/schema.mjs.map +1 -0
- package/dist/esm/tools/search/search.mjs +558 -0
- package/dist/esm/tools/search/search.mjs.map +1 -0
- package/dist/esm/tools/search/serper-scraper.mjs +129 -0
- package/dist/esm/tools/search/serper-scraper.mjs.map +1 -0
- package/dist/esm/tools/search/tool.mjs +329 -0
- package/dist/esm/tools/search/tool.mjs.map +1 -0
- package/dist/esm/tools/search/utils.mjs +61 -0
- package/dist/esm/tools/search/utils.mjs.map +1 -0
- package/dist/esm/utils/graph.mjs +13 -0
- package/dist/esm/utils/graph.mjs.map +1 -0
- package/dist/esm/utils/llm.mjs +25 -0
- package/dist/esm/utils/llm.mjs.map +1 -0
- package/dist/esm/utils/misc.mjs +53 -0
- package/dist/esm/utils/misc.mjs.map +1 -0
- package/dist/esm/utils/run.mjs +66 -0
- package/dist/esm/utils/run.mjs.map +1 -0
- package/dist/esm/utils/title.mjs +108 -0
- package/dist/esm/utils/title.mjs.map +1 -0
- package/dist/esm/utils/tokens.mjs +62 -0
- package/dist/esm/utils/tokens.mjs.map +1 -0
- package/dist/types/common/enum.d.ts +128 -0
- package/dist/types/common/index.d.ts +1 -0
- package/dist/types/events.d.ts +29 -0
- package/dist/types/graphs/Graph.d.ts +122 -0
- package/dist/types/graphs/index.d.ts +1 -0
- package/dist/types/index.d.ts +13 -0
- package/dist/types/instrumentation.d.ts +1 -0
- package/dist/types/llm/anthropic/index.d.ts +39 -0
- package/dist/types/llm/anthropic/types.d.ts +37 -0
- package/dist/types/llm/anthropic/utils/message_inputs.d.ts +14 -0
- package/dist/types/llm/anthropic/utils/message_outputs.d.ts +14 -0
- package/dist/types/llm/anthropic/utils/output_parsers.d.ts +22 -0
- package/dist/types/llm/anthropic/utils/tools.d.ts +3 -0
- package/dist/types/llm/fake.d.ts +31 -0
- package/dist/types/llm/google/index.d.ts +14 -0
- package/dist/types/llm/google/types.d.ts +32 -0
- package/dist/types/llm/google/utils/common.d.ts +19 -0
- package/dist/types/llm/google/utils/tools.d.ts +10 -0
- package/dist/types/llm/google/utils/zod_to_genai_parameters.d.ts +14 -0
- package/dist/types/llm/ollama/index.d.ts +8 -0
- package/dist/types/llm/ollama/utils.d.ts +7 -0
- package/dist/types/llm/openai/index.d.ts +103 -0
- package/dist/types/llm/openai/types.d.ts +10 -0
- package/dist/types/llm/openai/utils/index.d.ts +20 -0
- package/dist/types/llm/openrouter/index.d.ts +12 -0
- package/dist/types/llm/providers.d.ts +5 -0
- package/dist/types/llm/text.d.ts +21 -0
- package/dist/types/llm/vertexai/index.d.ts +293 -0
- package/dist/types/messages/core.d.ts +14 -0
- package/dist/types/messages/format.d.ts +113 -0
- package/dist/types/messages/ids.d.ts +3 -0
- package/dist/types/messages/index.d.ts +4 -0
- package/dist/types/messages/prune.d.ts +51 -0
- package/dist/types/mockStream.d.ts +32 -0
- package/dist/types/prompts/collab.d.ts +1 -0
- package/dist/types/prompts/index.d.ts +2 -0
- package/dist/types/prompts/taskmanager.d.ts +41 -0
- package/dist/types/run.d.ts +30 -0
- package/dist/types/scripts/abort.d.ts +1 -0
- package/dist/types/scripts/ant_web_search.d.ts +1 -0
- package/dist/types/scripts/args.d.ts +7 -0
- package/dist/types/scripts/caching.d.ts +1 -0
- package/dist/types/scripts/cli.d.ts +1 -0
- package/dist/types/scripts/cli2.d.ts +1 -0
- package/dist/types/scripts/cli3.d.ts +1 -0
- package/dist/types/scripts/cli4.d.ts +1 -0
- package/dist/types/scripts/cli5.d.ts +1 -0
- package/dist/types/scripts/code_exec.d.ts +1 -0
- package/dist/types/scripts/code_exec_files.d.ts +1 -0
- package/dist/types/scripts/code_exec_simple.d.ts +1 -0
- package/dist/types/scripts/content.d.ts +1 -0
- package/dist/types/scripts/empty_input.d.ts +1 -0
- package/dist/types/scripts/image.d.ts +1 -0
- package/dist/types/scripts/memory.d.ts +1 -0
- package/dist/types/scripts/search.d.ts +1 -0
- package/dist/types/scripts/simple.d.ts +1 -0
- package/dist/types/scripts/stream.d.ts +1 -0
- package/dist/types/scripts/thinking.d.ts +1 -0
- package/dist/types/scripts/tools.d.ts +1 -0
- package/dist/types/specs/spec.utils.d.ts +1 -0
- package/dist/types/splitStream.d.ts +37 -0
- package/dist/types/stream.d.ts +14 -0
- package/dist/types/tools/CodeExecutor.d.ts +23 -0
- package/dist/types/tools/ToolNode.d.ts +22 -0
- package/dist/types/tools/example.d.ts +78 -0
- package/dist/types/tools/handlers.d.ts +19 -0
- package/dist/types/tools/search/anthropic.d.ts +16 -0
- package/dist/types/tools/search/content.d.ts +4 -0
- package/dist/types/tools/search/firecrawl.d.ts +54 -0
- package/dist/types/tools/search/format.d.ts +5 -0
- package/dist/types/tools/search/highlights.d.ts +13 -0
- package/dist/types/tools/search/index.d.ts +2 -0
- package/dist/types/tools/search/rerankers.d.ts +38 -0
- package/dist/types/tools/search/schema.d.ts +16 -0
- package/dist/types/tools/search/search.d.ts +8 -0
- package/dist/types/tools/search/serper-scraper.d.ts +59 -0
- package/dist/types/tools/search/test.d.ts +1 -0
- package/dist/types/tools/search/tool.d.ts +54 -0
- package/dist/types/tools/search/types.d.ts +591 -0
- package/dist/types/tools/search/utils.d.ts +10 -0
- package/dist/types/types/graph.d.ts +138 -0
- package/dist/types/types/index.d.ts +5 -0
- package/dist/types/types/llm.d.ts +102 -0
- package/dist/types/types/run.d.ts +74 -0
- package/dist/types/types/stream.d.ts +293 -0
- package/dist/types/types/tools.d.ts +61 -0
- package/dist/types/utils/graph.d.ts +2 -0
- package/dist/types/utils/index.d.ts +5 -0
- package/dist/types/utils/llm.d.ts +3 -0
- package/dist/types/utils/llmConfig.d.ts +3 -0
- package/dist/types/utils/logging.d.ts +1 -0
- package/dist/types/utils/misc.d.ts +7 -0
- package/dist/types/utils/run.d.ts +27 -0
- package/dist/types/utils/title.d.ts +4 -0
- package/dist/types/utils/tokens.d.ts +3 -0
- package/package.json +145 -0
- package/src/common/enum.ts +176 -0
- package/src/common/index.ts +2 -0
- package/src/events.ts +191 -0
- package/src/graphs/Graph.ts +846 -0
- package/src/graphs/index.ts +1 -0
- package/src/index.ts +24 -0
- package/src/instrumentation.ts +22 -0
- package/src/llm/anthropic/Jacob_Lee_Resume_2023.pdf +0 -0
- package/src/llm/anthropic/index.ts +413 -0
- package/src/llm/anthropic/llm.spec.ts +1442 -0
- package/src/llm/anthropic/types.ts +140 -0
- package/src/llm/anthropic/utils/message_inputs.ts +660 -0
- package/src/llm/anthropic/utils/message_outputs.ts +289 -0
- package/src/llm/anthropic/utils/output_parsers.ts +133 -0
- package/src/llm/anthropic/utils/tools.ts +29 -0
- package/src/llm/fake.ts +133 -0
- package/src/llm/google/index.ts +222 -0
- package/src/llm/google/types.ts +43 -0
- package/src/llm/google/utils/common.ts +660 -0
- package/src/llm/google/utils/tools.ts +160 -0
- package/src/llm/google/utils/zod_to_genai_parameters.ts +88 -0
- package/src/llm/ollama/index.ts +92 -0
- package/src/llm/ollama/utils.ts +193 -0
- package/src/llm/openai/index.ts +853 -0
- package/src/llm/openai/types.ts +24 -0
- package/src/llm/openai/utils/index.ts +918 -0
- package/src/llm/openai/utils/isReasoningModel.test.ts +90 -0
- package/src/llm/openrouter/index.ts +60 -0
- package/src/llm/providers.ts +57 -0
- package/src/llm/text.ts +94 -0
- package/src/llm/vertexai/index.ts +360 -0
- package/src/messages/core.ts +463 -0
- package/src/messages/format.ts +625 -0
- package/src/messages/formatAgentMessages.test.ts +917 -0
- package/src/messages/formatAgentMessages.tools.test.ts +400 -0
- package/src/messages/formatMessage.test.ts +693 -0
- package/src/messages/ids.ts +26 -0
- package/src/messages/index.ts +4 -0
- package/src/messages/prune.ts +567 -0
- package/src/messages/shiftIndexTokenCountMap.test.ts +81 -0
- package/src/mockStream.ts +99 -0
- package/src/prompts/collab.ts +6 -0
- package/src/prompts/index.ts +2 -0
- package/src/prompts/taskmanager.ts +61 -0
- package/src/proto/CollabGraph.ts +269 -0
- package/src/proto/TaskManager.ts +243 -0
- package/src/proto/collab.ts +200 -0
- package/src/proto/collab_design.ts +184 -0
- package/src/proto/collab_design_v2.ts +224 -0
- package/src/proto/collab_design_v3.ts +255 -0
- package/src/proto/collab_design_v4.ts +220 -0
- package/src/proto/collab_design_v5.ts +251 -0
- package/src/proto/collab_graph.ts +181 -0
- package/src/proto/collab_original.ts +123 -0
- package/src/proto/example.ts +93 -0
- package/src/proto/example_new.ts +68 -0
- package/src/proto/example_old.ts +201 -0
- package/src/proto/example_test.ts +152 -0
- package/src/proto/example_test_anthropic.ts +100 -0
- package/src/proto/log_stream.ts +202 -0
- package/src/proto/main_collab_community_event.ts +133 -0
- package/src/proto/main_collab_design_v2.ts +96 -0
- package/src/proto/main_collab_design_v4.ts +100 -0
- package/src/proto/main_collab_design_v5.ts +135 -0
- package/src/proto/main_collab_global_analysis.ts +122 -0
- package/src/proto/main_collab_hackathon_event.ts +153 -0
- package/src/proto/main_collab_space_mission.ts +153 -0
- package/src/proto/main_philosophy.ts +210 -0
- package/src/proto/original_script.ts +126 -0
- package/src/proto/standard.ts +100 -0
- package/src/proto/stream.ts +56 -0
- package/src/proto/tasks.ts +118 -0
- package/src/proto/tools/global_analysis_tools.ts +86 -0
- package/src/proto/tools/space_mission_tools.ts +60 -0
- package/src/proto/vertexai.ts +54 -0
- package/src/run.ts +381 -0
- package/src/scripts/abort.ts +138 -0
- package/src/scripts/ant_web_search.ts +158 -0
- package/src/scripts/args.ts +48 -0
- package/src/scripts/caching.ts +124 -0
- package/src/scripts/cli.ts +167 -0
- package/src/scripts/cli2.ts +125 -0
- package/src/scripts/cli3.ts +178 -0
- package/src/scripts/cli4.ts +184 -0
- package/src/scripts/cli5.ts +184 -0
- package/src/scripts/code_exec.ts +214 -0
- package/src/scripts/code_exec_files.ts +193 -0
- package/src/scripts/code_exec_simple.ts +129 -0
- package/src/scripts/content.ts +120 -0
- package/src/scripts/empty_input.ts +137 -0
- package/src/scripts/image.ts +178 -0
- package/src/scripts/memory.ts +97 -0
- package/src/scripts/search.ts +150 -0
- package/src/scripts/simple.ts +225 -0
- package/src/scripts/stream.ts +122 -0
- package/src/scripts/thinking.ts +150 -0
- package/src/scripts/tools.ts +155 -0
- package/src/specs/anthropic.simple.test.ts +317 -0
- package/src/specs/azure.simple.test.ts +316 -0
- package/src/specs/openai.simple.test.ts +316 -0
- package/src/specs/prune.test.ts +763 -0
- package/src/specs/reasoning.test.ts +165 -0
- package/src/specs/spec.utils.ts +3 -0
- package/src/specs/thinking-prune.test.ts +703 -0
- package/src/specs/token-distribution-edge-case.test.ts +316 -0
- package/src/specs/tool-error.test.ts +193 -0
- package/src/splitStream.test.ts +691 -0
- package/src/splitStream.ts +234 -0
- package/src/stream.test.ts +94 -0
- package/src/stream.ts +651 -0
- package/src/tools/CodeExecutor.ts +220 -0
- package/src/tools/ToolNode.ts +170 -0
- package/src/tools/example.ts +129 -0
- package/src/tools/handlers.ts +336 -0
- package/src/tools/search/anthropic.ts +51 -0
- package/src/tools/search/content.test.ts +173 -0
- package/src/tools/search/content.ts +147 -0
- package/src/tools/search/firecrawl.ts +210 -0
- package/src/tools/search/format.ts +250 -0
- package/src/tools/search/highlights.ts +320 -0
- package/src/tools/search/index.ts +2 -0
- package/src/tools/search/jina-reranker.test.ts +126 -0
- package/src/tools/search/output.md +2775 -0
- package/src/tools/search/rerankers.ts +242 -0
- package/src/tools/search/schema.ts +63 -0
- package/src/tools/search/search.ts +759 -0
- package/src/tools/search/serper-scraper.ts +155 -0
- package/src/tools/search/test.html +884 -0
- package/src/tools/search/test.md +643 -0
- package/src/tools/search/test.ts +159 -0
- package/src/tools/search/tool.ts +471 -0
- package/src/tools/search/types.ts +687 -0
- package/src/tools/search/utils.ts +79 -0
- package/src/types/graph.ts +185 -0
- package/src/types/index.ts +6 -0
- package/src/types/llm.ts +140 -0
- package/src/types/run.ts +89 -0
- package/src/types/stream.ts +400 -0
- package/src/types/tools.ts +80 -0
- package/src/utils/graph.ts +11 -0
- package/src/utils/index.ts +5 -0
- package/src/utils/llm.ts +27 -0
- package/src/utils/llmConfig.ts +183 -0
- package/src/utils/logging.ts +48 -0
- package/src/utils/misc.ts +57 -0
- package/src/utils/run.ts +101 -0
- package/src/utils/title.ts +165 -0
- package/src/utils/tokens.ts +70 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Graph.cjs","sources":["../../../src/graphs/Graph.ts"],"sourcesContent":["/* eslint-disable no-console */\r\n// src/graphs/Graph.ts\r\nimport { nanoid } from 'nanoid';\r\nimport { concat } from '@langchain/core/utils/stream';\r\nimport { ToolNode } from '@langchain/langgraph/prebuilt';\r\nimport { ChatVertexAI } from '@langchain/google-vertexai';\r\nimport { START, END, StateGraph } from '@langchain/langgraph';\r\nimport { Runnable, RunnableConfig } from '@langchain/core/runnables';\r\nimport { dispatchCustomEvent } from '@langchain/core/callbacks/dispatch';\r\nimport {\r\n AIMessageChunk,\r\n ToolMessage,\r\n SystemMessage,\r\n} from '@langchain/core/messages';\r\nimport type {\r\n BaseMessage,\r\n BaseMessageFields,\r\n UsageMetadata,\r\n} from '@langchain/core/messages';\r\nimport type * as t from '@/types';\r\nimport {\r\n Providers,\r\n GraphEvents,\r\n GraphNodeKeys,\r\n StepTypes,\r\n Callback,\r\n ContentTypes,\r\n} from '@/common';\r\nimport type { ToolCall } from '@langchain/core/messages/tool';\r\nimport { getChatModelClass, manualToolStreamProviders } from '@/llm/providers';\r\nimport { ToolNode as CustomToolNode, toolsCondition } from '@/tools/ToolNode';\r\nimport {\r\n createPruneMessages,\r\n modifyDeltaProperties,\r\n formatArtifactPayload,\r\n convertMessagesToContent,\r\n formatAnthropicArtifactContent,\r\n} from '@/messages';\r\nimport {\r\n resetIfNotEmpty,\r\n isOpenAILike,\r\n isGoogleLike,\r\n joinKeys,\r\n sleep,\r\n} from '@/utils';\r\nimport { ChatOpenAI, AzureChatOpenAI } from '@/llm/openai';\r\nimport { createFakeStreamingLLM } from '@/llm/fake';\r\nimport { HandlerRegistry } from '@/events';\r\n\r\nconst { AGENT, TOOLS } = GraphNodeKeys;\r\nexport type GraphNode = GraphNodeKeys | typeof START;\r\nexport type ClientCallback<T extends unknown[]> = (\r\n graph: StandardGraph,\r\n ...args: T\r\n) => void;\r\nexport type ClientCallbacks = {\r\n [Callback.TOOL_ERROR]?: ClientCallback<[Error, string]>;\r\n [Callback.TOOL_START]?: ClientCallback<unknown[]>;\r\n [Callback.TOOL_END]?: ClientCallback<unknown[]>;\r\n};\r\nexport type SystemCallbacks = {\r\n [K in keyof ClientCallbacks]: ClientCallbacks[K] extends ClientCallback<\r\n infer Args\r\n >\r\n ? (...args: Args) => void\r\n : never;\r\n};\r\n\r\nexport abstract class Graph<\r\n T extends t.BaseGraphState = t.BaseGraphState,\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n TNodeName extends string = string,\r\n> {\r\n abstract resetValues(): void;\r\n abstract createGraphState(): t.GraphStateChannels<T>;\r\n abstract initializeTools(): CustomToolNode<T> | ToolNode<T>;\r\n abstract initializeModel(): Runnable;\r\n abstract getRunMessages(): BaseMessage[] | undefined;\r\n abstract getContentParts(): t.MessageContentComplex[] | undefined;\r\n abstract generateStepId(stepKey: string): [string, number];\r\n abstract getKeyList(\r\n metadata: Record<string, unknown> | undefined\r\n ): (string | number | undefined)[];\r\n abstract getStepKey(metadata: Record<string, unknown> | undefined): string;\r\n abstract checkKeyList(keyList: (string | number | undefined)[]): boolean;\r\n abstract getStepIdByKey(stepKey: string, index?: number): string;\r\n abstract getRunStep(stepId: string): t.RunStep | undefined;\r\n abstract dispatchRunStep(stepKey: string, stepDetails: t.StepDetails): string;\r\n abstract dispatchRunStepDelta(id: string, delta: t.ToolCallDelta): void;\r\n abstract dispatchMessageDelta(id: string, delta: t.MessageDelta): void;\r\n abstract dispatchReasoningDelta(\r\n stepId: string,\r\n delta: t.ReasoningDelta\r\n ): void;\r\n abstract handleToolCallCompleted(\r\n data: t.ToolEndData,\r\n metadata?: Record<string, unknown>,\r\n omitOutput?: boolean\r\n ): void;\r\n\r\n abstract createCallModel(): (\r\n state: T,\r\n config?: RunnableConfig\r\n ) => Promise<Partial<T>>;\r\n abstract createWorkflow(): t.CompiledWorkflow<T>;\r\n lastToken?: string;\r\n tokenTypeSwitch?: 'reasoning' | 'content';\r\n reasoningKey: 'reasoning_content' | 'reasoning' = 'reasoning_content';\r\n currentTokenType: ContentTypes.TEXT | ContentTypes.THINK | 'think_and_text' =\r\n ContentTypes.TEXT;\r\n messageStepHasToolCalls: Map<string, boolean> = new Map();\r\n messageIdsByStepKey: Map<string, string> = new Map();\r\n prelimMessageIdsByStepKey: Map<string, string> = new Map();\r\n config: RunnableConfig | undefined;\r\n contentData: t.RunStep[] = [];\r\n stepKeyIds: Map<string, string[]> = new Map<string, string[]>();\r\n contentIndexMap: Map<string, number> = new Map();\r\n toolCallStepIds: Map<string, string> = new Map();\r\n currentUsage: Partial<UsageMetadata> | undefined;\r\n indexTokenCountMap: Record<string, number | undefined> = {};\r\n maxContextTokens: number | undefined;\r\n pruneMessages?: ReturnType<typeof createPruneMessages>;\r\n /** The amount of time that should pass before another consecutive API call */\r\n streamBuffer: number | undefined;\r\n tokenCounter?: t.TokenCounter;\r\n signal?: AbortSignal;\r\n /** Set of invoked tool call IDs from non-message run steps completed mid-run, if any */\r\n invokedToolIds?: Set<string>;\r\n handlerRegistry: HandlerRegistry | undefined;\r\n}\r\n\r\nexport class StandardGraph extends Graph<t.BaseGraphState, GraphNode> {\r\n private graphState: t.GraphStateChannels<t.BaseGraphState>;\r\n clientOptions: t.ClientOptions;\r\n boundModel?: Runnable;\r\n /** The last recorded timestamp that a stream API call was invoked */\r\n lastStreamCall: number | undefined;\r\n systemMessage: SystemMessage | undefined;\r\n messages: BaseMessage[] = [];\r\n runId: string | undefined;\r\n tools?: t.GraphTools;\r\n toolMap?: t.ToolMap;\r\n startIndex: number = 0;\r\n provider: Providers;\r\n toolEnd: boolean;\r\n signal?: AbortSignal;\r\n\r\n constructor({\r\n runId,\r\n tools,\r\n signal,\r\n toolMap,\r\n provider,\r\n streamBuffer,\r\n instructions,\r\n reasoningKey,\r\n clientOptions,\r\n toolEnd = false,\r\n additional_instructions = '',\r\n }: t.StandardGraphInput) {\r\n super();\r\n this.runId = runId;\r\n this.tools = tools;\r\n this.signal = signal;\r\n this.toolEnd = toolEnd;\r\n this.toolMap = toolMap;\r\n this.provider = provider;\r\n this.streamBuffer = streamBuffer;\r\n this.clientOptions = clientOptions;\r\n this.graphState = this.createGraphState();\r\n this.boundModel = this.initializeModel();\r\n if (reasoningKey) {\r\n this.reasoningKey = reasoningKey;\r\n }\r\n\r\n let finalInstructions: string | BaseMessageFields | undefined =\r\n instructions;\r\n if (additional_instructions) {\r\n finalInstructions =\r\n finalInstructions != null && finalInstructions\r\n ? `${finalInstructions}\\n\\n${additional_instructions}`\r\n : additional_instructions;\r\n }\r\n\r\n if (\r\n finalInstructions != null &&\r\n finalInstructions &&\r\n provider === Providers.ANTHROPIC &&\r\n ((\r\n (clientOptions as t.AnthropicClientOptions).clientOptions\r\n ?.defaultHeaders as Record<string, string> | undefined\r\n )?.['anthropic-beta']?.includes('prompt-caching') ??\r\n false)\r\n ) {\r\n finalInstructions = {\r\n content: [\r\n {\r\n type: 'text',\r\n text: instructions,\r\n cache_control: { type: 'ephemeral' },\r\n },\r\n ],\r\n };\r\n }\r\n\r\n if (finalInstructions != null && finalInstructions !== '') {\r\n this.systemMessage = new SystemMessage(finalInstructions);\r\n }\r\n }\r\n\r\n /* Init */\r\n\r\n resetValues(keepContent?: boolean): void {\r\n this.messages = [];\r\n this.config = resetIfNotEmpty(this.config, undefined);\r\n if (keepContent !== true) {\r\n this.contentData = resetIfNotEmpty(this.contentData, []);\r\n this.contentIndexMap = resetIfNotEmpty(this.contentIndexMap, new Map());\r\n }\r\n this.stepKeyIds = resetIfNotEmpty(this.stepKeyIds, new Map());\r\n this.toolCallStepIds = resetIfNotEmpty(this.toolCallStepIds, new Map());\r\n this.messageIdsByStepKey = resetIfNotEmpty(\r\n this.messageIdsByStepKey,\r\n new Map()\r\n );\r\n this.messageStepHasToolCalls = resetIfNotEmpty(\r\n this.prelimMessageIdsByStepKey,\r\n new Map()\r\n );\r\n this.prelimMessageIdsByStepKey = resetIfNotEmpty(\r\n this.prelimMessageIdsByStepKey,\r\n new Map()\r\n );\r\n this.currentTokenType = resetIfNotEmpty(\r\n this.currentTokenType,\r\n ContentTypes.TEXT\r\n );\r\n this.lastToken = resetIfNotEmpty(this.lastToken, undefined);\r\n this.tokenTypeSwitch = resetIfNotEmpty(this.tokenTypeSwitch, undefined);\r\n this.indexTokenCountMap = resetIfNotEmpty(this.indexTokenCountMap, {});\r\n this.currentUsage = resetIfNotEmpty(this.currentUsage, undefined);\r\n this.tokenCounter = resetIfNotEmpty(this.tokenCounter, undefined);\r\n this.maxContextTokens = resetIfNotEmpty(this.maxContextTokens, undefined);\r\n this.invokedToolIds = resetIfNotEmpty(this.invokedToolIds, undefined);\r\n }\r\n\r\n /* Run Step Processing */\r\n\r\n getRunStep(stepId: string): t.RunStep | undefined {\r\n const index = this.contentIndexMap.get(stepId);\r\n if (index !== undefined) {\r\n return this.contentData[index];\r\n }\r\n return undefined;\r\n }\r\n\r\n getStepKey(metadata: Record<string, unknown> | undefined): string {\r\n if (!metadata) return '';\r\n\r\n const keyList = this.getKeyList(metadata);\r\n if (this.checkKeyList(keyList)) {\r\n throw new Error('Missing metadata');\r\n }\r\n\r\n return joinKeys(keyList);\r\n }\r\n\r\n getStepIdByKey(stepKey: string, index?: number): string {\r\n const stepIds = this.stepKeyIds.get(stepKey);\r\n if (!stepIds) {\r\n throw new Error(`No step IDs found for stepKey ${stepKey}`);\r\n }\r\n\r\n if (index === undefined) {\r\n return stepIds[stepIds.length - 1];\r\n }\r\n\r\n return stepIds[index];\r\n }\r\n\r\n generateStepId(stepKey: string): [string, number] {\r\n const stepIds = this.stepKeyIds.get(stepKey);\r\n let newStepId: string | undefined;\r\n let stepIndex = 0;\r\n if (stepIds) {\r\n stepIndex = stepIds.length;\r\n newStepId = `step_${nanoid()}`;\r\n stepIds.push(newStepId);\r\n this.stepKeyIds.set(stepKey, stepIds);\r\n } else {\r\n newStepId = `step_${nanoid()}`;\r\n this.stepKeyIds.set(stepKey, [newStepId]);\r\n }\r\n\r\n return [newStepId, stepIndex];\r\n }\r\n\r\n getKeyList(\r\n metadata: Record<string, unknown> | undefined\r\n ): (string | number | undefined)[] {\r\n if (!metadata) return [];\r\n\r\n const keyList = [\r\n metadata.run_id as string,\r\n metadata.thread_id as string,\r\n metadata.langgraph_node as string,\r\n metadata.langgraph_step as number,\r\n metadata.checkpoint_ns as string,\r\n ];\r\n if (\r\n this.currentTokenType === ContentTypes.THINK ||\r\n this.currentTokenType === 'think_and_text'\r\n ) {\r\n keyList.push('reasoning');\r\n } else if (this.tokenTypeSwitch === 'content') {\r\n keyList.push('post-reasoning');\r\n }\r\n\r\n if (this.invokedToolIds != null && this.invokedToolIds.size > 0) {\r\n keyList.push(this.invokedToolIds.size + '');\r\n }\r\n\r\n return keyList;\r\n }\r\n\r\n checkKeyList(keyList: (string | number | undefined)[]): boolean {\r\n return keyList.some((key) => key === undefined);\r\n }\r\n\r\n /* Misc.*/\r\n\r\n getRunMessages(): BaseMessage[] | undefined {\r\n return this.messages.slice(this.startIndex);\r\n }\r\n\r\n getContentParts(): t.MessageContentComplex[] | undefined {\r\n return convertMessagesToContent(this.messages.slice(this.startIndex));\r\n }\r\n\r\n /* Graph */\r\n\r\n createGraphState(): t.GraphStateChannels<t.BaseGraphState> {\r\n return {\r\n messages: {\r\n value: (x: BaseMessage[], y: BaseMessage[]): BaseMessage[] => {\r\n if (!x.length) {\r\n if (this.systemMessage) {\r\n x.push(this.systemMessage);\r\n }\r\n\r\n this.startIndex = x.length + y.length;\r\n }\r\n const current = x.concat(y);\r\n this.messages = current;\r\n return current;\r\n },\r\n default: () => [],\r\n },\r\n };\r\n }\r\n\r\n initializeTools():\r\n | CustomToolNode<t.BaseGraphState>\r\n | ToolNode<t.BaseGraphState> {\r\n // return new ToolNode<t.BaseGraphState>(this.tools);\r\n return new CustomToolNode<t.BaseGraphState>({\r\n tools: (this.tools as t.GenericTool[] | undefined) || [],\r\n toolMap: this.toolMap,\r\n toolCallStepIds: this.toolCallStepIds,\r\n errorHandler: (data, metadata) =>\r\n StandardGraph.handleToolCallErrorStatic(this, data, metadata),\r\n });\r\n }\r\n\r\n initializeModel(): Runnable {\r\n const ChatModelClass = getChatModelClass(this.provider);\r\n const model = new ChatModelClass(this.clientOptions);\r\n\r\n if (\r\n isOpenAILike(this.provider) &&\r\n (model instanceof ChatOpenAI || model instanceof AzureChatOpenAI)\r\n ) {\r\n model.temperature = (this.clientOptions as t.OpenAIClientOptions)\r\n .temperature as number;\r\n model.topP = (this.clientOptions as t.OpenAIClientOptions).topP as number;\r\n model.frequencyPenalty = (this.clientOptions as t.OpenAIClientOptions)\r\n .frequencyPenalty as number;\r\n model.presencePenalty = (this.clientOptions as t.OpenAIClientOptions)\r\n .presencePenalty as number;\r\n model.n = (this.clientOptions as t.OpenAIClientOptions).n as number;\r\n } else if (\r\n this.provider === Providers.VERTEXAI &&\r\n model instanceof ChatVertexAI\r\n ) {\r\n model.temperature = (this.clientOptions as t.VertexAIClientOptions)\r\n .temperature as number;\r\n model.topP = (this.clientOptions as t.VertexAIClientOptions)\r\n .topP as number;\r\n model.topK = (this.clientOptions as t.VertexAIClientOptions)\r\n .topK as number;\r\n model.topLogprobs = (this.clientOptions as t.VertexAIClientOptions)\r\n .topLogprobs as number;\r\n model.frequencyPenalty = (this.clientOptions as t.VertexAIClientOptions)\r\n .frequencyPenalty as number;\r\n model.presencePenalty = (this.clientOptions as t.VertexAIClientOptions)\r\n .presencePenalty as number;\r\n model.maxOutputTokens = (this.clientOptions as t.VertexAIClientOptions)\r\n .maxOutputTokens as number;\r\n }\r\n\r\n if (!this.tools || this.tools.length === 0) {\r\n return model as unknown as Runnable;\r\n }\r\n\r\n return (model as t.ModelWithTools).bindTools(this.tools);\r\n }\r\n overrideTestModel(\r\n responses: string[],\r\n sleep?: number,\r\n toolCalls?: ToolCall[]\r\n ): void {\r\n this.boundModel = createFakeStreamingLLM({\r\n responses,\r\n sleep,\r\n toolCalls,\r\n });\r\n }\r\n\r\n getNewModel({\r\n provider,\r\n clientOptions,\r\n omitOptions,\r\n }: {\r\n provider: Providers;\r\n clientOptions?: t.ClientOptions;\r\n omitOptions?: Set<string>;\r\n }): t.ChatModelInstance {\r\n const ChatModelClass = getChatModelClass(provider);\r\n const options =\r\n omitOptions && clientOptions == null\r\n ? Object.assign(\r\n Object.fromEntries(\r\n Object.entries(this.clientOptions).filter(\r\n ([key]) => !omitOptions.has(key)\r\n )\r\n ),\r\n clientOptions\r\n )\r\n : (clientOptions ?? this.clientOptions);\r\n return new ChatModelClass(options);\r\n }\r\n\r\n storeUsageMetadata(finalMessage?: BaseMessage): void {\r\n if (\r\n finalMessage &&\r\n 'usage_metadata' in finalMessage &&\r\n finalMessage.usage_metadata != null\r\n ) {\r\n this.currentUsage = finalMessage.usage_metadata as Partial<UsageMetadata>;\r\n }\r\n }\r\n\r\n cleanupSignalListener(): void {\r\n if (!this.signal) {\r\n return;\r\n }\r\n if (!this.boundModel) {\r\n return;\r\n }\r\n const client = (this.boundModel as ChatOpenAI | undefined)?.exposedClient;\r\n if (!client?.abortHandler) {\r\n return;\r\n }\r\n this.signal.removeEventListener('abort', client.abortHandler);\r\n client.abortHandler = undefined;\r\n }\r\n\r\n createCallModel() {\r\n return async (\r\n state: t.BaseGraphState,\r\n config?: RunnableConfig\r\n ): Promise<Partial<t.BaseGraphState>> => {\r\n const { provider = '' } =\r\n (config?.configurable as t.GraphConfig | undefined) ?? {};\r\n if (this.boundModel == null) {\r\n throw new Error('No Graph model found');\r\n }\r\n if (!config || !provider) {\r\n throw new Error(`No ${config ? 'provider' : 'config'} provided`);\r\n }\r\n if (!config.signal) {\r\n config.signal = this.signal;\r\n }\r\n this.config = config;\r\n const { messages } = state;\r\n\r\n let messagesToUse = messages;\r\n if (\r\n !this.pruneMessages &&\r\n this.tokenCounter &&\r\n this.maxContextTokens != null &&\r\n this.indexTokenCountMap[0] != null\r\n ) {\r\n const isAnthropicWithThinking =\r\n (this.provider === Providers.ANTHROPIC &&\r\n (this.clientOptions as t.AnthropicClientOptions).thinking !=\r\n null) ||\r\n (this.provider === Providers.BEDROCK &&\r\n (this.clientOptions as t.BedrockAnthropicInput)\r\n .additionalModelRequestFields?.['thinking'] != null) ||\r\n (this.provider === Providers.OPENAI &&\r\n (\r\n (this.clientOptions as t.OpenAIClientOptions).modelKwargs\r\n ?.thinking as t.AnthropicClientOptions['thinking']\r\n )?.type === 'enabled');\r\n\r\n this.pruneMessages = createPruneMessages({\r\n provider: this.provider,\r\n indexTokenCountMap: this.indexTokenCountMap,\r\n maxTokens: this.maxContextTokens,\r\n tokenCounter: this.tokenCounter,\r\n startIndex: this.startIndex,\r\n thinkingEnabled: isAnthropicWithThinking,\r\n });\r\n }\r\n if (this.pruneMessages) {\r\n const { context, indexTokenCountMap } = this.pruneMessages({\r\n messages,\r\n usageMetadata: this.currentUsage,\r\n // startOnMessageType: 'human',\r\n });\r\n this.indexTokenCountMap = indexTokenCountMap;\r\n messagesToUse = context;\r\n }\r\n\r\n const finalMessages = messagesToUse;\r\n const lastMessageX =\r\n finalMessages.length >= 2\r\n ? finalMessages[finalMessages.length - 2]\r\n : null;\r\n const lastMessageY =\r\n finalMessages.length >= 1\r\n ? finalMessages[finalMessages.length - 1]\r\n : null;\r\n\r\n if (\r\n provider === Providers.BEDROCK &&\r\n lastMessageX instanceof AIMessageChunk &&\r\n lastMessageY instanceof ToolMessage &&\r\n typeof lastMessageX.content === 'string'\r\n ) {\r\n finalMessages[finalMessages.length - 2].content = '';\r\n }\r\n\r\n const isLatestToolMessage = lastMessageY instanceof ToolMessage;\r\n\r\n if (isLatestToolMessage && provider === Providers.ANTHROPIC) {\r\n formatAnthropicArtifactContent(finalMessages);\r\n } else if (\r\n isLatestToolMessage &&\r\n (isOpenAILike(provider) || isGoogleLike(provider))\r\n ) {\r\n formatArtifactPayload(finalMessages);\r\n }\r\n\r\n if (this.lastStreamCall != null && this.streamBuffer != null) {\r\n const timeSinceLastCall = Date.now() - this.lastStreamCall;\r\n if (timeSinceLastCall < this.streamBuffer) {\r\n const timeToWait =\r\n Math.ceil((this.streamBuffer - timeSinceLastCall) / 1000) * 1000;\r\n await sleep(timeToWait);\r\n }\r\n }\r\n\r\n this.lastStreamCall = Date.now();\r\n\r\n let result: Partial<t.BaseGraphState>;\r\n if (\r\n (this.tools?.length ?? 0) > 0 &&\r\n manualToolStreamProviders.has(provider)\r\n ) {\r\n const stream = await this.boundModel.stream(finalMessages, config);\r\n let finalChunk: AIMessageChunk | undefined;\r\n for await (const chunk of stream) {\r\n dispatchCustomEvent(GraphEvents.CHAT_MODEL_STREAM, { chunk }, config);\r\n if (!finalChunk) {\r\n finalChunk = chunk;\r\n } else {\r\n finalChunk = concat(finalChunk, chunk);\r\n }\r\n }\r\n\r\n finalChunk = modifyDeltaProperties(this.provider, finalChunk);\r\n result = { messages: [finalChunk as AIMessageChunk] };\r\n } else {\r\n const finalMessage = (await this.boundModel.invoke(\r\n finalMessages,\r\n config\r\n )) as AIMessageChunk;\r\n if ((finalMessage.tool_calls?.length ?? 0) > 0) {\r\n finalMessage.tool_calls = finalMessage.tool_calls?.filter(\r\n (tool_call) => {\r\n if (!tool_call.name) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n );\r\n }\r\n result = { messages: [finalMessage] };\r\n }\r\n\r\n this.storeUsageMetadata(result.messages?.[0]);\r\n this.cleanupSignalListener();\r\n return result;\r\n };\r\n }\r\n\r\n createWorkflow(): t.CompiledWorkflow<t.BaseGraphState> {\r\n const routeMessage = (\r\n state: t.BaseGraphState,\r\n config?: RunnableConfig\r\n ): string => {\r\n this.config = config;\r\n return toolsCondition(state, this.invokedToolIds);\r\n };\r\n\r\n const workflow = new StateGraph<t.BaseGraphState>({\r\n channels: this.graphState,\r\n })\r\n .addNode(AGENT, this.createCallModel())\r\n .addNode(TOOLS, this.initializeTools())\r\n .addEdge(START, AGENT)\r\n .addConditionalEdges(AGENT, routeMessage)\r\n .addEdge(TOOLS, this.toolEnd ? END : AGENT);\r\n\r\n return workflow.compile();\r\n }\r\n\r\n /* Dispatchers */\r\n\r\n /**\r\n * Dispatches a run step to the client, returns the step ID\r\n */\r\n dispatchRunStep(stepKey: string, stepDetails: t.StepDetails): string {\r\n if (!this.config) {\r\n throw new Error('No config provided');\r\n }\r\n\r\n const [stepId, stepIndex] = this.generateStepId(stepKey);\r\n if (stepDetails.type === StepTypes.TOOL_CALLS && stepDetails.tool_calls) {\r\n for (const tool_call of stepDetails.tool_calls) {\r\n const toolCallId = tool_call.id ?? '';\r\n if (!toolCallId || this.toolCallStepIds.has(toolCallId)) {\r\n continue;\r\n }\r\n this.toolCallStepIds.set(toolCallId, stepId);\r\n }\r\n }\r\n\r\n const runStep: t.RunStep = {\r\n stepIndex,\r\n id: stepId,\r\n type: stepDetails.type,\r\n index: this.contentData.length,\r\n stepDetails,\r\n usage: null,\r\n };\r\n\r\n const runId = this.runId ?? '';\r\n if (runId) {\r\n runStep.runId = runId;\r\n }\r\n\r\n this.contentData.push(runStep);\r\n this.contentIndexMap.set(stepId, runStep.index);\r\n dispatchCustomEvent(GraphEvents.ON_RUN_STEP, runStep, this.config);\r\n return stepId;\r\n }\r\n\r\n handleToolCallCompleted(\r\n data: t.ToolEndData,\r\n metadata?: Record<string, unknown>,\r\n omitOutput?: boolean\r\n ): void {\r\n if (!this.config) {\r\n throw new Error('No config provided');\r\n }\r\n\r\n if (!data.output) {\r\n return;\r\n }\r\n\r\n const { input, output } = data;\r\n const { tool_call_id } = output;\r\n const stepId = this.toolCallStepIds.get(tool_call_id) ?? '';\r\n if (!stepId) {\r\n throw new Error(`No stepId found for tool_call_id ${tool_call_id}`);\r\n }\r\n\r\n const runStep = this.getRunStep(stepId);\r\n if (!runStep) {\r\n throw new Error(`No run step found for stepId ${stepId}`);\r\n }\r\n\r\n const dispatchedOutput =\r\n typeof output.content === 'string'\r\n ? output.content\r\n : JSON.stringify(output.content);\r\n\r\n const args = typeof input === 'string' ? input : input.input;\r\n const tool_call = {\r\n args: typeof args === 'string' ? args : JSON.stringify(args),\r\n name: output.name ?? '',\r\n id: output.tool_call_id,\r\n output: omitOutput === true ? '' : dispatchedOutput,\r\n progress: 1,\r\n };\r\n\r\n this.handlerRegistry?.getHandler(GraphEvents.ON_RUN_STEP_COMPLETED)?.handle(\r\n GraphEvents.ON_RUN_STEP_COMPLETED,\r\n {\r\n result: {\r\n id: stepId,\r\n index: runStep.index,\r\n type: 'tool_call',\r\n tool_call,\r\n } as t.ToolCompleteEvent,\r\n },\r\n metadata,\r\n this\r\n );\r\n }\r\n /**\r\n * Static version of handleToolCallError to avoid creating strong references\r\n * that prevent garbage collection\r\n */\r\n static handleToolCallErrorStatic(\r\n graph: StandardGraph,\r\n data: t.ToolErrorData,\r\n metadata?: Record<string, unknown>\r\n ): void {\r\n if (!graph.config) {\r\n throw new Error('No config provided');\r\n }\r\n\r\n if (!data.id) {\r\n console.warn('No Tool ID provided for Tool Error');\r\n return;\r\n }\r\n\r\n const stepId = graph.toolCallStepIds.get(data.id) ?? '';\r\n if (!stepId) {\r\n throw new Error(`No stepId found for tool_call_id ${data.id}`);\r\n }\r\n\r\n const { name, input: args, error } = data;\r\n\r\n const runStep = graph.getRunStep(stepId);\r\n if (!runStep) {\r\n throw new Error(`No run step found for stepId ${stepId}`);\r\n }\r\n\r\n const tool_call: t.ProcessedToolCall = {\r\n id: data.id,\r\n name: name || '',\r\n args: typeof args === 'string' ? args : JSON.stringify(args),\r\n output: `Error processing tool${error?.message != null ? `: ${error.message}` : ''}`,\r\n progress: 1,\r\n };\r\n\r\n graph.handlerRegistry\r\n ?.getHandler(GraphEvents.ON_RUN_STEP_COMPLETED)\r\n ?.handle(\r\n GraphEvents.ON_RUN_STEP_COMPLETED,\r\n {\r\n result: {\r\n id: stepId,\r\n index: runStep.index,\r\n type: 'tool_call',\r\n tool_call,\r\n } as t.ToolCompleteEvent,\r\n },\r\n metadata,\r\n graph\r\n );\r\n }\r\n\r\n /**\r\n * Instance method that delegates to the static method\r\n * Kept for backward compatibility\r\n */\r\n handleToolCallError(\r\n data: t.ToolErrorData,\r\n metadata?: Record<string, unknown>\r\n ): void {\r\n StandardGraph.handleToolCallErrorStatic(this, data, metadata);\r\n }\r\n\r\n dispatchRunStepDelta(id: string, delta: t.ToolCallDelta): void {\r\n if (!this.config) {\r\n throw new Error('No config provided');\r\n } else if (!id) {\r\n throw new Error('No step ID found');\r\n }\r\n const runStepDelta: t.RunStepDeltaEvent = {\r\n id,\r\n delta,\r\n };\r\n dispatchCustomEvent(\r\n GraphEvents.ON_RUN_STEP_DELTA,\r\n runStepDelta,\r\n this.config\r\n );\r\n }\r\n\r\n dispatchMessageDelta(id: string, delta: t.MessageDelta): void {\r\n if (!this.config) {\r\n throw new Error('No config provided');\r\n }\r\n const messageDelta: t.MessageDeltaEvent = {\r\n id,\r\n delta,\r\n };\r\n dispatchCustomEvent(\r\n GraphEvents.ON_MESSAGE_DELTA,\r\n messageDelta,\r\n this.config\r\n );\r\n }\r\n\r\n dispatchReasoningDelta = (stepId: string, delta: t.ReasoningDelta): void => {\r\n if (!this.config) {\r\n throw new Error('No config provided');\r\n }\r\n const reasoningDelta: t.ReasoningDeltaEvent = {\r\n id: stepId,\r\n delta,\r\n };\r\n dispatchCustomEvent(\r\n GraphEvents.ON_REASONING_DELTA,\r\n reasoningDelta,\r\n this.config\r\n );\r\n };\r\n}\r\n"],"names":["GraphNodeKeys","ContentTypes","Providers","SystemMessage","resetIfNotEmpty","joinKeys","nanoid","convertMessagesToContent","CustomToolNode","getChatModelClass","isOpenAILike","ChatOpenAI","AzureChatOpenAI","ChatVertexAI","createFakeStreamingLLM","messages","createPruneMessages","AIMessageChunk","ToolMessage","formatAnthropicArtifactContent","isGoogleLike","formatArtifactPayload","sleep","manualToolStreamProviders","stream","dispatchCustomEvent","GraphEvents","concat","modifyDeltaProperties","toolsCondition","StateGraph","START","END","StepTypes"],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var sdkNode = require('@opentelemetry/sdk-node');
|
|
4
|
+
var otel = require('@langfuse/otel');
|
|
5
|
+
var misc = require('./utils/misc.cjs');
|
|
6
|
+
|
|
7
|
+
if (misc.isPresent(process.env.LANGFUSE_SECRET_KEY) &&
|
|
8
|
+
misc.isPresent(process.env.LANGFUSE_PUBLIC_KEY) &&
|
|
9
|
+
misc.isPresent(process.env.LANGFUSE_BASE_URL)) {
|
|
10
|
+
const langfuseSpanProcessor = new otel.LangfuseSpanProcessor({
|
|
11
|
+
publicKey: process.env.LANGFUSE_PUBLIC_KEY,
|
|
12
|
+
secretKey: process.env.LANGFUSE_SECRET_KEY,
|
|
13
|
+
baseUrl: process.env.LANGFUSE_BASE_URL,
|
|
14
|
+
environment: process.env.NODE_ENV ?? 'development',
|
|
15
|
+
});
|
|
16
|
+
const sdk = new sdkNode.NodeSDK({
|
|
17
|
+
spanProcessors: [langfuseSpanProcessor],
|
|
18
|
+
});
|
|
19
|
+
sdk.start();
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=instrumentation.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instrumentation.cjs","sources":["../../src/instrumentation.ts"],"sourcesContent":["import { NodeSDK } from '@opentelemetry/sdk-node';\r\nimport { LangfuseSpanProcessor } from '@langfuse/otel';\r\nimport { isPresent } from '@/utils/misc';\r\n\r\nif (\r\n isPresent(process.env.LANGFUSE_SECRET_KEY) &&\r\n isPresent(process.env.LANGFUSE_PUBLIC_KEY) &&\r\n isPresent(process.env.LANGFUSE_BASE_URL)\r\n) {\r\n const langfuseSpanProcessor = new LangfuseSpanProcessor({\r\n publicKey: process.env.LANGFUSE_PUBLIC_KEY,\r\n secretKey: process.env.LANGFUSE_SECRET_KEY,\r\n baseUrl: process.env.LANGFUSE_BASE_URL,\r\n environment: process.env.NODE_ENV ?? 'development',\r\n });\r\n\r\n const sdk = new NodeSDK({\r\n spanProcessors: [langfuseSpanProcessor],\r\n });\r\n\r\n sdk.start();\r\n}\r\n"],"names":["isPresent","LangfuseSpanProcessor","NodeSDK"],"mappings":";;;;;;AAIA,IACEA,cAAS,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;AAC1C,IAAAA,cAAS,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;IAC1CA,cAAS,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,EACxC;AACA,IAAA,MAAM,qBAAqB,GAAG,IAAIC,0BAAqB,CAAC;AACtD,QAAA,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB;AAC1C,QAAA,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB;AAC1C,QAAA,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB;AACtC,QAAA,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,aAAa;AACnD,KAAA,CAAC;AAEF,IAAA,MAAM,GAAG,GAAG,IAAIC,eAAO,CAAC;QACtB,cAAc,EAAE,CAAC,qBAAqB,CAAC;AACxC,KAAA,CAAC;IAEF,GAAG,CAAC,KAAK,EAAE;AACb;;"}
|
|
@@ -0,0 +1,292 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var messages = require('@langchain/core/messages');
|
|
4
|
+
var anthropic = require('@langchain/anthropic');
|
|
5
|
+
var outputs = require('@langchain/core/outputs');
|
|
6
|
+
var message_outputs = require('./utils/message_outputs.cjs');
|
|
7
|
+
var message_inputs = require('./utils/message_inputs.cjs');
|
|
8
|
+
var tools = require('./utils/tools.cjs');
|
|
9
|
+
var text = require('../text.cjs');
|
|
10
|
+
|
|
11
|
+
function _toolsInParams(params) {
|
|
12
|
+
return !!(params.tools && params.tools.length > 0);
|
|
13
|
+
}
|
|
14
|
+
function _documentsInParams(params) {
|
|
15
|
+
for (const message of params.messages ?? []) {
|
|
16
|
+
if (typeof message.content === 'string') {
|
|
17
|
+
continue;
|
|
18
|
+
}
|
|
19
|
+
for (const block of message.content ?? []) {
|
|
20
|
+
if (typeof block === 'object' &&
|
|
21
|
+
block != null &&
|
|
22
|
+
block.type === 'document' &&
|
|
23
|
+
typeof block.citations === 'object' &&
|
|
24
|
+
block.citations.enabled) {
|
|
25
|
+
return true;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
function _thinkingInParams(params) {
|
|
32
|
+
return !!(params.thinking && params.thinking.type === 'enabled');
|
|
33
|
+
}
|
|
34
|
+
function extractToken(chunk) {
|
|
35
|
+
if (typeof chunk.content === 'string') {
|
|
36
|
+
return [chunk.content, 'string'];
|
|
37
|
+
}
|
|
38
|
+
else if (Array.isArray(chunk.content) &&
|
|
39
|
+
chunk.content.length >= 1 &&
|
|
40
|
+
'input' in chunk.content[0]) {
|
|
41
|
+
return typeof chunk.content[0].input === 'string'
|
|
42
|
+
? [chunk.content[0].input, 'input']
|
|
43
|
+
: [JSON.stringify(chunk.content[0].input), 'input'];
|
|
44
|
+
}
|
|
45
|
+
else if (Array.isArray(chunk.content) &&
|
|
46
|
+
chunk.content.length >= 1 &&
|
|
47
|
+
'text' in chunk.content[0]) {
|
|
48
|
+
return [chunk.content[0].text, 'content'];
|
|
49
|
+
}
|
|
50
|
+
else if (Array.isArray(chunk.content) &&
|
|
51
|
+
chunk.content.length >= 1 &&
|
|
52
|
+
'thinking' in chunk.content[0]) {
|
|
53
|
+
return [chunk.content[0].thinking, 'content'];
|
|
54
|
+
}
|
|
55
|
+
return [undefined];
|
|
56
|
+
}
|
|
57
|
+
function cloneChunk(text, tokenType, chunk) {
|
|
58
|
+
if (tokenType === 'string') {
|
|
59
|
+
return new messages.AIMessageChunk(Object.assign({}, chunk, { content: text }));
|
|
60
|
+
}
|
|
61
|
+
else if (tokenType === 'input') {
|
|
62
|
+
return chunk;
|
|
63
|
+
}
|
|
64
|
+
const content = chunk.content[0];
|
|
65
|
+
if (tokenType === 'content' && content.type === 'text') {
|
|
66
|
+
return new messages.AIMessageChunk(Object.assign({}, chunk, {
|
|
67
|
+
content: [Object.assign({}, content, { text })],
|
|
68
|
+
}));
|
|
69
|
+
}
|
|
70
|
+
else if (tokenType === 'content' && content.type === 'text_delta') {
|
|
71
|
+
return new messages.AIMessageChunk(Object.assign({}, chunk, {
|
|
72
|
+
content: [Object.assign({}, content, { text })],
|
|
73
|
+
}));
|
|
74
|
+
}
|
|
75
|
+
else if (tokenType === 'content' && content.type?.startsWith('thinking')) {
|
|
76
|
+
return new messages.AIMessageChunk(Object.assign({}, chunk, {
|
|
77
|
+
content: [Object.assign({}, content, { thinking: text })],
|
|
78
|
+
}));
|
|
79
|
+
}
|
|
80
|
+
return chunk;
|
|
81
|
+
}
|
|
82
|
+
class CustomAnthropic extends anthropic.ChatAnthropicMessages {
|
|
83
|
+
_lc_stream_delay;
|
|
84
|
+
message_start;
|
|
85
|
+
message_delta;
|
|
86
|
+
tools_in_params;
|
|
87
|
+
emitted_usage;
|
|
88
|
+
top_k;
|
|
89
|
+
constructor(fields) {
|
|
90
|
+
super(fields);
|
|
91
|
+
this.resetTokenEvents();
|
|
92
|
+
this.setDirectFields(fields);
|
|
93
|
+
this._lc_stream_delay = fields?._lc_stream_delay ?? 25;
|
|
94
|
+
}
|
|
95
|
+
static lc_name() {
|
|
96
|
+
return 'IllumaAnthropic';
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Get the parameters used to invoke the model
|
|
100
|
+
*/
|
|
101
|
+
invocationParams(options) {
|
|
102
|
+
const tool_choice = tools.handleToolChoice(options?.tool_choice);
|
|
103
|
+
if (this.thinking.type === 'enabled') {
|
|
104
|
+
if (this.top_k !== -1 && this.top_k != null) {
|
|
105
|
+
throw new Error('topK is not supported when thinking is enabled');
|
|
106
|
+
}
|
|
107
|
+
if (this.topP !== -1 && this.topP != null) {
|
|
108
|
+
throw new Error('topP is not supported when thinking is enabled');
|
|
109
|
+
}
|
|
110
|
+
if (this.temperature !== 1 &&
|
|
111
|
+
this.temperature != null) {
|
|
112
|
+
throw new Error('temperature is not supported when thinking is enabled');
|
|
113
|
+
}
|
|
114
|
+
return {
|
|
115
|
+
model: this.model,
|
|
116
|
+
stop_sequences: options?.stop ?? this.stopSequences,
|
|
117
|
+
stream: this.streaming,
|
|
118
|
+
max_tokens: this.maxTokens,
|
|
119
|
+
tools: this.formatStructuredToolToAnthropic(options?.tools),
|
|
120
|
+
tool_choice,
|
|
121
|
+
thinking: this.thinking,
|
|
122
|
+
...this.invocationKwargs,
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
return {
|
|
126
|
+
model: this.model,
|
|
127
|
+
temperature: this.temperature,
|
|
128
|
+
top_k: this.top_k,
|
|
129
|
+
top_p: this.topP,
|
|
130
|
+
stop_sequences: options?.stop ?? this.stopSequences,
|
|
131
|
+
stream: this.streaming,
|
|
132
|
+
max_tokens: this.maxTokens,
|
|
133
|
+
tools: this.formatStructuredToolToAnthropic(options?.tools),
|
|
134
|
+
tool_choice,
|
|
135
|
+
thinking: this.thinking,
|
|
136
|
+
...this.invocationKwargs,
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Get stream usage as returned by this client's API response.
|
|
141
|
+
* @returns The stream usage object.
|
|
142
|
+
*/
|
|
143
|
+
getStreamUsage() {
|
|
144
|
+
if (this.emitted_usage === true) {
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
const inputUsage = this.message_start?.message.usage;
|
|
148
|
+
const outputUsage = this.message_delta?.usage;
|
|
149
|
+
if (!outputUsage) {
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
const totalUsage = {
|
|
153
|
+
input_tokens: inputUsage?.input_tokens ?? 0,
|
|
154
|
+
output_tokens: outputUsage.output_tokens ?? 0,
|
|
155
|
+
total_tokens: (inputUsage?.input_tokens ?? 0) + (outputUsage.output_tokens ?? 0),
|
|
156
|
+
};
|
|
157
|
+
if (inputUsage?.cache_creation_input_tokens != null ||
|
|
158
|
+
inputUsage?.cache_read_input_tokens != null) {
|
|
159
|
+
totalUsage.input_token_details = {
|
|
160
|
+
cache_creation: inputUsage.cache_creation_input_tokens ?? 0,
|
|
161
|
+
cache_read: inputUsage.cache_read_input_tokens ?? 0,
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
this.emitted_usage = true;
|
|
165
|
+
return totalUsage;
|
|
166
|
+
}
|
|
167
|
+
resetTokenEvents() {
|
|
168
|
+
this.message_start = undefined;
|
|
169
|
+
this.message_delta = undefined;
|
|
170
|
+
this.emitted_usage = undefined;
|
|
171
|
+
this.tools_in_params = undefined;
|
|
172
|
+
}
|
|
173
|
+
setDirectFields(fields) {
|
|
174
|
+
this.temperature = fields?.temperature ?? undefined;
|
|
175
|
+
this.topP = fields?.topP ?? undefined;
|
|
176
|
+
this.top_k = fields?.topK;
|
|
177
|
+
if (this.temperature === -1 || this.temperature === 1) {
|
|
178
|
+
this.temperature = undefined;
|
|
179
|
+
}
|
|
180
|
+
if (this.topP === -1) {
|
|
181
|
+
this.topP = undefined;
|
|
182
|
+
}
|
|
183
|
+
if (this.top_k === -1) {
|
|
184
|
+
this.top_k = undefined;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
createGenerationChunk({ token, chunk, usageMetadata, shouldStreamUsage, }) {
|
|
188
|
+
const usage_metadata = shouldStreamUsage
|
|
189
|
+
? (usageMetadata ?? chunk.usage_metadata)
|
|
190
|
+
: undefined;
|
|
191
|
+
return new outputs.ChatGenerationChunk({
|
|
192
|
+
message: new messages.AIMessageChunk({
|
|
193
|
+
// Just yield chunk as it is and tool_use will be concat by BaseChatModel._generateUncached().
|
|
194
|
+
content: chunk.content,
|
|
195
|
+
additional_kwargs: chunk.additional_kwargs,
|
|
196
|
+
tool_call_chunks: chunk.tool_call_chunks,
|
|
197
|
+
response_metadata: chunk.response_metadata,
|
|
198
|
+
usage_metadata,
|
|
199
|
+
id: chunk.id,
|
|
200
|
+
}),
|
|
201
|
+
text: token ?? '',
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
async *_streamResponseChunks(messages, options, runManager) {
|
|
205
|
+
this.resetTokenEvents();
|
|
206
|
+
const params = this.invocationParams(options);
|
|
207
|
+
const formattedMessages = message_inputs._convertMessagesToAnthropicPayload(messages);
|
|
208
|
+
const payload = {
|
|
209
|
+
...params,
|
|
210
|
+
...formattedMessages,
|
|
211
|
+
stream: true,
|
|
212
|
+
};
|
|
213
|
+
const coerceContentToString = !_toolsInParams(payload) &&
|
|
214
|
+
!_documentsInParams(payload) &&
|
|
215
|
+
!_thinkingInParams(payload);
|
|
216
|
+
const stream = await this.createStreamWithRetry(payload, {
|
|
217
|
+
headers: options.headers,
|
|
218
|
+
});
|
|
219
|
+
const shouldStreamUsage = this.streamUsage ?? options.streamUsage;
|
|
220
|
+
for await (const data of stream) {
|
|
221
|
+
if (options.signal?.aborted === true) {
|
|
222
|
+
stream.controller.abort();
|
|
223
|
+
throw new Error('AbortError: User aborted the request.');
|
|
224
|
+
}
|
|
225
|
+
if (data.type === 'message_start') {
|
|
226
|
+
this.message_start = data;
|
|
227
|
+
}
|
|
228
|
+
else if (data.type === 'message_delta') {
|
|
229
|
+
this.message_delta = data;
|
|
230
|
+
}
|
|
231
|
+
let usageMetadata;
|
|
232
|
+
if (this.tools_in_params !== true && this.emitted_usage !== true) {
|
|
233
|
+
usageMetadata = this.getStreamUsage();
|
|
234
|
+
}
|
|
235
|
+
const result = message_outputs._makeMessageChunkFromAnthropicEvent(data, {
|
|
236
|
+
streamUsage: shouldStreamUsage,
|
|
237
|
+
coerceContentToString,
|
|
238
|
+
});
|
|
239
|
+
if (!result)
|
|
240
|
+
continue;
|
|
241
|
+
const { chunk } = result;
|
|
242
|
+
const [token = '', tokenType] = extractToken(chunk);
|
|
243
|
+
if (!tokenType ||
|
|
244
|
+
tokenType === 'input' ||
|
|
245
|
+
(token === '' && (usageMetadata != null || chunk.id != null))) {
|
|
246
|
+
const generationChunk = this.createGenerationChunk({
|
|
247
|
+
token,
|
|
248
|
+
chunk,
|
|
249
|
+
usageMetadata,
|
|
250
|
+
shouldStreamUsage,
|
|
251
|
+
});
|
|
252
|
+
yield generationChunk;
|
|
253
|
+
await runManager?.handleLLMNewToken(token, undefined, undefined, undefined, undefined, { chunk: generationChunk });
|
|
254
|
+
continue;
|
|
255
|
+
}
|
|
256
|
+
const textStream = new text.TextStream(token, {
|
|
257
|
+
delay: this._lc_stream_delay,
|
|
258
|
+
firstWordChunk: true,
|
|
259
|
+
minChunkSize: 4,
|
|
260
|
+
maxChunkSize: 8,
|
|
261
|
+
});
|
|
262
|
+
const generator = textStream.generateText(options.signal);
|
|
263
|
+
try {
|
|
264
|
+
let emittedUsage = false;
|
|
265
|
+
for await (const currentToken of generator) {
|
|
266
|
+
if (options.signal?.aborted === true) {
|
|
267
|
+
break;
|
|
268
|
+
}
|
|
269
|
+
const newChunk = cloneChunk(currentToken, tokenType, chunk);
|
|
270
|
+
const generationChunk = this.createGenerationChunk({
|
|
271
|
+
token: currentToken,
|
|
272
|
+
chunk: newChunk,
|
|
273
|
+
usageMetadata: emittedUsage ? undefined : usageMetadata,
|
|
274
|
+
shouldStreamUsage,
|
|
275
|
+
});
|
|
276
|
+
if (usageMetadata && !emittedUsage) {
|
|
277
|
+
emittedUsage = true;
|
|
278
|
+
}
|
|
279
|
+
yield generationChunk;
|
|
280
|
+
await runManager?.handleLLMNewToken(currentToken, undefined, undefined, undefined, undefined, { chunk: generationChunk });
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
finally {
|
|
284
|
+
await generator.return();
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
this.resetTokenEvents();
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
exports.CustomAnthropic = CustomAnthropic;
|
|
292
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../../src/llm/anthropic/index.ts"],"sourcesContent":["import { AIMessageChunk } from '@langchain/core/messages';\r\nimport { ChatAnthropicMessages } from '@langchain/anthropic';\r\nimport { ChatGenerationChunk } from '@langchain/core/outputs';\r\nimport type { BaseChatModelParams } from '@langchain/core/language_models/chat_models';\r\nimport type {\r\n BaseMessage,\r\n UsageMetadata,\r\n MessageContentComplex,\r\n} from '@langchain/core/messages';\r\nimport type { CallbackManagerForLLMRun } from '@langchain/core/callbacks/manager';\r\nimport type { AnthropicInput } from '@langchain/anthropic';\r\nimport type { Anthropic } from '@anthropic-ai/sdk';\r\nimport type {\r\n AnthropicMessageCreateParams,\r\n AnthropicStreamingMessageCreateParams,\r\n AnthropicStreamUsage,\r\n AnthropicMessageStartEvent,\r\n AnthropicMessageDeltaEvent,\r\n} from '@/llm/anthropic/types';\r\nimport { _makeMessageChunkFromAnthropicEvent } from './utils/message_outputs';\r\nimport { _convertMessagesToAnthropicPayload } from './utils/message_inputs';\r\nimport { handleToolChoice } from './utils/tools';\r\nimport { TextStream } from '@/llm/text';\r\n\r\nfunction _toolsInParams(\r\n params: AnthropicMessageCreateParams | AnthropicStreamingMessageCreateParams\r\n): boolean {\r\n return !!(params.tools && params.tools.length > 0);\r\n}\r\nfunction _documentsInParams(\r\n params: AnthropicMessageCreateParams | AnthropicStreamingMessageCreateParams\r\n): boolean {\r\n for (const message of params.messages ?? []) {\r\n if (typeof message.content === 'string') {\r\n continue;\r\n }\r\n for (const block of message.content ?? []) {\r\n if (\r\n typeof block === 'object' &&\r\n block != null &&\r\n block.type === 'document' &&\r\n typeof block.citations === 'object' &&\r\n block.citations.enabled\r\n ) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n}\r\n\r\nfunction _thinkingInParams(\r\n params: AnthropicMessageCreateParams | AnthropicStreamingMessageCreateParams\r\n): boolean {\r\n return !!(params.thinking && params.thinking.type === 'enabled');\r\n}\r\n\r\nfunction extractToken(\r\n chunk: AIMessageChunk\r\n): [string, 'string' | 'input' | 'content'] | [undefined] {\r\n if (typeof chunk.content === 'string') {\r\n return [chunk.content, 'string'];\r\n } else if (\r\n Array.isArray(chunk.content) &&\r\n chunk.content.length >= 1 &&\r\n 'input' in chunk.content[0]\r\n ) {\r\n return typeof chunk.content[0].input === 'string'\r\n ? [chunk.content[0].input, 'input']\r\n : [JSON.stringify(chunk.content[0].input), 'input'];\r\n } else if (\r\n Array.isArray(chunk.content) &&\r\n chunk.content.length >= 1 &&\r\n 'text' in chunk.content[0]\r\n ) {\r\n return [chunk.content[0].text, 'content'];\r\n } else if (\r\n Array.isArray(chunk.content) &&\r\n chunk.content.length >= 1 &&\r\n 'thinking' in chunk.content[0]\r\n ) {\r\n return [chunk.content[0].thinking, 'content'];\r\n }\r\n return [undefined];\r\n}\r\n\r\nfunction cloneChunk(\r\n text: string,\r\n tokenType: string,\r\n chunk: AIMessageChunk\r\n): AIMessageChunk {\r\n if (tokenType === 'string') {\r\n return new AIMessageChunk(Object.assign({}, chunk, { content: text }));\r\n } else if (tokenType === 'input') {\r\n return chunk;\r\n }\r\n const content = chunk.content[0] as MessageContentComplex;\r\n if (tokenType === 'content' && content.type === 'text') {\r\n return new AIMessageChunk(\r\n Object.assign({}, chunk, {\r\n content: [Object.assign({}, content, { text })],\r\n })\r\n );\r\n } else if (tokenType === 'content' && content.type === 'text_delta') {\r\n return new AIMessageChunk(\r\n Object.assign({}, chunk, {\r\n content: [Object.assign({}, content, { text })],\r\n })\r\n );\r\n } else if (tokenType === 'content' && content.type?.startsWith('thinking')) {\r\n return new AIMessageChunk(\r\n Object.assign({}, chunk, {\r\n content: [Object.assign({}, content, { thinking: text })],\r\n })\r\n );\r\n }\r\n\r\n return chunk;\r\n}\r\n\r\nexport type CustomAnthropicInput = AnthropicInput & {\r\n _lc_stream_delay?: number;\r\n} & BaseChatModelParams;\r\n\r\n/**\r\n * A type representing additional parameters that can be passed to the\r\n * Anthropic API.\r\n */\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\ntype Kwargs = Record<string, any>;\r\n\r\nexport class CustomAnthropic extends ChatAnthropicMessages {\r\n _lc_stream_delay: number;\r\n private message_start: AnthropicMessageStartEvent | undefined;\r\n private message_delta: AnthropicMessageDeltaEvent | undefined;\r\n private tools_in_params?: boolean;\r\n private emitted_usage?: boolean;\r\n top_k: number | undefined;\r\n constructor(fields?: CustomAnthropicInput) {\r\n super(fields);\r\n this.resetTokenEvents();\r\n this.setDirectFields(fields);\r\n this._lc_stream_delay = fields?._lc_stream_delay ?? 25;\r\n }\r\n\r\n static lc_name(): 'IllumaAnthropic' {\r\n return 'IllumaAnthropic';\r\n }\r\n\r\n /**\r\n * Get the parameters used to invoke the model\r\n */\r\n override invocationParams(\r\n options?: this['ParsedCallOptions']\r\n ): Omit<\r\n AnthropicMessageCreateParams | AnthropicStreamingMessageCreateParams,\r\n 'messages'\r\n > &\r\n Kwargs {\r\n const tool_choice:\r\n | Anthropic.Messages.ToolChoiceAuto\r\n | Anthropic.Messages.ToolChoiceAny\r\n | Anthropic.Messages.ToolChoiceTool\r\n | undefined = handleToolChoice(options?.tool_choice);\r\n\r\n if (this.thinking.type === 'enabled') {\r\n if (this.top_k !== -1 && (this.top_k as number | undefined) != null) {\r\n throw new Error('topK is not supported when thinking is enabled');\r\n }\r\n if (this.topP !== -1 && (this.topP as number | undefined) != null) {\r\n throw new Error('topP is not supported when thinking is enabled');\r\n }\r\n if (\r\n this.temperature !== 1 &&\r\n (this.temperature as number | undefined) != null\r\n ) {\r\n throw new Error(\r\n 'temperature is not supported when thinking is enabled'\r\n );\r\n }\r\n\r\n return {\r\n model: this.model,\r\n stop_sequences: options?.stop ?? this.stopSequences,\r\n stream: this.streaming,\r\n max_tokens: this.maxTokens,\r\n tools: this.formatStructuredToolToAnthropic(options?.tools),\r\n tool_choice,\r\n thinking: this.thinking,\r\n ...this.invocationKwargs,\r\n };\r\n }\r\n return {\r\n model: this.model,\r\n temperature: this.temperature,\r\n top_k: this.top_k,\r\n top_p: this.topP,\r\n stop_sequences: options?.stop ?? this.stopSequences,\r\n stream: this.streaming,\r\n max_tokens: this.maxTokens,\r\n tools: this.formatStructuredToolToAnthropic(options?.tools),\r\n tool_choice,\r\n thinking: this.thinking,\r\n ...this.invocationKwargs,\r\n };\r\n }\r\n\r\n /**\r\n * Get stream usage as returned by this client's API response.\r\n * @returns The stream usage object.\r\n */\r\n getStreamUsage(): UsageMetadata | undefined {\r\n if (this.emitted_usage === true) {\r\n return;\r\n }\r\n const inputUsage = this.message_start?.message.usage as\r\n | undefined\r\n | AnthropicStreamUsage;\r\n const outputUsage = this.message_delta?.usage as\r\n | undefined\r\n | Partial<AnthropicStreamUsage>;\r\n if (!outputUsage) {\r\n return;\r\n }\r\n const totalUsage: UsageMetadata = {\r\n input_tokens: inputUsage?.input_tokens ?? 0,\r\n output_tokens: outputUsage.output_tokens ?? 0,\r\n total_tokens:\r\n (inputUsage?.input_tokens ?? 0) + (outputUsage.output_tokens ?? 0),\r\n };\r\n\r\n if (\r\n inputUsage?.cache_creation_input_tokens != null ||\r\n inputUsage?.cache_read_input_tokens != null\r\n ) {\r\n totalUsage.input_token_details = {\r\n cache_creation: inputUsage.cache_creation_input_tokens ?? 0,\r\n cache_read: inputUsage.cache_read_input_tokens ?? 0,\r\n };\r\n }\r\n\r\n this.emitted_usage = true;\r\n return totalUsage;\r\n }\r\n\r\n resetTokenEvents(): void {\r\n this.message_start = undefined;\r\n this.message_delta = undefined;\r\n this.emitted_usage = undefined;\r\n this.tools_in_params = undefined;\r\n }\r\n\r\n setDirectFields(fields?: CustomAnthropicInput): void {\r\n this.temperature = fields?.temperature ?? undefined;\r\n this.topP = fields?.topP ?? undefined;\r\n this.top_k = fields?.topK;\r\n if (this.temperature === -1 || this.temperature === 1) {\r\n this.temperature = undefined;\r\n }\r\n if (this.topP === -1) {\r\n this.topP = undefined;\r\n }\r\n if (this.top_k === -1) {\r\n this.top_k = undefined;\r\n }\r\n }\r\n\r\n private createGenerationChunk({\r\n token,\r\n chunk,\r\n usageMetadata,\r\n shouldStreamUsage,\r\n }: {\r\n token?: string;\r\n chunk: AIMessageChunk;\r\n shouldStreamUsage: boolean;\r\n usageMetadata?: UsageMetadata;\r\n }): ChatGenerationChunk {\r\n const usage_metadata = shouldStreamUsage\r\n ? (usageMetadata ?? chunk.usage_metadata)\r\n : undefined;\r\n return new ChatGenerationChunk({\r\n message: new AIMessageChunk({\r\n // Just yield chunk as it is and tool_use will be concat by BaseChatModel._generateUncached().\r\n content: chunk.content,\r\n additional_kwargs: chunk.additional_kwargs,\r\n tool_call_chunks: chunk.tool_call_chunks,\r\n response_metadata: chunk.response_metadata,\r\n usage_metadata,\r\n id: chunk.id,\r\n }),\r\n text: token ?? '',\r\n });\r\n }\r\n\r\n async *_streamResponseChunks(\r\n messages: BaseMessage[],\r\n options: this['ParsedCallOptions'],\r\n runManager?: CallbackManagerForLLMRun\r\n ): AsyncGenerator<ChatGenerationChunk> {\r\n this.resetTokenEvents();\r\n const params = this.invocationParams(options);\r\n const formattedMessages = _convertMessagesToAnthropicPayload(messages);\r\n const payload = {\r\n ...params,\r\n ...formattedMessages,\r\n stream: true,\r\n } as const;\r\n const coerceContentToString =\r\n !_toolsInParams(payload) &&\r\n !_documentsInParams(payload) &&\r\n !_thinkingInParams(payload);\r\n\r\n const stream = await this.createStreamWithRetry(payload, {\r\n headers: options.headers,\r\n });\r\n\r\n const shouldStreamUsage = this.streamUsage ?? options.streamUsage;\r\n\r\n for await (const data of stream) {\r\n if (options.signal?.aborted === true) {\r\n stream.controller.abort();\r\n throw new Error('AbortError: User aborted the request.');\r\n }\r\n\r\n if (data.type === 'message_start') {\r\n this.message_start = data as AnthropicMessageStartEvent;\r\n } else if (data.type === 'message_delta') {\r\n this.message_delta = data as AnthropicMessageDeltaEvent;\r\n }\r\n\r\n let usageMetadata: UsageMetadata | undefined;\r\n if (this.tools_in_params !== true && this.emitted_usage !== true) {\r\n usageMetadata = this.getStreamUsage();\r\n }\r\n\r\n const result = _makeMessageChunkFromAnthropicEvent(data, {\r\n streamUsage: shouldStreamUsage,\r\n coerceContentToString,\r\n });\r\n if (!result) continue;\r\n\r\n const { chunk } = result;\r\n const [token = '', tokenType] = extractToken(chunk);\r\n\r\n if (\r\n !tokenType ||\r\n tokenType === 'input' ||\r\n (token === '' && (usageMetadata != null || chunk.id != null))\r\n ) {\r\n const generationChunk = this.createGenerationChunk({\r\n token,\r\n chunk,\r\n usageMetadata,\r\n shouldStreamUsage,\r\n });\r\n yield generationChunk;\r\n await runManager?.handleLLMNewToken(\r\n token,\r\n undefined,\r\n undefined,\r\n undefined,\r\n undefined,\r\n { chunk: generationChunk }\r\n );\r\n continue;\r\n }\r\n\r\n const textStream = new TextStream(token, {\r\n delay: this._lc_stream_delay,\r\n firstWordChunk: true,\r\n minChunkSize: 4,\r\n maxChunkSize: 8,\r\n });\r\n\r\n const generator = textStream.generateText(options.signal);\r\n try {\r\n let emittedUsage = false;\r\n for await (const currentToken of generator) {\r\n if ((options.signal as AbortSignal | undefined)?.aborted === true) {\r\n break;\r\n }\r\n const newChunk = cloneChunk(currentToken, tokenType, chunk);\r\n\r\n const generationChunk = this.createGenerationChunk({\r\n token: currentToken,\r\n chunk: newChunk,\r\n usageMetadata: emittedUsage ? undefined : usageMetadata,\r\n shouldStreamUsage,\r\n });\r\n\r\n if (usageMetadata && !emittedUsage) {\r\n emittedUsage = true;\r\n }\r\n yield generationChunk;\r\n\r\n await runManager?.handleLLMNewToken(\r\n currentToken,\r\n undefined,\r\n undefined,\r\n undefined,\r\n undefined,\r\n { chunk: generationChunk }\r\n );\r\n }\r\n } finally {\r\n await generator.return();\r\n }\r\n }\r\n\r\n this.resetTokenEvents();\r\n }\r\n}\r\n"],"names":["AIMessageChunk","ChatAnthropicMessages","handleToolChoice","ChatGenerationChunk","_convertMessagesToAnthropicPayload","_makeMessageChunkFromAnthropicEvent","TextStream"],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
function isAnthropicImageBlockParam(block) {
|
|
4
|
+
if (block == null) {
|
|
5
|
+
return false;
|
|
6
|
+
}
|
|
7
|
+
if (typeof block !== 'object') {
|
|
8
|
+
return false;
|
|
9
|
+
}
|
|
10
|
+
if (!('type' in block) || block.type !== 'image') {
|
|
11
|
+
return false;
|
|
12
|
+
}
|
|
13
|
+
if (!('source' in block) || typeof block.source !== 'object') {
|
|
14
|
+
return false;
|
|
15
|
+
}
|
|
16
|
+
if (block.source == null) {
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
if (!('type' in block.source)) {
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
if (block.source.type === 'base64') {
|
|
23
|
+
if (!('media_type' in block.source)) {
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
if (typeof block.source.media_type !== 'string') {
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
if (!('data' in block.source)) {
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
if (typeof block.source.data !== 'string') {
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
return true;
|
|
36
|
+
}
|
|
37
|
+
if (block.source.type === 'url') {
|
|
38
|
+
if (!('url' in block.source)) {
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
41
|
+
if (typeof block.source.url !== 'string') {
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
return true;
|
|
45
|
+
}
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
exports.isAnthropicImageBlockParam = isAnthropicImageBlockParam;
|
|
50
|
+
//# sourceMappingURL=types.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.cjs","sources":["../../../../src/llm/anthropic/types.ts"],"sourcesContent":["import Anthropic from '@anthropic-ai/sdk';\r\nimport { BindToolsInput } from '@langchain/core/language_models/chat_models';\r\n\r\nexport type AnthropicStreamUsage = Anthropic.Usage;\r\nexport type AnthropicMessageDeltaEvent = Anthropic.MessageDeltaEvent;\r\nexport type AnthropicMessageStartEvent = Anthropic.MessageStartEvent;\r\n\r\nexport type AnthropicToolResponse = {\r\n type: 'tool_use';\r\n id: string;\r\n name: string;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n input: Record<string, any>;\r\n};\r\n\r\nexport type AnthropicMessageParam = Anthropic.MessageParam;\r\nexport type AnthropicMessageResponse =\r\n | Anthropic.ContentBlock\r\n | AnthropicToolResponse;\r\nexport type AnthropicMessageCreateParams =\r\n Anthropic.MessageCreateParamsNonStreaming;\r\nexport type AnthropicStreamingMessageCreateParams =\r\n Anthropic.MessageCreateParamsStreaming;\r\nexport type AnthropicThinkingConfigParam = Anthropic.ThinkingConfigParam;\r\nexport type AnthropicMessageStreamEvent = Anthropic.MessageStreamEvent;\r\nexport type AnthropicRequestOptions = Anthropic.RequestOptions;\r\nexport type AnthropicToolChoice =\r\n | {\r\n type: 'tool';\r\n name: string;\r\n }\r\n | 'any'\r\n | 'auto'\r\n | 'none'\r\n | string;\r\nexport type ChatAnthropicToolType = Anthropic.Messages.Tool | BindToolsInput;\r\nexport type AnthropicTextBlockParam = Anthropic.Messages.TextBlockParam;\r\nexport type AnthropicImageBlockParam = Anthropic.Messages.ImageBlockParam;\r\nexport type AnthropicToolUseBlockParam = Anthropic.Messages.ToolUseBlockParam;\r\nexport type AnthropicToolResultBlockParam =\r\n Anthropic.Messages.ToolResultBlockParam;\r\nexport type AnthropicDocumentBlockParam = Anthropic.Messages.DocumentBlockParam;\r\nexport type AnthropicThinkingBlockParam = Anthropic.Messages.ThinkingBlockParam;\r\nexport type AnthropicRedactedThinkingBlockParam =\r\n Anthropic.Messages.RedactedThinkingBlockParam;\r\nexport type AnthropicServerToolUseBlockParam =\r\n Anthropic.Messages.ServerToolUseBlockParam;\r\nexport type AnthropicWebSearchToolResultBlockParam =\r\n Anthropic.Messages.WebSearchToolResultBlockParam;\r\nexport type AnthropicWebSearchResultBlockParam =\r\n Anthropic.Messages.WebSearchResultBlockParam;\r\nexport type AnthropicSearchResultBlockParam =\r\n Anthropic.Beta.BetaSearchResultBlockParam;\r\n\r\n// Union of all possible content block types including server tool use\r\nexport type AnthropicContentBlock =\r\n | AnthropicTextBlockParam\r\n | AnthropicImageBlockParam\r\n | AnthropicToolUseBlockParam\r\n | AnthropicToolResultBlockParam\r\n | AnthropicDocumentBlockParam\r\n | AnthropicThinkingBlockParam\r\n | AnthropicRedactedThinkingBlockParam\r\n | AnthropicServerToolUseBlockParam\r\n | AnthropicWebSearchToolResultBlockParam\r\n | AnthropicWebSearchResultBlockParam;\r\n\r\n// Union of all possible content block types including server tool use\r\nexport type ChatAnthropicContentBlock =\r\n | AnthropicTextBlockParam\r\n | AnthropicImageBlockParam\r\n | AnthropicToolUseBlockParam\r\n | AnthropicToolResultBlockParam\r\n | AnthropicDocumentBlockParam\r\n | AnthropicThinkingBlockParam\r\n | AnthropicRedactedThinkingBlockParam\r\n | AnthropicServerToolUseBlockParam\r\n | AnthropicWebSearchToolResultBlockParam\r\n | AnthropicWebSearchResultBlockParam\r\n | AnthropicSearchResultBlockParam;\r\n\r\nexport function isAnthropicImageBlockParam(\r\n block: unknown\r\n): block is AnthropicImageBlockParam {\r\n if (block == null) {\r\n return false;\r\n }\r\n if (typeof block !== 'object') {\r\n return false;\r\n }\r\n if (!('type' in block) || block.type !== 'image') {\r\n return false;\r\n }\r\n\r\n if (!('source' in block) || typeof block.source !== 'object') {\r\n return false;\r\n }\r\n\r\n if (block.source == null) {\r\n return false;\r\n }\r\n\r\n if (!('type' in block.source)) {\r\n return false;\r\n }\r\n\r\n if (block.source.type === 'base64') {\r\n if (!('media_type' in block.source)) {\r\n return false;\r\n }\r\n\r\n if (typeof block.source.media_type !== 'string') {\r\n return false;\r\n }\r\n\r\n if (!('data' in block.source)) {\r\n return false;\r\n }\r\n\r\n if (typeof block.source.data !== 'string') {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n if (block.source.type === 'url') {\r\n if (!('url' in block.source)) {\r\n return false;\r\n }\r\n\r\n if (typeof block.source.url !== 'string') {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n return false;\r\n}\r\n"],"names":[],"mappings":";;AAiFM,SAAU,0BAA0B,CACxC,KAAc,EAAA;AAEd,IAAA,IAAI,KAAK,IAAI,IAAI,EAAE;AACjB,QAAA,OAAO,KAAK;;AAEd,IAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,QAAA,OAAO,KAAK;;AAEd,IAAA,IAAI,EAAE,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;AAChD,QAAA,OAAO,KAAK;;AAGd,IAAA,IAAI,EAAE,QAAQ,IAAI,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE;AAC5D,QAAA,OAAO,KAAK;;AAGd,IAAA,IAAI,KAAK,CAAC,MAAM,IAAI,IAAI,EAAE;AACxB,QAAA,OAAO,KAAK;;IAGd,IAAI,EAAE,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE;AAC7B,QAAA,OAAO,KAAK;;IAGd,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE;QAClC,IAAI,EAAE,YAAY,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE;AACnC,YAAA,OAAO,KAAK;;QAGd,IAAI,OAAO,KAAK,CAAC,MAAM,CAAC,UAAU,KAAK,QAAQ,EAAE;AAC/C,YAAA,OAAO,KAAK;;QAGd,IAAI,EAAE,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE;AAC7B,YAAA,OAAO,KAAK;;QAGd,IAAI,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE;AACzC,YAAA,OAAO,KAAK;;AAGd,QAAA,OAAO,IAAI;;IAGb,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,KAAK,EAAE;QAC/B,IAAI,EAAE,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE;AAC5B,YAAA,OAAO,KAAK;;QAGd,IAAI,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,QAAQ,EAAE;AACxC,YAAA,OAAO,KAAK;;AAGd,QAAA,OAAO,IAAI;;AAGb,IAAA,OAAO,KAAK;AACd;;;;"}
|