@illuma-ai/agents 1.5.1 → 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 +160 -259
- package/dist/cjs/agents/AgentContext.cjs.map +1 -1
- package/dist/cjs/common/enum.cjs +12 -12
- package/dist/cjs/common/enum.cjs.map +1 -1
- package/dist/cjs/graphs/Graph.cjs +30 -13
- package/dist/cjs/graphs/Graph.cjs.map +1 -1
- package/dist/cjs/graphs/MultiAgentGraph.cjs +1 -1
- package/dist/cjs/graphs/MultiAgentGraph.cjs.map +1 -1
- package/dist/cjs/graphs/phases/memoryFlushPhase.cjs +1 -1
- package/dist/cjs/graphs/phases/memoryFlushPhase.cjs.map +1 -1
- package/dist/cjs/hooks/HookRegistry.cjs +1 -1
- package/dist/cjs/hooks/HookRegistry.cjs.map +1 -1
- package/dist/cjs/hooks/matchers.cjs +2 -2
- package/dist/cjs/hooks/matchers.cjs.map +1 -1
- package/dist/cjs/hooks/types.cjs +1 -1
- package/dist/cjs/hooks/types.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/index.cjs +1 -1
- package/dist/cjs/llm/openai/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/memory/citations.cjs +4 -4
- package/dist/cjs/memory/citations.cjs.map +1 -1
- package/dist/cjs/memory/constants.cjs +17 -17
- package/dist/cjs/memory/constants.cjs.map +1 -1
- package/dist/cjs/memory/mmr.cjs +1 -1
- package/dist/cjs/memory/mmr.cjs.map +1 -1
- package/dist/cjs/memory/paths.cjs +1 -1
- package/dist/cjs/memory/paths.cjs.map +1 -1
- package/dist/cjs/memory/recallTracking.cjs +3 -3
- package/dist/cjs/memory/recallTracking.cjs.map +1 -1
- package/dist/cjs/memory/temporalDecay.cjs +2 -2
- package/dist/cjs/memory/temporalDecay.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 +13 -71
- 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 +13 -41
- 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 +78 -13
- package/dist/cjs/tools/ToolNode.cjs.map +1 -1
- package/dist/cjs/tools/memory/memoryAppendTool.cjs +1 -1
- package/dist/cjs/tools/memory/memoryAppendTool.cjs.map +1 -1
- package/dist/cjs/tools/memory/memoryGetTool.cjs +2 -2
- package/dist/cjs/tools/memory/memoryGetTool.cjs.map +1 -1
- package/dist/cjs/tools/memory/memorySearchTool.cjs +3 -3
- package/dist/cjs/tools/memory/memorySearchTool.cjs.map +1 -1
- package/dist/cjs/tools/memory/shared.cjs +1 -1
- package/dist/cjs/tools/memory/shared.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 +160 -259
- package/dist/esm/agents/AgentContext.mjs.map +1 -1
- package/dist/esm/common/enum.mjs +12 -12
- package/dist/esm/common/enum.mjs.map +1 -1
- package/dist/esm/graphs/Graph.mjs +30 -13
- package/dist/esm/graphs/Graph.mjs.map +1 -1
- package/dist/esm/graphs/MultiAgentGraph.mjs +1 -1
- package/dist/esm/graphs/MultiAgentGraph.mjs.map +1 -1
- package/dist/esm/graphs/phases/memoryFlushPhase.mjs +1 -1
- package/dist/esm/graphs/phases/memoryFlushPhase.mjs.map +1 -1
- package/dist/esm/hooks/HookRegistry.mjs +1 -1
- package/dist/esm/hooks/HookRegistry.mjs.map +1 -1
- package/dist/esm/hooks/matchers.mjs +2 -2
- package/dist/esm/hooks/matchers.mjs.map +1 -1
- package/dist/esm/hooks/types.mjs +1 -1
- package/dist/esm/hooks/types.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/index.mjs +1 -1
- package/dist/esm/llm/openai/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/memory/citations.mjs +4 -4
- package/dist/esm/memory/citations.mjs.map +1 -1
- package/dist/esm/memory/constants.mjs +17 -17
- package/dist/esm/memory/constants.mjs.map +1 -1
- package/dist/esm/memory/mmr.mjs +1 -1
- package/dist/esm/memory/mmr.mjs.map +1 -1
- package/dist/esm/memory/paths.mjs +1 -1
- package/dist/esm/memory/paths.mjs.map +1 -1
- package/dist/esm/memory/recallTracking.mjs +3 -3
- package/dist/esm/memory/recallTracking.mjs.map +1 -1
- package/dist/esm/memory/temporalDecay.mjs +2 -2
- package/dist/esm/memory/temporalDecay.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 +13 -71
- 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 +14 -41
- 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 +78 -13
- package/dist/esm/tools/ToolNode.mjs.map +1 -1
- package/dist/esm/tools/memory/memoryAppendTool.mjs +1 -1
- package/dist/esm/tools/memory/memoryAppendTool.mjs.map +1 -1
- package/dist/esm/tools/memory/memoryGetTool.mjs +2 -2
- package/dist/esm/tools/memory/memoryGetTool.mjs.map +1 -1
- package/dist/esm/tools/memory/memorySearchTool.mjs +3 -3
- package/dist/esm/tools/memory/memorySearchTool.mjs.map +1 -1
- package/dist/esm/tools/memory/shared.mjs +1 -1
- package/dist/esm/tools/memory/shared.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/common/enum.d.ts +12 -12
- package/dist/types/graphs/Graph.d.ts +2 -2
- package/dist/types/graphs/phases/memoryFlushPhase.d.ts +2 -2
- package/dist/types/hooks/HookRegistry.d.ts +1 -1
- package/dist/types/hooks/matchers.d.ts +2 -2
- package/dist/types/hooks/types.d.ts +1 -1
- package/dist/types/index.d.ts +0 -1
- package/dist/types/llm/bedrock/index.d.ts +1 -54
- package/dist/types/llm/openai/index.d.ts +1 -1
- package/dist/types/memory/citations.d.ts +4 -4
- package/dist/types/memory/constants.d.ts +17 -17
- package/dist/types/memory/mmr.d.ts +3 -3
- package/dist/types/memory/paths.d.ts +1 -1
- package/dist/types/memory/temporalDecay.d.ts +2 -2
- package/dist/types/memory/types.d.ts +3 -3
- package/dist/types/messages/format.d.ts +2 -5
- package/dist/types/tools/CodeExecutor.d.ts +0 -6
- package/dist/types/tools/ToolNode.d.ts +3 -3
- package/dist/types/tools/memory/shared.d.ts +1 -1
- package/dist/types/tools/search/test.d.ts +1 -0
- 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 +30 -34
- package/dist/types/types/index.d.ts +0 -1
- package/dist/types/types/messages.d.ts +1 -1
- package/dist/types/types/run.d.ts +1 -3
- package/dist/types/types/tools.d.ts +5 -14
- package/package.json +1 -61
- package/src/agents/AgentContext.test.ts +176 -0
- package/src/agents/AgentContext.ts +179 -305
- package/src/agents/__tests__/AgentContext.test.ts +0 -632
- package/src/common/__tests__/enum.test.ts +1 -1
- package/src/common/enum.ts +12 -12
- package/src/graphs/Graph.ts +32 -13
- package/src/graphs/MultiAgentGraph.ts +1 -1
- package/src/graphs/gapFeatures.test.ts +1 -1
- package/src/graphs/phases/__tests__/memoryFlushPhase.test.ts +1 -1
- package/src/graphs/phases/memoryFlushPhase.ts +2 -2
- package/src/hooks/HookRegistry.ts +1 -1
- package/src/hooks/index.ts +1 -1
- package/src/hooks/matchers.ts +2 -2
- package/src/hooks/types.ts +1 -1
- 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/index.ts +2 -2
- package/src/llm/openai/utils/index.ts +14 -31
- package/src/memory/citations.ts +4 -4
- package/src/memory/constants.ts +17 -17
- package/src/memory/mmr.ts +3 -3
- package/src/memory/paths.ts +1 -1
- package/src/memory/recallTracking.ts +3 -3
- package/src/memory/temporalDecay.ts +2 -2
- package/src/memory/types.ts +3 -3
- package/src/messages/cache.test.ts +24 -62
- package/src/messages/cache.ts +0 -112
- package/src/messages/ensureThinkingBlock.test.ts +1 -1
- package/src/messages/format.ts +13 -92
- package/src/messages/formatAgentMessages.test.ts +1 -1
- package/src/scripts/subagent-configurable-inheritance.ts +263 -0
- package/src/scripts/subagent-event-driven-debug.ts +2 -2
- package/src/specs/anthropic.simple.test.ts +0 -61
- package/src/specs/prune.orphans.test.ts +1 -1
- package/src/tools/BashExecutor.ts +13 -37
- package/src/tools/CodeExecutor.ts +14 -59
- package/src/tools/ProgrammaticToolCalling.ts +14 -29
- package/src/tools/ToolNode.ts +75 -14
- package/src/tools/__tests__/CodeExecutor.test.ts +3 -3
- package/src/tools/__tests__/ProgrammaticToolCalling.test.ts +0 -60
- package/src/tools/__tests__/SubagentExecutor.test.ts +157 -0
- package/src/tools/memory/memoryAppendTool.ts +1 -1
- package/src/tools/memory/memoryGetTool.ts +2 -2
- package/src/tools/memory/memorySearchTool.ts +3 -3
- package/src/tools/memory/shared.ts +1 -1
- package/src/tools/search/output.md +2775 -0
- package/src/tools/search/search.ts +2 -12
- package/src/tools/search/test.html +884 -0
- package/src/tools/search/test.md +643 -0
- package/src/tools/search/test.ts +159 -0
- package/src/tools/search/tool.ts +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 +27 -34
- package/src/types/index.ts +0 -1
- package/src/types/messages.ts +1 -1
- package/src/types/run.ts +1 -3
- package/src/types/tools.ts +5 -14
- 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 -54
- 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 -52
- 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 -71
- package/src/agents/__tests__/AgentContext.cacheTtl.live.test.ts +0 -259
- package/src/agents/__tests__/AgentContext.crossAgentTier1.live.test.ts +0 -266
- package/src/agents/__tests__/AgentContext.crossUserCache.live.test.ts +0 -342
- 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/utils/server-tool-inputs.test.ts +0 -436
- package/src/llm/bedrock/cacheSupport.test.ts +0 -99
- package/src/llm/bedrock/cacheSupport.ts +0 -53
- 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/subagent/types.test.ts +0 -70
- package/src/tools/subagent/types.ts +0 -115
- package/src/types/agent-cache.ts +0 -74
|
@@ -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
|
});
|