agentfootprint 9.136.0 → 9.138.0
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/AGENTS.md +1 -1
- package/CAPABILITIES.md +5 -0
- package/ai-instructions/claude-code/SKILL.md +1 -1
- package/dist/adapters/llm/AnthropicProvider.js +10 -2
- package/dist/adapters/llm/AnthropicProvider.js.map +1 -1
- package/dist/adapters/llm/BrowserAnthropicProvider.js +8 -0
- package/dist/adapters/llm/BrowserAnthropicProvider.js.map +1 -1
- package/dist/adapters/llm/BrowserOpenAIProvider.js +30 -0
- package/dist/adapters/llm/BrowserOpenAIProvider.js.map +1 -1
- package/dist/adapters/llm/FoundryProvider.js +2 -0
- package/dist/adapters/llm/FoundryProvider.js.map +1 -1
- package/dist/adapters/llm/InvokeModelGatewayProvider.js +16 -0
- package/dist/adapters/llm/InvokeModelGatewayProvider.js.map +1 -1
- package/dist/adapters/llm/MockProvider.js +3 -0
- package/dist/adapters/llm/MockProvider.js.map +1 -1
- package/dist/adapters/llm/OllamaProvider.js +7 -0
- package/dist/adapters/llm/OllamaProvider.js.map +1 -1
- package/dist/adapters/llm/OpenAIProvider.js +25 -0
- package/dist/adapters/llm/OpenAIProvider.js.map +1 -1
- package/dist/adapters/llm/anthropicCacheWire.js +32 -10
- package/dist/adapters/llm/anthropicCacheWire.js.map +1 -1
- package/dist/adapters/llm/anthropicMessagesWire.js +12 -11
- package/dist/adapters/llm/anthropicMessagesWire.js.map +1 -1
- package/dist/adapters/types.js.map +1 -1
- package/dist/bridge/eventMeta.js +5 -1
- package/dist/bridge/eventMeta.js.map +1 -1
- package/dist/bridge/eventSourcePosition.js +63 -0
- package/dist/bridge/eventSourcePosition.js.map +1 -0
- package/dist/cache/CacheDecisionSubflow.js +79 -21
- package/dist/cache/CacheDecisionSubflow.js.map +1 -1
- package/dist/cache/cacheStrategyFor.js +77 -0
- package/dist/cache/cacheStrategyFor.js.map +1 -0
- package/dist/cache/index.js +26 -38
- package/dist/cache/index.js.map +1 -1
- package/dist/cache/strategies/AutomaticCacheStrategy.js +47 -0
- package/dist/cache/strategies/AutomaticCacheStrategy.js.map +1 -0
- package/dist/cache/strategies/BreakpointCacheStrategy.js +60 -0
- package/dist/cache/strategies/BreakpointCacheStrategy.js.map +1 -0
- package/dist/cache/strategies/NoOpCacheStrategy.js +9 -25
- package/dist/cache/strategies/NoOpCacheStrategy.js.map +1 -1
- package/dist/cache/types.js +5 -4
- package/dist/cache/types.js.map +1 -1
- package/dist/core/Agent.js +209 -146
- package/dist/core/Agent.js.map +1 -1
- package/dist/core/LLMCall.js +14 -17
- package/dist/core/LLMCall.js.map +1 -1
- package/dist/core/RunnerBase.js +17 -1
- package/dist/core/RunnerBase.js.map +1 -1
- package/dist/core/agent/AgentBuilder.js +24 -33
- package/dist/core/agent/AgentBuilder.js.map +1 -1
- package/dist/core/agent/act.js +3 -19
- package/dist/core/agent/act.js.map +1 -1
- package/dist/core/agent/assessment/stage.js +8 -0
- package/dist/core/agent/assessment/stage.js.map +1 -1
- package/dist/core/agent/buildAgentChart.js +8 -9
- package/dist/core/agent/buildAgentChart.js.map +1 -1
- package/dist/core/agent/buildCacheSubflow.js +4 -3
- package/dist/core/agent/buildCacheSubflow.js.map +1 -1
- package/dist/core/agent/buildDynamicAgentChart.js +16 -8
- package/dist/core/agent/buildDynamicAgentChart.js.map +1 -1
- package/dist/core/agent/honesty/mounts.js.map +1 -1
- package/dist/core/agent/middleware/ledger.js +1 -1
- package/dist/core/agent/middleware/messagePhase.js +24 -0
- package/dist/core/agent/middleware/messagePhase.js.map +1 -0
- package/dist/core/agent/skillBrains.js +3 -3
- package/dist/core/agent/skillBrains.js.map +1 -1
- package/dist/core/agent/stages/answerValidation.js +6 -3
- package/dist/core/agent/stages/answerValidation.js.map +1 -1
- package/dist/core/agent/stages/breakFinal.js +30 -1
- package/dist/core/agent/stages/breakFinal.js.map +1 -1
- package/dist/core/agent/stages/callLLM.js +15 -9
- package/dist/core/agent/stages/callLLM.js.map +1 -1
- package/dist/core/agent/stages/outputAdmission.js +14 -0
- package/dist/core/agent/stages/outputAdmission.js.map +1 -0
- package/dist/core/agent/stages/prepareFinal.js +96 -27
- package/dist/core/agent/stages/prepareFinal.js.map +1 -1
- package/dist/core/agent/stages/reliabilityExecution.js +46 -7
- package/dist/core/agent/stages/reliabilityExecution.js.map +1 -1
- package/dist/core/agent/stages/seed.js +8 -10
- package/dist/core/agent/stages/seed.js.map +1 -1
- package/dist/core/agent/stages/toolCalls.js +63 -42
- package/dist/core/agent/stages/toolCalls.js.map +1 -1
- package/dist/core/agent/toolArgsValidation.js +35 -11
- package/dist/core/agent/toolArgsValidation.js.map +1 -1
- package/dist/core/agent/toolDispatch.js +8 -2
- package/dist/core/agent/toolDispatch.js.map +1 -1
- package/dist/core/agent/toolSecurityEvents.js +23 -0
- package/dist/core/agent/toolSecurityEvents.js.map +1 -0
- package/dist/core/codeRunnerTool.js +1 -0
- package/dist/core/codeRunnerTool.js.map +1 -1
- package/dist/core/conversation.js +21 -6
- package/dist/core/conversation.js.map +1 -1
- package/dist/core/slots/buildThinkingSubflow.js +2 -3
- package/dist/core/slots/buildThinkingSubflow.js.map +1 -1
- package/dist/core/terminalVerdict.js +48 -0
- package/dist/core/terminalVerdict.js.map +1 -0
- package/dist/core-flow/Conditional.js +14 -5
- package/dist/core-flow/Conditional.js.map +1 -1
- package/dist/core-flow/Graph.js +20 -3
- package/dist/core-flow/Graph.js.map +1 -1
- package/dist/core-flow/Loop.js +13 -6
- package/dist/core-flow/Loop.js.map +1 -1
- package/dist/core-flow/Parallel.js +16 -7
- package/dist/core-flow/Parallel.js.map +1 -1
- package/dist/core-flow/Sequence.js +16 -5
- package/dist/core-flow/Sequence.js.map +1 -1
- package/dist/core-flow/Workflow.js +20 -3
- package/dist/core-flow/Workflow.js.map +1 -1
- package/dist/core-flow/childOutcome.js +64 -0
- package/dist/core-flow/childOutcome.js.map +1 -0
- package/dist/esm/adapters/llm/AnthropicProvider.d.ts +3 -1
- package/dist/esm/adapters/llm/AnthropicProvider.js +11 -3
- package/dist/esm/adapters/llm/AnthropicProvider.js.map +1 -1
- package/dist/esm/adapters/llm/BrowserAnthropicProvider.d.ts +2 -0
- package/dist/esm/adapters/llm/BrowserAnthropicProvider.js +8 -0
- package/dist/esm/adapters/llm/BrowserAnthropicProvider.js.map +1 -1
- package/dist/esm/adapters/llm/BrowserOpenAIProvider.d.ts +8 -0
- package/dist/esm/adapters/llm/BrowserOpenAIProvider.js +30 -0
- package/dist/esm/adapters/llm/BrowserOpenAIProvider.js.map +1 -1
- package/dist/esm/adapters/llm/FoundryProvider.js +2 -0
- package/dist/esm/adapters/llm/FoundryProvider.js.map +1 -1
- package/dist/esm/adapters/llm/InvokeModelGatewayProvider.d.ts +1 -0
- package/dist/esm/adapters/llm/InvokeModelGatewayProvider.js +16 -0
- package/dist/esm/adapters/llm/InvokeModelGatewayProvider.js.map +1 -1
- package/dist/esm/adapters/llm/MockProvider.d.ts +2 -0
- package/dist/esm/adapters/llm/MockProvider.js +3 -0
- package/dist/esm/adapters/llm/MockProvider.js.map +1 -1
- package/dist/esm/adapters/llm/OllamaProvider.d.ts +1 -0
- package/dist/esm/adapters/llm/OllamaProvider.js +7 -0
- package/dist/esm/adapters/llm/OllamaProvider.js.map +1 -1
- package/dist/esm/adapters/llm/OpenAIProvider.d.ts +5 -0
- package/dist/esm/adapters/llm/OpenAIProvider.js +25 -0
- package/dist/esm/adapters/llm/OpenAIProvider.js.map +1 -1
- package/dist/esm/adapters/llm/anthropicCacheWire.d.ts +27 -9
- package/dist/esm/adapters/llm/anthropicCacheWire.js +31 -9
- package/dist/esm/adapters/llm/anthropicCacheWire.js.map +1 -1
- package/dist/esm/adapters/llm/anthropicMessagesWire.d.ts +1 -1
- package/dist/esm/adapters/llm/anthropicMessagesWire.js +12 -11
- package/dist/esm/adapters/llm/anthropicMessagesWire.js.map +1 -1
- package/dist/esm/adapters/types.d.ts +13 -0
- package/dist/esm/adapters/types.js.map +1 -1
- package/dist/esm/bridge/eventMeta.d.ts +5 -1
- package/dist/esm/bridge/eventMeta.js +5 -1
- package/dist/esm/bridge/eventMeta.js.map +1 -1
- package/dist/esm/bridge/eventSourcePosition.d.ts +10 -0
- package/dist/esm/bridge/eventSourcePosition.js +59 -0
- package/dist/esm/bridge/eventSourcePosition.js.map +1 -0
- package/dist/esm/cache/CacheDecisionSubflow.d.ts +44 -8
- package/dist/esm/cache/CacheDecisionSubflow.js +77 -19
- package/dist/esm/cache/CacheDecisionSubflow.js.map +1 -1
- package/dist/esm/cache/cacheStrategyFor.d.ts +42 -0
- package/dist/esm/cache/cacheStrategyFor.js +73 -0
- package/dist/esm/cache/cacheStrategyFor.js.map +1 -0
- package/dist/esm/cache/index.d.ts +20 -29
- package/dist/esm/cache/index.js +22 -31
- package/dist/esm/cache/index.js.map +1 -1
- package/dist/esm/cache/strategies/AutomaticCacheStrategy.d.ts +37 -0
- package/dist/esm/cache/strategies/AutomaticCacheStrategy.js +43 -0
- package/dist/esm/cache/strategies/AutomaticCacheStrategy.js.map +1 -0
- package/dist/esm/cache/strategies/BreakpointCacheStrategy.d.ts +40 -0
- package/dist/esm/cache/strategies/BreakpointCacheStrategy.js +56 -0
- package/dist/esm/cache/strategies/BreakpointCacheStrategy.js.map +1 -0
- package/dist/esm/cache/strategies/NoOpCacheStrategy.d.ts +8 -18
- package/dist/esm/cache/strategies/NoOpCacheStrategy.js +9 -25
- package/dist/esm/cache/strategies/NoOpCacheStrategy.js.map +1 -1
- package/dist/esm/cache/types.d.ts +79 -78
- package/dist/esm/cache/types.js +5 -4
- package/dist/esm/cache/types.js.map +1 -1
- package/dist/esm/core/Agent.d.ts +36 -10
- package/dist/esm/core/Agent.js +210 -147
- package/dist/esm/core/Agent.js.map +1 -1
- package/dist/esm/core/LLMCall.d.ts +3 -4
- package/dist/esm/core/LLMCall.js +15 -18
- package/dist/esm/core/LLMCall.js.map +1 -1
- package/dist/esm/core/RunnerBase.d.ts +11 -0
- package/dist/esm/core/RunnerBase.js +15 -0
- package/dist/esm/core/RunnerBase.js.map +1 -1
- package/dist/esm/core/agent/AgentBuilder.d.ts +24 -33
- package/dist/esm/core/agent/AgentBuilder.js +24 -33
- package/dist/esm/core/agent/AgentBuilder.js.map +1 -1
- package/dist/esm/core/agent/act.d.ts +5 -2
- package/dist/esm/core/agent/act.js +3 -19
- package/dist/esm/core/agent/act.js.map +1 -1
- package/dist/esm/core/agent/assessment/stage.d.ts +2 -0
- package/dist/esm/core/agent/assessment/stage.js +8 -0
- package/dist/esm/core/agent/assessment/stage.js.map +1 -1
- package/dist/esm/core/agent/buildAgentChart.d.ts +5 -1
- package/dist/esm/core/agent/buildAgentChart.js +9 -10
- package/dist/esm/core/agent/buildAgentChart.js.map +1 -1
- package/dist/esm/core/agent/buildCacheSubflow.d.ts +4 -2
- package/dist/esm/core/agent/buildCacheSubflow.js +5 -4
- package/dist/esm/core/agent/buildCacheSubflow.js.map +1 -1
- package/dist/esm/core/agent/buildDynamicAgentChart.js +17 -9
- package/dist/esm/core/agent/buildDynamicAgentChart.js.map +1 -1
- package/dist/esm/core/agent/honesty/mounts.d.ts +2 -0
- package/dist/esm/core/agent/honesty/mounts.js.map +1 -1
- package/dist/esm/core/agent/middleware/ledger.d.ts +1 -1
- package/dist/esm/core/agent/middleware/ledger.js +1 -1
- package/dist/esm/core/agent/middleware/messagePhase.d.ts +5 -0
- package/dist/esm/core/agent/middleware/messagePhase.js +19 -0
- package/dist/esm/core/agent/middleware/messagePhase.js.map +1 -0
- package/dist/esm/core/agent/skillBrains.d.ts +5 -3
- package/dist/esm/core/agent/skillBrains.js +3 -3
- package/dist/esm/core/agent/skillBrains.js.map +1 -1
- package/dist/esm/core/agent/stages/answerValidation.d.ts +6 -1
- package/dist/esm/core/agent/stages/answerValidation.js +6 -3
- package/dist/esm/core/agent/stages/answerValidation.js.map +1 -1
- package/dist/esm/core/agent/stages/breakFinal.d.ts +16 -0
- package/dist/esm/core/agent/stages/breakFinal.js +27 -0
- package/dist/esm/core/agent/stages/breakFinal.js.map +1 -1
- package/dist/esm/core/agent/stages/callLLM.d.ts +3 -1
- package/dist/esm/core/agent/stages/callLLM.js +15 -9
- package/dist/esm/core/agent/stages/callLLM.js.map +1 -1
- package/dist/esm/core/agent/stages/outputAdmission.d.ts +6 -0
- package/dist/esm/core/agent/stages/outputAdmission.js +10 -0
- package/dist/esm/core/agent/stages/outputAdmission.js.map +1 -0
- package/dist/esm/core/agent/stages/prepareFinal.d.ts +18 -41
- package/dist/esm/core/agent/stages/prepareFinal.js +93 -25
- package/dist/esm/core/agent/stages/prepareFinal.js.map +1 -1
- package/dist/esm/core/agent/stages/reliabilityExecution.d.ts +8 -1
- package/dist/esm/core/agent/stages/reliabilityExecution.js +46 -7
- package/dist/esm/core/agent/stages/reliabilityExecution.js.map +1 -1
- package/dist/esm/core/agent/stages/seed.js +8 -10
- package/dist/esm/core/agent/stages/seed.js.map +1 -1
- package/dist/esm/core/agent/stages/toolCalls.js +63 -42
- package/dist/esm/core/agent/stages/toolCalls.js.map +1 -1
- package/dist/esm/core/agent/toolArgsValidation.d.ts +9 -5
- package/dist/esm/core/agent/toolArgsValidation.js +35 -11
- package/dist/esm/core/agent/toolArgsValidation.js.map +1 -1
- package/dist/esm/core/agent/toolDispatch.d.ts +3 -2
- package/dist/esm/core/agent/toolDispatch.js +8 -2
- package/dist/esm/core/agent/toolDispatch.js.map +1 -1
- package/dist/esm/core/agent/toolSecurityEvents.d.ts +18 -0
- package/dist/esm/core/agent/toolSecurityEvents.js +19 -0
- package/dist/esm/core/agent/toolSecurityEvents.js.map +1 -0
- package/dist/esm/core/agent/types.d.ts +4 -4
- package/dist/esm/core/codeRunnerTool.js +1 -0
- package/dist/esm/core/codeRunnerTool.js.map +1 -1
- package/dist/esm/core/conversation.d.ts +16 -1
- package/dist/esm/core/conversation.js +20 -5
- package/dist/esm/core/conversation.js.map +1 -1
- package/dist/esm/core/slots/buildThinkingSubflow.d.ts +2 -2
- package/dist/esm/core/slots/buildThinkingSubflow.js +2 -3
- package/dist/esm/core/slots/buildThinkingSubflow.js.map +1 -1
- package/dist/esm/core/terminalVerdict.d.ts +56 -0
- package/dist/esm/core/terminalVerdict.js +43 -0
- package/dist/esm/core/terminalVerdict.js.map +1 -0
- package/dist/esm/core-flow/Conditional.js +15 -6
- package/dist/esm/core-flow/Conditional.js.map +1 -1
- package/dist/esm/core-flow/Graph.js +21 -4
- package/dist/esm/core-flow/Graph.js.map +1 -1
- package/dist/esm/core-flow/Loop.js +14 -7
- package/dist/esm/core-flow/Loop.js.map +1 -1
- package/dist/esm/core-flow/Parallel.js +17 -8
- package/dist/esm/core-flow/Parallel.js.map +1 -1
- package/dist/esm/core-flow/Sequence.js +17 -6
- package/dist/esm/core-flow/Sequence.js.map +1 -1
- package/dist/esm/core-flow/Workflow.js +21 -4
- package/dist/esm/core-flow/Workflow.js.map +1 -1
- package/dist/esm/core-flow/childOutcome.d.ts +47 -0
- package/dist/esm/core-flow/childOutcome.js +57 -0
- package/dist/esm/core-flow/childOutcome.js.map +1 -0
- package/dist/esm/events/payloads.d.ts +33 -11
- package/dist/esm/events/types.d.ts +32 -2
- package/dist/esm/index.d.ts +1 -11
- package/dist/esm/index.js +5 -10
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lib/injection-engine/skillToolDescriptors.js +1 -0
- package/dist/esm/lib/injection-engine/skillToolDescriptors.js.map +1 -1
- package/dist/esm/lib/mcp/mcpServe.js +11 -4
- package/dist/esm/lib/mcp/mcpServe.js.map +1 -1
- package/dist/esm/lib/time-travel/receipt.d.ts +5 -5
- package/dist/esm/lib/trace-toolpack/debugPrompt.d.ts +1 -1
- package/dist/esm/lib/trace-toolpack/debugPrompt.js +1 -0
- package/dist/esm/lib/trace-toolpack/debugPrompt.js.map +1 -1
- package/dist/esm/lib/trace-toolpack/innerDescent.d.ts +58 -0
- package/dist/esm/lib/trace-toolpack/innerDescent.js +68 -0
- package/dist/esm/lib/trace-toolpack/innerDescent.js.map +1 -0
- package/dist/esm/lib/trace-toolpack/subflowRecords.d.ts +55 -0
- package/dist/esm/lib/trace-toolpack/subflowRecords.js +124 -0
- package/dist/esm/lib/trace-toolpack/subflowRecords.js.map +1 -0
- package/dist/esm/lib/trace-toolpack/traceToolNames.d.ts +1 -1
- package/dist/esm/lib/trace-toolpack/traceToolNames.js +1 -0
- package/dist/esm/lib/trace-toolpack/traceToolNames.js.map +1 -1
- package/dist/esm/lib/trace-toolpack/traceToolpack.d.ts +1 -0
- package/dist/esm/lib/trace-toolpack/traceToolpack.js +282 -56
- package/dist/esm/lib/trace-toolpack/traceToolpack.js.map +1 -1
- package/dist/esm/lib/trust-boundaries/capture.d.ts +6 -0
- package/dist/esm/lib/trust-boundaries/capture.js +161 -0
- package/dist/esm/lib/trust-boundaries/capture.js.map +1 -0
- package/dist/esm/lib/trust-boundaries/index.d.ts +2 -0
- package/dist/esm/lib/trust-boundaries/index.js +2 -0
- package/dist/esm/lib/trust-boundaries/index.js.map +1 -0
- package/dist/esm/lib/trust-boundaries/project.d.ts +13 -0
- package/dist/esm/lib/trust-boundaries/project.js +170 -0
- package/dist/esm/lib/trust-boundaries/project.js.map +1 -0
- package/dist/esm/lib/trust-boundaries/types.d.ts +81 -0
- package/dist/esm/lib/trust-boundaries/types.js +2 -0
- package/dist/esm/lib/trust-boundaries/types.js.map +1 -0
- package/dist/esm/observe.d.ts +1 -0
- package/dist/esm/observe.js +3 -0
- package/dist/esm/observe.js.map +1 -1
- package/dist/esm/package.json +1 -1
- package/dist/esm/patterns/LlmRouter.js +6 -3
- package/dist/esm/patterns/LlmRouter.js.map +1 -1
- package/dist/esm/recorders/core/EmitBridge.js +7 -1
- package/dist/esm/recorders/core/EmitBridge.js.map +1 -1
- package/dist/esm/recorders/observability/recordRun.d.ts +29 -4
- package/dist/esm/recorders/observability/recordRun.js +144 -70
- package/dist/esm/recorders/observability/recordRun.js.map +1 -1
- package/dist/esm/recorders/observability/recordingEnvelope.js +5 -3
- package/dist/esm/recorders/observability/recordingEnvelope.js.map +1 -1
- package/dist/esm/reliability/failFastRecord.d.ts +28 -0
- package/dist/esm/reliability/failFastRecord.js +45 -0
- package/dist/esm/reliability/failFastRecord.js.map +1 -0
- package/dist/esm/resilience/withCircuitBreaker.js +3 -0
- package/dist/esm/resilience/withCircuitBreaker.js.map +1 -1
- package/dist/esm/resilience/withFallback.js +101 -11
- package/dist/esm/resilience/withFallback.js.map +1 -1
- package/dist/esm/resilience/withRetry.js +8 -0
- package/dist/esm/resilience/withRetry.js.map +1 -1
- package/dist/esm/thinking/AnthropicThinkingHandler.js +5 -5
- package/dist/esm/thinking/AnthropicThinkingHandler.js.map +1 -1
- package/dist/esm/thinking/MockThinkingHandler.js +2 -3
- package/dist/esm/thinking/MockThinkingHandler.js.map +1 -1
- package/dist/esm/thinking/OllamaThinkingHandler.js +0 -1
- package/dist/esm/thinking/OllamaThinkingHandler.js.map +1 -1
- package/dist/esm/thinking/OpenAIThinkingHandler.js +0 -1
- package/dist/esm/thinking/OpenAIThinkingHandler.js.map +1 -1
- package/dist/esm/thinking/index.d.ts +8 -7
- package/dist/esm/thinking/index.js +8 -7
- package/dist/esm/thinking/index.js.map +1 -1
- package/dist/esm/thinking/registry.d.ts +13 -23
- package/dist/esm/thinking/registry.js +13 -29
- package/dist/esm/thinking/registry.js.map +1 -1
- package/dist/esm/thinking/thinkingHandlerFor.d.ts +27 -0
- package/dist/esm/thinking/thinkingHandlerFor.js +36 -0
- package/dist/esm/thinking/thinkingHandlerFor.js.map +1 -0
- package/dist/esm/thinking/types.d.ts +7 -15
- package/dist/esm/thinking/types.js +3 -3
- package/dist/index.js +5 -10
- package/dist/index.js.map +1 -1
- package/dist/lib/injection-engine/skillToolDescriptors.js +1 -0
- package/dist/lib/injection-engine/skillToolDescriptors.js.map +1 -1
- package/dist/lib/mcp/mcpServe.js +11 -4
- package/dist/lib/mcp/mcpServe.js.map +1 -1
- package/dist/lib/trace-toolpack/debugPrompt.js +1 -0
- package/dist/lib/trace-toolpack/debugPrompt.js.map +1 -1
- package/dist/lib/trace-toolpack/innerDescent.js +74 -0
- package/dist/lib/trace-toolpack/innerDescent.js.map +1 -0
- package/dist/lib/trace-toolpack/subflowRecords.js +134 -0
- package/dist/lib/trace-toolpack/subflowRecords.js.map +1 -0
- package/dist/lib/trace-toolpack/traceToolNames.js +1 -0
- package/dist/lib/trace-toolpack/traceToolNames.js.map +1 -1
- package/dist/lib/trace-toolpack/traceToolpack.js +282 -56
- package/dist/lib/trace-toolpack/traceToolpack.js.map +1 -1
- package/dist/lib/trust-boundaries/capture.js +165 -0
- package/dist/lib/trust-boundaries/capture.js.map +1 -0
- package/dist/lib/trust-boundaries/index.js +6 -0
- package/dist/lib/trust-boundaries/index.js.map +1 -0
- package/dist/lib/trust-boundaries/project.js +174 -0
- package/dist/lib/trust-boundaries/project.js.map +1 -0
- package/dist/lib/trust-boundaries/types.js +3 -0
- package/dist/lib/trust-boundaries/types.js.map +1 -0
- package/dist/observe.js +17 -13
- package/dist/observe.js.map +1 -1
- package/dist/patterns/LlmRouter.js +5 -2
- package/dist/patterns/LlmRouter.js.map +1 -1
- package/dist/recorders/core/EmitBridge.js +7 -1
- package/dist/recorders/core/EmitBridge.js.map +1 -1
- package/dist/recorders/observability/recordRun.js +144 -70
- package/dist/recorders/observability/recordRun.js.map +1 -1
- package/dist/recorders/observability/recordingEnvelope.js +5 -3
- package/dist/recorders/observability/recordingEnvelope.js.map +1 -1
- package/dist/reliability/failFastRecord.js +50 -0
- package/dist/reliability/failFastRecord.js.map +1 -0
- package/dist/resilience/withCircuitBreaker.js +3 -0
- package/dist/resilience/withCircuitBreaker.js.map +1 -1
- package/dist/resilience/withFallback.js +101 -11
- package/dist/resilience/withFallback.js.map +1 -1
- package/dist/resilience/withRetry.js +8 -0
- package/dist/resilience/withRetry.js.map +1 -1
- package/dist/thinking/AnthropicThinkingHandler.js +5 -5
- package/dist/thinking/AnthropicThinkingHandler.js.map +1 -1
- package/dist/thinking/MockThinkingHandler.js +2 -3
- package/dist/thinking/MockThinkingHandler.js.map +1 -1
- package/dist/thinking/OllamaThinkingHandler.js +0 -1
- package/dist/thinking/OllamaThinkingHandler.js.map +1 -1
- package/dist/thinking/OpenAIThinkingHandler.js +0 -1
- package/dist/thinking/OpenAIThinkingHandler.js.map +1 -1
- package/dist/thinking/index.js +9 -8
- package/dist/thinking/index.js.map +1 -1
- package/dist/thinking/registry.js +14 -31
- package/dist/thinking/registry.js.map +1 -1
- package/dist/thinking/thinkingHandlerFor.js +40 -0
- package/dist/thinking/thinkingHandlerFor.js.map +1 -0
- package/dist/thinking/types.js +3 -3
- package/dist/types/adapters/llm/AnthropicProvider.d.ts +3 -1
- package/dist/types/adapters/llm/AnthropicProvider.d.ts.map +1 -1
- package/dist/types/adapters/llm/BrowserAnthropicProvider.d.ts +2 -0
- package/dist/types/adapters/llm/BrowserAnthropicProvider.d.ts.map +1 -1
- package/dist/types/adapters/llm/BrowserOpenAIProvider.d.ts +8 -0
- package/dist/types/adapters/llm/BrowserOpenAIProvider.d.ts.map +1 -1
- package/dist/types/adapters/llm/FoundryProvider.d.ts.map +1 -1
- package/dist/types/adapters/llm/InvokeModelGatewayProvider.d.ts +1 -0
- package/dist/types/adapters/llm/InvokeModelGatewayProvider.d.ts.map +1 -1
- package/dist/types/adapters/llm/MockProvider.d.ts +2 -0
- package/dist/types/adapters/llm/MockProvider.d.ts.map +1 -1
- package/dist/types/adapters/llm/OllamaProvider.d.ts +1 -0
- package/dist/types/adapters/llm/OllamaProvider.d.ts.map +1 -1
- package/dist/types/adapters/llm/OpenAIProvider.d.ts +5 -0
- package/dist/types/adapters/llm/OpenAIProvider.d.ts.map +1 -1
- package/dist/types/adapters/llm/anthropicCacheWire.d.ts +27 -9
- package/dist/types/adapters/llm/anthropicCacheWire.d.ts.map +1 -1
- package/dist/types/adapters/llm/anthropicMessagesWire.d.ts +1 -1
- package/dist/types/adapters/llm/anthropicMessagesWire.d.ts.map +1 -1
- package/dist/types/adapters/types.d.ts +13 -0
- package/dist/types/adapters/types.d.ts.map +1 -1
- package/dist/types/bridge/eventMeta.d.ts +5 -1
- package/dist/types/bridge/eventMeta.d.ts.map +1 -1
- package/dist/types/bridge/eventSourcePosition.d.ts +11 -0
- package/dist/types/bridge/eventSourcePosition.d.ts.map +1 -0
- package/dist/types/cache/CacheDecisionSubflow.d.ts +44 -8
- package/dist/types/cache/CacheDecisionSubflow.d.ts.map +1 -1
- package/dist/types/cache/cacheStrategyFor.d.ts +43 -0
- package/dist/types/cache/cacheStrategyFor.d.ts.map +1 -0
- package/dist/types/cache/index.d.ts +20 -29
- package/dist/types/cache/index.d.ts.map +1 -1
- package/dist/types/cache/strategies/AutomaticCacheStrategy.d.ts +38 -0
- package/dist/types/cache/strategies/AutomaticCacheStrategy.d.ts.map +1 -0
- package/dist/types/cache/strategies/BreakpointCacheStrategy.d.ts +41 -0
- package/dist/types/cache/strategies/BreakpointCacheStrategy.d.ts.map +1 -0
- package/dist/types/cache/strategies/NoOpCacheStrategy.d.ts +8 -18
- package/dist/types/cache/strategies/NoOpCacheStrategy.d.ts.map +1 -1
- package/dist/types/cache/types.d.ts +79 -78
- package/dist/types/cache/types.d.ts.map +1 -1
- package/dist/types/core/Agent.d.ts +36 -10
- package/dist/types/core/Agent.d.ts.map +1 -1
- package/dist/types/core/LLMCall.d.ts +3 -4
- package/dist/types/core/LLMCall.d.ts.map +1 -1
- package/dist/types/core/RunnerBase.d.ts +11 -0
- package/dist/types/core/RunnerBase.d.ts.map +1 -1
- package/dist/types/core/agent/AgentBuilder.d.ts +24 -33
- package/dist/types/core/agent/AgentBuilder.d.ts.map +1 -1
- package/dist/types/core/agent/act.d.ts +5 -2
- package/dist/types/core/agent/act.d.ts.map +1 -1
- package/dist/types/core/agent/assessment/stage.d.ts +2 -0
- package/dist/types/core/agent/assessment/stage.d.ts.map +1 -1
- package/dist/types/core/agent/buildAgentChart.d.ts +5 -1
- package/dist/types/core/agent/buildAgentChart.d.ts.map +1 -1
- package/dist/types/core/agent/buildCacheSubflow.d.ts +4 -2
- package/dist/types/core/agent/buildCacheSubflow.d.ts.map +1 -1
- package/dist/types/core/agent/buildDynamicAgentChart.d.ts.map +1 -1
- package/dist/types/core/agent/honesty/mounts.d.ts +2 -0
- package/dist/types/core/agent/honesty/mounts.d.ts.map +1 -1
- package/dist/types/core/agent/middleware/ledger.d.ts +1 -1
- package/dist/types/core/agent/middleware/messagePhase.d.ts +6 -0
- package/dist/types/core/agent/middleware/messagePhase.d.ts.map +1 -0
- package/dist/types/core/agent/skillBrains.d.ts +5 -3
- package/dist/types/core/agent/skillBrains.d.ts.map +1 -1
- package/dist/types/core/agent/stages/answerValidation.d.ts +6 -1
- package/dist/types/core/agent/stages/answerValidation.d.ts.map +1 -1
- package/dist/types/core/agent/stages/breakFinal.d.ts +16 -0
- package/dist/types/core/agent/stages/breakFinal.d.ts.map +1 -1
- package/dist/types/core/agent/stages/callLLM.d.ts +3 -1
- package/dist/types/core/agent/stages/callLLM.d.ts.map +1 -1
- package/dist/types/core/agent/stages/outputAdmission.d.ts +7 -0
- package/dist/types/core/agent/stages/outputAdmission.d.ts.map +1 -0
- package/dist/types/core/agent/stages/prepareFinal.d.ts +18 -41
- package/dist/types/core/agent/stages/prepareFinal.d.ts.map +1 -1
- package/dist/types/core/agent/stages/reliabilityExecution.d.ts +8 -1
- package/dist/types/core/agent/stages/reliabilityExecution.d.ts.map +1 -1
- package/dist/types/core/agent/stages/seed.d.ts.map +1 -1
- package/dist/types/core/agent/stages/toolCalls.d.ts.map +1 -1
- package/dist/types/core/agent/toolArgsValidation.d.ts +9 -5
- package/dist/types/core/agent/toolArgsValidation.d.ts.map +1 -1
- package/dist/types/core/agent/toolDispatch.d.ts +3 -2
- package/dist/types/core/agent/toolDispatch.d.ts.map +1 -1
- package/dist/types/core/agent/toolSecurityEvents.d.ts +19 -0
- package/dist/types/core/agent/toolSecurityEvents.d.ts.map +1 -0
- package/dist/types/core/agent/types.d.ts +4 -4
- package/dist/types/core/codeRunnerTool.d.ts.map +1 -1
- package/dist/types/core/conversation.d.ts +16 -1
- package/dist/types/core/conversation.d.ts.map +1 -1
- package/dist/types/core/slots/buildThinkingSubflow.d.ts +2 -2
- package/dist/types/core/slots/buildThinkingSubflow.d.ts.map +1 -1
- package/dist/types/core/terminalVerdict.d.ts +57 -0
- package/dist/types/core/terminalVerdict.d.ts.map +1 -0
- package/dist/types/core-flow/Conditional.d.ts.map +1 -1
- package/dist/types/core-flow/Graph.d.ts.map +1 -1
- package/dist/types/core-flow/Loop.d.ts.map +1 -1
- package/dist/types/core-flow/Parallel.d.ts.map +1 -1
- package/dist/types/core-flow/Sequence.d.ts.map +1 -1
- package/dist/types/core-flow/Workflow.d.ts.map +1 -1
- package/dist/types/core-flow/childOutcome.d.ts +48 -0
- package/dist/types/core-flow/childOutcome.d.ts.map +1 -0
- package/dist/types/events/payloads.d.ts +33 -11
- package/dist/types/events/payloads.d.ts.map +1 -1
- package/dist/types/events/types.d.ts +32 -2
- package/dist/types/events/types.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -11
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/lib/injection-engine/skillToolDescriptors.d.ts.map +1 -1
- package/dist/types/lib/mcp/mcpServe.d.ts.map +1 -1
- package/dist/types/lib/time-travel/receipt.d.ts +5 -5
- package/dist/types/lib/trace-toolpack/debugPrompt.d.ts +1 -1
- package/dist/types/lib/trace-toolpack/debugPrompt.d.ts.map +1 -1
- package/dist/types/lib/trace-toolpack/innerDescent.d.ts +59 -0
- package/dist/types/lib/trace-toolpack/innerDescent.d.ts.map +1 -0
- package/dist/types/lib/trace-toolpack/subflowRecords.d.ts +56 -0
- package/dist/types/lib/trace-toolpack/subflowRecords.d.ts.map +1 -0
- package/dist/types/lib/trace-toolpack/traceToolNames.d.ts +1 -1
- package/dist/types/lib/trace-toolpack/traceToolNames.d.ts.map +1 -1
- package/dist/types/lib/trace-toolpack/traceToolpack.d.ts +1 -0
- package/dist/types/lib/trace-toolpack/traceToolpack.d.ts.map +1 -1
- package/dist/types/lib/trust-boundaries/capture.d.ts +7 -0
- package/dist/types/lib/trust-boundaries/capture.d.ts.map +1 -0
- package/dist/types/lib/trust-boundaries/index.d.ts +3 -0
- package/dist/types/lib/trust-boundaries/index.d.ts.map +1 -0
- package/dist/types/lib/trust-boundaries/project.d.ts +14 -0
- package/dist/types/lib/trust-boundaries/project.d.ts.map +1 -0
- package/dist/types/lib/trust-boundaries/types.d.ts +82 -0
- package/dist/types/lib/trust-boundaries/types.d.ts.map +1 -0
- package/dist/types/observe.d.ts +1 -0
- package/dist/types/observe.d.ts.map +1 -1
- package/dist/types/patterns/LlmRouter.d.ts.map +1 -1
- package/dist/types/recorders/core/EmitBridge.d.ts.map +1 -1
- package/dist/types/recorders/observability/recordRun.d.ts +29 -4
- package/dist/types/recorders/observability/recordRun.d.ts.map +1 -1
- package/dist/types/recorders/observability/recordingEnvelope.d.ts.map +1 -1
- package/dist/types/reliability/failFastRecord.d.ts +29 -0
- package/dist/types/reliability/failFastRecord.d.ts.map +1 -0
- package/dist/types/resilience/withCircuitBreaker.d.ts.map +1 -1
- package/dist/types/resilience/withFallback.d.ts.map +1 -1
- package/dist/types/resilience/withRetry.d.ts.map +1 -1
- package/dist/types/thinking/AnthropicThinkingHandler.d.ts.map +1 -1
- package/dist/types/thinking/MockThinkingHandler.d.ts.map +1 -1
- package/dist/types/thinking/OllamaThinkingHandler.d.ts.map +1 -1
- package/dist/types/thinking/OpenAIThinkingHandler.d.ts.map +1 -1
- package/dist/types/thinking/index.d.ts +8 -7
- package/dist/types/thinking/index.d.ts.map +1 -1
- package/dist/types/thinking/registry.d.ts +13 -23
- package/dist/types/thinking/registry.d.ts.map +1 -1
- package/dist/types/thinking/thinkingHandlerFor.d.ts +28 -0
- package/dist/types/thinking/thinkingHandlerFor.d.ts.map +1 -0
- package/dist/types/thinking/types.d.ts +7 -15
- package/dist/types/thinking/types.d.ts.map +1 -1
- package/package.json +1 -5
- package/dist/cache/strategies/AnthropicCacheStrategy.js +0 -90
- package/dist/cache/strategies/AnthropicCacheStrategy.js.map +0 -1
- package/dist/cache/strategies/BedrockCacheStrategy.js +0 -97
- package/dist/cache/strategies/BedrockCacheStrategy.js.map +0 -1
- package/dist/cache/strategies/OpenAICacheStrategy.js +0 -76
- package/dist/cache/strategies/OpenAICacheStrategy.js.map +0 -1
- package/dist/cache/strategyRegistry.js +0 -81
- package/dist/cache/strategyRegistry.js.map +0 -1
- package/dist/esm/cache/strategies/AnthropicCacheStrategy.d.ts +0 -41
- package/dist/esm/cache/strategies/AnthropicCacheStrategy.js +0 -86
- package/dist/esm/cache/strategies/AnthropicCacheStrategy.js.map +0 -1
- package/dist/esm/cache/strategies/BedrockCacheStrategy.d.ts +0 -62
- package/dist/esm/cache/strategies/BedrockCacheStrategy.js +0 -93
- package/dist/esm/cache/strategies/BedrockCacheStrategy.js.map +0 -1
- package/dist/esm/cache/strategies/OpenAICacheStrategy.d.ts +0 -47
- package/dist/esm/cache/strategies/OpenAICacheStrategy.js +0 -72
- package/dist/esm/cache/strategies/OpenAICacheStrategy.js.map +0 -1
- package/dist/esm/cache/strategyRegistry.d.ts +0 -45
- package/dist/esm/cache/strategyRegistry.js +0 -74
- package/dist/esm/cache/strategyRegistry.js.map +0 -1
- package/dist/types/cache/strategies/AnthropicCacheStrategy.d.ts +0 -42
- package/dist/types/cache/strategies/AnthropicCacheStrategy.d.ts.map +0 -1
- package/dist/types/cache/strategies/BedrockCacheStrategy.d.ts +0 -63
- package/dist/types/cache/strategies/BedrockCacheStrategy.d.ts.map +0 -1
- package/dist/types/cache/strategies/OpenAICacheStrategy.d.ts +0 -48
- package/dist/types/cache/strategies/OpenAICacheStrategy.d.ts.map +0 -1
- package/dist/types/cache/strategyRegistry.d.ts +0 -46
- package/dist/types/cache/strategyRegistry.d.ts.map +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agentfootprint",
|
|
3
|
-
"version": "9.
|
|
3
|
+
"version": "9.138.0",
|
|
4
4
|
"description": "The explainable agent framework — backtrack a wrong answer to the exact context that caused it (evidence, not guesses). Built on footprintjs.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "commonjs",
|
|
@@ -356,10 +356,6 @@
|
|
|
356
356
|
}
|
|
357
357
|
},
|
|
358
358
|
"sideEffects": [
|
|
359
|
-
"./dist/index.js",
|
|
360
|
-
"./dist/esm/index.js",
|
|
361
|
-
"**/cache/strategies/*.js",
|
|
362
|
-
"**/cache/index.js",
|
|
363
359
|
"**/lib/injection-engine/index.js",
|
|
364
360
|
"**/lib/injection-engine/devWarnHost.js"
|
|
365
361
|
],
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* AnthropicCacheStrategy — translates agnostic CacheMarker[] to
|
|
4
|
-
* Anthropic API's `cache_control: { type: 'ephemeral' }` markers.
|
|
5
|
-
*
|
|
6
|
-
* Anthropic-specific behaviors honored:
|
|
7
|
-
* - **4-marker limit**: Anthropic allows ≤4 cache breakpoints per
|
|
8
|
-
* request. Strategy clamps oversize candidate sets, keeping the
|
|
9
|
-
* first 4 in slot order.
|
|
10
|
-
* - **TTL mapping**: 'short' → default 5min ephemeral; 'long' →
|
|
11
|
-
* `ttl: '1h'` (1-hour beta).
|
|
12
|
-
* - **Provider-side hashing**: this strategy doesn't hash — Anthropic
|
|
13
|
-
* keys cache by exact byte prefix server-side. We don't need
|
|
14
|
-
* content hashes for the v2.6 surface; reserved for v2.7+ if a
|
|
15
|
-
* pre-flight cache-warm-check API ships.
|
|
16
|
-
*
|
|
17
|
-
* What this strategy DOES vs DOESN'T do:
|
|
18
|
-
* - DOES: clamp markers, attach to LLMRequest.cacheMarkers,
|
|
19
|
-
* read cache metrics off the PORT usage the framework hands it
|
|
20
|
-
* (`{ input, output, cacheRead?, cacheWrite? }`) — never off the raw
|
|
21
|
-
* Anthropic wire, which the adapter has already normalised
|
|
22
|
-
* - DOES NOT: rewrite the wire body. The provider
|
|
23
|
-
* (BrowserAnthropicProvider) reads `cacheMarkers` and applies
|
|
24
|
-
* `cache_control` blocks during body construction. Separation of
|
|
25
|
-
* concerns: strategy decides WHAT to cache; provider knows HOW
|
|
26
|
-
* to encode on its specific wire.
|
|
27
|
-
*
|
|
28
|
-
* Auto-registers in the strategy registry on module import for
|
|
29
|
-
* provider names: 'anthropic', 'browser-anthropic'.
|
|
30
|
-
*/
|
|
31
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
32
|
-
exports.AnthropicCacheStrategy = void 0;
|
|
33
|
-
const portUsage_js_1 = require("../portUsage.js");
|
|
34
|
-
const strategyRegistry_js_1 = require("../strategyRegistry.js");
|
|
35
|
-
/** Anthropic enforces 4 cache breakpoints per request. */
|
|
36
|
-
const ANTHROPIC_MAX_MARKERS = 4;
|
|
37
|
-
const ANTHROPIC_CAPABILITIES = Object.freeze({
|
|
38
|
-
enabled: true,
|
|
39
|
-
maxMarkers: ANTHROPIC_MAX_MARKERS,
|
|
40
|
-
ttls: ['short', 'long'],
|
|
41
|
-
fields: ['system', 'tools', 'messages'],
|
|
42
|
-
automatic: false,
|
|
43
|
-
});
|
|
44
|
-
class AnthropicCacheStrategy {
|
|
45
|
-
providerName = 'anthropic';
|
|
46
|
-
capabilities = ANTHROPIC_CAPABILITIES;
|
|
47
|
-
async prepareRequest(req, candidates, ctx) {
|
|
48
|
-
// Honor the agent-side kill switch even if reached this far —
|
|
49
|
-
// belt-and-suspenders. CacheGate should have routed to no-markers
|
|
50
|
-
// already, leaving `candidates` empty, but if a buggy gate lets
|
|
51
|
-
// markers through with cachingDisabled=true, we still respect it.
|
|
52
|
-
if (ctx.cachingDisabled) {
|
|
53
|
-
return { request: req, markersApplied: [] };
|
|
54
|
-
}
|
|
55
|
-
if (candidates.length === 0) {
|
|
56
|
-
return { request: req, markersApplied: [] };
|
|
57
|
-
}
|
|
58
|
-
// Clamp to Anthropic's 4-marker limit. Keep the first N in
|
|
59
|
-
// slot order so we cover the most-stable prefixes (system /
|
|
60
|
-
// always-on injections / tools) before less-stable trailing ones.
|
|
61
|
-
const markersApplied = candidates.length <= ANTHROPIC_MAX_MARKERS
|
|
62
|
-
? candidates
|
|
63
|
-
: candidates.slice(0, ANTHROPIC_MAX_MARKERS);
|
|
64
|
-
const request = {
|
|
65
|
-
...req,
|
|
66
|
-
cacheMarkers: markersApplied,
|
|
67
|
-
};
|
|
68
|
-
return { request, markersApplied };
|
|
69
|
-
}
|
|
70
|
-
extractMetrics(usage) {
|
|
71
|
-
return (0, portUsage_js_1.readPortCacheUsage)(usage, 'the Anthropic adapter');
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
exports.AnthropicCacheStrategy = AnthropicCacheStrategy;
|
|
75
|
-
// Auto-register on module import. Both 'anthropic' (server-side) and
|
|
76
|
-
// 'browser-anthropic' (browser fetch) providers map to this strategy.
|
|
77
|
-
{
|
|
78
|
-
const strategy = new AnthropicCacheStrategy();
|
|
79
|
-
(0, strategyRegistry_js_1.registerCacheStrategy)(strategy);
|
|
80
|
-
// Register the browser variant by cloning with the matching provider name.
|
|
81
|
-
// Same behavior, different provider.name match-key.
|
|
82
|
-
const browserStrategy = {
|
|
83
|
-
providerName: 'browser-anthropic',
|
|
84
|
-
capabilities: strategy.capabilities,
|
|
85
|
-
prepareRequest: strategy.prepareRequest.bind(strategy),
|
|
86
|
-
extractMetrics: strategy.extractMetrics.bind(strategy),
|
|
87
|
-
};
|
|
88
|
-
(0, strategyRegistry_js_1.registerCacheStrategy)(browserStrategy);
|
|
89
|
-
}
|
|
90
|
-
//# sourceMappingURL=AnthropicCacheStrategy.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AnthropicCacheStrategy.js","sourceRoot":"","sources":["../../../src/cache/strategies/AnthropicCacheStrategy.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;;;AAWH,kDAAqD;AAErD,gEAA+D;AAE/D,0DAA0D;AAC1D,MAAM,qBAAqB,GAAG,CAAC,CAAC;AAEhC,MAAM,sBAAsB,GAAsB,MAAM,CAAC,MAAM,CAAC;IAC9D,OAAO,EAAE,IAAI;IACb,UAAU,EAAE,qBAAqB;IACjC,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,CAAkC;IACxD,MAAM,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,CAAiD;IACvF,SAAS,EAAE,KAAK;CACjB,CAAC,CAAC;AAEH,MAAa,sBAAsB;IACxB,YAAY,GAAG,WAAW,CAAC;IAC3B,YAAY,GAAG,sBAAsB,CAAC;IAE/C,KAAK,CAAC,cAAc,CAClB,GAAe,EACf,UAAkC,EAClC,GAAyB;QAKzB,8DAA8D;QAC9D,kEAAkE;QAClE,gEAAgE;QAChE,kEAAkE;QAClE,IAAI,GAAG,CAAC,eAAe,EAAE,CAAC;YACxB,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC;QAC9C,CAAC;QAED,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC;QAC9C,CAAC;QAED,2DAA2D;QAC3D,4DAA4D;QAC5D,kEAAkE;QAClE,MAAM,cAAc,GAClB,UAAU,CAAC,MAAM,IAAI,qBAAqB;YACxC,CAAC,CAAC,UAAU;YACZ,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,qBAAqB,CAAC,CAAC;QAEjD,MAAM,OAAO,GAAe;YAC1B,GAAG,GAAG;YACN,YAAY,EAAE,cAAc;SAC7B,CAAC;QACF,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;IACrC,CAAC;IAED,cAAc,CAAC,KAA6B;QAC1C,OAAO,IAAA,iCAAkB,EAAC,KAAK,EAAE,uBAAuB,CAAC,CAAC;IAC5D,CAAC;CACF;AA1CD,wDA0CC;AAED,qEAAqE;AACrE,sEAAsE;AACtE,CAAC;IACC,MAAM,QAAQ,GAAG,IAAI,sBAAsB,EAAE,CAAC;IAC9C,IAAA,2CAAqB,EAAC,QAAQ,CAAC,CAAC;IAChC,2EAA2E;IAC3E,oDAAoD;IACpD,MAAM,eAAe,GAAkB;QACrC,YAAY,EAAE,mBAAmB;QACjC,YAAY,EAAE,QAAQ,CAAC,YAAY;QACnC,cAAc,EAAE,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC;QACtD,cAAc,EAAE,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC;KACvD,CAAC;IACF,IAAA,2CAAqB,EAAC,eAAe,CAAC,CAAC;AACzC,CAAC"}
|
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* BedrockCacheStrategy — REGISTERED, AND HONEST ABOUT DOING NOTHING (9.59.0).
|
|
4
|
-
*
|
|
5
|
-
* What Bedrock supports and what THIS ADAPTER does are two different facts,
|
|
6
|
-
* and until 9.59.0 the strategy stated the first while the runtime lived
|
|
7
|
-
* under the second:
|
|
8
|
-
*
|
|
9
|
-
* - AWS's Converse API does support prompt caching for Claude models
|
|
10
|
-
* (`cachePoint: { type: 'default' }` entries inserted into the `system` /
|
|
11
|
-
* `tools` / `messages` arrays) and does report
|
|
12
|
-
* `cacheReadInputTokens` / `cacheWriteInputTokens` in its usage block.
|
|
13
|
-
* - `BedrockProvider` implements NEITHER half. It never reads
|
|
14
|
-
* `req.cacheMarkers` (compare `AnthropicProvider`, which calls
|
|
15
|
-
* `applyCacheMarkers`) and it builds `usage` as `{ input, output }` at
|
|
16
|
-
* both its streaming and non-streaming sites. The string "cache" does
|
|
17
|
-
* not appear in that file.
|
|
18
|
-
*
|
|
19
|
-
* So this strategy used to clamp markers onto a request field the adapter
|
|
20
|
-
* then discarded, and report `markersApplied` for markers that never reached
|
|
21
|
-
* a wire — a meter attached to a provider that cannot feed it. It now:
|
|
22
|
-
*
|
|
23
|
-
* - declares `enabled: false` (nothing here works end to end);
|
|
24
|
-
* - passes the request through with `markersApplied: []`, and says why
|
|
25
|
-
* once, in dev mode;
|
|
26
|
-
* - answers `extractMetrics` with `not-applicable` and the reason.
|
|
27
|
-
*
|
|
28
|
-
* It stays REGISTERED rather than being deleted so that a Bedrock consumer
|
|
29
|
-
* asking the registry what it got is told the truth by name, instead of
|
|
30
|
-
* silently falling through to the wildcard NoOp and being left to guess.
|
|
31
|
-
*
|
|
32
|
-
* Note on Converse: the send half is genuinely a DIFFERENT wire from
|
|
33
|
-
* Anthropic's `cache_control` block, so implementing it wants its own
|
|
34
|
-
* `bedrockCacheWire.ts` beside `anthropicCacheWire.ts` — not a reuse. That
|
|
35
|
-
* is the follow-up this file is waiting for; when it lands, flip `enabled`
|
|
36
|
-
* and give `extractMetrics` the `readPortCacheUsage` body the Anthropic
|
|
37
|
-
* strategy has.
|
|
38
|
-
*
|
|
39
|
-
* Auto-registers under provider name `'bedrock'`.
|
|
40
|
-
*/
|
|
41
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
-
exports.BedrockCacheStrategy = void 0;
|
|
43
|
-
const claim_js_1 = require("../../lib/claim/claim.js");
|
|
44
|
-
const strategyRegistry_js_1 = require("../strategyRegistry.js");
|
|
45
|
-
const footprintjs_1 = require("footprintjs");
|
|
46
|
-
const BEDROCK_CAPABILITIES = Object.freeze({
|
|
47
|
-
// `false`, and it is a statement about the ADAPTER, not about Bedrock.
|
|
48
|
-
// Bedrock-Claude supports prompt caching; `BedrockProvider` implements
|
|
49
|
-
// neither half of the contract (never sends markers, never reads cache
|
|
50
|
-
// usage), so nothing this strategy could do would reach a wire. Saying
|
|
51
|
-
// `true` here is what let a dead meter look alive.
|
|
52
|
-
enabled: false,
|
|
53
|
-
maxMarkers: 0,
|
|
54
|
-
ttls: [],
|
|
55
|
-
fields: [],
|
|
56
|
-
automatic: false,
|
|
57
|
-
});
|
|
58
|
-
/** One warning per process, not one per call — the fact does not change. */
|
|
59
|
-
let warnedAboutAdapterGap = false;
|
|
60
|
-
class BedrockCacheStrategy {
|
|
61
|
-
providerName = 'bedrock';
|
|
62
|
-
capabilities = BEDROCK_CAPABILITIES;
|
|
63
|
-
async prepareRequest(req, candidates, _ctx) {
|
|
64
|
-
// Pass-through, ALWAYS. Writing `req.cacheMarkers` here would be writing
|
|
65
|
-
// to a field `BedrockProvider` never reads, and returning a non-empty
|
|
66
|
-
// `markersApplied` would put markers that never reached a wire onto the
|
|
67
|
-
// recorder's record.
|
|
68
|
-
if (candidates.length > 0 && !warnedAboutAdapterGap && (0, footprintjs_1.isDevMode)()) {
|
|
69
|
-
warnedAboutAdapterGap = true;
|
|
70
|
-
// eslint-disable-next-line no-console
|
|
71
|
-
console.warn(`[agentfootprint] cache: ${candidates.length} cache marker(s) were declared for ` +
|
|
72
|
-
`model "${req.model}", but the Bedrock adapter does not implement prompt caching — ` +
|
|
73
|
-
`it never sends cachePoint entries and never reads cacheReadInputTokens off the ` +
|
|
74
|
-
`Converse response. No markers were applied and no hit rate can be measured. ` +
|
|
75
|
-
`Your cache: directives stay portable and light up on the Anthropic providers.`);
|
|
76
|
-
}
|
|
77
|
-
return { request: req, markersApplied: [] };
|
|
78
|
-
}
|
|
79
|
-
/**
|
|
80
|
-
* Always `not-applicable` — and that is a statement about THIS adapter,
|
|
81
|
-
* not about Bedrock. AWS's Converse API does report
|
|
82
|
-
* `cacheReadInputTokens` / `cacheWriteInputTokens`, but
|
|
83
|
-
* `BedrockProvider` never reads them: its `usage` is built as
|
|
84
|
-
* `{ input, output }` at both the streaming and non-streaming sites. So
|
|
85
|
-
* `cacheRead`/`cacheWrite` are ALWAYS absent on this port, and an
|
|
86
|
-
* `unknown` per call would read as a measurement that merely failed.
|
|
87
|
-
* `not-applicable` says the true thing: nothing here can be measured
|
|
88
|
-
* until the adapter grows the read half.
|
|
89
|
-
*/
|
|
90
|
-
extractMetrics(_usage) {
|
|
91
|
-
return (0, claim_js_1.notApplicable)('the Bedrock adapter does not read cache usage off the Converse response, so no ' +
|
|
92
|
-
'cache tokens ever reach the port');
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
exports.BedrockCacheStrategy = BedrockCacheStrategy;
|
|
96
|
-
(0, strategyRegistry_js_1.registerCacheStrategy)(new BedrockCacheStrategy());
|
|
97
|
-
//# sourceMappingURL=BedrockCacheStrategy.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BedrockCacheStrategy.js","sourceRoot":"","sources":["../../../src/cache/strategies/BedrockCacheStrategy.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;;;AAUH,uDAAqE;AAErE,gEAA+D;AAC/D,6CAAwC;AAExC,MAAM,oBAAoB,GAAsB,MAAM,CAAC,MAAM,CAAC;IAC5D,uEAAuE;IACvE,uEAAuE;IACvE,uEAAuE;IACvE,uEAAuE;IACvE,mDAAmD;IACnD,OAAO,EAAE,KAAK;IACd,UAAU,EAAE,CAAC;IACb,IAAI,EAAE,EAAmC;IACzC,MAAM,EAAE,EAAkD;IAC1D,SAAS,EAAE,KAAK;CACjB,CAAC,CAAC;AAEH,4EAA4E;AAC5E,IAAI,qBAAqB,GAAG,KAAK,CAAC;AAElC,MAAa,oBAAoB;IACtB,YAAY,GAAG,SAAS,CAAC;IACzB,YAAY,GAAG,oBAAoB,CAAC;IAE7C,KAAK,CAAC,cAAc,CAClB,GAAe,EACf,UAAkC,EAClC,IAA0B;QAK1B,yEAAyE;QACzE,sEAAsE;QACtE,wEAAwE;QACxE,qBAAqB;QACrB,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,qBAAqB,IAAI,IAAA,uBAAS,GAAE,EAAE,CAAC;YACnE,qBAAqB,GAAG,IAAI,CAAC;YAC7B,sCAAsC;YACtC,OAAO,CAAC,IAAI,CACV,2BAA2B,UAAU,CAAC,MAAM,qCAAqC;gBAC/E,UAAU,GAAG,CAAC,KAAK,iEAAiE;gBACpF,iFAAiF;gBACjF,8EAA8E;gBAC9E,+EAA+E,CAClF,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC;IAC9C,CAAC;IAED;;;;;;;;;;OAUG;IACH,cAAc,CAAC,MAA8B;QAC3C,OAAO,IAAA,wBAAa,EAClB,iFAAiF;YAC/E,kCAAkC,CACrC,CAAC;IACJ,CAAC;CACF;AA/CD,oDA+CC;AAED,IAAA,2CAAqB,EAAC,IAAI,oBAAoB,EAAE,CAAC,CAAC"}
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* OpenAICacheStrategy — metrics-only strategy for OpenAI providers.
|
|
4
|
-
*
|
|
5
|
-
* OpenAI auto-caches request prefixes ≥1024 tokens at 50% off.
|
|
6
|
-
* No client-side opt-in markers needed (and no way to influence
|
|
7
|
-
* cache behavior from the client). The strategy:
|
|
8
|
-
*
|
|
9
|
-
* - **prepareRequest**: pass-through. We can't tell OpenAI what
|
|
10
|
-
* to cache; they decide automatically. Markers are silently
|
|
11
|
-
* dropped (the 80% case for OpenAI consumers is "I declared
|
|
12
|
-
* cache: 'always' for my injections" — that's still meaningful
|
|
13
|
-
* because (a) it's portable across providers, (b) for OpenAI
|
|
14
|
-
* the auto-cache may still hit on stable prefixes regardless).
|
|
15
|
-
* - **extractMetrics**: reads `prompt_tokens_details.cached_tokens`
|
|
16
|
-
* from OpenAI's usage response so cacheRecorder can surface
|
|
17
|
-
* hit rates / dollar savings.
|
|
18
|
-
*
|
|
19
|
-
* Auto-registers on module import for: 'openai', 'browser-openai'.
|
|
20
|
-
*
|
|
21
|
-
* Documentation note for consumers (Phase 12 docs): the `cache:`
|
|
22
|
-
* directive on injection definitions is portable but has NO LOCAL
|
|
23
|
-
* EFFECT on OpenAI runs — the provider auto-caches based on prefix
|
|
24
|
-
* length. The directive still ships correctly with the agent and
|
|
25
|
-
* lights up automatically when you swap to Anthropic / Bedrock.
|
|
26
|
-
*/
|
|
27
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
28
|
-
exports.OpenAICacheStrategy = void 0;
|
|
29
|
-
const claim_js_1 = require("../../lib/claim/claim.js");
|
|
30
|
-
const strategyRegistry_js_1 = require("../strategyRegistry.js");
|
|
31
|
-
const OPENAI_CAPABILITIES = Object.freeze({
|
|
32
|
-
// `enabled: true` because metrics ARE extracted (cacheRecorder shows
|
|
33
|
-
// hit rates). The `automatic: true` flag tells consumers the markers
|
|
34
|
-
// are inert here — OpenAI decides what to cache, not us.
|
|
35
|
-
enabled: true,
|
|
36
|
-
maxMarkers: 0,
|
|
37
|
-
ttls: ['short'],
|
|
38
|
-
fields: [],
|
|
39
|
-
automatic: true,
|
|
40
|
-
});
|
|
41
|
-
class OpenAICacheStrategy {
|
|
42
|
-
providerName = 'openai';
|
|
43
|
-
capabilities = OPENAI_CAPABILITIES;
|
|
44
|
-
async prepareRequest(req, _candidates, _ctx) {
|
|
45
|
-
// Pass-through. OpenAI auto-caches; no opt-in needed.
|
|
46
|
-
return { request: req, markersApplied: [] };
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* Always `not-applicable`, for the same adapter reason as Bedrock:
|
|
50
|
-
* OpenAI's wire DOES carry `prompt_tokens_details.cached_tokens`, but
|
|
51
|
-
* `OpenAIProvider` builds `usage` as `{ input, output }` at both its
|
|
52
|
-
* streaming and non-streaming sites and never lifts the cached count
|
|
53
|
-
* onto the port. OpenAI is the AUTO-caching provider, so this is the
|
|
54
|
-
* costliest of the three gaps — it is named here rather than hidden
|
|
55
|
-
* behind a per-call `unknown` that would suggest the measurement was
|
|
56
|
-
* attempted and merely came back empty.
|
|
57
|
-
*/
|
|
58
|
-
extractMetrics(_usage) {
|
|
59
|
-
return (0, claim_js_1.notApplicable)('the OpenAI adapter does not lift prompt_tokens_details.cached_tokens onto the port ' +
|
|
60
|
-
'usage, so no cache tokens ever reach this strategy');
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
exports.OpenAICacheStrategy = OpenAICacheStrategy;
|
|
64
|
-
// Auto-register for both server-side and browser variants.
|
|
65
|
-
{
|
|
66
|
-
const strategy = new OpenAICacheStrategy();
|
|
67
|
-
(0, strategyRegistry_js_1.registerCacheStrategy)(strategy);
|
|
68
|
-
const browserStrategy = {
|
|
69
|
-
providerName: 'browser-openai',
|
|
70
|
-
capabilities: strategy.capabilities,
|
|
71
|
-
prepareRequest: strategy.prepareRequest.bind(strategy),
|
|
72
|
-
extractMetrics: strategy.extractMetrics.bind(strategy),
|
|
73
|
-
};
|
|
74
|
-
(0, strategyRegistry_js_1.registerCacheStrategy)(browserStrategy);
|
|
75
|
-
}
|
|
76
|
-
//# sourceMappingURL=OpenAICacheStrategy.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"OpenAICacheStrategy.js","sourceRoot":"","sources":["../../../src/cache/strategies/OpenAICacheStrategy.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;;;AAUH,uDAAqE;AAErE,gEAA+D;AAE/D,MAAM,mBAAmB,GAAsB,MAAM,CAAC,MAAM,CAAC;IAC3D,qEAAqE;IACrE,qEAAqE;IACrE,yDAAyD;IACzD,OAAO,EAAE,IAAI;IACb,UAAU,EAAE,CAAC;IACb,IAAI,EAAE,CAAC,OAAO,CAAkC;IAChD,MAAM,EAAE,EAAkD;IAC1D,SAAS,EAAE,IAAI;CAChB,CAAC,CAAC;AAEH,MAAa,mBAAmB;IACrB,YAAY,GAAG,QAAQ,CAAC;IACxB,YAAY,GAAG,mBAAmB,CAAC;IAE5C,KAAK,CAAC,cAAc,CAClB,GAAe,EACf,WAAmC,EACnC,IAA0B;QAK1B,sDAAsD;QACtD,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC;IAC9C,CAAC;IAED;;;;;;;;;OASG;IACH,cAAc,CAAC,MAA8B;QAC3C,OAAO,IAAA,wBAAa,EAClB,qFAAqF;YACnF,oDAAoD,CACvD,CAAC;IACJ,CAAC;CACF;AAhCD,kDAgCC;AAED,2DAA2D;AAC3D,CAAC;IACC,MAAM,QAAQ,GAAG,IAAI,mBAAmB,EAAE,CAAC;IAC3C,IAAA,2CAAqB,EAAC,QAAQ,CAAC,CAAC;IAChC,MAAM,eAAe,GAAkB;QACrC,YAAY,EAAE,gBAAgB;QAC9B,YAAY,EAAE,QAAQ,CAAC,YAAY;QACnC,cAAc,EAAE,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC;QACtD,cAAc,EAAE,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC;KACvD,CAAC;IACF,IAAA,2CAAqB,EAAC,eAAe,CAAC,CAAC;AACzC,CAAC"}
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Strategy registry — maps provider name → CacheStrategy.
|
|
4
|
-
*
|
|
5
|
-
* Auto-resolution at agent build time: agentfootprint inspects
|
|
6
|
-
* `provider.name` and looks up the registered strategy for that
|
|
7
|
-
* name. Falls back to `NoOpCacheStrategy` (registered under wildcard
|
|
8
|
-
* `'*'`) when the provider isn't recognized.
|
|
9
|
-
*
|
|
10
|
-
* Phases shipping registered strategies:
|
|
11
|
-
* - v2.6 Phase 6 (this phase): NoOp
|
|
12
|
-
* - v2.6 Phase 7: AnthropicCacheStrategy ('anthropic',
|
|
13
|
-
* 'browser-anthropic')
|
|
14
|
-
* - v2.6 Phase 8: OpenAICacheStrategy ('openai', 'browser-openai'),
|
|
15
|
-
* BedrockCacheStrategy ('bedrock')
|
|
16
|
-
* - v2.7+ : GeminiCacheStrategy (handle-based, async, deferred)
|
|
17
|
-
*
|
|
18
|
-
* Consumers can register their own strategy via
|
|
19
|
-
* `registerCacheStrategy(strategy)`. Useful for in-house LLM proxies
|
|
20
|
-
* or test mocks.
|
|
21
|
-
*/
|
|
22
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
|
-
exports._resetRegistryForTests = exports.listRegisteredStrategies = exports.registerCacheStrategy = exports.getDefaultCacheStrategy = void 0;
|
|
24
|
-
const NoOpCacheStrategy_js_1 = require("./strategies/NoOpCacheStrategy.js");
|
|
25
|
-
/**
|
|
26
|
-
* Registry singleton. Populated by individual strategy modules
|
|
27
|
-
* importing this and calling `registerCacheStrategy` at module load
|
|
28
|
-
* time, OR by the consumer at agent build time.
|
|
29
|
-
*
|
|
30
|
-
* Contains the wildcard `'*'` → NoOp entry by default; never empty.
|
|
31
|
-
*/
|
|
32
|
-
const REGISTRY = new Map([['*', new NoOpCacheStrategy_js_1.NoOpCacheStrategy()]]);
|
|
33
|
-
/**
|
|
34
|
-
* Look up a CacheStrategy by provider name. Falls back to the
|
|
35
|
-
* wildcard NoOp strategy if no match.
|
|
36
|
-
*
|
|
37
|
-
* Lookup is case-insensitive on the provider name.
|
|
38
|
-
*/
|
|
39
|
-
function getDefaultCacheStrategy(providerName) {
|
|
40
|
-
const exact = REGISTRY.get(providerName);
|
|
41
|
-
if (exact !== undefined)
|
|
42
|
-
return exact;
|
|
43
|
-
const lower = providerName.toLowerCase();
|
|
44
|
-
if (lower !== providerName) {
|
|
45
|
-
const lowercased = REGISTRY.get(lower);
|
|
46
|
-
if (lowercased !== undefined)
|
|
47
|
-
return lowercased;
|
|
48
|
-
}
|
|
49
|
-
// Fallback wildcard always present (set at module load by registerDefaults).
|
|
50
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
51
|
-
return REGISTRY.get('*');
|
|
52
|
-
}
|
|
53
|
-
exports.getDefaultCacheStrategy = getDefaultCacheStrategy;
|
|
54
|
-
/**
|
|
55
|
-
* Register (or replace) a strategy for a provider name. Called by
|
|
56
|
-
* strategy modules (v2.6 Phase 7+) at module load OR by consumers
|
|
57
|
-
* needing a custom backend. Replacing an existing strategy is allowed
|
|
58
|
-
* — the most-recent registration wins.
|
|
59
|
-
*/
|
|
60
|
-
function registerCacheStrategy(strategy) {
|
|
61
|
-
REGISTRY.set(strategy.providerName, strategy);
|
|
62
|
-
}
|
|
63
|
-
exports.registerCacheStrategy = registerCacheStrategy;
|
|
64
|
-
/**
|
|
65
|
-
* Read-only view of registered strategy names. Useful for diagnostics
|
|
66
|
-
* (e.g., logging "we have strategies for: anthropic, openai, *").
|
|
67
|
-
*/
|
|
68
|
-
function listRegisteredStrategies() {
|
|
69
|
-
return [...REGISTRY.keys()];
|
|
70
|
-
}
|
|
71
|
-
exports.listRegisteredStrategies = listRegisteredStrategies;
|
|
72
|
-
/**
|
|
73
|
-
* Internal helper for tests: reset the registry to the default
|
|
74
|
-
* (wildcard → NoOp only). Not exported from the public barrel.
|
|
75
|
-
*/
|
|
76
|
-
function _resetRegistryForTests() {
|
|
77
|
-
REGISTRY.clear();
|
|
78
|
-
REGISTRY.set('*', new NoOpCacheStrategy_js_1.NoOpCacheStrategy());
|
|
79
|
-
}
|
|
80
|
-
exports._resetRegistryForTests = _resetRegistryForTests;
|
|
81
|
-
//# sourceMappingURL=strategyRegistry.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"strategyRegistry.js","sourceRoot":"","sources":["../../src/cache/strategyRegistry.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;GAmBG;;;AAGH,4EAAsE;AAEtE;;;;;;GAMG;AACH,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAwB,CAAC,CAAC,GAAG,EAAE,IAAI,wCAAiB,EAAE,CAAC,CAAC,CAAC,CAAC;AAElF;;;;;GAKG;AACH,SAAgB,uBAAuB,CAAC,YAAoB;IAC1D,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACzC,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACtC,MAAM,KAAK,GAAG,YAAY,CAAC,WAAW,EAAE,CAAC;IACzC,IAAI,KAAK,KAAK,YAAY,EAAE,CAAC;QAC3B,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,UAAU,KAAK,SAAS;YAAE,OAAO,UAAU,CAAC;IAClD,CAAC;IACD,6EAA6E;IAC7E,oEAAoE;IACpE,OAAO,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC;AAC5B,CAAC;AAXD,0DAWC;AAED;;;;;GAKG;AACH,SAAgB,qBAAqB,CAAC,QAAuB;IAC3D,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;AAChD,CAAC;AAFD,sDAEC;AAED;;;GAGG;AACH,SAAgB,wBAAwB;IACtC,OAAO,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;AAC9B,CAAC;AAFD,4DAEC;AAED;;;GAGG;AACH,SAAgB,sBAAsB;IACpC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACjB,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,wCAAiB,EAAE,CAAC,CAAC;AAC7C,CAAC;AAHD,wDAGC"}
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* AnthropicCacheStrategy — translates agnostic CacheMarker[] to
|
|
3
|
-
* Anthropic API's `cache_control: { type: 'ephemeral' }` markers.
|
|
4
|
-
*
|
|
5
|
-
* Anthropic-specific behaviors honored:
|
|
6
|
-
* - **4-marker limit**: Anthropic allows ≤4 cache breakpoints per
|
|
7
|
-
* request. Strategy clamps oversize candidate sets, keeping the
|
|
8
|
-
* first 4 in slot order.
|
|
9
|
-
* - **TTL mapping**: 'short' → default 5min ephemeral; 'long' →
|
|
10
|
-
* `ttl: '1h'` (1-hour beta).
|
|
11
|
-
* - **Provider-side hashing**: this strategy doesn't hash — Anthropic
|
|
12
|
-
* keys cache by exact byte prefix server-side. We don't need
|
|
13
|
-
* content hashes for the v2.6 surface; reserved for v2.7+ if a
|
|
14
|
-
* pre-flight cache-warm-check API ships.
|
|
15
|
-
*
|
|
16
|
-
* What this strategy DOES vs DOESN'T do:
|
|
17
|
-
* - DOES: clamp markers, attach to LLMRequest.cacheMarkers,
|
|
18
|
-
* read cache metrics off the PORT usage the framework hands it
|
|
19
|
-
* (`{ input, output, cacheRead?, cacheWrite? }`) — never off the raw
|
|
20
|
-
* Anthropic wire, which the adapter has already normalised
|
|
21
|
-
* - DOES NOT: rewrite the wire body. The provider
|
|
22
|
-
* (BrowserAnthropicProvider) reads `cacheMarkers` and applies
|
|
23
|
-
* `cache_control` blocks during body construction. Separation of
|
|
24
|
-
* concerns: strategy decides WHAT to cache; provider knows HOW
|
|
25
|
-
* to encode on its specific wire.
|
|
26
|
-
*
|
|
27
|
-
* Auto-registers in the strategy registry on module import for
|
|
28
|
-
* provider names: 'anthropic', 'browser-anthropic'.
|
|
29
|
-
*/
|
|
30
|
-
import type { CacheCapabilities, CacheMarker, CacheMetrics, CacheStrategy, CacheStrategyContext, CacheUsage } from '../types.js';
|
|
31
|
-
import type { Claim } from '../../lib/claim/claim.js';
|
|
32
|
-
import type { LLMRequest } from '../../adapters/types.js';
|
|
33
|
-
export declare class AnthropicCacheStrategy implements CacheStrategy {
|
|
34
|
-
readonly providerName = "anthropic";
|
|
35
|
-
readonly capabilities: CacheCapabilities;
|
|
36
|
-
prepareRequest(req: LLMRequest, candidates: readonly CacheMarker[], ctx: CacheStrategyContext): Promise<{
|
|
37
|
-
readonly request: LLMRequest;
|
|
38
|
-
readonly markersApplied: readonly CacheMarker[];
|
|
39
|
-
}>;
|
|
40
|
-
extractMetrics(usage: CacheUsage | undefined): Claim<CacheMetrics>;
|
|
41
|
-
}
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* AnthropicCacheStrategy — translates agnostic CacheMarker[] to
|
|
3
|
-
* Anthropic API's `cache_control: { type: 'ephemeral' }` markers.
|
|
4
|
-
*
|
|
5
|
-
* Anthropic-specific behaviors honored:
|
|
6
|
-
* - **4-marker limit**: Anthropic allows ≤4 cache breakpoints per
|
|
7
|
-
* request. Strategy clamps oversize candidate sets, keeping the
|
|
8
|
-
* first 4 in slot order.
|
|
9
|
-
* - **TTL mapping**: 'short' → default 5min ephemeral; 'long' →
|
|
10
|
-
* `ttl: '1h'` (1-hour beta).
|
|
11
|
-
* - **Provider-side hashing**: this strategy doesn't hash — Anthropic
|
|
12
|
-
* keys cache by exact byte prefix server-side. We don't need
|
|
13
|
-
* content hashes for the v2.6 surface; reserved for v2.7+ if a
|
|
14
|
-
* pre-flight cache-warm-check API ships.
|
|
15
|
-
*
|
|
16
|
-
* What this strategy DOES vs DOESN'T do:
|
|
17
|
-
* - DOES: clamp markers, attach to LLMRequest.cacheMarkers,
|
|
18
|
-
* read cache metrics off the PORT usage the framework hands it
|
|
19
|
-
* (`{ input, output, cacheRead?, cacheWrite? }`) — never off the raw
|
|
20
|
-
* Anthropic wire, which the adapter has already normalised
|
|
21
|
-
* - DOES NOT: rewrite the wire body. The provider
|
|
22
|
-
* (BrowserAnthropicProvider) reads `cacheMarkers` and applies
|
|
23
|
-
* `cache_control` blocks during body construction. Separation of
|
|
24
|
-
* concerns: strategy decides WHAT to cache; provider knows HOW
|
|
25
|
-
* to encode on its specific wire.
|
|
26
|
-
*
|
|
27
|
-
* Auto-registers in the strategy registry on module import for
|
|
28
|
-
* provider names: 'anthropic', 'browser-anthropic'.
|
|
29
|
-
*/
|
|
30
|
-
import { readPortCacheUsage } from '../portUsage.js';
|
|
31
|
-
import { registerCacheStrategy } from '../strategyRegistry.js';
|
|
32
|
-
/** Anthropic enforces 4 cache breakpoints per request. */
|
|
33
|
-
const ANTHROPIC_MAX_MARKERS = 4;
|
|
34
|
-
const ANTHROPIC_CAPABILITIES = Object.freeze({
|
|
35
|
-
enabled: true,
|
|
36
|
-
maxMarkers: ANTHROPIC_MAX_MARKERS,
|
|
37
|
-
ttls: ['short', 'long'],
|
|
38
|
-
fields: ['system', 'tools', 'messages'],
|
|
39
|
-
automatic: false,
|
|
40
|
-
});
|
|
41
|
-
export class AnthropicCacheStrategy {
|
|
42
|
-
providerName = 'anthropic';
|
|
43
|
-
capabilities = ANTHROPIC_CAPABILITIES;
|
|
44
|
-
async prepareRequest(req, candidates, ctx) {
|
|
45
|
-
// Honor the agent-side kill switch even if reached this far —
|
|
46
|
-
// belt-and-suspenders. CacheGate should have routed to no-markers
|
|
47
|
-
// already, leaving `candidates` empty, but if a buggy gate lets
|
|
48
|
-
// markers through with cachingDisabled=true, we still respect it.
|
|
49
|
-
if (ctx.cachingDisabled) {
|
|
50
|
-
return { request: req, markersApplied: [] };
|
|
51
|
-
}
|
|
52
|
-
if (candidates.length === 0) {
|
|
53
|
-
return { request: req, markersApplied: [] };
|
|
54
|
-
}
|
|
55
|
-
// Clamp to Anthropic's 4-marker limit. Keep the first N in
|
|
56
|
-
// slot order so we cover the most-stable prefixes (system /
|
|
57
|
-
// always-on injections / tools) before less-stable trailing ones.
|
|
58
|
-
const markersApplied = candidates.length <= ANTHROPIC_MAX_MARKERS
|
|
59
|
-
? candidates
|
|
60
|
-
: candidates.slice(0, ANTHROPIC_MAX_MARKERS);
|
|
61
|
-
const request = {
|
|
62
|
-
...req,
|
|
63
|
-
cacheMarkers: markersApplied,
|
|
64
|
-
};
|
|
65
|
-
return { request, markersApplied };
|
|
66
|
-
}
|
|
67
|
-
extractMetrics(usage) {
|
|
68
|
-
return readPortCacheUsage(usage, 'the Anthropic adapter');
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
// Auto-register on module import. Both 'anthropic' (server-side) and
|
|
72
|
-
// 'browser-anthropic' (browser fetch) providers map to this strategy.
|
|
73
|
-
{
|
|
74
|
-
const strategy = new AnthropicCacheStrategy();
|
|
75
|
-
registerCacheStrategy(strategy);
|
|
76
|
-
// Register the browser variant by cloning with the matching provider name.
|
|
77
|
-
// Same behavior, different provider.name match-key.
|
|
78
|
-
const browserStrategy = {
|
|
79
|
-
providerName: 'browser-anthropic',
|
|
80
|
-
capabilities: strategy.capabilities,
|
|
81
|
-
prepareRequest: strategy.prepareRequest.bind(strategy),
|
|
82
|
-
extractMetrics: strategy.extractMetrics.bind(strategy),
|
|
83
|
-
};
|
|
84
|
-
registerCacheStrategy(browserStrategy);
|
|
85
|
-
}
|
|
86
|
-
//# sourceMappingURL=AnthropicCacheStrategy.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AnthropicCacheStrategy.js","sourceRoot":"","sources":["../../../../src/cache/strategies/AnthropicCacheStrategy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAWH,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAErD,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,0DAA0D;AAC1D,MAAM,qBAAqB,GAAG,CAAC,CAAC;AAEhC,MAAM,sBAAsB,GAAsB,MAAM,CAAC,MAAM,CAAC;IAC9D,OAAO,EAAE,IAAI;IACb,UAAU,EAAE,qBAAqB;IACjC,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,CAAkC;IACxD,MAAM,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,CAAiD;IACvF,SAAS,EAAE,KAAK;CACjB,CAAC,CAAC;AAEH,MAAM,OAAO,sBAAsB;IACxB,YAAY,GAAG,WAAW,CAAC;IAC3B,YAAY,GAAG,sBAAsB,CAAC;IAE/C,KAAK,CAAC,cAAc,CAClB,GAAe,EACf,UAAkC,EAClC,GAAyB;QAKzB,8DAA8D;QAC9D,kEAAkE;QAClE,gEAAgE;QAChE,kEAAkE;QAClE,IAAI,GAAG,CAAC,eAAe,EAAE,CAAC;YACxB,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC;QAC9C,CAAC;QAED,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC;QAC9C,CAAC;QAED,2DAA2D;QAC3D,4DAA4D;QAC5D,kEAAkE;QAClE,MAAM,cAAc,GAClB,UAAU,CAAC,MAAM,IAAI,qBAAqB;YACxC,CAAC,CAAC,UAAU;YACZ,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,qBAAqB,CAAC,CAAC;QAEjD,MAAM,OAAO,GAAe;YAC1B,GAAG,GAAG;YACN,YAAY,EAAE,cAAc;SAC7B,CAAC;QACF,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;IACrC,CAAC;IAED,cAAc,CAAC,KAA6B;QAC1C,OAAO,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,CAAC,CAAC;IAC5D,CAAC;CACF;AAED,qEAAqE;AACrE,sEAAsE;AACtE,CAAC;IACC,MAAM,QAAQ,GAAG,IAAI,sBAAsB,EAAE,CAAC;IAC9C,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IAChC,2EAA2E;IAC3E,oDAAoD;IACpD,MAAM,eAAe,GAAkB;QACrC,YAAY,EAAE,mBAAmB;QACjC,YAAY,EAAE,QAAQ,CAAC,YAAY;QACnC,cAAc,EAAE,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC;QACtD,cAAc,EAAE,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC;KACvD,CAAC;IACF,qBAAqB,CAAC,eAAe,CAAC,CAAC;AACzC,CAAC"}
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* BedrockCacheStrategy — REGISTERED, AND HONEST ABOUT DOING NOTHING (9.59.0).
|
|
3
|
-
*
|
|
4
|
-
* What Bedrock supports and what THIS ADAPTER does are two different facts,
|
|
5
|
-
* and until 9.59.0 the strategy stated the first while the runtime lived
|
|
6
|
-
* under the second:
|
|
7
|
-
*
|
|
8
|
-
* - AWS's Converse API does support prompt caching for Claude models
|
|
9
|
-
* (`cachePoint: { type: 'default' }` entries inserted into the `system` /
|
|
10
|
-
* `tools` / `messages` arrays) and does report
|
|
11
|
-
* `cacheReadInputTokens` / `cacheWriteInputTokens` in its usage block.
|
|
12
|
-
* - `BedrockProvider` implements NEITHER half. It never reads
|
|
13
|
-
* `req.cacheMarkers` (compare `AnthropicProvider`, which calls
|
|
14
|
-
* `applyCacheMarkers`) and it builds `usage` as `{ input, output }` at
|
|
15
|
-
* both its streaming and non-streaming sites. The string "cache" does
|
|
16
|
-
* not appear in that file.
|
|
17
|
-
*
|
|
18
|
-
* So this strategy used to clamp markers onto a request field the adapter
|
|
19
|
-
* then discarded, and report `markersApplied` for markers that never reached
|
|
20
|
-
* a wire — a meter attached to a provider that cannot feed it. It now:
|
|
21
|
-
*
|
|
22
|
-
* - declares `enabled: false` (nothing here works end to end);
|
|
23
|
-
* - passes the request through with `markersApplied: []`, and says why
|
|
24
|
-
* once, in dev mode;
|
|
25
|
-
* - answers `extractMetrics` with `not-applicable` and the reason.
|
|
26
|
-
*
|
|
27
|
-
* It stays REGISTERED rather than being deleted so that a Bedrock consumer
|
|
28
|
-
* asking the registry what it got is told the truth by name, instead of
|
|
29
|
-
* silently falling through to the wildcard NoOp and being left to guess.
|
|
30
|
-
*
|
|
31
|
-
* Note on Converse: the send half is genuinely a DIFFERENT wire from
|
|
32
|
-
* Anthropic's `cache_control` block, so implementing it wants its own
|
|
33
|
-
* `bedrockCacheWire.ts` beside `anthropicCacheWire.ts` — not a reuse. That
|
|
34
|
-
* is the follow-up this file is waiting for; when it lands, flip `enabled`
|
|
35
|
-
* and give `extractMetrics` the `readPortCacheUsage` body the Anthropic
|
|
36
|
-
* strategy has.
|
|
37
|
-
*
|
|
38
|
-
* Auto-registers under provider name `'bedrock'`.
|
|
39
|
-
*/
|
|
40
|
-
import type { CacheCapabilities, CacheMarker, CacheMetrics, CacheStrategy, CacheStrategyContext, CacheUsage } from '../types.js';
|
|
41
|
-
import { type Claim } from '../../lib/claim/claim.js';
|
|
42
|
-
import type { LLMRequest } from '../../adapters/types.js';
|
|
43
|
-
export declare class BedrockCacheStrategy implements CacheStrategy {
|
|
44
|
-
readonly providerName = "bedrock";
|
|
45
|
-
readonly capabilities: CacheCapabilities;
|
|
46
|
-
prepareRequest(req: LLMRequest, candidates: readonly CacheMarker[], _ctx: CacheStrategyContext): Promise<{
|
|
47
|
-
readonly request: LLMRequest;
|
|
48
|
-
readonly markersApplied: readonly CacheMarker[];
|
|
49
|
-
}>;
|
|
50
|
-
/**
|
|
51
|
-
* Always `not-applicable` — and that is a statement about THIS adapter,
|
|
52
|
-
* not about Bedrock. AWS's Converse API does report
|
|
53
|
-
* `cacheReadInputTokens` / `cacheWriteInputTokens`, but
|
|
54
|
-
* `BedrockProvider` never reads them: its `usage` is built as
|
|
55
|
-
* `{ input, output }` at both the streaming and non-streaming sites. So
|
|
56
|
-
* `cacheRead`/`cacheWrite` are ALWAYS absent on this port, and an
|
|
57
|
-
* `unknown` per call would read as a measurement that merely failed.
|
|
58
|
-
* `not-applicable` says the true thing: nothing here can be measured
|
|
59
|
-
* until the adapter grows the read half.
|
|
60
|
-
*/
|
|
61
|
-
extractMetrics(_usage: CacheUsage | undefined): Claim<CacheMetrics>;
|
|
62
|
-
}
|