@illuma-ai/agents 1.5.0 → 2.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -62
- package/dist/cjs/agents/AgentContext.cjs +159 -258
- package/dist/cjs/agents/AgentContext.cjs.map +1 -1
- package/dist/cjs/graphs/Graph.cjs +25 -8
- package/dist/cjs/graphs/Graph.cjs.map +1 -1
- package/dist/cjs/llm/anthropic/utils/message_inputs.cjs +1 -5
- package/dist/cjs/llm/anthropic/utils/message_inputs.cjs.map +1 -1
- package/dist/cjs/llm/bedrock/index.cjs +33 -61
- package/dist/cjs/llm/bedrock/index.cjs.map +1 -1
- package/dist/cjs/llm/openai/utils/index.cjs +10 -27
- package/dist/cjs/llm/openai/utils/index.cjs.map +1 -1
- package/dist/cjs/main.cjs +3 -84
- package/dist/cjs/main.cjs.map +1 -1
- package/dist/cjs/messages/cache.cjs +0 -89
- package/dist/cjs/messages/cache.cjs.map +1 -1
- package/dist/cjs/messages/format.cjs +10 -68
- package/dist/cjs/messages/format.cjs.map +1 -1
- package/dist/cjs/tools/BashExecutor.cjs +11 -21
- package/dist/cjs/tools/BashExecutor.cjs.map +1 -1
- package/dist/cjs/tools/CodeExecutor.cjs +10 -37
- package/dist/cjs/tools/CodeExecutor.cjs.map +1 -1
- package/dist/cjs/tools/ProgrammaticToolCalling.cjs +11 -16
- package/dist/cjs/tools/ProgrammaticToolCalling.cjs.map +1 -1
- package/dist/cjs/tools/ToolNode.cjs +73 -8
- package/dist/cjs/tools/ToolNode.cjs.map +1 -1
- package/dist/cjs/tools/search/search.cjs +3 -11
- package/dist/cjs/tools/search/search.cjs.map +1 -1
- package/dist/cjs/tools/search/tool.cjs +4 -28
- package/dist/cjs/tools/search/tool.cjs.map +1 -1
- package/dist/cjs/tools/search/utils.cjs +3 -10
- package/dist/cjs/tools/search/utils.cjs.map +1 -1
- package/dist/cjs/tools/subagent/SubagentExecutor.cjs +48 -0
- package/dist/cjs/tools/subagent/SubagentExecutor.cjs.map +1 -1
- package/dist/cjs/types/graph.cjs.map +1 -1
- package/dist/esm/agents/AgentContext.mjs +159 -258
- package/dist/esm/agents/AgentContext.mjs.map +1 -1
- package/dist/esm/graphs/Graph.mjs +25 -8
- package/dist/esm/graphs/Graph.mjs.map +1 -1
- package/dist/esm/llm/anthropic/utils/message_inputs.mjs +1 -5
- package/dist/esm/llm/anthropic/utils/message_inputs.mjs.map +1 -1
- package/dist/esm/llm/bedrock/index.mjs +34 -61
- package/dist/esm/llm/bedrock/index.mjs.map +1 -1
- package/dist/esm/llm/openai/utils/index.mjs +10 -27
- package/dist/esm/llm/openai/utils/index.mjs.map +1 -1
- package/dist/esm/main.mjs +1 -5
- package/dist/esm/main.mjs.map +1 -1
- package/dist/esm/messages/cache.mjs +0 -89
- package/dist/esm/messages/cache.mjs.map +1 -1
- package/dist/esm/messages/format.mjs +10 -68
- package/dist/esm/messages/format.mjs.map +1 -1
- package/dist/esm/tools/BashExecutor.mjs +12 -22
- package/dist/esm/tools/BashExecutor.mjs.map +1 -1
- package/dist/esm/tools/CodeExecutor.mjs +11 -37
- package/dist/esm/tools/CodeExecutor.mjs.map +1 -1
- package/dist/esm/tools/ProgrammaticToolCalling.mjs +12 -17
- package/dist/esm/tools/ProgrammaticToolCalling.mjs.map +1 -1
- package/dist/esm/tools/ToolNode.mjs +73 -8
- package/dist/esm/tools/ToolNode.mjs.map +1 -1
- package/dist/esm/tools/search/search.mjs +3 -11
- package/dist/esm/tools/search/search.mjs.map +1 -1
- package/dist/esm/tools/search/tool.mjs +4 -28
- package/dist/esm/tools/search/tool.mjs.map +1 -1
- package/dist/esm/tools/search/utils.mjs +3 -10
- package/dist/esm/tools/search/utils.mjs.map +1 -1
- package/dist/esm/tools/subagent/SubagentExecutor.mjs +48 -0
- package/dist/esm/tools/subagent/SubagentExecutor.mjs.map +1 -1
- package/dist/esm/types/graph.mjs.map +1 -1
- package/dist/types/agents/AgentContext.d.ts +25 -95
- package/dist/types/index.d.ts +0 -1
- package/dist/types/llm/bedrock/index.d.ts +1 -54
- package/dist/types/messages/format.d.ts +1 -4
- package/dist/types/tools/CodeExecutor.d.ts +0 -6
- package/dist/types/tools/search/types.d.ts +5 -99
- package/dist/types/tools/search/utils.d.ts +2 -2
- package/dist/types/tools/subagent/SubagentExecutor.d.ts +29 -0
- package/dist/types/types/graph.d.ts +24 -27
- package/dist/types/types/index.d.ts +0 -1
- package/dist/types/types/run.d.ts +0 -2
- package/dist/types/types/tools.d.ts +0 -9
- package/package.json +1 -61
- package/src/agents/AgentContext.test.ts +176 -0
- package/src/agents/AgentContext.ts +178 -304
- package/src/agents/__tests__/AgentContext.test.ts +0 -632
- package/src/graphs/Graph.ts +27 -8
- package/src/index.ts +0 -6
- package/src/llm/anthropic/utils/message_inputs.ts +1 -10
- package/src/llm/bedrock/__tests__/bedrock-caching.test.ts +18 -166
- package/src/llm/bedrock/index.ts +41 -116
- package/src/llm/openai/utils/index.ts +14 -31
- package/src/messages/cache.test.ts +24 -62
- package/src/messages/cache.ts +0 -112
- package/src/messages/format.ts +10 -89
- package/src/scripts/subagent-configurable-inheritance.ts +263 -0
- package/src/specs/anthropic.simple.test.ts +0 -61
- package/src/tools/BashExecutor.ts +13 -37
- package/src/tools/CodeExecutor.ts +11 -55
- package/src/tools/ProgrammaticToolCalling.ts +14 -29
- package/src/tools/ToolNode.ts +69 -8
- package/src/tools/__tests__/ProgrammaticToolCalling.test.ts +0 -60
- package/src/tools/__tests__/SubagentExecutor.test.ts +157 -0
- package/src/tools/search/search.ts +2 -12
- package/src/tools/search/tool.ts +2 -36
- package/src/tools/search/types.ts +8 -133
- package/src/tools/search/utils.ts +5 -13
- package/src/tools/subagent/SubagentExecutor.ts +78 -0
- package/src/types/graph.ts +21 -27
- package/src/types/index.ts +0 -1
- package/src/types/run.ts +0 -2
- package/src/types/tools.ts +0 -9
- package/dist/cjs/langchain/google-common.cjs +0 -3
- package/dist/cjs/langchain/google-common.cjs.map +0 -1
- package/dist/cjs/langchain/index.cjs +0 -86
- package/dist/cjs/langchain/index.cjs.map +0 -1
- package/dist/cjs/langchain/language_models/chat_models.cjs +0 -3
- package/dist/cjs/langchain/language_models/chat_models.cjs.map +0 -1
- package/dist/cjs/langchain/messages/tool.cjs +0 -3
- package/dist/cjs/langchain/messages/tool.cjs.map +0 -1
- package/dist/cjs/langchain/messages.cjs +0 -51
- package/dist/cjs/langchain/messages.cjs.map +0 -1
- package/dist/cjs/langchain/openai.cjs +0 -3
- package/dist/cjs/langchain/openai.cjs.map +0 -1
- package/dist/cjs/langchain/prompts.cjs +0 -11
- package/dist/cjs/langchain/prompts.cjs.map +0 -1
- package/dist/cjs/langchain/runnables.cjs +0 -19
- package/dist/cjs/langchain/runnables.cjs.map +0 -1
- package/dist/cjs/langchain/tools.cjs +0 -23
- package/dist/cjs/langchain/tools.cjs.map +0 -1
- package/dist/cjs/langchain/utils/env.cjs +0 -11
- package/dist/cjs/langchain/utils/env.cjs.map +0 -1
- package/dist/cjs/llm/bedrock/cacheSupport.cjs +0 -55
- package/dist/cjs/llm/bedrock/cacheSupport.cjs.map +0 -1
- package/dist/cjs/tools/search/tavily-scraper.cjs +0 -189
- package/dist/cjs/tools/search/tavily-scraper.cjs.map +0 -1
- package/dist/cjs/tools/search/tavily-search.cjs +0 -372
- package/dist/cjs/tools/search/tavily-search.cjs.map +0 -1
- package/dist/cjs/types/agent-cache.cjs +0 -53
- package/dist/cjs/types/agent-cache.cjs.map +0 -1
- package/dist/esm/langchain/google-common.mjs +0 -2
- package/dist/esm/langchain/google-common.mjs.map +0 -1
- package/dist/esm/langchain/index.mjs +0 -5
- package/dist/esm/langchain/index.mjs.map +0 -1
- package/dist/esm/langchain/language_models/chat_models.mjs +0 -2
- package/dist/esm/langchain/language_models/chat_models.mjs.map +0 -1
- package/dist/esm/langchain/messages/tool.mjs +0 -2
- package/dist/esm/langchain/messages/tool.mjs.map +0 -1
- package/dist/esm/langchain/messages.mjs +0 -2
- package/dist/esm/langchain/messages.mjs.map +0 -1
- package/dist/esm/langchain/openai.mjs +0 -2
- package/dist/esm/langchain/openai.mjs.map +0 -1
- package/dist/esm/langchain/prompts.mjs +0 -2
- package/dist/esm/langchain/prompts.mjs.map +0 -1
- package/dist/esm/langchain/runnables.mjs +0 -2
- package/dist/esm/langchain/runnables.mjs.map +0 -1
- package/dist/esm/langchain/tools.mjs +0 -2
- package/dist/esm/langchain/tools.mjs.map +0 -1
- package/dist/esm/langchain/utils/env.mjs +0 -2
- package/dist/esm/langchain/utils/env.mjs.map +0 -1
- package/dist/esm/llm/bedrock/cacheSupport.mjs +0 -52
- package/dist/esm/llm/bedrock/cacheSupport.mjs.map +0 -1
- package/dist/esm/tools/search/tavily-scraper.mjs +0 -186
- package/dist/esm/tools/search/tavily-scraper.mjs.map +0 -1
- package/dist/esm/tools/search/tavily-search.mjs +0 -370
- package/dist/esm/tools/search/tavily-search.mjs.map +0 -1
- package/dist/esm/types/agent-cache.mjs +0 -51
- package/dist/esm/types/agent-cache.mjs.map +0 -1
- package/dist/types/langchain/google-common.d.ts +0 -1
- package/dist/types/langchain/index.d.ts +0 -8
- package/dist/types/langchain/language_models/chat_models.d.ts +0 -1
- package/dist/types/langchain/messages/tool.d.ts +0 -1
- package/dist/types/langchain/messages.d.ts +0 -2
- package/dist/types/langchain/openai.d.ts +0 -1
- package/dist/types/langchain/prompts.d.ts +0 -1
- package/dist/types/langchain/runnables.d.ts +0 -2
- package/dist/types/langchain/tools.d.ts +0 -2
- package/dist/types/langchain/utils/env.d.ts +0 -1
- package/dist/types/llm/bedrock/cacheSupport.d.ts +0 -35
- package/dist/types/tools/search/tavily-scraper.d.ts +0 -19
- package/dist/types/tools/search/tavily-search.d.ts +0 -4
- package/dist/types/tools/subagent/types.d.ts +0 -84
- package/dist/types/types/agent-cache.d.ts +0 -70
- package/src/agents/AgentContext.js.map +0 -1
- package/src/agents/AgentContext.test.js.map +0 -1
- package/src/agents/__tests__/AgentContext.cacheTtl.live.test.ts +0 -259
- package/src/agents/__tests__/AgentContext.crossAgentTier1.live.test.ts +0 -264
- package/src/agents/__tests__/AgentContext.crossUserCache.live.test.ts +0 -342
- package/src/agents/__tests__/AgentContext.test.js.map +0 -1
- package/src/agents/__tests__/resolveStructuredOutputMode.test.js.map +0 -1
- package/src/common/enum.js.map +0 -1
- package/src/common/index.js.map +0 -1
- package/src/events.js.map +0 -1
- package/src/graphs/Graph.js.map +0 -1
- package/src/graphs/MultiAgentGraph.js.map +0 -1
- package/src/graphs/__tests__/structured-output.integration.test.js.map +0 -1
- package/src/graphs/__tests__/structured-output.test.js.map +0 -1
- package/src/graphs/contextManagement.e2e.test.js.map +0 -1
- package/src/graphs/contextManagement.test.js.map +0 -1
- package/src/graphs/handoffValidation.test.js.map +0 -1
- package/src/graphs/index.js.map +0 -1
- package/src/index.js.map +0 -1
- package/src/instrumentation.js.map +0 -1
- package/src/langchain/google-common.ts +0 -1
- package/src/langchain/index.ts +0 -8
- package/src/langchain/language_models/chat_models.ts +0 -1
- package/src/langchain/messages/tool.ts +0 -5
- package/src/langchain/messages.ts +0 -21
- package/src/langchain/openai.ts +0 -1
- package/src/langchain/prompts.ts +0 -1
- package/src/langchain/runnables.ts +0 -7
- package/src/langchain/tools.ts +0 -8
- package/src/langchain/utils/env.ts +0 -1
- package/src/llm/anthropic/index.js.map +0 -1
- package/src/llm/anthropic/types.js.map +0 -1
- package/src/llm/anthropic/utils/message_inputs.js.map +0 -1
- package/src/llm/anthropic/utils/message_outputs.js.map +0 -1
- package/src/llm/anthropic/utils/output_parsers.js.map +0 -1
- package/src/llm/anthropic/utils/server-tool-inputs.test.ts +0 -436
- package/src/llm/anthropic/utils/tools.js.map +0 -1
- package/src/llm/bedrock/__tests__/bedrock-caching.test.js.map +0 -1
- package/src/llm/bedrock/cacheSupport.test.ts +0 -99
- package/src/llm/bedrock/cacheSupport.ts +0 -53
- package/src/llm/bedrock/index.js.map +0 -1
- package/src/llm/bedrock/types.js.map +0 -1
- package/src/llm/bedrock/utils/index.js.map +0 -1
- package/src/llm/bedrock/utils/message_inputs.js.map +0 -1
- package/src/llm/bedrock/utils/message_outputs.js.map +0 -1
- package/src/llm/fake.js.map +0 -1
- package/src/llm/google/index.js.map +0 -1
- package/src/llm/google/types.js.map +0 -1
- package/src/llm/google/utils/common.js.map +0 -1
- package/src/llm/google/utils/tools.js.map +0 -1
- package/src/llm/google/utils/zod_to_genai_parameters.js.map +0 -1
- package/src/llm/openai/index.js.map +0 -1
- package/src/llm/openai/types.js.map +0 -1
- package/src/llm/openai/utils/index.js.map +0 -1
- package/src/llm/openai/utils/isReasoningModel.test.js.map +0 -1
- package/src/llm/openrouter/index.js.map +0 -1
- package/src/llm/openrouter/reasoning.test.js.map +0 -1
- package/src/llm/providers.js.map +0 -1
- package/src/llm/text.js.map +0 -1
- package/src/llm/vertexai/index.js.map +0 -1
- package/src/messages/__tests__/tools.test.js.map +0 -1
- package/src/messages/cache.js.map +0 -1
- package/src/messages/cache.test.js.map +0 -1
- package/src/messages/content.js.map +0 -1
- package/src/messages/content.test.js.map +0 -1
- package/src/messages/core.js.map +0 -1
- package/src/messages/ensureThinkingBlock.test.js.map +0 -1
- package/src/messages/format.js.map +0 -1
- package/src/messages/formatAgentMessages.test.js.map +0 -1
- package/src/messages/formatAgentMessages.tools.test.js.map +0 -1
- package/src/messages/formatMessage.test.js.map +0 -1
- package/src/messages/ids.js.map +0 -1
- package/src/messages/index.js.map +0 -1
- package/src/messages/labelContentByAgent.test.js.map +0 -1
- package/src/messages/prune.js.map +0 -1
- package/src/messages/reducer.js.map +0 -1
- package/src/messages/shiftIndexTokenCountMap.test.js.map +0 -1
- package/src/messages/summarize.js.map +0 -1
- package/src/messages/summarize.test.js.map +0 -1
- package/src/messages/tools.js.map +0 -1
- package/src/mockStream.js.map +0 -1
- package/src/prompts/collab.js.map +0 -1
- package/src/prompts/index.js.map +0 -1
- package/src/prompts/taskmanager.js.map +0 -1
- package/src/run.js.map +0 -1
- package/src/schemas/index.js.map +0 -1
- package/src/schemas/schema-preparation.test.js.map +0 -1
- package/src/schemas/validate.js.map +0 -1
- package/src/schemas/validate.test.js.map +0 -1
- package/src/scripts/abort.js.map +0 -1
- package/src/scripts/ant_web_search.js.map +0 -1
- package/src/scripts/ant_web_search_edge_case.js.map +0 -1
- package/src/scripts/ant_web_search_error_edge_case.js.map +0 -1
- package/src/scripts/args.js.map +0 -1
- package/src/scripts/bedrock-cache-debug.js.map +0 -1
- package/src/scripts/bedrock-content-aggregation-test.js.map +0 -1
- package/src/scripts/bedrock-merge-test.js.map +0 -1
- package/src/scripts/bedrock-parallel-tools-test.js.map +0 -1
- package/src/scripts/caching.js.map +0 -1
- package/src/scripts/cli.js.map +0 -1
- package/src/scripts/cli2.js.map +0 -1
- package/src/scripts/cli3.js.map +0 -1
- package/src/scripts/cli4.js.map +0 -1
- package/src/scripts/cli5.js.map +0 -1
- package/src/scripts/code_exec.js.map +0 -1
- package/src/scripts/code_exec_files.js.map +0 -1
- package/src/scripts/code_exec_multi_session.js.map +0 -1
- package/src/scripts/code_exec_ptc.js.map +0 -1
- package/src/scripts/code_exec_session.js.map +0 -1
- package/src/scripts/code_exec_simple.js.map +0 -1
- package/src/scripts/content.js.map +0 -1
- package/src/scripts/empty_input.js.map +0 -1
- package/src/scripts/handoff-test.js.map +0 -1
- package/src/scripts/image.js.map +0 -1
- package/src/scripts/memory.js.map +0 -1
- package/src/scripts/multi-agent-chain.js.map +0 -1
- package/src/scripts/multi-agent-conditional.js.map +0 -1
- package/src/scripts/multi-agent-document-review-chain.js.map +0 -1
- package/src/scripts/multi-agent-hybrid-flow.js.map +0 -1
- package/src/scripts/multi-agent-parallel-start.js.map +0 -1
- package/src/scripts/multi-agent-parallel.js.map +0 -1
- package/src/scripts/multi-agent-sequence.js.map +0 -1
- package/src/scripts/multi-agent-supervisor.js.map +0 -1
- package/src/scripts/multi-agent-test.js.map +0 -1
- package/src/scripts/parallel-asymmetric-tools-test.js.map +0 -1
- package/src/scripts/parallel-full-metadata-test.js.map +0 -1
- package/src/scripts/parallel-tools-test.js.map +0 -1
- package/src/scripts/programmatic_exec.js.map +0 -1
- package/src/scripts/programmatic_exec_agent.js.map +0 -1
- package/src/scripts/search.js.map +0 -1
- package/src/scripts/sequential-full-metadata-test.js.map +0 -1
- package/src/scripts/simple.js.map +0 -1
- package/src/scripts/single-agent-metadata-test.js.map +0 -1
- package/src/scripts/stream.js.map +0 -1
- package/src/scripts/test-custom-prompt-key.js.map +0 -1
- package/src/scripts/test-handoff-input.js.map +0 -1
- package/src/scripts/test-handoff-preamble.js.map +0 -1
- package/src/scripts/test-handoff-steering.js.map +0 -1
- package/src/scripts/test-multi-agent-list-handoff.js.map +0 -1
- package/src/scripts/test-parallel-agent-labeling.js.map +0 -1
- package/src/scripts/test-parallel-handoffs.js.map +0 -1
- package/src/scripts/test-thinking-handoff-bedrock.js.map +0 -1
- package/src/scripts/test-thinking-handoff.js.map +0 -1
- package/src/scripts/test-thinking-to-thinking-handoff-bedrock.js.map +0 -1
- package/src/scripts/test-tool-before-handoff-role-order.js.map +0 -1
- package/src/scripts/test-tools-before-handoff.js.map +0 -1
- package/src/scripts/test_code_api.js.map +0 -1
- package/src/scripts/thinking-bedrock.js.map +0 -1
- package/src/scripts/thinking-vertexai.js.map +0 -1
- package/src/scripts/thinking.js.map +0 -1
- package/src/scripts/tool_search.js.map +0 -1
- package/src/scripts/tools.js.map +0 -1
- package/src/specs/agent-handoffs-bedrock.integration.test.js.map +0 -1
- package/src/specs/agent-handoffs.test.js.map +0 -1
- package/src/specs/anthropic.simple.test.js.map +0 -1
- package/src/specs/azure.simple.test.js.map +0 -1
- package/src/specs/cache.simple.test.js.map +0 -1
- package/src/specs/custom-event-await.test.js.map +0 -1
- package/src/specs/deepseek.simple.test.js.map +0 -1
- package/src/specs/emergency-prune.test.js.map +0 -1
- package/src/specs/moonshot.simple.test.js.map +0 -1
- package/src/specs/observability.integration.test.js.map +0 -1
- package/src/specs/openai.simple.test.js.map +0 -1
- package/src/specs/openrouter.simple.test.js.map +0 -1
- package/src/specs/prune.test.js.map +0 -1
- package/src/specs/reasoning.test.js.map +0 -1
- package/src/specs/spec.utils.js.map +0 -1
- package/src/specs/thinking-handoff.test.js.map +0 -1
- package/src/specs/thinking-prune.test.js.map +0 -1
- package/src/specs/token-distribution-edge-case.test.js.map +0 -1
- package/src/specs/token-memoization.test.js.map +0 -1
- package/src/specs/tokens.test.js.map +0 -1
- package/src/specs/tool-error.test.js.map +0 -1
- package/src/splitStream.js.map +0 -1
- package/src/splitStream.test.js.map +0 -1
- package/src/stream.js.map +0 -1
- package/src/stream.test.js.map +0 -1
- package/src/test/mockTools.js.map +0 -1
- package/src/tools/BrowserTools.js.map +0 -1
- package/src/tools/Calculator.js.map +0 -1
- package/src/tools/Calculator.test.js.map +0 -1
- package/src/tools/CodeExecutor.js.map +0 -1
- package/src/tools/ProgrammaticToolCalling.js.map +0 -1
- package/src/tools/StreamingToolCallBuffer.js.map +0 -1
- package/src/tools/ToolNode.js.map +0 -1
- package/src/tools/ToolSearch.js.map +0 -1
- package/src/tools/__tests__/BrowserTools.test.js.map +0 -1
- package/src/tools/__tests__/ProgrammaticToolCalling.integration.test.js.map +0 -1
- package/src/tools/__tests__/ProgrammaticToolCalling.test.js.map +0 -1
- package/src/tools/__tests__/StreamingToolCallBuffer.test.js.map +0 -1
- package/src/tools/__tests__/ToolApproval.test.js.map +0 -1
- package/src/tools/__tests__/ToolNode.recovery.test.js.map +0 -1
- package/src/tools/__tests__/ToolNode.session.test.js.map +0 -1
- package/src/tools/__tests__/ToolSearch.integration.test.js.map +0 -1
- package/src/tools/__tests__/ToolSearch.test.js.map +0 -1
- package/src/tools/__tests__/handlers.test.js.map +0 -1
- package/src/tools/__tests__/truncation-recovery.integration.test.js.map +0 -1
- package/src/tools/handlers.js.map +0 -1
- package/src/tools/schema.js.map +0 -1
- package/src/tools/search/anthropic.js.map +0 -1
- package/src/tools/search/content.js.map +0 -1
- package/src/tools/search/content.test.js.map +0 -1
- package/src/tools/search/firecrawl.js.map +0 -1
- package/src/tools/search/format.js.map +0 -1
- package/src/tools/search/highlights.js.map +0 -1
- package/src/tools/search/index.js.map +0 -1
- package/src/tools/search/jina-reranker.test.js.map +0 -1
- package/src/tools/search/rerankers.js.map +0 -1
- package/src/tools/search/schema.js.map +0 -1
- package/src/tools/search/search.js.map +0 -1
- package/src/tools/search/serper-scraper.js.map +0 -1
- package/src/tools/search/tavily-scraper.ts +0 -235
- package/src/tools/search/tavily-search.ts +0 -424
- package/src/tools/search/tavily.test.ts +0 -965
- package/src/tools/search/test.js.map +0 -1
- package/src/tools/search/tool.js.map +0 -1
- package/src/tools/search/types.js.map +0 -1
- package/src/tools/search/utils.js.map +0 -1
- package/src/tools/subagent/types.test.ts +0 -70
- package/src/tools/subagent/types.ts +0 -115
- package/src/types/agent-cache.ts +0 -73
- package/src/types/graph.js.map +0 -1
- package/src/types/graph.test.js.map +0 -1
- package/src/types/index.js.map +0 -1
- package/src/types/llm.js.map +0 -1
- package/src/types/messages.js.map +0 -1
- package/src/types/run.js.map +0 -1
- package/src/types/stream.js.map +0 -1
- package/src/types/tools.js.map +0 -1
- package/src/utils/contextAnalytics.js.map +0 -1
- package/src/utils/contextAnalytics.test.js.map +0 -1
- package/src/utils/events.js.map +0 -1
- package/src/utils/graph.js.map +0 -1
- package/src/utils/handlers.js.map +0 -1
- package/src/utils/index.js.map +0 -1
- package/src/utils/llm.js.map +0 -1
- package/src/utils/llmConfig.js.map +0 -1
- package/src/utils/logging.js.map +0 -1
- package/src/utils/misc.js.map +0 -1
- package/src/utils/run.js.map +0 -1
- package/src/utils/schema.js.map +0 -1
- package/src/utils/title.js.map +0 -1
- package/src/utils/tokens.js.map +0 -1
- package/src/utils/toonFormat.js.map +0 -1
package/src/index.ts
CHANGED
|
@@ -78,12 +78,6 @@ export * from './utils';
|
|
|
78
78
|
/* Types */
|
|
79
79
|
export type * from './types';
|
|
80
80
|
|
|
81
|
-
/* LangChain compatibility facade — re-exports common langchain primitives
|
|
82
|
-
* so consumers can import from '@illuma-ai/agents/langchain' instead of
|
|
83
|
-
* pinning '@langchain/*' versions directly. Helps keep consumer dep
|
|
84
|
-
* versions in sync with the library's tested set. */
|
|
85
|
-
export * from './langchain';
|
|
86
|
-
|
|
87
81
|
/* LLM */
|
|
88
82
|
export { CustomOpenAIClient } from './llm/openai';
|
|
89
83
|
export { ChatOpenRouter } from './llm/openrouter';
|
|
@@ -592,16 +592,7 @@ function _formatContent(message: BaseMessage) {
|
|
|
592
592
|
throw new Error('Unsupported message content format');
|
|
593
593
|
}
|
|
594
594
|
});
|
|
595
|
-
return contentBlocks.filter(
|
|
596
|
-
(block) =>
|
|
597
|
-
block !== null &&
|
|
598
|
-
!(
|
|
599
|
-
block.type === 'text' &&
|
|
600
|
-
'text' in block &&
|
|
601
|
-
typeof block.text === 'string' &&
|
|
602
|
-
block.text.trim() === ''
|
|
603
|
-
)
|
|
604
|
-
);
|
|
595
|
+
return contentBlocks.filter((block) => block !== null);
|
|
605
596
|
}
|
|
606
597
|
}
|
|
607
598
|
|
|
@@ -194,134 +194,6 @@ describe('Bedrock Prompt Caching', () => {
|
|
|
194
194
|
expect(model.promptCache).toBe(false);
|
|
195
195
|
});
|
|
196
196
|
});
|
|
197
|
-
|
|
198
|
-
describe('Tool cache strategies', () => {
|
|
199
|
-
const fakeTools = [
|
|
200
|
-
{
|
|
201
|
-
toolSpec: {
|
|
202
|
-
name: 'web_search',
|
|
203
|
-
description: 'core search',
|
|
204
|
-
inputSchema: { json: { type: 'object', properties: {} } },
|
|
205
|
-
},
|
|
206
|
-
},
|
|
207
|
-
{
|
|
208
|
-
toolSpec: {
|
|
209
|
-
name: 'execute_code',
|
|
210
|
-
description: 'core code',
|
|
211
|
-
inputSchema: { json: { type: 'object', properties: {} } },
|
|
212
|
-
},
|
|
213
|
-
},
|
|
214
|
-
{
|
|
215
|
-
toolSpec: {
|
|
216
|
-
name: 'search_emails_mcp_Outlook',
|
|
217
|
-
description: 'mcp tool',
|
|
218
|
-
inputSchema: { json: { type: 'object', properties: {} } },
|
|
219
|
-
},
|
|
220
|
-
},
|
|
221
|
-
{
|
|
222
|
-
toolSpec: {
|
|
223
|
-
name: 'list_documents_mcp_SharePoint',
|
|
224
|
-
description: 'mcp tool',
|
|
225
|
-
inputSchema: { json: { type: 'object', properties: {} } },
|
|
226
|
-
},
|
|
227
|
-
},
|
|
228
|
-
];
|
|
229
|
-
|
|
230
|
-
it("default 'single' strategy: one cachePoint at end of tools array", () => {
|
|
231
|
-
const model = new CustomChatBedrockConverse({
|
|
232
|
-
model: 'anthropic.claude-3-haiku-20240307-v1:0',
|
|
233
|
-
region: 'us-east-1',
|
|
234
|
-
promptCache: true,
|
|
235
|
-
// toolCacheStrategy omitted — default is 'single'
|
|
236
|
-
});
|
|
237
|
-
const params = model.invocationParams({
|
|
238
|
-
tools: fakeTools,
|
|
239
|
-
} satisfies InvocationParamsOptions);
|
|
240
|
-
// 4 tools + 1 cachePoint
|
|
241
|
-
expect(params.toolConfig?.tools).toHaveLength(5);
|
|
242
|
-
expect(params.toolConfig?.tools?.[4]).toEqual({
|
|
243
|
-
cachePoint: { type: 'default' },
|
|
244
|
-
});
|
|
245
|
-
});
|
|
246
|
-
|
|
247
|
-
it("'split' strategy with toolGroupSelector groups tools by selector key, cachePoint after each group", () => {
|
|
248
|
-
const model = new CustomChatBedrockConverse({
|
|
249
|
-
model: 'anthropic.claude-3-haiku-20240307-v1:0',
|
|
250
|
-
region: 'us-east-1',
|
|
251
|
-
promptCache: true,
|
|
252
|
-
toolCacheStrategy: 'split',
|
|
253
|
-
toolGroupSelector: (toolName) =>
|
|
254
|
-
toolName.includes('_mcp_') ? 'mcp' : 'core',
|
|
255
|
-
});
|
|
256
|
-
const params = model.invocationParams({
|
|
257
|
-
tools: fakeTools,
|
|
258
|
-
} satisfies InvocationParamsOptions);
|
|
259
|
-
// [core, core, cp, mcp, mcp, cp] = 6 entries
|
|
260
|
-
expect(params.toolConfig?.tools).toHaveLength(6);
|
|
261
|
-
expect(params.toolConfig?.tools?.[0]).toEqual(fakeTools[0]); // core
|
|
262
|
-
expect(params.toolConfig?.tools?.[1]).toEqual(fakeTools[1]); // core
|
|
263
|
-
expect(params.toolConfig?.tools?.[2]).toEqual({
|
|
264
|
-
cachePoint: { type: 'default' },
|
|
265
|
-
});
|
|
266
|
-
expect(params.toolConfig?.tools?.[3]).toEqual(fakeTools[2]); // mcp
|
|
267
|
-
expect(params.toolConfig?.tools?.[4]).toEqual(fakeTools[3]); // mcp
|
|
268
|
-
expect(params.toolConfig?.tools?.[5]).toEqual({
|
|
269
|
-
cachePoint: { type: 'default' },
|
|
270
|
-
});
|
|
271
|
-
});
|
|
272
|
-
|
|
273
|
-
it("'none' strategy: no cachePoint added at all", () => {
|
|
274
|
-
const model = new CustomChatBedrockConverse({
|
|
275
|
-
model: 'anthropic.claude-3-haiku-20240307-v1:0',
|
|
276
|
-
region: 'us-east-1',
|
|
277
|
-
promptCache: true,
|
|
278
|
-
toolCacheStrategy: 'none',
|
|
279
|
-
});
|
|
280
|
-
const params = model.invocationParams({
|
|
281
|
-
tools: fakeTools,
|
|
282
|
-
} satisfies InvocationParamsOptions);
|
|
283
|
-
expect(params.toolConfig?.tools).toHaveLength(4);
|
|
284
|
-
for (const tool of params.toolConfig?.tools ?? []) {
|
|
285
|
-
expect('cachePoint' in tool).toBe(false);
|
|
286
|
-
}
|
|
287
|
-
});
|
|
288
|
-
|
|
289
|
-
it("'split' with single-group selector behaves like 'single'", () => {
|
|
290
|
-
const model = new CustomChatBedrockConverse({
|
|
291
|
-
model: 'anthropic.claude-3-haiku-20240307-v1:0',
|
|
292
|
-
region: 'us-east-1',
|
|
293
|
-
promptCache: true,
|
|
294
|
-
toolCacheStrategy: 'split',
|
|
295
|
-
toolGroupSelector: () => 'all', // every tool same group
|
|
296
|
-
});
|
|
297
|
-
const params = model.invocationParams({
|
|
298
|
-
tools: fakeTools,
|
|
299
|
-
} satisfies InvocationParamsOptions);
|
|
300
|
-
// 4 tools + 1 cachePoint
|
|
301
|
-
expect(params.toolConfig?.tools).toHaveLength(5);
|
|
302
|
-
expect(params.toolConfig?.tools?.[4]).toEqual({
|
|
303
|
-
cachePoint: { type: 'default' },
|
|
304
|
-
});
|
|
305
|
-
});
|
|
306
|
-
|
|
307
|
-
it("'split' with empty groups skipped (only emits cachePoint after non-empty groups)", () => {
|
|
308
|
-
const model = new CustomChatBedrockConverse({
|
|
309
|
-
model: 'anthropic.claude-3-haiku-20240307-v1:0',
|
|
310
|
-
region: 'us-east-1',
|
|
311
|
-
promptCache: true,
|
|
312
|
-
toolCacheStrategy: 'split',
|
|
313
|
-
toolGroupSelector: (name) =>
|
|
314
|
-
name.includes('_mcp_') ? 'mcp' : 'core',
|
|
315
|
-
});
|
|
316
|
-
// Only core tools — no MCP
|
|
317
|
-
const coreOnly = fakeTools.slice(0, 2);
|
|
318
|
-
const params = model.invocationParams({
|
|
319
|
-
tools: coreOnly,
|
|
320
|
-
} satisfies InvocationParamsOptions);
|
|
321
|
-
// 2 core + 1 cachePoint = 3
|
|
322
|
-
expect(params.toolConfig?.tools).toHaveLength(3);
|
|
323
|
-
});
|
|
324
|
-
});
|
|
325
197
|
});
|
|
326
198
|
|
|
327
199
|
describe('AgentContext - System Message Caching', () => {
|
|
@@ -361,13 +233,7 @@ describe('Bedrock Prompt Caching', () => {
|
|
|
361
233
|
};
|
|
362
234
|
|
|
363
235
|
describe('Bedrock system message with promptCache: true', () => {
|
|
364
|
-
|
|
365
|
-
* system message gets a `cachePoint` block inline so the system
|
|
366
|
-
* prefix is cached at the AWS account level (cross-user). Previously
|
|
367
|
-
* cachePoint was only added at the tool level, leaving the system
|
|
368
|
-
* prefix uncached. Tools array still gets its own cachePoints from
|
|
369
|
-
* IllumaBedrockConverse.invocationParams independently. */
|
|
370
|
-
it('emits content array with cachePoint after stable text (Claude model)', async () => {
|
|
236
|
+
it('should produce plain string system message (cachePoint is handled at tool level)', async () => {
|
|
371
237
|
const ctx = createBedrockContext({
|
|
372
238
|
instructions: 'You are a helpful assistant.',
|
|
373
239
|
promptCache: true,
|
|
@@ -376,20 +242,17 @@ describe('Bedrock Prompt Caching', () => {
|
|
|
376
242
|
const systemRunnable = ctx.systemRunnable;
|
|
377
243
|
expect(systemRunnable).toBeDefined();
|
|
378
244
|
|
|
245
|
+
// Invoke the runnable to get the messages
|
|
379
246
|
const result = await systemRunnable!.invoke([]);
|
|
380
247
|
const systemMessage = result[0];
|
|
381
248
|
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
expect(content).
|
|
385
|
-
expect(content
|
|
386
|
-
type: 'text',
|
|
387
|
-
text: 'You are a helpful assistant.',
|
|
388
|
-
});
|
|
389
|
-
expect(content[1]).toEqual({ cachePoint: { type: 'default', ttl: '5m' } });
|
|
249
|
+
// Bedrock system messages are plain strings — cachePoint is added
|
|
250
|
+
// at the tool level by IllumaBedrockConverse.invocationParams()
|
|
251
|
+
expect(typeof systemMessage.content).toBe('string');
|
|
252
|
+
expect(systemMessage.content).toBe('You are a helpful assistant.');
|
|
390
253
|
});
|
|
391
254
|
|
|
392
|
-
it('
|
|
255
|
+
it('should include combined instructions and additional_instructions as plain string', async () => {
|
|
393
256
|
const ctx = createBedrockContext({
|
|
394
257
|
instructions: 'Base instructions.',
|
|
395
258
|
additionalInstructions: 'Additional context.',
|
|
@@ -398,20 +261,11 @@ describe('Bedrock Prompt Caching', () => {
|
|
|
398
261
|
|
|
399
262
|
const result = await ctx.systemRunnable!.invoke([]);
|
|
400
263
|
const systemMessage = result[0];
|
|
401
|
-
const content = systemMessage.content as Array<Record<string, unknown>>;
|
|
402
264
|
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
expect(content).toHaveLength(3);
|
|
408
|
-
expect((content[0] as { text: string }).text).toBe(
|
|
409
|
-
'Base instructions.'
|
|
410
|
-
);
|
|
411
|
-
expect(content[1]).toEqual({ cachePoint: { type: 'default', ttl: '5m' } });
|
|
412
|
-
expect((content[2] as { text: string }).text).toBe(
|
|
413
|
-
'Additional context.'
|
|
414
|
-
);
|
|
265
|
+
// Bedrock system messages are plain strings even with promptCache
|
|
266
|
+
expect(typeof systemMessage.content).toBe('string');
|
|
267
|
+
expect(systemMessage.content).toContain('Base instructions.');
|
|
268
|
+
expect(systemMessage.content).toContain('Additional context.');
|
|
415
269
|
});
|
|
416
270
|
});
|
|
417
271
|
|
|
@@ -458,7 +312,7 @@ describe('Bedrock Prompt Caching', () => {
|
|
|
458
312
|
expect(content[0]).toEqual({
|
|
459
313
|
type: 'text',
|
|
460
314
|
text: 'You are a helpful assistant.',
|
|
461
|
-
cache_control: { type: 'ephemeral'
|
|
315
|
+
cache_control: { type: 'ephemeral' },
|
|
462
316
|
});
|
|
463
317
|
});
|
|
464
318
|
|
|
@@ -476,21 +330,19 @@ describe('Bedrock Prompt Caching', () => {
|
|
|
476
330
|
});
|
|
477
331
|
|
|
478
332
|
describe('Provider-specific caching behavior', () => {
|
|
479
|
-
it('
|
|
333
|
+
it('should produce plain string for Bedrock (cachePoint handled at tool level)', async () => {
|
|
480
334
|
const bedrockCtx = createBedrockContext({
|
|
481
335
|
instructions: 'Test',
|
|
482
336
|
promptCache: true,
|
|
483
337
|
});
|
|
484
338
|
|
|
485
339
|
const result = await bedrockCtx.systemRunnable!.invoke([]);
|
|
486
|
-
const content = result[0].content as Array<Record<string, unknown>>;
|
|
487
340
|
|
|
488
|
-
// Bedrock system messages
|
|
489
|
-
//
|
|
490
|
-
//
|
|
491
|
-
|
|
492
|
-
expect(
|
|
493
|
-
expect(content.some((c) => 'cachePoint' in c)).toBe(true);
|
|
341
|
+
// Bedrock system messages are plain strings — cachePoint is added
|
|
342
|
+
// at the tool level by IllumaBedrockConverse.invocationParams(),
|
|
343
|
+
// not inline in the system message content
|
|
344
|
+
expect(typeof result[0].content).toBe('string');
|
|
345
|
+
expect(result[0].content).toBe('Test');
|
|
494
346
|
});
|
|
495
347
|
|
|
496
348
|
it('should use cache_control format for Anthropic, not cachePoint', async () => {
|
package/src/llm/bedrock/index.ts
CHANGED
|
@@ -38,7 +38,6 @@ import type { BaseMessage } from '@langchain/core/messages';
|
|
|
38
38
|
import { ChatGenerationChunk, ChatResult } from '@langchain/core/outputs';
|
|
39
39
|
import type { CallbackManagerForLLMRun } from '@langchain/core/callbacks/manager';
|
|
40
40
|
import type { ChatBedrockConverseInput } from '@langchain/aws';
|
|
41
|
-
import { isBedrockCacheSupported } from './cacheSupport';
|
|
42
41
|
import {
|
|
43
42
|
convertToConverseMessages,
|
|
44
43
|
handleConverseStreamContentBlockStart,
|
|
@@ -53,72 +52,19 @@ import {
|
|
|
53
52
|
*/
|
|
54
53
|
export type ServiceTierType = 'priority' | 'default' | 'flex' | 'reserved';
|
|
55
54
|
|
|
56
|
-
/**
|
|
57
|
-
* Tool cachePoint allocation strategy.
|
|
58
|
-
*
|
|
59
|
-
* - 'single': one cachePoint at the END of the tools array (whole array
|
|
60
|
-
* cached as one unit). Lightest budget use (1 cachePoint).
|
|
61
|
-
* - 'split': split tools into groups via `toolGroupSelector`. Each
|
|
62
|
-
* non-empty group gets its own cachePoint. Use when groups
|
|
63
|
-
* have different volatility (e.g. stable core tools vs
|
|
64
|
-
* volatile MCP tools). Costs more cachePoint budget.
|
|
65
|
-
* - 'none': no cachePoint on tools array. Use when tool definitions
|
|
66
|
-
* change every request anyway.
|
|
67
|
-
*/
|
|
68
|
-
export type ToolCacheStrategy = 'single' | 'split' | 'none';
|
|
69
|
-
|
|
70
|
-
/**
|
|
71
|
-
* Group selector for `toolCacheStrategy: 'split'`. Receives the tool name
|
|
72
|
-
* and returns a stable group key — tools with the same key are grouped
|
|
73
|
-
* together. Group order in the output array follows first-encounter order.
|
|
74
|
-
*/
|
|
75
|
-
export type ToolGroupSelector = (toolName: string) => string;
|
|
76
|
-
|
|
77
|
-
/**
|
|
78
|
-
* Default group selector — puts all tools in a single group named 'core'.
|
|
79
|
-
* Equivalent to 'single' strategy but explicit. Consumers override this
|
|
80
|
-
* to enable per-source grouping (e.g. ranger uses `_mcp_` substring to
|
|
81
|
-
* separate core from MCP tools).
|
|
82
|
-
*/
|
|
83
|
-
export const DEFAULT_TOOL_GROUP_SELECTOR: ToolGroupSelector = () => 'core';
|
|
84
|
-
|
|
85
55
|
/**
|
|
86
56
|
* Extended input interface with additional features:
|
|
87
57
|
* - promptCache: Enable Bedrock prompt caching for tool definitions
|
|
88
58
|
* - applicationInferenceProfile: Use an inference profile ARN instead of model ID
|
|
89
59
|
* - serviceTier: Specify service tier (Priority, Standard, Flex, Reserved)
|
|
90
|
-
* - toolCacheStrategy: How to allocate cachePoints across tools array
|
|
91
|
-
* - toolGroupSelector: Group key resolver for the 'split' strategy
|
|
92
60
|
*/
|
|
93
61
|
export interface IllumaBedrockConverseInput extends ChatBedrockConverseInput {
|
|
94
62
|
/**
|
|
95
63
|
* Enable Bedrock prompt caching for tool definitions.
|
|
96
|
-
* When true, adds cachePoint
|
|
97
|
-
* `toolCacheStrategy`. Defaults to 'single'.
|
|
64
|
+
* When true, adds cachePoint markers to tools array.
|
|
98
65
|
*/
|
|
99
66
|
promptCache?: boolean;
|
|
100
67
|
|
|
101
|
-
/**
|
|
102
|
-
* Tool cachePoint allocation. Defaults to 'single' — one cachePoint at
|
|
103
|
-
* the end of the tools array. Set to 'split' (with `toolGroupSelector`)
|
|
104
|
-
* when different tool groups have different volatility.
|
|
105
|
-
*/
|
|
106
|
-
toolCacheStrategy?: ToolCacheStrategy;
|
|
107
|
-
|
|
108
|
-
/**
|
|
109
|
-
* Group selector for 'split' strategy. Receives a tool name, returns
|
|
110
|
-
* a stable group key. Defaults to a one-group selector (equivalent
|
|
111
|
-
* to 'single').
|
|
112
|
-
*/
|
|
113
|
-
toolGroupSelector?: ToolGroupSelector;
|
|
114
|
-
|
|
115
|
-
/**
|
|
116
|
-
* Additional model ID patterns to consider Bedrock-cache-supported.
|
|
117
|
-
* Defaults are in `src/llm/bedrock/cacheSupport.ts`. Use this when
|
|
118
|
-
* AWS adds a new model family before the next library release.
|
|
119
|
-
*/
|
|
120
|
-
bedrockCacheModelPatterns?: readonly RegExp[];
|
|
121
|
-
|
|
122
68
|
/**
|
|
123
69
|
* Application Inference Profile ARN to use for the model.
|
|
124
70
|
* For example, "arn:aws:bedrock:eu-west-1:123456789102:application-inference-profile/fm16bt65tzgx"
|
|
@@ -162,24 +108,11 @@ export class IllumaBedrockConverse extends ChatBedrockConverse {
|
|
|
162
108
|
/** Service tier for model invocation */
|
|
163
109
|
serviceTier?: ServiceTierType;
|
|
164
110
|
|
|
165
|
-
/** Tool cachePoint allocation strategy. */
|
|
166
|
-
toolCacheStrategy: ToolCacheStrategy;
|
|
167
|
-
|
|
168
|
-
/** Group selector for 'split' strategy. */
|
|
169
|
-
toolGroupSelector: ToolGroupSelector;
|
|
170
|
-
|
|
171
|
-
/** Optional consumer extensions to the cache-supported model allowlist. */
|
|
172
|
-
bedrockCacheModelPatterns?: readonly RegExp[];
|
|
173
|
-
|
|
174
111
|
constructor(fields?: IllumaBedrockConverseInput) {
|
|
175
112
|
super(fields);
|
|
176
113
|
this.promptCache = fields?.promptCache ?? false;
|
|
177
114
|
this.applicationInferenceProfile = fields?.applicationInferenceProfile;
|
|
178
115
|
this.serviceTier = fields?.serviceTier;
|
|
179
|
-
this.toolCacheStrategy = fields?.toolCacheStrategy ?? 'single';
|
|
180
|
-
this.toolGroupSelector =
|
|
181
|
-
fields?.toolGroupSelector ?? DEFAULT_TOOL_GROUP_SELECTOR;
|
|
182
|
-
this.bedrockCacheModelPatterns = fields?.bedrockCacheModelPatterns;
|
|
183
116
|
|
|
184
117
|
// Fix: Force supportsToolChoiceValues for Claude models
|
|
185
118
|
// The parent constructor checks `model.includes('claude-3')` but this fails when:
|
|
@@ -250,64 +183,56 @@ export class IllumaBedrockConverse extends ChatBedrockConverse {
|
|
|
250
183
|
}
|
|
251
184
|
}
|
|
252
185
|
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
this.model,
|
|
258
|
-
this.bedrockCacheModelPatterns,
|
|
259
|
-
);
|
|
186
|
+
// Only Claude models support cachePoint - check model name
|
|
187
|
+
const modelId = this.model.toLowerCase();
|
|
188
|
+
const isClaudeModel =
|
|
189
|
+
modelId.includes('claude') || modelId.includes('anthropic');
|
|
260
190
|
|
|
261
191
|
if (
|
|
262
192
|
this.promptCache &&
|
|
263
|
-
|
|
264
|
-
this.toolCacheStrategy !== 'none' &&
|
|
193
|
+
isClaudeModel &&
|
|
265
194
|
params.toolConfig?.tools &&
|
|
266
195
|
Array.isArray(params.toolConfig.tools) &&
|
|
267
196
|
params.toolConfig.tools.length > 0
|
|
268
197
|
) {
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
{
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
* after each non-empty group. Group order follows first-encounter
|
|
283
|
-
* order in the input. Use when groups have different volatility
|
|
284
|
-
* (e.g. stable core tools + volatile MCP tools). */
|
|
285
|
-
const groupOrder: string[] = [];
|
|
286
|
-
const groupMap = new Map<string, typeof tools>();
|
|
287
|
-
for (const tool of tools) {
|
|
288
|
-
const toolName =
|
|
289
|
-
(tool as { toolSpec?: { name?: string } }).toolSpec?.name ?? '';
|
|
290
|
-
const groupKey = this.toolGroupSelector(toolName);
|
|
291
|
-
let group = groupMap.get(groupKey);
|
|
292
|
-
if (!group) {
|
|
293
|
-
group = [];
|
|
294
|
-
groupMap.set(groupKey, group);
|
|
295
|
-
groupOrder.push(groupKey);
|
|
296
|
-
}
|
|
297
|
-
group.push(tool);
|
|
198
|
+
// Separate core tools from MCP tools
|
|
199
|
+
// MCP tools have '_mcp_' in their name (e.g., 'search_emails_mcp_Google-Workspace')
|
|
200
|
+
const coreTools: typeof params.toolConfig.tools = [];
|
|
201
|
+
const mcpTools: typeof params.toolConfig.tools = [];
|
|
202
|
+
|
|
203
|
+
for (const tool of params.toolConfig.tools) {
|
|
204
|
+
// Check if tool has a name property with '_mcp_' pattern
|
|
205
|
+
const toolName =
|
|
206
|
+
(tool as { toolSpec?: { name?: string } }).toolSpec?.name ?? '';
|
|
207
|
+
if (toolName.includes('_mcp_')) {
|
|
208
|
+
mcpTools.push(tool);
|
|
209
|
+
} else {
|
|
210
|
+
coreTools.push(tool);
|
|
298
211
|
}
|
|
212
|
+
}
|
|
299
213
|
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
214
|
+
// Build tools array with strategic cachePoints:
|
|
215
|
+
// [CoreTool1, CoreTool2, cachePoint] + [MCPTool1, MCPTool2, cachePoint]
|
|
216
|
+
const toolsWithCache: typeof params.toolConfig.tools = [];
|
|
217
|
+
|
|
218
|
+
// Add core tools with cachePoint (if any)
|
|
219
|
+
if (coreTools.length > 0) {
|
|
220
|
+
toolsWithCache.push(...coreTools);
|
|
221
|
+
toolsWithCache.push({ cachePoint: { type: 'default' } });
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
// Add MCP tools with their own cachePoint (if any)
|
|
225
|
+
if (mcpTools.length > 0) {
|
|
226
|
+
toolsWithCache.push(...mcpTools);
|
|
227
|
+
toolsWithCache.push({ cachePoint: { type: 'default' } });
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
// If no tools at all (shouldn't happen but safety check)
|
|
231
|
+
if (toolsWithCache.length === 0) {
|
|
232
|
+
toolsWithCache.push({ cachePoint: { type: 'default' } });
|
|
310
233
|
}
|
|
234
|
+
|
|
235
|
+
params.toolConfig.tools = toolsWithCache;
|
|
311
236
|
}
|
|
312
237
|
|
|
313
238
|
// Add serviceTier support
|
|
@@ -302,10 +302,6 @@ export function _convertMessagesToOpenAIParams(
|
|
|
302
302
|
model?: string,
|
|
303
303
|
options?: ConvertMessagesOptions
|
|
304
304
|
): OpenAICompletionParam[] {
|
|
305
|
-
/* DeepSeek reasoning roundtrip (upstream PR #136): reasoning_content on
|
|
306
|
-
* an AI message must be re-sent only when the message participates in a
|
|
307
|
-
* tool-call exchange. Track context across the message flat-map. */
|
|
308
|
-
let hasReasoningToolCallContext = false;
|
|
309
305
|
// TODO: Function messages do not support array content, fix cast
|
|
310
306
|
return messages.flatMap((message) => {
|
|
311
307
|
let role = messageToOpenAIRole(message);
|
|
@@ -336,8 +332,6 @@ export function _convertMessagesToOpenAIParams(
|
|
|
336
332
|
role,
|
|
337
333
|
content,
|
|
338
334
|
};
|
|
339
|
-
let messageHasToolCalls = false;
|
|
340
|
-
let messageIsToolResult = false;
|
|
341
335
|
if (message.name != null) {
|
|
342
336
|
completionParam.name = message.name;
|
|
343
337
|
}
|
|
@@ -346,11 +340,17 @@ export function _convertMessagesToOpenAIParams(
|
|
|
346
340
|
completionParam.content = '';
|
|
347
341
|
}
|
|
348
342
|
if (isAIMessage(message) && !!message.tool_calls?.length) {
|
|
349
|
-
messageHasToolCalls = true;
|
|
350
343
|
completionParam.tool_calls = message.tool_calls.map(
|
|
351
344
|
convertLangChainToolCallToOpenAI
|
|
352
345
|
);
|
|
353
346
|
completionParam.content = hasAnthropicThinkingBlock ? content : '';
|
|
347
|
+
if (
|
|
348
|
+
options?.includeReasoningContent === true &&
|
|
349
|
+
message.additional_kwargs.reasoning_content != null
|
|
350
|
+
) {
|
|
351
|
+
completionParam.reasoning_content =
|
|
352
|
+
message.additional_kwargs.reasoning_content;
|
|
353
|
+
}
|
|
354
354
|
if (
|
|
355
355
|
options?.includeReasoningDetails === true &&
|
|
356
356
|
message.additional_kwargs.reasoning_details != null
|
|
@@ -398,10 +398,14 @@ export function _convertMessagesToOpenAIParams(
|
|
|
398
398
|
}
|
|
399
399
|
} else {
|
|
400
400
|
if (message.additional_kwargs.tool_calls != null) {
|
|
401
|
-
messageHasToolCalls =
|
|
402
|
-
!Array.isArray(message.additional_kwargs.tool_calls) ||
|
|
403
|
-
message.additional_kwargs.tool_calls.length > 0;
|
|
404
401
|
completionParam.tool_calls = message.additional_kwargs.tool_calls;
|
|
402
|
+
if (
|
|
403
|
+
options?.includeReasoningContent === true &&
|
|
404
|
+
message.additional_kwargs.reasoning_content != null
|
|
405
|
+
) {
|
|
406
|
+
completionParam.reasoning_content =
|
|
407
|
+
message.additional_kwargs.reasoning_content;
|
|
408
|
+
}
|
|
405
409
|
if (
|
|
406
410
|
options?.includeReasoningDetails === true &&
|
|
407
411
|
message.additional_kwargs.reasoning_details != null
|
|
@@ -449,31 +453,10 @@ export function _convertMessagesToOpenAIParams(
|
|
|
449
453
|
}
|
|
450
454
|
}
|
|
451
455
|
if ((message as ToolMessage).tool_call_id != null) {
|
|
452
|
-
messageIsToolResult = true;
|
|
453
456
|
completionParam.tool_call_id = (message as ToolMessage).tool_call_id;
|
|
454
457
|
}
|
|
455
458
|
}
|
|
456
459
|
|
|
457
|
-
/* DeepSeek reasoning roundtrip (upstream PR #136): emit
|
|
458
|
-
* reasoning_content only when the message is part of a tool-call
|
|
459
|
-
* exchange — either the message itself has tool_calls, or a previous
|
|
460
|
-
* AI/tool message established the context. Skipping the gate causes
|
|
461
|
-
* DeepSeek to drop reasoning content during multi-turn replays. */
|
|
462
|
-
if (
|
|
463
|
-
options?.includeReasoningContent === true &&
|
|
464
|
-
isAIMessage(message) &&
|
|
465
|
-
(hasReasoningToolCallContext || messageHasToolCalls) &&
|
|
466
|
-
typeof message.additional_kwargs.reasoning_content === 'string' &&
|
|
467
|
-
message.additional_kwargs.reasoning_content !== ''
|
|
468
|
-
) {
|
|
469
|
-
completionParam.reasoning_content =
|
|
470
|
-
message.additional_kwargs.reasoning_content;
|
|
471
|
-
}
|
|
472
|
-
|
|
473
|
-
if (messageHasToolCalls || messageIsToolResult) {
|
|
474
|
-
hasReasoningToolCallContext = true;
|
|
475
|
-
}
|
|
476
|
-
|
|
477
460
|
if (
|
|
478
461
|
message.additional_kwargs.audio &&
|
|
479
462
|
typeof message.additional_kwargs.audio === 'object' &&
|