@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
|
@@ -83,9 +83,6 @@ interface LangChainMessage {
|
|
|
83
83
|
* @returns - The formatted LangChain message.
|
|
84
84
|
*/
|
|
85
85
|
export declare const formatFromLangChain: (message: LangChainMessage) => Record<string, any>;
|
|
86
|
-
interface FormatAgentMessagesOptions {
|
|
87
|
-
provider?: Providers;
|
|
88
|
-
}
|
|
89
86
|
/**
|
|
90
87
|
* Groups content parts by agent and formats them with agent labels
|
|
91
88
|
* This preprocesses multi-agent content to prevent identity confusion
|
|
@@ -113,7 +110,7 @@ export declare const labelContentByAgent: (contentParts: MessageContentComplex[]
|
|
|
113
110
|
* ToolMessage. Upstream PRs #96 / #97.
|
|
114
111
|
* @returns - Object containing formatted messages and updated indexTokenCountMap if provided.
|
|
115
112
|
*/
|
|
116
|
-
export declare const formatAgentMessages: (payload: TPayload, indexTokenCountMap?: Record<number, number | undefined>, tools?: Set<string>, skills?: Map<string, string
|
|
113
|
+
export declare const formatAgentMessages: (payload: TPayload, indexTokenCountMap?: Record<number, number | undefined>, tools?: Set<string>, skills?: Map<string, string>) => {
|
|
117
114
|
messages: Array<HumanMessage | AIMessage | SystemMessage | ToolMessage>;
|
|
118
115
|
indexTokenCountMap?: Record<number, number>;
|
|
119
116
|
};
|
|
@@ -3,12 +3,6 @@ import type * as t from '@/types';
|
|
|
3
3
|
import { Constants } from '@/common';
|
|
4
4
|
export declare const imageExtRegex: RegExp;
|
|
5
5
|
export declare const getCodeBaseURL: () => string;
|
|
6
|
-
/**
|
|
7
|
-
* Renders one section of the post-execution file listing. Used by the
|
|
8
|
-
* code/bash tool formatters to keep generated outputs and inherited
|
|
9
|
-
* inputs visually separated. See BashExecutor for full docs.
|
|
10
|
-
*/
|
|
11
|
-
export declare function renderFileSection(header: string, files: t.FileRefs, defaultMessage: string): string;
|
|
12
6
|
export declare const CodeExecutionToolSchema: {
|
|
13
7
|
readonly type: "object";
|
|
14
8
|
readonly properties: {
|
|
@@ -2,8 +2,8 @@ import type { Logger as WinstonLogger } from 'winston';
|
|
|
2
2
|
import type { RunnableConfig } from '@langchain/core/runnables';
|
|
3
3
|
import type { BaseReranker } from './rerankers';
|
|
4
4
|
import { DATE_RANGE } from './schema';
|
|
5
|
-
export type SearchProvider = 'serper' | 'searxng'
|
|
6
|
-
export type ScraperProvider = 'firecrawl' | 'serper'
|
|
5
|
+
export type SearchProvider = 'serper' | 'searxng';
|
|
6
|
+
export type ScraperProvider = 'firecrawl' | 'serper';
|
|
7
7
|
export type RerankerType = 'infinity' | 'jina' | 'cohere' | 'none';
|
|
8
8
|
export interface Highlight {
|
|
9
9
|
score: number;
|
|
@@ -56,50 +56,11 @@ export interface Source {
|
|
|
56
56
|
snippet?: string;
|
|
57
57
|
date?: string;
|
|
58
58
|
}
|
|
59
|
-
export type TavilyTimeRange = 'day' | 'week' | 'month' | 'year';
|
|
60
|
-
export type TavilyTimeRangeInput = TavilyTimeRange | 'h' | 'd' | 'w' | 'm' | 'y';
|
|
61
|
-
export interface TavilySearchOptions {
|
|
62
|
-
searchDepth?: 'basic' | 'advanced' | 'fast' | 'ultra-fast';
|
|
63
|
-
maxResults?: number;
|
|
64
|
-
includeImages?: boolean;
|
|
65
|
-
includeAnswer?: boolean | 'basic' | 'advanced';
|
|
66
|
-
includeRawContent?: boolean | 'markdown' | 'text';
|
|
67
|
-
includeDomains?: string[];
|
|
68
|
-
excludeDomains?: string[];
|
|
69
|
-
topic?: 'general' | 'news' | 'finance';
|
|
70
|
-
timeRange?: TavilyTimeRangeInput;
|
|
71
|
-
includeImageDescriptions?: boolean;
|
|
72
|
-
includeFavicon?: boolean;
|
|
73
|
-
chunksPerSource?: number;
|
|
74
|
-
safeSearch?: boolean;
|
|
75
|
-
timeout?: number;
|
|
76
|
-
}
|
|
77
|
-
export interface TavilySearchPayload {
|
|
78
|
-
query: string;
|
|
79
|
-
search_depth: NonNullable<TavilySearchOptions['searchDepth']>;
|
|
80
|
-
topic: NonNullable<TavilySearchOptions['topic']>;
|
|
81
|
-
max_results: number;
|
|
82
|
-
safe_search?: boolean;
|
|
83
|
-
time_range?: TavilyTimeRange;
|
|
84
|
-
country?: string;
|
|
85
|
-
include_images?: boolean;
|
|
86
|
-
include_answer?: NonNullable<TavilySearchOptions['includeAnswer']>;
|
|
87
|
-
include_raw_content?: NonNullable<TavilySearchOptions['includeRawContent']>;
|
|
88
|
-
include_domains?: string[];
|
|
89
|
-
exclude_domains?: string[];
|
|
90
|
-
include_image_descriptions?: boolean;
|
|
91
|
-
include_favicon?: boolean;
|
|
92
|
-
chunks_per_source?: number;
|
|
93
|
-
}
|
|
94
59
|
export interface SearchConfig {
|
|
95
60
|
searchProvider?: SearchProvider;
|
|
96
61
|
serperApiKey?: string;
|
|
97
62
|
searxngInstanceUrl?: string;
|
|
98
63
|
searxngApiKey?: string;
|
|
99
|
-
tavilyApiKey?: string;
|
|
100
|
-
tavilySearchUrl?: string;
|
|
101
|
-
tavilyExtractUrl?: string;
|
|
102
|
-
tavilySearchOptions?: TavilySearchOptions;
|
|
103
64
|
/** Domains to exclude from search results (e.g., 'reddit.com', 'twitter.com').
|
|
104
65
|
* Appended as -site: operators to the search query. */
|
|
105
66
|
domainBlocklist?: string[];
|
|
@@ -140,16 +101,6 @@ export interface SerperScraperConfig {
|
|
|
140
101
|
logger?: Logger;
|
|
141
102
|
includeMarkdown?: boolean;
|
|
142
103
|
}
|
|
143
|
-
export interface TavilyScraperConfig {
|
|
144
|
-
apiKey?: string;
|
|
145
|
-
apiUrl?: string;
|
|
146
|
-
timeout?: number;
|
|
147
|
-
logger?: Logger;
|
|
148
|
-
extractDepth?: 'basic' | 'advanced';
|
|
149
|
-
includeImages?: boolean;
|
|
150
|
-
includeFavicon?: boolean;
|
|
151
|
-
format?: 'markdown' | 'text';
|
|
152
|
-
}
|
|
153
104
|
export interface ScraperContentResult {
|
|
154
105
|
content: string;
|
|
155
106
|
}
|
|
@@ -190,7 +141,6 @@ export interface CohereRerankerResponse {
|
|
|
190
141
|
export type SafeSearchLevel = 0 | 1 | 2;
|
|
191
142
|
export type Logger = WinstonLogger;
|
|
192
143
|
export interface SearchToolConfig extends SearchConfig, ProcessSourcesConfig, FirecrawlConfig {
|
|
193
|
-
tavilyScraperOptions?: TavilyScraperConfig;
|
|
194
144
|
logger?: Logger;
|
|
195
145
|
safeSearch?: SafeSearchLevel;
|
|
196
146
|
jinaApiKey?: string;
|
|
@@ -213,27 +163,15 @@ export type UsedReferences = {
|
|
|
213
163
|
originalIndex: number;
|
|
214
164
|
reference: MediaReference;
|
|
215
165
|
}[];
|
|
216
|
-
export type AnyScraperResponse = FirecrawlScrapeResponse | SerperScrapeResponse | TavilyScrapeResponse;
|
|
217
166
|
/** Base Scraper Interface */
|
|
218
167
|
export interface BaseScraper {
|
|
219
|
-
scrapeUrl(url: string, options?: unknown): Promise<[string,
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
extractMetadata(response: AnyScraperResponse): ScrapeMetadata | GenericScrapeMetadata;
|
|
168
|
+
scrapeUrl(url: string, options?: unknown): Promise<[string, FirecrawlScrapeResponse | SerperScrapeResponse]>;
|
|
169
|
+
extractContent(response: FirecrawlScrapeResponse | SerperScrapeResponse): [string, undefined | References];
|
|
170
|
+
extractMetadata(response: FirecrawlScrapeResponse | SerperScrapeResponse): ScrapeMetadata | Record<string, string | number | boolean | null | undefined>;
|
|
223
171
|
}
|
|
224
172
|
/** Firecrawl */
|
|
225
173
|
export type FirecrawlScrapeOptions = Omit<FirecrawlScraperConfig, 'apiKey' | 'apiUrl' | 'version' | 'logger'>;
|
|
226
174
|
export type SerperScrapeOptions = Omit<SerperScraperConfig, 'apiKey' | 'apiUrl' | 'logger'>;
|
|
227
|
-
export type TavilyScrapeOptions = Omit<TavilyScraperConfig, 'apiKey' | 'apiUrl' | 'logger'>;
|
|
228
|
-
export interface TavilyExtractPayload {
|
|
229
|
-
urls: string[];
|
|
230
|
-
extract_depth: NonNullable<TavilyScraperConfig['extractDepth']>;
|
|
231
|
-
include_images: boolean;
|
|
232
|
-
include_favicon?: boolean;
|
|
233
|
-
format?: NonNullable<TavilyScraperConfig['format']>;
|
|
234
|
-
timeout?: number;
|
|
235
|
-
}
|
|
236
|
-
export type GenericScrapeMetadata = Record<string, string | number | boolean | null | undefined>;
|
|
237
175
|
export interface ScrapeMetadata {
|
|
238
176
|
sourceURL?: string;
|
|
239
177
|
url?: string;
|
|
@@ -309,38 +247,6 @@ export interface SerperScrapeResponse {
|
|
|
309
247
|
};
|
|
310
248
|
error?: string;
|
|
311
249
|
}
|
|
312
|
-
export interface TavilyScrapeResponse {
|
|
313
|
-
success: boolean;
|
|
314
|
-
data?: {
|
|
315
|
-
rawContent?: string;
|
|
316
|
-
images?: string[];
|
|
317
|
-
favicon?: string;
|
|
318
|
-
};
|
|
319
|
-
error?: string;
|
|
320
|
-
}
|
|
321
|
-
export interface TavilySearchResult {
|
|
322
|
-
title?: string;
|
|
323
|
-
url?: string;
|
|
324
|
-
content?: string;
|
|
325
|
-
score?: number;
|
|
326
|
-
published_date?: string;
|
|
327
|
-
}
|
|
328
|
-
export type TavilyImageResult = string | {
|
|
329
|
-
url?: string;
|
|
330
|
-
description?: string;
|
|
331
|
-
};
|
|
332
|
-
export interface TavilySearchResponse {
|
|
333
|
-
answer?: string;
|
|
334
|
-
images?: TavilyImageResult[];
|
|
335
|
-
results?: TavilySearchResult[];
|
|
336
|
-
}
|
|
337
|
-
export interface TavilyExtractResult {
|
|
338
|
-
url: string;
|
|
339
|
-
raw_content?: string;
|
|
340
|
-
images?: string[];
|
|
341
|
-
favicon?: string;
|
|
342
|
-
error?: string;
|
|
343
|
-
}
|
|
344
250
|
export interface FirecrawlScraperConfig {
|
|
345
251
|
apiKey?: string;
|
|
346
252
|
apiUrl?: string;
|
|
@@ -6,5 +6,5 @@ import type * as t from './types';
|
|
|
6
6
|
*/
|
|
7
7
|
export declare const createDefaultLogger: () => t.Logger;
|
|
8
8
|
export declare const fileExtRegex: RegExp;
|
|
9
|
-
export declare const getDomainName: (link: string, metadata?: t.ScrapeMetadata
|
|
10
|
-
export declare function getAttribution(link: string, metadata?: t.ScrapeMetadata
|
|
9
|
+
export declare const getDomainName: (link: string, metadata?: t.ScrapeMetadata, logger?: t.Logger) => string | undefined;
|
|
10
|
+
export declare function getAttribution(link: string, metadata?: t.ScrapeMetadata, logger?: t.Logger): string | undefined;
|
|
@@ -15,6 +15,35 @@ export type SubagentExecuteParams = {
|
|
|
15
15
|
* without relying on event ordering heuristics.
|
|
16
16
|
*/
|
|
17
17
|
parentToolCallId?: string;
|
|
18
|
+
/**
|
|
19
|
+
* Snapshot of the parent invocation's `config.configurable` at the
|
|
20
|
+
* spawn-tool call site. Inherited verbatim into the child workflow's
|
|
21
|
+
* `configurable` so host-set fields (`requestBody`, `user`,
|
|
22
|
+
* `userMCPAuthMap`, etc.) propagate — fixing MCP body-placeholder
|
|
23
|
+
* substitution and per-user lookups for subagent tool calls.
|
|
24
|
+
*
|
|
25
|
+
* Inheritance details (verified empirically against LangGraph):
|
|
26
|
+
* - host-set keys propagate as-is into the child's tool dispatches;
|
|
27
|
+
* - `thread_id` propagates (with `childRunId` as a fallback when
|
|
28
|
+
* parent did not supply one) — matches the "subagent is part of
|
|
29
|
+
* the same conversation" mental model and aligns with the
|
|
30
|
+
* `sessionId: this.parentRunId` convention this executor already
|
|
31
|
+
* uses for `SubagentStart` / `SubagentStop` hooks;
|
|
32
|
+
* - `parent_run_id` propagates when the host put it on parent's
|
|
33
|
+
* configurable;
|
|
34
|
+
* - `run_id` is *overwritten by the LangGraph runtime* at child
|
|
35
|
+
* invoke time regardless of what we forward — child's tool
|
|
36
|
+
* dispatches see the child graph's runtime runId in
|
|
37
|
+
* `configurable.run_id`, not the parent's. Hosts that need
|
|
38
|
+
* parent-scoped run identity for downstream consumers should
|
|
39
|
+
* plumb it via a host-defined key (e.g. `requestBody.messageId`),
|
|
40
|
+
* not `run_id`.
|
|
41
|
+
*
|
|
42
|
+
* A future revision will likely make this inheritance configurable
|
|
43
|
+
* per spawn type — background / async subagents may want isolation
|
|
44
|
+
* rather than sharing parent's host context.
|
|
45
|
+
*/
|
|
46
|
+
parentConfigurable?: Record<string, unknown>;
|
|
18
47
|
};
|
|
19
48
|
export type SubagentExecuteResult = {
|
|
20
49
|
content: string;
|
|
@@ -10,7 +10,6 @@ import type { StandardGraph, MultiAgentGraph } from '@/graphs';
|
|
|
10
10
|
import type { ClientOptions } from '@/types/llm';
|
|
11
11
|
import type { RunStep, RunStepDeltaEvent, MessageDeltaEvent, ReasoningDeltaEvent } from '@/types/stream';
|
|
12
12
|
import type { TokenCounter } from '@/types/run';
|
|
13
|
-
import type { SystemCacheBlock, AgentCacheTTL } from '@/types/agent-cache';
|
|
14
13
|
/** Interface for bound model with stream and invoke methods */
|
|
15
14
|
export interface ChatModel {
|
|
16
15
|
stream?: (messages: BaseMessage[], config?: RunnableConfig) => Promise<AsyncIterable<AIMessageChunk>>;
|
|
@@ -568,36 +567,10 @@ export interface AgentInputs {
|
|
|
568
567
|
toolMap?: ToolMap;
|
|
569
568
|
tools?: GraphTools;
|
|
570
569
|
provider: Providers;
|
|
571
|
-
/**
|
|
572
|
-
* Ordered list of cacheable system content blocks emitted BEFORE
|
|
573
|
-
* `instructions` in the system message. Each block gets its own cache
|
|
574
|
-
* marker (cachePoint on Bedrock, cache_control on Anthropic) so the
|
|
575
|
-
* cache key for each block includes only the bytes up to and including
|
|
576
|
-
* its own marker. Entries are emitted in array order — earlier =
|
|
577
|
-
* stabler = wider cache key (best for cross-tenant sharing).
|
|
578
|
-
*
|
|
579
|
-
* See `src/types/agent-cache.ts` for full semantics. Capped at
|
|
580
|
-
* `MAX_SYSTEM_CACHE_BLOCKS` (2) entries to stay within Bedrock's
|
|
581
|
-
* 4-cachePoint budget after the tools array consumes 2.
|
|
582
|
-
*/
|
|
583
|
-
system_cache_blocks?: SystemCacheBlock[];
|
|
584
|
-
/**
|
|
585
|
-
* Stable/cacheable system instructions for this agent. Always emitted
|
|
586
|
-
* with its own trailing cache marker (when caching is supported by
|
|
587
|
-
* the provider/model). Use `instructions_cache_ttl` to override the
|
|
588
|
-
* default '5m' TTL.
|
|
589
|
-
*/
|
|
590
570
|
instructions?: string;
|
|
591
|
-
/** TTL for the trailing `instructions` cache marker. Defaults to '5m'. */
|
|
592
|
-
instructions_cache_ttl?: AgentCacheTTL;
|
|
593
571
|
streamBuffer?: number;
|
|
594
572
|
maxContextTokens?: number;
|
|
595
573
|
clientOptions?: ClientOptions;
|
|
596
|
-
/**
|
|
597
|
-
* Dynamic system tail appended after the cacheable instructions
|
|
598
|
-
* without any cache marker. Per-user / per-message context belongs
|
|
599
|
-
* here so it does not invalidate the cacheable prefix.
|
|
600
|
-
*/
|
|
601
574
|
additional_instructions?: string;
|
|
602
575
|
reasoningKey?: 'reasoning_content' | 'reasoning';
|
|
603
576
|
/**
|
|
@@ -688,6 +661,30 @@ export interface AgentInputs {
|
|
|
688
661
|
* @see SummarizationConfig
|
|
689
662
|
*/
|
|
690
663
|
summarizationConfig?: SummarizationConfig;
|
|
664
|
+
/**
|
|
665
|
+
* Workspace-shared system-message tiers. Each entry becomes a separate
|
|
666
|
+
* text block in the SystemMessage with its own cachePoint / cache_control
|
|
667
|
+
* marker, allowing the platform-tier bytes (e.g. shared branding, tool
|
|
668
|
+
* routing rules, code-executor instructions) to be hashed independently
|
|
669
|
+
* from the per-agent `instructions` block. Hosts that don't use tiered
|
|
670
|
+
* caching can leave this undefined; behavior falls back to the legacy
|
|
671
|
+
* single SystemMessage.
|
|
672
|
+
*
|
|
673
|
+
* Anthropic / Bedrock prompt-cache lookups are forward-prefix-hash, so
|
|
674
|
+
* blocks are emitted in array order BEFORE `instructions`. Up to 4 blocks
|
|
675
|
+
* are supported (the LLM cap on cache breakpoints).
|
|
676
|
+
*/
|
|
677
|
+
system_cache_blocks?: Array<{
|
|
678
|
+
text: string;
|
|
679
|
+
ttl?: '5m' | '1h';
|
|
680
|
+
}>;
|
|
681
|
+
/**
|
|
682
|
+
* TTL hint for the per-agent `instructions` block's cache marker.
|
|
683
|
+
* Defaults to '5m' (matching addCacheControl message-level behavior).
|
|
684
|
+
* Only consulted when `system_cache_blocks` is set; otherwise the
|
|
685
|
+
* legacy SystemMessage path is unchanged.
|
|
686
|
+
*/
|
|
687
|
+
instructions_cache_ttl?: '5m' | '1h';
|
|
691
688
|
/**
|
|
692
689
|
* Lightweight file manifest for the conversation.
|
|
693
690
|
* Contains file IDs, names, and metadata — NOT full content.
|
|
@@ -62,9 +62,7 @@ export interface AgentStateChannels {
|
|
|
62
62
|
messages: BaseMessage[];
|
|
63
63
|
next: string;
|
|
64
64
|
[key: string]: unknown;
|
|
65
|
-
/** Stable/cacheable system instructions for this agent. */
|
|
66
65
|
instructions?: string;
|
|
67
|
-
/** Dynamic system tail appended after stable instructions. */
|
|
68
66
|
additional_instructions?: string;
|
|
69
67
|
}
|
|
70
68
|
export interface Member {
|
|
@@ -123,15 +123,6 @@ export type FileRef = {
|
|
|
123
123
|
path?: string;
|
|
124
124
|
/** Session ID this file belongs to (for multi-session file tracking) */
|
|
125
125
|
session_id?: string;
|
|
126
|
-
/**
|
|
127
|
-
* `true` when the codeapi sandbox echoed this entry as an unchanged
|
|
128
|
-
* passthrough of an input the caller already owns (skill files,
|
|
129
|
-
* downloaded inputs whose hash matched the baseline, inherited
|
|
130
|
-
* `.dirkeep` markers). The tool-result formatter renders these as
|
|
131
|
-
* "Available files" rather than "Generated files" so the LLM doesn't
|
|
132
|
-
* conflate infrastructure inputs with newly-produced outputs.
|
|
133
|
-
*/
|
|
134
|
-
inherited?: true;
|
|
135
126
|
};
|
|
136
127
|
export type FileRefs = FileRef[];
|
|
137
128
|
export type ExecuteResult = {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@illuma-ai/agents",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "2.1.1",
|
|
4
4
|
"main": "./dist/cjs/main.cjs",
|
|
5
5
|
"module": "./dist/esm/main.mjs",
|
|
6
6
|
"types": "./dist/types/index.d.ts",
|
|
@@ -9,66 +9,6 @@
|
|
|
9
9
|
"import": "./dist/esm/main.mjs",
|
|
10
10
|
"require": "./dist/cjs/main.cjs",
|
|
11
11
|
"types": "./dist/types/index.d.ts"
|
|
12
|
-
},
|
|
13
|
-
"./langchain": {
|
|
14
|
-
"import": "./dist/esm/langchain/index.mjs",
|
|
15
|
-
"require": "./dist/cjs/langchain/index.cjs",
|
|
16
|
-
"types": "./dist/types/langchain/index.d.ts"
|
|
17
|
-
},
|
|
18
|
-
"./langchain/language_models/chat_models": {
|
|
19
|
-
"import": "./dist/esm/langchain/language_models/chat_models.mjs",
|
|
20
|
-
"require": "./dist/cjs/langchain/language_models/chat_models.cjs",
|
|
21
|
-
"types": "./dist/types/langchain/language_models/chat_models.d.ts"
|
|
22
|
-
},
|
|
23
|
-
"./langchain/messages": {
|
|
24
|
-
"import": "./dist/esm/langchain/messages.mjs",
|
|
25
|
-
"require": "./dist/cjs/langchain/messages.cjs",
|
|
26
|
-
"types": "./dist/types/langchain/messages.d.ts"
|
|
27
|
-
},
|
|
28
|
-
"./langchain/messages/tool": {
|
|
29
|
-
"import": "./dist/esm/langchain/messages/tool.mjs",
|
|
30
|
-
"require": "./dist/cjs/langchain/messages/tool.cjs",
|
|
31
|
-
"types": "./dist/types/langchain/messages/tool.d.ts"
|
|
32
|
-
},
|
|
33
|
-
"./langchain/google-common": {
|
|
34
|
-
"import": "./dist/esm/langchain/google-common.mjs",
|
|
35
|
-
"require": "./dist/cjs/langchain/google-common.cjs",
|
|
36
|
-
"types": "./dist/types/langchain/google-common.d.ts"
|
|
37
|
-
},
|
|
38
|
-
"./langchain/openai": {
|
|
39
|
-
"import": "./dist/esm/langchain/openai.mjs",
|
|
40
|
-
"require": "./dist/cjs/langchain/openai.cjs",
|
|
41
|
-
"types": "./dist/types/langchain/openai.d.ts"
|
|
42
|
-
},
|
|
43
|
-
"./langchain/prompts": {
|
|
44
|
-
"import": "./dist/esm/langchain/prompts.mjs",
|
|
45
|
-
"require": "./dist/cjs/langchain/prompts.cjs",
|
|
46
|
-
"types": "./dist/types/langchain/prompts.d.ts"
|
|
47
|
-
},
|
|
48
|
-
"./langchain/runnables": {
|
|
49
|
-
"import": "./dist/esm/langchain/runnables.mjs",
|
|
50
|
-
"require": "./dist/cjs/langchain/runnables.cjs",
|
|
51
|
-
"types": "./dist/types/langchain/runnables.d.ts"
|
|
52
|
-
},
|
|
53
|
-
"./langchain/tools": {
|
|
54
|
-
"import": "./dist/esm/langchain/tools.mjs",
|
|
55
|
-
"require": "./dist/cjs/langchain/tools.cjs",
|
|
56
|
-
"types": "./dist/types/langchain/tools.d.ts"
|
|
57
|
-
},
|
|
58
|
-
"./langchain/utils/env": {
|
|
59
|
-
"import": "./dist/esm/langchain/utils/env.mjs",
|
|
60
|
-
"require": "./dist/cjs/langchain/utils/env.cjs",
|
|
61
|
-
"types": "./dist/types/langchain/utils/env.d.ts"
|
|
62
|
-
}
|
|
63
|
-
},
|
|
64
|
-
"typesVersions": {
|
|
65
|
-
"*": {
|
|
66
|
-
"langchain": [
|
|
67
|
-
"dist/types/langchain/index.d.ts"
|
|
68
|
-
],
|
|
69
|
-
"langchain/*": [
|
|
70
|
-
"dist/types/langchain/*"
|
|
71
|
-
]
|
|
72
12
|
}
|
|
73
13
|
},
|
|
74
14
|
"type": "module",
|
|
@@ -455,4 +455,180 @@ describe('AgentContext', () => {
|
|
|
455
455
|
expect(mockCallback).toHaveBeenCalledTimes(1);
|
|
456
456
|
});
|
|
457
457
|
});
|
|
458
|
+
|
|
459
|
+
describe('system_cache_blocks (tiered prompt cache)', () => {
|
|
460
|
+
/**
|
|
461
|
+
* `buildSystemRunnable` is private, so we exercise it via the public
|
|
462
|
+
* `initializeSystemRunnable` method and inspect the SystemMessage that
|
|
463
|
+
* gets prepended by the resulting runnable.
|
|
464
|
+
*/
|
|
465
|
+
const extractSystemMessage = async (context: AgentContext) => {
|
|
466
|
+
context.initializeSystemRunnable();
|
|
467
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
468
|
+
const runnable = (context as unknown as { cachedSystemRunnable: any })
|
|
469
|
+
.cachedSystemRunnable;
|
|
470
|
+
if (!runnable) return undefined;
|
|
471
|
+
const result = await runnable.invoke([]);
|
|
472
|
+
return result[0];
|
|
473
|
+
};
|
|
474
|
+
|
|
475
|
+
it('stores systemCacheBlocks and instructionsCacheTtl on context', () => {
|
|
476
|
+
const config: t.AgentInputs = {
|
|
477
|
+
agentId: 'tier-test',
|
|
478
|
+
provider: Providers.BEDROCK,
|
|
479
|
+
clientOptions: { model: 'anthropic.claude-3-5-sonnet-20241022-v2:0' },
|
|
480
|
+
instructions: 'agent specific',
|
|
481
|
+
system_cache_blocks: [
|
|
482
|
+
{ text: 'platform tier text', ttl: '5m' },
|
|
483
|
+
],
|
|
484
|
+
instructions_cache_ttl: '1h',
|
|
485
|
+
};
|
|
486
|
+
const context = AgentContext.fromConfig(config);
|
|
487
|
+
expect(context.systemCacheBlocks).toEqual([
|
|
488
|
+
{ text: 'platform tier text', ttl: '5m' },
|
|
489
|
+
]);
|
|
490
|
+
expect(context.instructionsCacheTtl).toBe('1h');
|
|
491
|
+
});
|
|
492
|
+
|
|
493
|
+
it('emits multi-block SystemMessage with single cachePoint after Tier 1 for Bedrock Claude', async () => {
|
|
494
|
+
const config: t.AgentInputs = {
|
|
495
|
+
agentId: 'bedrock-claude',
|
|
496
|
+
provider: Providers.BEDROCK,
|
|
497
|
+
clientOptions: {
|
|
498
|
+
model: 'anthropic.claude-3-5-sonnet-20241022-v2:0',
|
|
499
|
+
promptCache: true,
|
|
500
|
+
} as t.BedrockAnthropicClientOptions,
|
|
501
|
+
instructions: 'AGENT_TIER_2',
|
|
502
|
+
system_cache_blocks: [{ text: 'PLATFORM_TIER_1' }],
|
|
503
|
+
};
|
|
504
|
+
const context = AgentContext.fromConfig(config);
|
|
505
|
+
const systemMessage = await extractSystemMessage(context);
|
|
506
|
+
expect(systemMessage).toBeDefined();
|
|
507
|
+
const content = systemMessage?.content as Array<Record<string, unknown>>;
|
|
508
|
+
expect(Array.isArray(content)).toBe(true);
|
|
509
|
+
// Only the platform tier gets an explicit cachePoint; the trailing
|
|
510
|
+
// per-agent block is uncached at the system layer (tools breakpoint
|
|
511
|
+
// covers it via forward-prefix-hash).
|
|
512
|
+
expect(content).toEqual([
|
|
513
|
+
{ type: 'text', text: 'PLATFORM_TIER_1' },
|
|
514
|
+
{ cachePoint: { type: 'default' } },
|
|
515
|
+
{ type: 'text', text: expect.stringContaining('AGENT_TIER_2') },
|
|
516
|
+
]);
|
|
517
|
+
});
|
|
518
|
+
|
|
519
|
+
it('emits cache_control on Tier 1 text block only for Anthropic with promptCache=true', async () => {
|
|
520
|
+
const config: t.AgentInputs = {
|
|
521
|
+
agentId: 'anthropic-direct',
|
|
522
|
+
provider: Providers.ANTHROPIC,
|
|
523
|
+
clientOptions: {
|
|
524
|
+
model: 'claude-3-5-sonnet-20241022',
|
|
525
|
+
promptCache: true,
|
|
526
|
+
} as t.AnthropicClientOptions,
|
|
527
|
+
instructions: 'AGENT_TIER_2',
|
|
528
|
+
system_cache_blocks: [{ text: 'PLATFORM_TIER_1' }],
|
|
529
|
+
};
|
|
530
|
+
const context = AgentContext.fromConfig(config);
|
|
531
|
+
const systemMessage = await extractSystemMessage(context);
|
|
532
|
+
const content = systemMessage?.content as Array<Record<string, unknown>>;
|
|
533
|
+
expect(content).toEqual([
|
|
534
|
+
{
|
|
535
|
+
type: 'text',
|
|
536
|
+
text: 'PLATFORM_TIER_1',
|
|
537
|
+
cache_control: { type: 'ephemeral' },
|
|
538
|
+
},
|
|
539
|
+
{
|
|
540
|
+
type: 'text',
|
|
541
|
+
text: expect.stringContaining('AGENT_TIER_2'),
|
|
542
|
+
},
|
|
543
|
+
]);
|
|
544
|
+
});
|
|
545
|
+
|
|
546
|
+
it('falls back to single string SystemMessage for Bedrock Nova (no cachePoint support)', async () => {
|
|
547
|
+
const config: t.AgentInputs = {
|
|
548
|
+
agentId: 'bedrock-nova',
|
|
549
|
+
provider: Providers.BEDROCK,
|
|
550
|
+
clientOptions: {
|
|
551
|
+
model: 'amazon.nova-pro-v1:0',
|
|
552
|
+
promptCache: true,
|
|
553
|
+
} as unknown as t.BedrockAnthropicClientOptions,
|
|
554
|
+
instructions: 'AGENT_TIER_2',
|
|
555
|
+
system_cache_blocks: [{ text: 'PLATFORM_TIER_1' }],
|
|
556
|
+
};
|
|
557
|
+
const context = AgentContext.fromConfig(config);
|
|
558
|
+
const systemMessage = await extractSystemMessage(context);
|
|
559
|
+
// Non-Claude Bedrock: tiered emission disabled, content stays string
|
|
560
|
+
expect(typeof systemMessage?.content).toBe('string');
|
|
561
|
+
expect(systemMessage?.content).toContain('AGENT_TIER_2');
|
|
562
|
+
// platform tier is NOT in the system message because the lib can't
|
|
563
|
+
// emit a cachePoint for it on Nova; ranger's quick-patch puts the
|
|
564
|
+
// bytes into `instructions` for Nova-style providers.
|
|
565
|
+
expect(systemMessage?.content).not.toContain('PLATFORM_TIER_1');
|
|
566
|
+
});
|
|
567
|
+
|
|
568
|
+
it('falls back to single string for Bedrock Claude when promptCache is false', async () => {
|
|
569
|
+
const config: t.AgentInputs = {
|
|
570
|
+
agentId: 'bedrock-claude-nopc',
|
|
571
|
+
provider: Providers.BEDROCK,
|
|
572
|
+
clientOptions: {
|
|
573
|
+
model: 'anthropic.claude-3-5-sonnet-20241022-v2:0',
|
|
574
|
+
promptCache: false,
|
|
575
|
+
} as t.BedrockAnthropicClientOptions,
|
|
576
|
+
instructions: 'AGENT_TIER_2',
|
|
577
|
+
system_cache_blocks: [{ text: 'PLATFORM_TIER_1' }],
|
|
578
|
+
};
|
|
579
|
+
const context = AgentContext.fromConfig(config);
|
|
580
|
+
const systemMessage = await extractSystemMessage(context);
|
|
581
|
+
expect(typeof systemMessage?.content).toBe('string');
|
|
582
|
+
});
|
|
583
|
+
|
|
584
|
+
it('preserves legacy single-block Anthropic caching when no system_cache_blocks set', async () => {
|
|
585
|
+
const config: t.AgentInputs = {
|
|
586
|
+
agentId: 'anthropic-legacy',
|
|
587
|
+
provider: Providers.ANTHROPIC,
|
|
588
|
+
clientOptions: {
|
|
589
|
+
model: 'claude-3-5-sonnet-20241022',
|
|
590
|
+
promptCache: true,
|
|
591
|
+
} as t.AnthropicClientOptions,
|
|
592
|
+
instructions: 'AGENT_INSTR',
|
|
593
|
+
};
|
|
594
|
+
const context = AgentContext.fromConfig(config);
|
|
595
|
+
const systemMessage = await extractSystemMessage(context);
|
|
596
|
+
const content = systemMessage?.content as Array<Record<string, unknown>>;
|
|
597
|
+
expect(content).toEqual([
|
|
598
|
+
{
|
|
599
|
+
type: 'text',
|
|
600
|
+
text: expect.stringContaining('AGENT_INSTR'),
|
|
601
|
+
cache_control: { type: 'ephemeral' },
|
|
602
|
+
},
|
|
603
|
+
]);
|
|
604
|
+
});
|
|
605
|
+
|
|
606
|
+
it('emits multiple Tier 1 text blocks but only ONE cachePoint at the boundary', async () => {
|
|
607
|
+
const config: t.AgentInputs = {
|
|
608
|
+
agentId: 'multi-tier',
|
|
609
|
+
provider: Providers.BEDROCK,
|
|
610
|
+
clientOptions: {
|
|
611
|
+
model: 'anthropic.claude-3-5-sonnet-20241022-v2:0',
|
|
612
|
+
promptCache: true,
|
|
613
|
+
} as t.BedrockAnthropicClientOptions,
|
|
614
|
+
instructions: 'PER_AGENT',
|
|
615
|
+
system_cache_blocks: [
|
|
616
|
+
{ text: 'TIER1_PLATFORM' },
|
|
617
|
+
{ text: 'TIER1_CAPABILITIES' },
|
|
618
|
+
],
|
|
619
|
+
};
|
|
620
|
+
const context = AgentContext.fromConfig(config);
|
|
621
|
+
const systemMessage = await extractSystemMessage(context);
|
|
622
|
+
const content = systemMessage?.content as Array<Record<string, unknown>>;
|
|
623
|
+
// Multiple Tier 1 entries collapse into the same cached prefix —
|
|
624
|
+
// only one cachePoint is emitted (at the Tier1→Tier2 boundary) so
|
|
625
|
+
// we don't blow the 4-breakpoint cap from Anthropic/Bedrock.
|
|
626
|
+
expect(content).toEqual([
|
|
627
|
+
{ type: 'text', text: 'TIER1_PLATFORM' },
|
|
628
|
+
{ type: 'text', text: 'TIER1_CAPABILITIES' },
|
|
629
|
+
{ cachePoint: { type: 'default' } },
|
|
630
|
+
{ type: 'text', text: expect.stringContaining('PER_AGENT') },
|
|
631
|
+
]);
|
|
632
|
+
});
|
|
633
|
+
});
|
|
458
634
|
});
|