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
|
@@ -1,93 +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 { notApplicable } from '../../lib/claim/claim.js';
|
|
41
|
-
import { registerCacheStrategy } from '../strategyRegistry.js';
|
|
42
|
-
import { isDevMode } from 'footprintjs';
|
|
43
|
-
const BEDROCK_CAPABILITIES = Object.freeze({
|
|
44
|
-
// `false`, and it is a statement about the ADAPTER, not about Bedrock.
|
|
45
|
-
// Bedrock-Claude supports prompt caching; `BedrockProvider` implements
|
|
46
|
-
// neither half of the contract (never sends markers, never reads cache
|
|
47
|
-
// usage), so nothing this strategy could do would reach a wire. Saying
|
|
48
|
-
// `true` here is what let a dead meter look alive.
|
|
49
|
-
enabled: false,
|
|
50
|
-
maxMarkers: 0,
|
|
51
|
-
ttls: [],
|
|
52
|
-
fields: [],
|
|
53
|
-
automatic: false,
|
|
54
|
-
});
|
|
55
|
-
/** One warning per process, not one per call — the fact does not change. */
|
|
56
|
-
let warnedAboutAdapterGap = false;
|
|
57
|
-
export class BedrockCacheStrategy {
|
|
58
|
-
providerName = 'bedrock';
|
|
59
|
-
capabilities = BEDROCK_CAPABILITIES;
|
|
60
|
-
async prepareRequest(req, candidates, _ctx) {
|
|
61
|
-
// Pass-through, ALWAYS. Writing `req.cacheMarkers` here would be writing
|
|
62
|
-
// to a field `BedrockProvider` never reads, and returning a non-empty
|
|
63
|
-
// `markersApplied` would put markers that never reached a wire onto the
|
|
64
|
-
// recorder's record.
|
|
65
|
-
if (candidates.length > 0 && !warnedAboutAdapterGap && isDevMode()) {
|
|
66
|
-
warnedAboutAdapterGap = true;
|
|
67
|
-
// eslint-disable-next-line no-console
|
|
68
|
-
console.warn(`[agentfootprint] cache: ${candidates.length} cache marker(s) were declared for ` +
|
|
69
|
-
`model "${req.model}", but the Bedrock adapter does not implement prompt caching — ` +
|
|
70
|
-
`it never sends cachePoint entries and never reads cacheReadInputTokens off the ` +
|
|
71
|
-
`Converse response. No markers were applied and no hit rate can be measured. ` +
|
|
72
|
-
`Your cache: directives stay portable and light up on the Anthropic providers.`);
|
|
73
|
-
}
|
|
74
|
-
return { request: req, markersApplied: [] };
|
|
75
|
-
}
|
|
76
|
-
/**
|
|
77
|
-
* Always `not-applicable` — and that is a statement about THIS adapter,
|
|
78
|
-
* not about Bedrock. AWS's Converse API does report
|
|
79
|
-
* `cacheReadInputTokens` / `cacheWriteInputTokens`, but
|
|
80
|
-
* `BedrockProvider` never reads them: its `usage` is built as
|
|
81
|
-
* `{ input, output }` at both the streaming and non-streaming sites. So
|
|
82
|
-
* `cacheRead`/`cacheWrite` are ALWAYS absent on this port, and an
|
|
83
|
-
* `unknown` per call would read as a measurement that merely failed.
|
|
84
|
-
* `not-applicable` says the true thing: nothing here can be measured
|
|
85
|
-
* until the adapter grows the read half.
|
|
86
|
-
*/
|
|
87
|
-
extractMetrics(_usage) {
|
|
88
|
-
return notApplicable('the Bedrock adapter does not read cache usage off the Converse response, so no ' +
|
|
89
|
-
'cache tokens ever reach the port');
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
registerCacheStrategy(new BedrockCacheStrategy());
|
|
93
|
-
//# 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,OAAO,EAAE,aAAa,EAAc,MAAM,0BAA0B,CAAC;AAErE,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;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,MAAM,OAAO,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,SAAS,EAAE,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,aAAa,CAClB,iFAAiF;YAC/E,kCAAkC,CACrC,CAAC;IACJ,CAAC;CACF;AAED,qBAAqB,CAAC,IAAI,oBAAoB,EAAE,CAAC,CAAC"}
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* OpenAICacheStrategy — metrics-only strategy for OpenAI providers.
|
|
3
|
-
*
|
|
4
|
-
* OpenAI auto-caches request prefixes ≥1024 tokens at 50% off.
|
|
5
|
-
* No client-side opt-in markers needed (and no way to influence
|
|
6
|
-
* cache behavior from the client). The strategy:
|
|
7
|
-
*
|
|
8
|
-
* - **prepareRequest**: pass-through. We can't tell OpenAI what
|
|
9
|
-
* to cache; they decide automatically. Markers are silently
|
|
10
|
-
* dropped (the 80% case for OpenAI consumers is "I declared
|
|
11
|
-
* cache: 'always' for my injections" — that's still meaningful
|
|
12
|
-
* because (a) it's portable across providers, (b) for OpenAI
|
|
13
|
-
* the auto-cache may still hit on stable prefixes regardless).
|
|
14
|
-
* - **extractMetrics**: reads `prompt_tokens_details.cached_tokens`
|
|
15
|
-
* from OpenAI's usage response so cacheRecorder can surface
|
|
16
|
-
* hit rates / dollar savings.
|
|
17
|
-
*
|
|
18
|
-
* Auto-registers on module import for: 'openai', 'browser-openai'.
|
|
19
|
-
*
|
|
20
|
-
* Documentation note for consumers (Phase 12 docs): the `cache:`
|
|
21
|
-
* directive on injection definitions is portable but has NO LOCAL
|
|
22
|
-
* EFFECT on OpenAI runs — the provider auto-caches based on prefix
|
|
23
|
-
* length. The directive still ships correctly with the agent and
|
|
24
|
-
* lights up automatically when you swap to Anthropic / Bedrock.
|
|
25
|
-
*/
|
|
26
|
-
import type { CacheCapabilities, CacheMarker, CacheMetrics, CacheStrategy, CacheStrategyContext, CacheUsage } from '../types.js';
|
|
27
|
-
import { type Claim } from '../../lib/claim/claim.js';
|
|
28
|
-
import type { LLMRequest } from '../../adapters/types.js';
|
|
29
|
-
export declare class OpenAICacheStrategy implements CacheStrategy {
|
|
30
|
-
readonly providerName = "openai";
|
|
31
|
-
readonly capabilities: CacheCapabilities;
|
|
32
|
-
prepareRequest(req: LLMRequest, _candidates: readonly CacheMarker[], _ctx: CacheStrategyContext): Promise<{
|
|
33
|
-
readonly request: LLMRequest;
|
|
34
|
-
readonly markersApplied: readonly CacheMarker[];
|
|
35
|
-
}>;
|
|
36
|
-
/**
|
|
37
|
-
* Always `not-applicable`, for the same adapter reason as Bedrock:
|
|
38
|
-
* OpenAI's wire DOES carry `prompt_tokens_details.cached_tokens`, but
|
|
39
|
-
* `OpenAIProvider` builds `usage` as `{ input, output }` at both its
|
|
40
|
-
* streaming and non-streaming sites and never lifts the cached count
|
|
41
|
-
* onto the port. OpenAI is the AUTO-caching provider, so this is the
|
|
42
|
-
* costliest of the three gaps — it is named here rather than hidden
|
|
43
|
-
* behind a per-call `unknown` that would suggest the measurement was
|
|
44
|
-
* attempted and merely came back empty.
|
|
45
|
-
*/
|
|
46
|
-
extractMetrics(_usage: CacheUsage | undefined): Claim<CacheMetrics>;
|
|
47
|
-
}
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* OpenAICacheStrategy — metrics-only strategy for OpenAI providers.
|
|
3
|
-
*
|
|
4
|
-
* OpenAI auto-caches request prefixes ≥1024 tokens at 50% off.
|
|
5
|
-
* No client-side opt-in markers needed (and no way to influence
|
|
6
|
-
* cache behavior from the client). The strategy:
|
|
7
|
-
*
|
|
8
|
-
* - **prepareRequest**: pass-through. We can't tell OpenAI what
|
|
9
|
-
* to cache; they decide automatically. Markers are silently
|
|
10
|
-
* dropped (the 80% case for OpenAI consumers is "I declared
|
|
11
|
-
* cache: 'always' for my injections" — that's still meaningful
|
|
12
|
-
* because (a) it's portable across providers, (b) for OpenAI
|
|
13
|
-
* the auto-cache may still hit on stable prefixes regardless).
|
|
14
|
-
* - **extractMetrics**: reads `prompt_tokens_details.cached_tokens`
|
|
15
|
-
* from OpenAI's usage response so cacheRecorder can surface
|
|
16
|
-
* hit rates / dollar savings.
|
|
17
|
-
*
|
|
18
|
-
* Auto-registers on module import for: 'openai', 'browser-openai'.
|
|
19
|
-
*
|
|
20
|
-
* Documentation note for consumers (Phase 12 docs): the `cache:`
|
|
21
|
-
* directive on injection definitions is portable but has NO LOCAL
|
|
22
|
-
* EFFECT on OpenAI runs — the provider auto-caches based on prefix
|
|
23
|
-
* length. The directive still ships correctly with the agent and
|
|
24
|
-
* lights up automatically when you swap to Anthropic / Bedrock.
|
|
25
|
-
*/
|
|
26
|
-
import { notApplicable } from '../../lib/claim/claim.js';
|
|
27
|
-
import { registerCacheStrategy } from '../strategyRegistry.js';
|
|
28
|
-
const OPENAI_CAPABILITIES = Object.freeze({
|
|
29
|
-
// `enabled: true` because metrics ARE extracted (cacheRecorder shows
|
|
30
|
-
// hit rates). The `automatic: true` flag tells consumers the markers
|
|
31
|
-
// are inert here — OpenAI decides what to cache, not us.
|
|
32
|
-
enabled: true,
|
|
33
|
-
maxMarkers: 0,
|
|
34
|
-
ttls: ['short'],
|
|
35
|
-
fields: [],
|
|
36
|
-
automatic: true,
|
|
37
|
-
});
|
|
38
|
-
export class OpenAICacheStrategy {
|
|
39
|
-
providerName = 'openai';
|
|
40
|
-
capabilities = OPENAI_CAPABILITIES;
|
|
41
|
-
async prepareRequest(req, _candidates, _ctx) {
|
|
42
|
-
// Pass-through. OpenAI auto-caches; no opt-in needed.
|
|
43
|
-
return { request: req, markersApplied: [] };
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Always `not-applicable`, for the same adapter reason as Bedrock:
|
|
47
|
-
* OpenAI's wire DOES carry `prompt_tokens_details.cached_tokens`, but
|
|
48
|
-
* `OpenAIProvider` builds `usage` as `{ input, output }` at both its
|
|
49
|
-
* streaming and non-streaming sites and never lifts the cached count
|
|
50
|
-
* onto the port. OpenAI is the AUTO-caching provider, so this is the
|
|
51
|
-
* costliest of the three gaps — it is named here rather than hidden
|
|
52
|
-
* behind a per-call `unknown` that would suggest the measurement was
|
|
53
|
-
* attempted and merely came back empty.
|
|
54
|
-
*/
|
|
55
|
-
extractMetrics(_usage) {
|
|
56
|
-
return notApplicable('the OpenAI adapter does not lift prompt_tokens_details.cached_tokens onto the port ' +
|
|
57
|
-
'usage, so no cache tokens ever reach this strategy');
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
// Auto-register for both server-side and browser variants.
|
|
61
|
-
{
|
|
62
|
-
const strategy = new OpenAICacheStrategy();
|
|
63
|
-
registerCacheStrategy(strategy);
|
|
64
|
-
const browserStrategy = {
|
|
65
|
-
providerName: 'browser-openai',
|
|
66
|
-
capabilities: strategy.capabilities,
|
|
67
|
-
prepareRequest: strategy.prepareRequest.bind(strategy),
|
|
68
|
-
extractMetrics: strategy.extractMetrics.bind(strategy),
|
|
69
|
-
};
|
|
70
|
-
registerCacheStrategy(browserStrategy);
|
|
71
|
-
}
|
|
72
|
-
//# 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,OAAO,EAAE,aAAa,EAAc,MAAM,0BAA0B,CAAC;AAErE,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;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,MAAM,OAAO,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,aAAa,CAClB,qFAAqF;YACnF,oDAAoD,CACvD,CAAC;IACJ,CAAC;CACF;AAED,2DAA2D;AAC3D,CAAC;IACC,MAAM,QAAQ,GAAG,IAAI,mBAAmB,EAAE,CAAC;IAC3C,qBAAqB,CAAC,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,qBAAqB,CAAC,eAAe,CAAC,CAAC;AACzC,CAAC"}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Strategy registry — maps provider name → CacheStrategy.
|
|
3
|
-
*
|
|
4
|
-
* Auto-resolution at agent build time: agentfootprint inspects
|
|
5
|
-
* `provider.name` and looks up the registered strategy for that
|
|
6
|
-
* name. Falls back to `NoOpCacheStrategy` (registered under wildcard
|
|
7
|
-
* `'*'`) when the provider isn't recognized.
|
|
8
|
-
*
|
|
9
|
-
* Phases shipping registered strategies:
|
|
10
|
-
* - v2.6 Phase 6 (this phase): NoOp
|
|
11
|
-
* - v2.6 Phase 7: AnthropicCacheStrategy ('anthropic',
|
|
12
|
-
* 'browser-anthropic')
|
|
13
|
-
* - v2.6 Phase 8: OpenAICacheStrategy ('openai', 'browser-openai'),
|
|
14
|
-
* BedrockCacheStrategy ('bedrock')
|
|
15
|
-
* - v2.7+ : GeminiCacheStrategy (handle-based, async, deferred)
|
|
16
|
-
*
|
|
17
|
-
* Consumers can register their own strategy via
|
|
18
|
-
* `registerCacheStrategy(strategy)`. Useful for in-house LLM proxies
|
|
19
|
-
* or test mocks.
|
|
20
|
-
*/
|
|
21
|
-
import type { CacheStrategy } from './types.js';
|
|
22
|
-
/**
|
|
23
|
-
* Look up a CacheStrategy by provider name. Falls back to the
|
|
24
|
-
* wildcard NoOp strategy if no match.
|
|
25
|
-
*
|
|
26
|
-
* Lookup is case-insensitive on the provider name.
|
|
27
|
-
*/
|
|
28
|
-
export declare function getDefaultCacheStrategy(providerName: string): CacheStrategy;
|
|
29
|
-
/**
|
|
30
|
-
* Register (or replace) a strategy for a provider name. Called by
|
|
31
|
-
* strategy modules (v2.6 Phase 7+) at module load OR by consumers
|
|
32
|
-
* needing a custom backend. Replacing an existing strategy is allowed
|
|
33
|
-
* — the most-recent registration wins.
|
|
34
|
-
*/
|
|
35
|
-
export declare function registerCacheStrategy(strategy: CacheStrategy): void;
|
|
36
|
-
/**
|
|
37
|
-
* Read-only view of registered strategy names. Useful for diagnostics
|
|
38
|
-
* (e.g., logging "we have strategies for: anthropic, openai, *").
|
|
39
|
-
*/
|
|
40
|
-
export declare function listRegisteredStrategies(): readonly string[];
|
|
41
|
-
/**
|
|
42
|
-
* Internal helper for tests: reset the registry to the default
|
|
43
|
-
* (wildcard → NoOp only). Not exported from the public barrel.
|
|
44
|
-
*/
|
|
45
|
-
export declare function _resetRegistryForTests(): void;
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Strategy registry — maps provider name → CacheStrategy.
|
|
3
|
-
*
|
|
4
|
-
* Auto-resolution at agent build time: agentfootprint inspects
|
|
5
|
-
* `provider.name` and looks up the registered strategy for that
|
|
6
|
-
* name. Falls back to `NoOpCacheStrategy` (registered under wildcard
|
|
7
|
-
* `'*'`) when the provider isn't recognized.
|
|
8
|
-
*
|
|
9
|
-
* Phases shipping registered strategies:
|
|
10
|
-
* - v2.6 Phase 6 (this phase): NoOp
|
|
11
|
-
* - v2.6 Phase 7: AnthropicCacheStrategy ('anthropic',
|
|
12
|
-
* 'browser-anthropic')
|
|
13
|
-
* - v2.6 Phase 8: OpenAICacheStrategy ('openai', 'browser-openai'),
|
|
14
|
-
* BedrockCacheStrategy ('bedrock')
|
|
15
|
-
* - v2.7+ : GeminiCacheStrategy (handle-based, async, deferred)
|
|
16
|
-
*
|
|
17
|
-
* Consumers can register their own strategy via
|
|
18
|
-
* `registerCacheStrategy(strategy)`. Useful for in-house LLM proxies
|
|
19
|
-
* or test mocks.
|
|
20
|
-
*/
|
|
21
|
-
import { NoOpCacheStrategy } from './strategies/NoOpCacheStrategy.js';
|
|
22
|
-
/**
|
|
23
|
-
* Registry singleton. Populated by individual strategy modules
|
|
24
|
-
* importing this and calling `registerCacheStrategy` at module load
|
|
25
|
-
* time, OR by the consumer at agent build time.
|
|
26
|
-
*
|
|
27
|
-
* Contains the wildcard `'*'` → NoOp entry by default; never empty.
|
|
28
|
-
*/
|
|
29
|
-
const REGISTRY = new Map([['*', new NoOpCacheStrategy()]]);
|
|
30
|
-
/**
|
|
31
|
-
* Look up a CacheStrategy by provider name. Falls back to the
|
|
32
|
-
* wildcard NoOp strategy if no match.
|
|
33
|
-
*
|
|
34
|
-
* Lookup is case-insensitive on the provider name.
|
|
35
|
-
*/
|
|
36
|
-
export function getDefaultCacheStrategy(providerName) {
|
|
37
|
-
const exact = REGISTRY.get(providerName);
|
|
38
|
-
if (exact !== undefined)
|
|
39
|
-
return exact;
|
|
40
|
-
const lower = providerName.toLowerCase();
|
|
41
|
-
if (lower !== providerName) {
|
|
42
|
-
const lowercased = REGISTRY.get(lower);
|
|
43
|
-
if (lowercased !== undefined)
|
|
44
|
-
return lowercased;
|
|
45
|
-
}
|
|
46
|
-
// Fallback wildcard always present (set at module load by registerDefaults).
|
|
47
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
48
|
-
return REGISTRY.get('*');
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Register (or replace) a strategy for a provider name. Called by
|
|
52
|
-
* strategy modules (v2.6 Phase 7+) at module load OR by consumers
|
|
53
|
-
* needing a custom backend. Replacing an existing strategy is allowed
|
|
54
|
-
* — the most-recent registration wins.
|
|
55
|
-
*/
|
|
56
|
-
export function registerCacheStrategy(strategy) {
|
|
57
|
-
REGISTRY.set(strategy.providerName, strategy);
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* Read-only view of registered strategy names. Useful for diagnostics
|
|
61
|
-
* (e.g., logging "we have strategies for: anthropic, openai, *").
|
|
62
|
-
*/
|
|
63
|
-
export function listRegisteredStrategies() {
|
|
64
|
-
return [...REGISTRY.keys()];
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* Internal helper for tests: reset the registry to the default
|
|
68
|
-
* (wildcard → NoOp only). Not exported from the public barrel.
|
|
69
|
-
*/
|
|
70
|
-
export function _resetRegistryForTests() {
|
|
71
|
-
REGISTRY.clear();
|
|
72
|
-
REGISTRY.set('*', new NoOpCacheStrategy());
|
|
73
|
-
}
|
|
74
|
-
//# sourceMappingURL=strategyRegistry.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"strategyRegistry.js","sourceRoot":"","sources":["../../../src/cache/strategyRegistry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAEtE;;;;;;GAMG;AACH,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAwB,CAAC,CAAC,GAAG,EAAE,IAAI,iBAAiB,EAAE,CAAC,CAAC,CAAC,CAAC;AAElF;;;;;GAKG;AACH,MAAM,UAAU,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;AAED;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,QAAuB;IAC3D,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;AAChD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,wBAAwB;IACtC,OAAO,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;AAC9B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB;IACpC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACjB,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,iBAAiB,EAAE,CAAC,CAAC;AAC7C,CAAC"}
|
|
@@ -1,42 +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
|
-
}
|
|
42
|
-
//# sourceMappingURL=AnthropicCacheStrategy.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AnthropicCacheStrategy.d.ts","sourceRoot":"","sources":["../../../../src/cache/strategies/AnthropicCacheStrategy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,EACV,iBAAiB,EACjB,WAAW,EACX,YAAY,EACZ,aAAa,EACb,oBAAoB,EACpB,UAAU,EACX,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAEtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAc1D,qBAAa,sBAAuB,YAAW,aAAa;IAC1D,QAAQ,CAAC,YAAY,eAAe;IACpC,QAAQ,CAAC,YAAY,oBAA0B;IAEzC,cAAc,CAClB,GAAG,EAAE,UAAU,EACf,UAAU,EAAE,SAAS,WAAW,EAAE,EAClC,GAAG,EAAE,oBAAoB,GACxB,OAAO,CAAC;QACT,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;QAC7B,QAAQ,CAAC,cAAc,EAAE,SAAS,WAAW,EAAE,CAAC;KACjD,CAAC;IA4BF,cAAc,CAAC,KAAK,EAAE,UAAU,GAAG,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC;CAGnE"}
|
|
@@ -1,63 +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
|
-
}
|
|
63
|
-
//# sourceMappingURL=BedrockCacheStrategy.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BedrockCacheStrategy.d.ts","sourceRoot":"","sources":["../../../../src/cache/strategies/BedrockCacheStrategy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAEH,OAAO,KAAK,EACV,iBAAiB,EACjB,WAAW,EACX,YAAY,EACZ,aAAa,EACb,oBAAoB,EACpB,UAAU,EACX,MAAM,aAAa,CAAC;AACrB,OAAO,EAAiB,KAAK,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAoB1D,qBAAa,oBAAqB,YAAW,aAAa;IACxD,QAAQ,CAAC,YAAY,aAAa;IAClC,QAAQ,CAAC,YAAY,oBAAwB;IAEvC,cAAc,CAClB,GAAG,EAAE,UAAU,EACf,UAAU,EAAE,SAAS,WAAW,EAAE,EAClC,IAAI,EAAE,oBAAoB,GACzB,OAAO,CAAC;QACT,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;QAC7B,QAAQ,CAAC,cAAc,EAAE,SAAS,WAAW,EAAE,CAAC;KACjD,CAAC;IAmBF;;;;;;;;;;OAUG;IACH,cAAc,CAAC,MAAM,EAAE,UAAU,GAAG,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC;CAMpE"}
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* OpenAICacheStrategy — metrics-only strategy for OpenAI providers.
|
|
3
|
-
*
|
|
4
|
-
* OpenAI auto-caches request prefixes ≥1024 tokens at 50% off.
|
|
5
|
-
* No client-side opt-in markers needed (and no way to influence
|
|
6
|
-
* cache behavior from the client). The strategy:
|
|
7
|
-
*
|
|
8
|
-
* - **prepareRequest**: pass-through. We can't tell OpenAI what
|
|
9
|
-
* to cache; they decide automatically. Markers are silently
|
|
10
|
-
* dropped (the 80% case for OpenAI consumers is "I declared
|
|
11
|
-
* cache: 'always' for my injections" — that's still meaningful
|
|
12
|
-
* because (a) it's portable across providers, (b) for OpenAI
|
|
13
|
-
* the auto-cache may still hit on stable prefixes regardless).
|
|
14
|
-
* - **extractMetrics**: reads `prompt_tokens_details.cached_tokens`
|
|
15
|
-
* from OpenAI's usage response so cacheRecorder can surface
|
|
16
|
-
* hit rates / dollar savings.
|
|
17
|
-
*
|
|
18
|
-
* Auto-registers on module import for: 'openai', 'browser-openai'.
|
|
19
|
-
*
|
|
20
|
-
* Documentation note for consumers (Phase 12 docs): the `cache:`
|
|
21
|
-
* directive on injection definitions is portable but has NO LOCAL
|
|
22
|
-
* EFFECT on OpenAI runs — the provider auto-caches based on prefix
|
|
23
|
-
* length. The directive still ships correctly with the agent and
|
|
24
|
-
* lights up automatically when you swap to Anthropic / Bedrock.
|
|
25
|
-
*/
|
|
26
|
-
import type { CacheCapabilities, CacheMarker, CacheMetrics, CacheStrategy, CacheStrategyContext, CacheUsage } from '../types.js';
|
|
27
|
-
import { type Claim } from '../../lib/claim/claim.js';
|
|
28
|
-
import type { LLMRequest } from '../../adapters/types.js';
|
|
29
|
-
export declare class OpenAICacheStrategy implements CacheStrategy {
|
|
30
|
-
readonly providerName = "openai";
|
|
31
|
-
readonly capabilities: CacheCapabilities;
|
|
32
|
-
prepareRequest(req: LLMRequest, _candidates: readonly CacheMarker[], _ctx: CacheStrategyContext): Promise<{
|
|
33
|
-
readonly request: LLMRequest;
|
|
34
|
-
readonly markersApplied: readonly CacheMarker[];
|
|
35
|
-
}>;
|
|
36
|
-
/**
|
|
37
|
-
* Always `not-applicable`, for the same adapter reason as Bedrock:
|
|
38
|
-
* OpenAI's wire DOES carry `prompt_tokens_details.cached_tokens`, but
|
|
39
|
-
* `OpenAIProvider` builds `usage` as `{ input, output }` at both its
|
|
40
|
-
* streaming and non-streaming sites and never lifts the cached count
|
|
41
|
-
* onto the port. OpenAI is the AUTO-caching provider, so this is the
|
|
42
|
-
* costliest of the three gaps — it is named here rather than hidden
|
|
43
|
-
* behind a per-call `unknown` that would suggest the measurement was
|
|
44
|
-
* attempted and merely came back empty.
|
|
45
|
-
*/
|
|
46
|
-
extractMetrics(_usage: CacheUsage | undefined): Claim<CacheMetrics>;
|
|
47
|
-
}
|
|
48
|
-
//# sourceMappingURL=OpenAICacheStrategy.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"OpenAICacheStrategy.d.ts","sourceRoot":"","sources":["../../../../src/cache/strategies/OpenAICacheStrategy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,KAAK,EACV,iBAAiB,EACjB,WAAW,EACX,YAAY,EACZ,aAAa,EACb,oBAAoB,EACpB,UAAU,EACX,MAAM,aAAa,CAAC;AACrB,OAAO,EAAiB,KAAK,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAc1D,qBAAa,mBAAoB,YAAW,aAAa;IACvD,QAAQ,CAAC,YAAY,YAAY;IACjC,QAAQ,CAAC,YAAY,oBAAuB;IAEtC,cAAc,CAClB,GAAG,EAAE,UAAU,EACf,WAAW,EAAE,SAAS,WAAW,EAAE,EACnC,IAAI,EAAE,oBAAoB,GACzB,OAAO,CAAC;QACT,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;QAC7B,QAAQ,CAAC,cAAc,EAAE,SAAS,WAAW,EAAE,CAAC;KACjD,CAAC;IAKF;;;;;;;;;OASG;IACH,cAAc,CAAC,MAAM,EAAE,UAAU,GAAG,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC;CAMpE"}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Strategy registry — maps provider name → CacheStrategy.
|
|
3
|
-
*
|
|
4
|
-
* Auto-resolution at agent build time: agentfootprint inspects
|
|
5
|
-
* `provider.name` and looks up the registered strategy for that
|
|
6
|
-
* name. Falls back to `NoOpCacheStrategy` (registered under wildcard
|
|
7
|
-
* `'*'`) when the provider isn't recognized.
|
|
8
|
-
*
|
|
9
|
-
* Phases shipping registered strategies:
|
|
10
|
-
* - v2.6 Phase 6 (this phase): NoOp
|
|
11
|
-
* - v2.6 Phase 7: AnthropicCacheStrategy ('anthropic',
|
|
12
|
-
* 'browser-anthropic')
|
|
13
|
-
* - v2.6 Phase 8: OpenAICacheStrategy ('openai', 'browser-openai'),
|
|
14
|
-
* BedrockCacheStrategy ('bedrock')
|
|
15
|
-
* - v2.7+ : GeminiCacheStrategy (handle-based, async, deferred)
|
|
16
|
-
*
|
|
17
|
-
* Consumers can register their own strategy via
|
|
18
|
-
* `registerCacheStrategy(strategy)`. Useful for in-house LLM proxies
|
|
19
|
-
* or test mocks.
|
|
20
|
-
*/
|
|
21
|
-
import type { CacheStrategy } from './types.js';
|
|
22
|
-
/**
|
|
23
|
-
* Look up a CacheStrategy by provider name. Falls back to the
|
|
24
|
-
* wildcard NoOp strategy if no match.
|
|
25
|
-
*
|
|
26
|
-
* Lookup is case-insensitive on the provider name.
|
|
27
|
-
*/
|
|
28
|
-
export declare function getDefaultCacheStrategy(providerName: string): CacheStrategy;
|
|
29
|
-
/**
|
|
30
|
-
* Register (or replace) a strategy for a provider name. Called by
|
|
31
|
-
* strategy modules (v2.6 Phase 7+) at module load OR by consumers
|
|
32
|
-
* needing a custom backend. Replacing an existing strategy is allowed
|
|
33
|
-
* — the most-recent registration wins.
|
|
34
|
-
*/
|
|
35
|
-
export declare function registerCacheStrategy(strategy: CacheStrategy): void;
|
|
36
|
-
/**
|
|
37
|
-
* Read-only view of registered strategy names. Useful for diagnostics
|
|
38
|
-
* (e.g., logging "we have strategies for: anthropic, openai, *").
|
|
39
|
-
*/
|
|
40
|
-
export declare function listRegisteredStrategies(): readonly string[];
|
|
41
|
-
/**
|
|
42
|
-
* Internal helper for tests: reset the registry to the default
|
|
43
|
-
* (wildcard → NoOp only). Not exported from the public barrel.
|
|
44
|
-
*/
|
|
45
|
-
export declare function _resetRegistryForTests(): void;
|
|
46
|
-
//# sourceMappingURL=strategyRegistry.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"strategyRegistry.d.ts","sourceRoot":"","sources":["../../../src/cache/strategyRegistry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAYhD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,YAAY,EAAE,MAAM,GAAG,aAAa,CAW3E;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI,CAEnE;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,IAAI,SAAS,MAAM,EAAE,CAE5D;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,IAAI,CAG7C"}
|