agentfootprint 10.0.0 → 10.1.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 +3 -1
- package/ai-instructions/claude-code/SKILL.md +1 -1
- package/dist/adapters/forcedToolChoice.js +79 -0
- package/dist/adapters/forcedToolChoice.js.map +1 -0
- package/dist/adapters/llm/AnthropicProvider.js +25 -63
- package/dist/adapters/llm/AnthropicProvider.js.map +1 -1
- package/dist/adapters/llm/BedrockProvider.js +37 -8
- package/dist/adapters/llm/BedrockProvider.js.map +1 -1
- package/dist/adapters/llm/BrowserAnthropicProvider.js +29 -7
- package/dist/adapters/llm/BrowserAnthropicProvider.js.map +1 -1
- package/dist/adapters/llm/BrowserOpenAIProvider.js +3 -0
- package/dist/adapters/llm/BrowserOpenAIProvider.js.map +1 -1
- package/dist/adapters/llm/FoundryProvider.js +3 -0
- package/dist/adapters/llm/FoundryProvider.js.map +1 -1
- package/dist/adapters/llm/InvokeModelGatewayProvider.js +28 -9
- package/dist/adapters/llm/InvokeModelGatewayProvider.js.map +1 -1
- package/dist/adapters/llm/OpenAIProvider.js +3 -0
- package/dist/adapters/llm/OpenAIProvider.js.map +1 -1
- package/dist/adapters/llm/anthropicMessageProjection.js +113 -0
- package/dist/adapters/llm/anthropicMessageProjection.js.map +1 -0
- package/dist/adapters/llm/anthropicMessagesWire.js +189 -213
- package/dist/adapters/llm/anthropicMessagesWire.js.map +1 -1
- package/dist/adapters/llm/anthropicModels.js +187 -0
- package/dist/adapters/llm/anthropicModels.js.map +1 -0
- package/dist/adapters/llm/anthropicReplayLayout.js +241 -0
- package/dist/adapters/llm/anthropicReplayLayout.js.map +1 -0
- package/dist/adapters/llm/anthropicThinkingReplay.js +188 -0
- package/dist/adapters/llm/anthropicThinkingReplay.js.map +1 -0
- package/dist/adapters/llm/anthropicThinkingWire.js +16 -105
- package/dist/adapters/llm/anthropicThinkingWire.js.map +1 -1
- package/dist/adapters/requestRefusal.js +15 -0
- package/dist/adapters/requestRefusal.js.map +1 -0
- package/dist/adapters/types.js.map +1 -1
- package/dist/core/Agent.js +60 -30
- package/dist/core/Agent.js.map +1 -1
- package/dist/core/LLMCall.js +1 -1
- package/dist/core/LLMCall.js.map +1 -1
- package/dist/core/agent/AgentBuilder.js +3 -0
- package/dist/core/agent/AgentBuilder.js.map +1 -1
- package/dist/core/agent/assistantReplay.js +27 -0
- package/dist/core/agent/assistantReplay.js.map +1 -0
- package/dist/core/agent/buildAgentMessageApiChart.js +1 -1
- package/dist/core/agent/buildAgentMessageApiChart.js.map +1 -1
- package/dist/core/agent/buildDynamicAgentChart.js +8 -0
- package/dist/core/agent/buildDynamicAgentChart.js.map +1 -1
- package/dist/core/agent/buildMessageApiChart.js +1 -1
- package/dist/core/agent/buildMessageApiChart.js.map +1 -1
- package/dist/core/agent/providerTargets.js +14 -0
- package/dist/core/agent/providerTargets.js.map +1 -0
- package/dist/core/agent/stages/callLLM.js +48 -15
- package/dist/core/agent/stages/callLLM.js.map +1 -1
- package/dist/core/agent/stages/deliver.js +15 -13
- package/dist/core/agent/stages/deliver.js.map +1 -1
- package/dist/core/agent/stages/outputRetry.js +2 -1
- package/dist/core/agent/stages/outputRetry.js.map +1 -1
- package/dist/core/agent/stages/prepareFinal.js +2 -0
- package/dist/core/agent/stages/prepareFinal.js.map +1 -1
- package/dist/core/agent/stages/reliabilityExecution.js +29 -17
- package/dist/core/agent/stages/reliabilityExecution.js.map +1 -1
- package/dist/core/agent/stages/stepNudge.js +2 -1
- package/dist/core/agent/stages/stepNudge.js.map +1 -1
- package/dist/core/agent/stages/toolCalls.js +2 -0
- package/dist/core/agent/stages/toolCalls.js.map +1 -1
- package/dist/core/agent/thinkingSupport.js +8 -6
- package/dist/core/agent/thinkingSupport.js.map +1 -1
- package/dist/core/outputSchema.js.map +1 -1
- package/dist/core/runCheckpoint.js +16 -2
- package/dist/core/runCheckpoint.js.map +1 -1
- package/dist/esm/adapters/forcedToolChoice.d.ts +66 -0
- package/dist/esm/adapters/forcedToolChoice.js +74 -0
- package/dist/esm/adapters/forcedToolChoice.js.map +1 -0
- package/dist/esm/adapters/llm/AnthropicProvider.d.ts +3 -14
- package/dist/esm/adapters/llm/AnthropicProvider.js +27 -65
- package/dist/esm/adapters/llm/AnthropicProvider.js.map +1 -1
- package/dist/esm/adapters/llm/BedrockProvider.d.ts +5 -0
- package/dist/esm/adapters/llm/BedrockProvider.js +37 -8
- package/dist/esm/adapters/llm/BedrockProvider.js.map +1 -1
- package/dist/esm/adapters/llm/BrowserAnthropicProvider.d.ts +2 -0
- package/dist/esm/adapters/llm/BrowserAnthropicProvider.js +29 -7
- package/dist/esm/adapters/llm/BrowserAnthropicProvider.js.map +1 -1
- package/dist/esm/adapters/llm/BrowserOpenAIProvider.js +3 -0
- package/dist/esm/adapters/llm/BrowserOpenAIProvider.js.map +1 -1
- package/dist/esm/adapters/llm/FoundryProvider.js +3 -0
- package/dist/esm/adapters/llm/FoundryProvider.js.map +1 -1
- package/dist/esm/adapters/llm/InvokeModelGatewayProvider.d.ts +2 -0
- package/dist/esm/adapters/llm/InvokeModelGatewayProvider.js +28 -9
- package/dist/esm/adapters/llm/InvokeModelGatewayProvider.js.map +1 -1
- package/dist/esm/adapters/llm/OpenAIProvider.js +3 -0
- package/dist/esm/adapters/llm/OpenAIProvider.js.map +1 -1
- package/dist/esm/adapters/llm/anthropicMessageProjection.d.ts +19 -0
- package/dist/esm/adapters/llm/anthropicMessageProjection.js +108 -0
- package/dist/esm/adapters/llm/anthropicMessageProjection.js.map +1 -0
- package/dist/esm/adapters/llm/anthropicMessagesWire.d.ts +8 -18
- package/dist/esm/adapters/llm/anthropicMessagesWire.js +184 -208
- package/dist/esm/adapters/llm/anthropicMessagesWire.js.map +1 -1
- package/dist/esm/adapters/llm/anthropicModels.d.ts +96 -0
- package/dist/esm/adapters/llm/anthropicModels.js +180 -0
- package/dist/esm/adapters/llm/anthropicModels.js.map +1 -0
- package/dist/esm/adapters/llm/anthropicReplayLayout.d.ts +23 -0
- package/dist/esm/adapters/llm/anthropicReplayLayout.js +232 -0
- package/dist/esm/adapters/llm/anthropicReplayLayout.js.map +1 -0
- package/dist/esm/adapters/llm/anthropicThinkingReplay.d.ts +21 -0
- package/dist/esm/adapters/llm/anthropicThinkingReplay.js +183 -0
- package/dist/esm/adapters/llm/anthropicThinkingReplay.js.map +1 -0
- package/dist/esm/adapters/llm/anthropicThinkingWire.d.ts +12 -36
- package/dist/esm/adapters/llm/anthropicThinkingWire.js +13 -101
- package/dist/esm/adapters/llm/anthropicThinkingWire.js.map +1 -1
- package/dist/esm/adapters/requestRefusal.d.ts +2 -0
- package/dist/esm/adapters/requestRefusal.js +11 -0
- package/dist/esm/adapters/requestRefusal.js.map +1 -0
- package/dist/esm/adapters/types.d.ts +31 -7
- package/dist/esm/adapters/types.js.map +1 -1
- package/dist/esm/core/Agent.d.ts +11 -1
- package/dist/esm/core/Agent.js +63 -33
- package/dist/esm/core/Agent.js.map +1 -1
- package/dist/esm/core/LLMCall.js +1 -1
- package/dist/esm/core/LLMCall.js.map +1 -1
- package/dist/esm/core/agent/AgentBuilder.js +3 -0
- package/dist/esm/core/agent/AgentBuilder.js.map +1 -1
- package/dist/esm/core/agent/assistantReplay.d.ts +11 -0
- package/dist/esm/core/agent/assistantReplay.js +23 -0
- package/dist/esm/core/agent/assistantReplay.js.map +1 -0
- package/dist/esm/core/agent/buildAgentMessageApiChart.js +1 -1
- package/dist/esm/core/agent/buildAgentMessageApiChart.js.map +1 -1
- package/dist/esm/core/agent/buildDynamicAgentChart.js +8 -0
- package/dist/esm/core/agent/buildDynamicAgentChart.js.map +1 -1
- package/dist/esm/core/agent/buildMessageApiChart.js +1 -1
- package/dist/esm/core/agent/buildMessageApiChart.js.map +1 -1
- package/dist/esm/core/agent/providerTargets.d.ts +11 -0
- package/dist/esm/core/agent/providerTargets.js +10 -0
- package/dist/esm/core/agent/providerTargets.js.map +1 -0
- package/dist/esm/core/agent/stages/callLLM.d.ts +3 -1
- package/dist/esm/core/agent/stages/callLLM.js +48 -15
- package/dist/esm/core/agent/stages/callLLM.js.map +1 -1
- package/dist/esm/core/agent/stages/deliver.d.ts +5 -0
- package/dist/esm/core/agent/stages/deliver.js +13 -12
- package/dist/esm/core/agent/stages/deliver.js.map +1 -1
- package/dist/esm/core/agent/stages/outputRetry.js +2 -1
- package/dist/esm/core/agent/stages/outputRetry.js.map +1 -1
- package/dist/esm/core/agent/stages/prepareFinal.js +2 -0
- 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 +29 -17
- package/dist/esm/core/agent/stages/reliabilityExecution.js.map +1 -1
- package/dist/esm/core/agent/stages/stepNudge.js +2 -1
- package/dist/esm/core/agent/stages/stepNudge.js.map +1 -1
- package/dist/esm/core/agent/stages/toolCalls.js +2 -0
- package/dist/esm/core/agent/stages/toolCalls.js.map +1 -1
- package/dist/esm/core/agent/thinkingSupport.d.ts +5 -2
- package/dist/esm/core/agent/thinkingSupport.js +8 -6
- package/dist/esm/core/agent/thinkingSupport.js.map +1 -1
- package/dist/esm/core/agent/types.d.ts +4 -0
- package/dist/esm/core/outputSchema.d.ts +2 -1
- package/dist/esm/core/outputSchema.js.map +1 -1
- package/dist/esm/core/runCheckpoint.d.ts +8 -0
- package/dist/esm/core/runCheckpoint.js +13 -1
- package/dist/esm/core/runCheckpoint.js.map +1 -1
- package/dist/esm/events/payloads.d.ts +10 -0
- package/dist/esm/events/registry.d.ts +3 -1
- package/dist/esm/events/registry.js +2 -0
- package/dist/esm/events/registry.js.map +1 -1
- package/dist/esm/lib/injection-engine/constrainedEnumPick.d.ts +1 -1
- package/dist/esm/lib/injection-engine/constrainedEnumPick.js +5 -2
- package/dist/esm/lib/injection-engine/constrainedEnumPick.js.map +1 -1
- package/dist/esm/lib/injection-engine/llmClassifier.d.ts +2 -2
- package/dist/esm/lib/injection-engine/llmClassifier.js +2 -2
- package/dist/esm/lib/time-travel/receipt.d.ts +10 -0
- package/dist/esm/lib/time-travel/receipt.js +2 -2
- package/dist/esm/lib/time-travel/receipt.js.map +1 -1
- package/dist/esm/lib/time-travel/servedView.d.ts +1 -1
- package/dist/esm/lib/time-travel/servedView.js +11 -0
- package/dist/esm/lib/time-travel/servedView.js.map +1 -1
- package/dist/esm/providers.d.ts +3 -0
- package/dist/esm/providers.js +2 -0
- package/dist/esm/providers.js.map +1 -1
- package/dist/esm/recorders/core/replayHooks.d.ts +10 -0
- package/dist/esm/recorders/core/replayHooks.js +65 -0
- package/dist/esm/recorders/core/replayHooks.js.map +1 -0
- package/dist/esm/recorders/core/resilienceHooks.d.ts +2 -1
- package/dist/esm/recorders/core/resilienceHooks.js +3 -1
- package/dist/esm/recorders/core/resilienceHooks.js.map +1 -1
- package/dist/esm/redaction/knownStrings.js +21 -0
- package/dist/esm/redaction/knownStrings.js.map +1 -1
- package/dist/esm/resilience/replayAttempt.d.ts +21 -0
- package/dist/esm/resilience/replayAttempt.js +96 -0
- package/dist/esm/resilience/replayAttempt.js.map +1 -0
- package/dist/esm/resilience/withCircuitBreaker.d.ts +2 -1
- package/dist/esm/resilience/withCircuitBreaker.js +5 -2
- package/dist/esm/resilience/withCircuitBreaker.js.map +1 -1
- package/dist/esm/resilience/withFallback.d.ts +3 -1
- package/dist/esm/resilience/withFallback.js +33 -32
- package/dist/esm/resilience/withFallback.js.map +1 -1
- package/dist/esm/resilience/withRetry.js +9 -3
- package/dist/esm/resilience/withRetry.js.map +1 -1
- package/dist/esm/thinking/dispatch.d.ts +9 -0
- package/dist/esm/thinking/dispatch.js +44 -0
- package/dist/esm/thinking/dispatch.js.map +1 -0
- package/dist/esm/thinking/errors.d.ts +3 -3
- package/dist/esm/thinking/errors.js +3 -3
- package/dist/esm/thinking/replay.d.ts +67 -0
- package/dist/esm/thinking/replay.js +20 -0
- package/dist/esm/thinking/replay.js.map +1 -0
- package/dist/esm/thinking/replayHistory.d.ts +18 -0
- package/dist/esm/thinking/replayHistory.js +56 -0
- package/dist/esm/thinking/replayHistory.js.map +1 -0
- package/dist/events/registry.js +2 -0
- package/dist/events/registry.js.map +1 -1
- package/dist/lib/injection-engine/constrainedEnumPick.js +5 -2
- package/dist/lib/injection-engine/constrainedEnumPick.js.map +1 -1
- package/dist/lib/injection-engine/llmClassifier.js +2 -2
- package/dist/lib/time-travel/receipt.js +2 -2
- package/dist/lib/time-travel/receipt.js.map +1 -1
- package/dist/lib/time-travel/servedView.js +11 -0
- package/dist/lib/time-travel/servedView.js.map +1 -1
- package/dist/providers.js +6 -1
- package/dist/providers.js.map +1 -1
- package/dist/recorders/core/replayHooks.js +69 -0
- package/dist/recorders/core/replayHooks.js.map +1 -0
- package/dist/recorders/core/resilienceHooks.js +3 -1
- package/dist/recorders/core/resilienceHooks.js.map +1 -1
- package/dist/redaction/knownStrings.js +21 -0
- package/dist/redaction/knownStrings.js.map +1 -1
- package/dist/resilience/replayAttempt.js +100 -0
- package/dist/resilience/replayAttempt.js.map +1 -0
- package/dist/resilience/withCircuitBreaker.js +5 -2
- package/dist/resilience/withCircuitBreaker.js.map +1 -1
- package/dist/resilience/withFallback.js +33 -32
- package/dist/resilience/withFallback.js.map +1 -1
- package/dist/resilience/withRetry.js +9 -3
- package/dist/resilience/withRetry.js.map +1 -1
- package/dist/thinking/dispatch.js +50 -0
- package/dist/thinking/dispatch.js.map +1 -0
- package/dist/thinking/errors.js +3 -3
- package/dist/thinking/replay.js +24 -0
- package/dist/thinking/replay.js.map +1 -0
- package/dist/thinking/replayHistory.js +63 -0
- package/dist/thinking/replayHistory.js.map +1 -0
- package/dist/types/adapters/forcedToolChoice.d.ts +67 -0
- package/dist/types/adapters/forcedToolChoice.d.ts.map +1 -0
- package/dist/types/adapters/llm/AnthropicProvider.d.ts +3 -14
- package/dist/types/adapters/llm/AnthropicProvider.d.ts.map +1 -1
- package/dist/types/adapters/llm/BedrockProvider.d.ts +5 -0
- package/dist/types/adapters/llm/BedrockProvider.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.map +1 -1
- package/dist/types/adapters/llm/FoundryProvider.d.ts.map +1 -1
- package/dist/types/adapters/llm/InvokeModelGatewayProvider.d.ts +2 -0
- package/dist/types/adapters/llm/InvokeModelGatewayProvider.d.ts.map +1 -1
- package/dist/types/adapters/llm/OpenAIProvider.d.ts.map +1 -1
- package/dist/types/adapters/llm/anthropicMessageProjection.d.ts +20 -0
- package/dist/types/adapters/llm/anthropicMessageProjection.d.ts.map +1 -0
- package/dist/types/adapters/llm/anthropicMessagesWire.d.ts +8 -18
- package/dist/types/adapters/llm/anthropicMessagesWire.d.ts.map +1 -1
- package/dist/types/adapters/llm/anthropicModels.d.ts +97 -0
- package/dist/types/adapters/llm/anthropicModels.d.ts.map +1 -0
- package/dist/types/adapters/llm/anthropicReplayLayout.d.ts +24 -0
- package/dist/types/adapters/llm/anthropicReplayLayout.d.ts.map +1 -0
- package/dist/types/adapters/llm/anthropicThinkingReplay.d.ts +22 -0
- package/dist/types/adapters/llm/anthropicThinkingReplay.d.ts.map +1 -0
- package/dist/types/adapters/llm/anthropicThinkingWire.d.ts +12 -36
- package/dist/types/adapters/llm/anthropicThinkingWire.d.ts.map +1 -1
- package/dist/types/adapters/requestRefusal.d.ts +3 -0
- package/dist/types/adapters/requestRefusal.d.ts.map +1 -0
- package/dist/types/adapters/types.d.ts +31 -7
- package/dist/types/adapters/types.d.ts.map +1 -1
- package/dist/types/core/Agent.d.ts +11 -1
- package/dist/types/core/Agent.d.ts.map +1 -1
- package/dist/types/core/agent/AgentBuilder.d.ts.map +1 -1
- package/dist/types/core/agent/assistantReplay.d.ts +12 -0
- package/dist/types/core/agent/assistantReplay.d.ts.map +1 -0
- package/dist/types/core/agent/buildDynamicAgentChart.d.ts.map +1 -1
- package/dist/types/core/agent/providerTargets.d.ts +12 -0
- package/dist/types/core/agent/providerTargets.d.ts.map +1 -0
- 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/deliver.d.ts +5 -0
- package/dist/types/core/agent/stages/deliver.d.ts.map +1 -1
- package/dist/types/core/agent/stages/outputRetry.d.ts.map +1 -1
- 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/stepNudge.d.ts.map +1 -1
- package/dist/types/core/agent/stages/toolCalls.d.ts.map +1 -1
- package/dist/types/core/agent/thinkingSupport.d.ts +5 -2
- package/dist/types/core/agent/thinkingSupport.d.ts.map +1 -1
- package/dist/types/core/agent/types.d.ts +4 -0
- package/dist/types/core/agent/types.d.ts.map +1 -1
- package/dist/types/core/outputSchema.d.ts +2 -1
- package/dist/types/core/outputSchema.d.ts.map +1 -1
- package/dist/types/core/runCheckpoint.d.ts +8 -0
- package/dist/types/core/runCheckpoint.d.ts.map +1 -1
- package/dist/types/events/payloads.d.ts +10 -0
- package/dist/types/events/payloads.d.ts.map +1 -1
- package/dist/types/events/registry.d.ts +3 -1
- package/dist/types/events/registry.d.ts.map +1 -1
- package/dist/types/lib/injection-engine/constrainedEnumPick.d.ts +1 -1
- package/dist/types/lib/injection-engine/constrainedEnumPick.d.ts.map +1 -1
- package/dist/types/lib/injection-engine/llmClassifier.d.ts +2 -2
- package/dist/types/lib/time-travel/receipt.d.ts +10 -0
- package/dist/types/lib/time-travel/receipt.d.ts.map +1 -1
- package/dist/types/lib/time-travel/servedView.d.ts +1 -1
- package/dist/types/lib/time-travel/servedView.d.ts.map +1 -1
- package/dist/types/providers.d.ts +3 -0
- package/dist/types/providers.d.ts.map +1 -1
- package/dist/types/recorders/core/replayHooks.d.ts +11 -0
- package/dist/types/recorders/core/replayHooks.d.ts.map +1 -0
- package/dist/types/recorders/core/resilienceHooks.d.ts +2 -1
- package/dist/types/recorders/core/resilienceHooks.d.ts.map +1 -1
- package/dist/types/redaction/knownStrings.d.ts.map +1 -1
- package/dist/types/resilience/replayAttempt.d.ts +22 -0
- package/dist/types/resilience/replayAttempt.d.ts.map +1 -0
- package/dist/types/resilience/withCircuitBreaker.d.ts +2 -1
- package/dist/types/resilience/withCircuitBreaker.d.ts.map +1 -1
- package/dist/types/resilience/withFallback.d.ts +3 -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/dispatch.d.ts +10 -0
- package/dist/types/thinking/dispatch.d.ts.map +1 -0
- package/dist/types/thinking/errors.d.ts +3 -3
- package/dist/types/thinking/replay.d.ts +68 -0
- package/dist/types/thinking/replay.d.ts.map +1 -0
- package/dist/types/thinking/replayHistory.d.ts +19 -0
- package/dist/types/thinking/replayHistory.d.ts.map +1 -0
- package/package.json +1 -1
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
-
* anthropicThinkingWire —
|
|
4
|
-
* the
|
|
3
|
+
* anthropicThinkingWire — the one translation of `LLMRequest.thinking` onto
|
|
4
|
+
* the Messages body, in the shape each Claude model takes.
|
|
5
5
|
*
|
|
6
|
-
* Pattern:
|
|
7
|
-
* Role: Outer ring.
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
6
|
+
* Pattern: pure translation over a declaration (the `anthropicCacheWire.ts` twin).
|
|
7
|
+
* Role: Outer ring. Two jobs, one file — which mode each model takes is
|
|
8
|
+
* the `thinking` column of the ONE model table
|
|
9
|
+
* (`anthropicModels.ts` · `ANTHROPIC_MODELS`):
|
|
10
|
+
* 1. `thinkingModeWith` — the ONE mode function an adapter declares
|
|
11
11
|
* (`LLMProvider.thinkingMode`) and builds its body with: the app's own
|
|
12
12
|
* answer for an id the table cannot read, else the table's.
|
|
13
|
-
*
|
|
13
|
+
* 2. `anthropicThinkingPlan` — the `thinking` field a request gets on that
|
|
14
14
|
* model, or a typed refusal before anything is sent.
|
|
15
15
|
*
|
|
16
16
|
* Why it exists: `.thinking({ budget })` used to send
|
|
@@ -45,104 +45,15 @@
|
|
|
45
45
|
* https://platform.claude.com/docs/en/build-with-claude/claude-on-vertex-ai.
|
|
46
46
|
*
|
|
47
47
|
* @example
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
*
|
|
51
|
-
*
|
|
48
|
+
* const modeOf = thinkingModeWith(undefined); // the table's answer, per model
|
|
49
|
+
* anthropicThinkingPlan({ thinking: { budget: 2048 } }, {
|
|
50
|
+
* model: 'claude-opus-5-5', provider: 'anthropic', maxTokensDefault: 4096, thinkingMode: modeOf,
|
|
51
|
+
* }); // { thinking: { type: 'adaptive', display: 'summarized' }, maxTokens: 4096 }
|
|
52
52
|
*/
|
|
53
53
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
54
|
-
exports.anthropicThinkingPlan = exports.thinkingModeWith =
|
|
54
|
+
exports.anthropicThinkingPlan = exports.thinkingModeWith = void 0;
|
|
55
55
|
const errors_js_1 = require("../../thinking/errors.js");
|
|
56
|
-
|
|
57
|
-
/**
|
|
58
|
-
* Which thinking request each Claude model family takes, keyed by the family
|
|
59
|
-
* id (the model id without a date, version or platform prefix — matching is
|
|
60
|
-
* {@link anthropicThinkingMode}'s). The ONE table: a model is added here, and
|
|
61
|
-
* nowhere else.
|
|
62
|
-
*/
|
|
63
|
-
exports.ANTHROPIC_THINKING_MODES = Object.freeze({
|
|
64
|
-
// Adaptive only — `budget_tokens` is a 400 (Claude 4.7 and later).
|
|
65
|
-
'claude-fable-5-1': 'adaptive',
|
|
66
|
-
'claude-mythos-5-1': 'adaptive',
|
|
67
|
-
'claude-fable-5': 'adaptive',
|
|
68
|
-
'claude-mythos-5': 'adaptive',
|
|
69
|
-
'claude-opus-5-5': 'adaptive',
|
|
70
|
-
'claude-opus-5': 'adaptive',
|
|
71
|
-
'claude-opus-4-8': 'adaptive',
|
|
72
|
-
'claude-opus-4-7': 'adaptive',
|
|
73
|
-
'claude-sonnet-5-5': 'adaptive',
|
|
74
|
-
'claude-sonnet-5': 'adaptive',
|
|
75
|
-
'claude-haiku-5-5': 'adaptive',
|
|
76
|
-
// Takes both. Adaptive: its thinking `display` defaults to "omitted", which
|
|
77
|
-
// a budget body cannot change, so a budget would return empty thinking.
|
|
78
|
-
'claude-mythos-preview': 'adaptive',
|
|
79
|
-
// Takes both, the budget deprecated but accepted: the budget is sent, as
|
|
80
|
-
// asked. On Opus 4.6 that means no thinking between tool calls — an app that
|
|
81
|
-
// wants it declares the model 'adaptive' with the adapter's `thinkingMode`.
|
|
82
|
-
'claude-opus-4-6': 'budget',
|
|
83
|
-
'claude-sonnet-4-6': 'budget',
|
|
84
|
-
// Budget only — `type: 'adaptive'` is a 400.
|
|
85
|
-
'claude-opus-4-5': 'budget',
|
|
86
|
-
'claude-sonnet-4-5': 'budget',
|
|
87
|
-
'claude-haiku-4-5': 'budget',
|
|
88
|
-
'claude-opus-4-1': 'budget',
|
|
89
|
-
'claude-opus-4': 'budget',
|
|
90
|
-
'claude-sonnet-4': 'budget',
|
|
91
|
-
'claude-3-7-sonnet': 'budget',
|
|
92
|
-
// No thinking. Retired on the Claude API; still served by some platforms
|
|
93
|
-
// (Vertex lists claude-3-5-haiku@20241022). Claude 1, 2 and Instant are
|
|
94
|
-
// served nowhere and are not listed.
|
|
95
|
-
'claude-3-5-sonnet': 'none',
|
|
96
|
-
'claude-3-5-haiku': 'none',
|
|
97
|
-
'claude-3-opus': 'none',
|
|
98
|
-
'claude-3-sonnet': 'none',
|
|
99
|
-
'claude-3-haiku': 'none',
|
|
100
|
-
});
|
|
101
|
-
/**
|
|
102
|
-
* What may follow a family id and still name that family: nothing; a date
|
|
103
|
-
* (`-20250929`, Vertex `@20251101`); the `-0` alias of an x.0 model
|
|
104
|
-
* (`claude-opus-4-0`); `-latest`; a Bedrock version (`-v1`, `-v1:0`); or a
|
|
105
|
-
* separator that starts a suffix (`:`, `[`). Never another version number —
|
|
106
|
-
* so `claude-opus-4` does not claim `claude-opus-4-5`, or a future `-4-9`.
|
|
107
|
-
*/
|
|
108
|
-
const SAME_FAMILY = /^(?:$|-0(?![0-9])|-\d{8}(?![0-9])|-latest(?![a-z0-9])|-v\d|[@:[])/;
|
|
109
|
-
/**
|
|
110
|
-
* The thinking mode a Claude model id takes on the Anthropic Messages wire.
|
|
111
|
-
*
|
|
112
|
-
* Reads the id from its `claude-` onward, so platform forms resolve like the
|
|
113
|
-
* Claude API id: `anthropic.…` and `us.`/`eu.`/`global.`… Bedrock profiles,
|
|
114
|
-
* inference-profile ARNs, Vertex `…@date` ids, and dotted aliases
|
|
115
|
-
* (`claude-sonnet-4.5`). An id no family matches answers `'adaptive'` — what
|
|
116
|
-
* every Claude model since 4.7 takes (they reject a budget), so a model
|
|
117
|
-
* released after this table thinks instead of failing with a 400.
|
|
118
|
-
*
|
|
119
|
-
* The cost of that default, named: an id that does not say which model it
|
|
120
|
-
* serves — an application-inference-profile ARN, a gateway alias, a
|
|
121
|
-
* deployment name — is read as adaptive too, and a budget-only model behind
|
|
122
|
-
* it (Claude 4.5 and earlier) refuses adaptive. The adapters take a
|
|
123
|
-
* `thinkingMode` option for exactly that ({@link thinkingModeWith}).
|
|
124
|
-
*/
|
|
125
|
-
function anthropicThinkingMode(model) {
|
|
126
|
-
const id = model.toLowerCase();
|
|
127
|
-
const start = id.indexOf('claude-');
|
|
128
|
-
if (start < 0)
|
|
129
|
-
return 'adaptive';
|
|
130
|
-
// `claude-sonnet-4.5` is `claude-sonnet-4-5`: no real id carries a dot after
|
|
131
|
-
// `claude-`, so the spelling changes nothing it could be confused with.
|
|
132
|
-
const name = id.slice(start).replace(/\./g, '-');
|
|
133
|
-
// The longest family that names this id — at most one can, by SAME_FAMILY;
|
|
134
|
-
// longest-wins keeps the answer independent of the table's order anyway.
|
|
135
|
-
let match;
|
|
136
|
-
for (const entry of Object.entries(exports.ANTHROPIC_THINKING_MODES)) {
|
|
137
|
-
const family = entry[0];
|
|
138
|
-
if (!name.startsWith(family) || !SAME_FAMILY.test(name.slice(family.length)))
|
|
139
|
-
continue;
|
|
140
|
-
if (match === undefined || family.length > match[0].length)
|
|
141
|
-
match = entry;
|
|
142
|
-
}
|
|
143
|
-
return match === undefined ? 'adaptive' : match[1];
|
|
144
|
-
}
|
|
145
|
-
exports.anthropicThinkingMode = anthropicThinkingMode;
|
|
56
|
+
const anthropicModels_js_1 = require("./anthropicModels.js");
|
|
146
57
|
/**
|
|
147
58
|
* An adapter's ONE mode function: the app's own answer for an id the table
|
|
148
59
|
* cannot read (the adapter's `thinkingMode` option), else the table's. The
|
|
@@ -157,8 +68,8 @@ exports.anthropicThinkingMode = anthropicThinkingMode;
|
|
|
157
68
|
*/
|
|
158
69
|
function thinkingModeWith(own) {
|
|
159
70
|
if (own === undefined)
|
|
160
|
-
return anthropicThinkingMode;
|
|
161
|
-
return (model) => own(model) ?? anthropicThinkingMode(model);
|
|
71
|
+
return anthropicModels_js_1.anthropicThinkingMode;
|
|
72
|
+
return (model) => own(model) ?? (0, anthropicModels_js_1.anthropicThinkingMode)(model);
|
|
162
73
|
}
|
|
163
74
|
exports.thinkingModeWith = thinkingModeWith;
|
|
164
75
|
/** The smallest `budget_tokens` the API accepts. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anthropicThinkingWire.js","sourceRoot":"","sources":["../../../src/adapters/llm/anthropicThinkingWire.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;;;AAIH,wDAAoE;
|
|
1
|
+
{"version":3,"file":"anthropicThinkingWire.js","sourceRoot":"","sources":["../../../src/adapters/llm/anthropicThinkingWire.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isRequestRefusal = void 0;
|
|
4
|
+
/** Request-contract refusals are terminal, not provider availability failures. */
|
|
5
|
+
const forcedToolChoice_js_1 = require("./forcedToolChoice.js");
|
|
6
|
+
const errors_js_1 = require("../thinking/errors.js");
|
|
7
|
+
const replay_js_1 = require("../thinking/replay.js");
|
|
8
|
+
/** Deliberately narrow: unrelated application errors keep their existing policy. */
|
|
9
|
+
function isRequestRefusal(error) {
|
|
10
|
+
return (error instanceof forcedToolChoice_js_1.UnsupportedToolChoiceError ||
|
|
11
|
+
error instanceof errors_js_1.UnsupportedThinkingError ||
|
|
12
|
+
error instanceof replay_js_1.UnsafeThinkingReplayError);
|
|
13
|
+
}
|
|
14
|
+
exports.isRequestRefusal = isRequestRefusal;
|
|
15
|
+
//# sourceMappingURL=requestRefusal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"requestRefusal.js","sourceRoot":"","sources":["../../src/adapters/requestRefusal.ts"],"names":[],"mappings":";;;AAAA,kFAAkF;AAClF,+DAAmE;AACnE,qDAAiE;AACjE,qDAAkE;AAElE,oFAAoF;AACpF,SAAgB,gBAAgB,CAAC,KAAc;IAC7C,OAAO,CACL,KAAK,YAAY,gDAA0B;QAC3C,KAAK,YAAY,oCAAwB;QACzC,KAAK,YAAY,qCAAyB,CAC3C,CAAC;AACJ,CAAC;AAND,4CAMC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/adapters/types.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG;;;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/adapters/types.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG;;;AA0NH;;;;GAIG;AACU,QAAA,2BAA2B,GAAwB,MAAM,CAAC,MAAM,CAAC;IAC5E,MAAM;IACN,WAAW;CACZ,CAAC,CAAC;AA4oBH;;;;;;GAMG;AACH,SAAgB,cAAc,CAC5B,OAAsC,EACtC,UAAgC;IAEhC,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAC3B,IAAI,UAAU,KAAK,WAAW;QAAE,OAAO,IAAI,CAAC;IAC5C,OAAO,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC;AACxD,CAAC;AAPD,wCAOC;AAqID;;;;;;;;;GASG;AACU,QAAA,iBAAiB,GAAG,kBAAkB,CAAC;AAgGpD;uDACuD;AACvD,SAAgB,kBAAkB,CAChC,OAAoB;IAEpB,OAAO,OAAO,OAAO,CAAC,WAAW,KAAK,UAAU,CAAC;AACnD,CAAC;AAJD,gDAIC"}
|
package/dist/core/Agent.js
CHANGED
|
@@ -45,6 +45,9 @@ const extractSequence_js_1 = require("../security/extractSequence.js");
|
|
|
45
45
|
const PolicyHaltError_js_1 = require("../security/PolicyHaltError.js");
|
|
46
46
|
const CacheGateDecider_js_1 = require("../cache/CacheGateDecider.js");
|
|
47
47
|
const cacheStrategyFor_js_1 = require("../cache/cacheStrategyFor.js");
|
|
48
|
+
const forcedToolChoice_js_1 = require("../adapters/forcedToolChoice.js");
|
|
49
|
+
const requestRefusal_js_1 = require("../adapters/requestRefusal.js");
|
|
50
|
+
const assistantReplay_js_1 = require("./agent/assistantReplay.js");
|
|
48
51
|
const skillBrains_js_1 = require("./agent/skillBrains.js");
|
|
49
52
|
const conventions_js_1 = require("../conventions.js");
|
|
50
53
|
const pause_js_1 = require("./pause.js");
|
|
@@ -133,6 +136,7 @@ const EmitBridge_js_1 = require("../recorders/core/EmitBridge.js");
|
|
|
133
136
|
const window_js_1 = require("./agent/stages/window.js");
|
|
134
137
|
const options_js_1 = require("./agent/window/options.js");
|
|
135
138
|
const deliver_js_1 = require("./agent/stages/deliver.js");
|
|
139
|
+
const providerTargets_js_1 = require("./agent/providerTargets.js");
|
|
136
140
|
const messagesSlotRefusal_js_1 = require("../lib/injection-engine/messagesSlotRefusal.js");
|
|
137
141
|
const errors_js_1 = require("./agent/window/errors.js");
|
|
138
142
|
const checkin_js_1 = require("./checkin.js");
|
|
@@ -191,7 +195,7 @@ const buildToolRegistry_js_1 = require("./agent/buildToolRegistry.js");
|
|
|
191
195
|
const AgentBuilder_js_1 = require("./agent/AgentBuilder.js");
|
|
192
196
|
Object.defineProperty(exports, "AgentBuilder", { enumerable: true, get: function () { return AgentBuilder_js_1.AgentBuilder; } });
|
|
193
197
|
const buildThinkingSubflow_js_1 = require("./slots/buildThinkingSubflow.js");
|
|
194
|
-
const
|
|
198
|
+
const dispatch_js_1 = require("../thinking/dispatch.js");
|
|
195
199
|
// Public types (AgentOptions, AgentInput, AgentOutput) extracted to
|
|
196
200
|
// ./agent/types.ts and re-exported above (v2.11.1).
|
|
197
201
|
// AgentState extracted to ./agent/types.ts (v2.11.1).
|
|
@@ -618,6 +622,8 @@ class Agent extends RunnerBase_js_1.RunnerBase {
|
|
|
618
622
|
* kept here rather than read back from the recording. Undefined after a run
|
|
619
623
|
* that failed or paused. */
|
|
620
624
|
lastRunAnswer;
|
|
625
|
+
/** Last run's checkpoint owner, including explicit replay edits from a failed child stage. */
|
|
626
|
+
checkpointTracker;
|
|
621
627
|
/** Whether any run on this instance got past input admission — so a
|
|
622
628
|
* refused FIRST turn is reported as 'never-run', never as "continue from
|
|
623
629
|
* your earlier accepted checkpoint" when there is none. */
|
|
@@ -1124,17 +1130,9 @@ class Agent extends RunnerBase_js_1.RunnerBase {
|
|
|
1124
1130
|
// A provider that declares none gets no subflow at chart build time.
|
|
1125
1131
|
// Never chosen by `provider.name`: a renaming wrapper that forwards the
|
|
1126
1132
|
// declaration keeps it.
|
|
1127
|
-
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
else if (thinkingHandlerValue !== undefined) {
|
|
1131
|
-
this.thinkingHandler = thinkingHandlerValue;
|
|
1132
|
-
}
|
|
1133
|
-
else {
|
|
1134
|
-
const declared = (0, thinkingHandlerFor_js_1.thinkingHandlerFor)(opts.provider);
|
|
1135
|
-
if (declared)
|
|
1136
|
-
this.thinkingHandler = declared;
|
|
1137
|
-
}
|
|
1133
|
+
const handler = (0, dispatch_js_1.thinkingForProviders)(opts.provider, reliabilityConfig?.providers?.map((entry) => entry.provider), thinkingHandlerValue);
|
|
1134
|
+
if (handler !== undefined)
|
|
1135
|
+
this.thinkingHandler = handler;
|
|
1138
1136
|
if (thinkingBudgetValue !== undefined)
|
|
1139
1137
|
this.thinkingBudget = thinkingBudgetValue;
|
|
1140
1138
|
this.appName = voice.appName;
|
|
@@ -1638,6 +1636,7 @@ class Agent extends RunnerBase_js_1.RunnerBase {
|
|
|
1638
1636
|
history: [],
|
|
1639
1637
|
lastCompletedIteration: 0,
|
|
1640
1638
|
};
|
|
1639
|
+
this.checkpointTracker = tracker;
|
|
1641
1640
|
const stopTracking = this.installCheckpointTracker(tracker);
|
|
1642
1641
|
// The answer this run produces is the only place the final assistant turn
|
|
1643
1642
|
// exists (nothing writes it back into `scope.history`), so `checkpoint()`
|
|
@@ -1707,6 +1706,9 @@ class Agent extends RunnerBase_js_1.RunnerBase {
|
|
|
1707
1706
|
// either — wrapping this in a checkpoint would invite the caller to
|
|
1708
1707
|
// retry into the same wall.
|
|
1709
1708
|
cause instanceof errors_js_1.CompactionUnmeasurableError ||
|
|
1709
|
+
// A forced-output capability refusal is terminal even after a
|
|
1710
|
+
// correction turn: a checkpoint cannot repair this model contract.
|
|
1711
|
+
(0, requestRefusal_js_1.isRequestRefusal)(cause) ||
|
|
1710
1712
|
// 8.6.0 — a consent block is answered by a PERSON at the identity
|
|
1711
1713
|
// provider, not by replaying the run. Wrapping it in a crash
|
|
1712
1714
|
// checkpoint would hand the caller a retry handle for a wall, and
|
|
@@ -2255,6 +2257,12 @@ class Agent extends RunnerBase_js_1.RunnerBase {
|
|
|
2255
2257
|
// the recording's terms one comment up.
|
|
2256
2258
|
this.beginIntegrityLedger();
|
|
2257
2259
|
this.lastRunAnswer = undefined;
|
|
2260
|
+
this.checkpointTracker = {
|
|
2261
|
+
runId: this.currentRunContext.runId,
|
|
2262
|
+
originalInput: { message: '' },
|
|
2263
|
+
history: [],
|
|
2264
|
+
lastCompletedIteration: 0,
|
|
2265
|
+
};
|
|
2258
2266
|
// One run can never raise on another run's consent block.
|
|
2259
2267
|
this.consentOutstanding.clear();
|
|
2260
2268
|
// Beside the `try` whose `finally` clears it (the fresh-run path's terms).
|
|
@@ -2353,7 +2361,15 @@ class Agent extends RunnerBase_js_1.RunnerBase {
|
|
|
2353
2361
|
* that ends the run carries none. An agent that stored this conversation
|
|
2354
2362
|
* without that append would drop its own reply every turn and answer the next
|
|
2355
2363
|
* one having forgotten what it just said.
|
|
2356
|
-
*
|
|
2364
|
+
* Provider replay evidence and its normalized thinking travel with that
|
|
2365
|
+
* accepted answer, including a terminal proof with empty text. The answer
|
|
2366
|
+
* remains the delivered text, including output-policy edits; raw provider
|
|
2367
|
+
* text is never substituted back. Evidence comes from live state, not the
|
|
2368
|
+
* redacted observation. Denied, failed and paused runs append no final turn.
|
|
2369
|
+
*
|
|
2370
|
+
* Explicit thinking retirements recorded before transport also apply here:
|
|
2371
|
+
* a failed grouped call cannot restore reasoning omitted from its request.
|
|
2372
|
+
* This copies no other failed-stage state or tool effects into the history.
|
|
2357
2373
|
* Adds no events, no scope writes and no capture: every recording is
|
|
2358
2374
|
* byte-identical to an agent that never calls this.
|
|
2359
2375
|
*
|
|
@@ -2387,9 +2403,14 @@ class Agent extends RunnerBase_js_1.RunnerBase {
|
|
|
2387
2403
|
if (this.lastInputRefused())
|
|
2388
2404
|
return undefined;
|
|
2389
2405
|
const recorded = (state?.history ?? []);
|
|
2390
|
-
const history =
|
|
2391
|
-
if (this.lastRunAnswer !== undefined &&
|
|
2392
|
-
|
|
2406
|
+
const history = [...recorded];
|
|
2407
|
+
if (this.lastRunAnswer !== undefined &&
|
|
2408
|
+
(this.lastRunAnswer.length > 0 || state?.llmLatestReplay !== undefined)) {
|
|
2409
|
+
history.push({
|
|
2410
|
+
role: 'assistant',
|
|
2411
|
+
content: this.lastRunAnswer,
|
|
2412
|
+
...(0, assistantReplay_js_1.assistantReplayFields)(state ?? {}),
|
|
2413
|
+
});
|
|
2393
2414
|
}
|
|
2394
2415
|
const folded = this.foldedSpansOf(state);
|
|
2395
2416
|
const owner = this.conversationOwner();
|
|
@@ -2400,7 +2421,7 @@ class Agent extends RunnerBase_js_1.RunnerBase {
|
|
|
2400
2421
|
return {
|
|
2401
2422
|
version: 1,
|
|
2402
2423
|
runId: this.currentRunContext.runId,
|
|
2403
|
-
history,
|
|
2424
|
+
history: structuredClone((0, runCheckpoint_js_1.checkpointReplayHistory)(history, this.checkpointTracker)),
|
|
2404
2425
|
lastCompletedIteration: typeof state?.iteration === 'number' ? state.iteration : 0,
|
|
2405
2426
|
originalInput: { message: typeof state?.userMessage === 'string' ? state.userMessage : '' },
|
|
2406
2427
|
checkpointedAt: Date.now(),
|
|
@@ -2932,18 +2953,10 @@ class Agent extends RunnerBase_js_1.RunnerBase {
|
|
|
2932
2953
|
};
|
|
2933
2954
|
}
|
|
2934
2955
|
assertDeliverableRoles() {
|
|
2935
|
-
const
|
|
2936
|
-
const carried = new Set(carries);
|
|
2956
|
+
const providers = (0, providerTargets_js_1.providerTargets)(this.provider, this.model, this.reliabilityConfig?.providers).map((target) => target.provider);
|
|
2937
2957
|
for (const inj of this.injections) {
|
|
2938
2958
|
for (const msg of inj.inject?.messages ?? []) {
|
|
2939
|
-
|
|
2940
|
-
throw new Error((0, messagesSlotRefusal_js_1.messagesRoleRefusal)({
|
|
2941
|
-
site: `Agent injection '${inj.id}'`,
|
|
2942
|
-
role: msg.role,
|
|
2943
|
-
providerName: this.provider.name,
|
|
2944
|
-
carries,
|
|
2945
|
-
}));
|
|
2946
|
-
}
|
|
2959
|
+
(0, deliver_js_1.assertDeliverableRole)(providers, msg.role, `Agent injection '${inj.id}'`);
|
|
2947
2960
|
// Content, judged at the same funnel as role (8.18.0). The named
|
|
2948
2961
|
// factories refuse empty content; a hand-built Injection reached the
|
|
2949
2962
|
// delivery stage unchecked and put a contentless turn on the wire.
|
|
@@ -2980,10 +2993,19 @@ class Agent extends RunnerBase_js_1.RunnerBase {
|
|
|
2980
2993
|
assertForcedToolChoiceSupported() {
|
|
2981
2994
|
if (this.outputEnforcement?.schemaTool === undefined)
|
|
2982
2995
|
return;
|
|
2983
|
-
|
|
2984
|
-
|
|
2996
|
+
const first = this.reliabilityConfig?.providers?.[0];
|
|
2997
|
+
const provider = first?.provider ?? this.provider;
|
|
2998
|
+
const model = first?.model ?? this.model;
|
|
2999
|
+
if (provider.carriesForcedToolChoice === true) {
|
|
3000
|
+
// Configuration resolves the actual model at seed, after this check.
|
|
3001
|
+
// Keep the early wire refusal, but let callLLM judge that final model.
|
|
3002
|
+
if ((first === undefined && this.runConfigFn !== undefined) ||
|
|
3003
|
+
(0, forcedToolChoice_js_1.forcedToolChoiceFor)(provider, model))
|
|
3004
|
+
return;
|
|
3005
|
+
throw new forcedToolChoice_js_1.UnsupportedToolChoiceError({ provider: provider.name, model });
|
|
3006
|
+
}
|
|
2985
3007
|
throw new Error(`Agent: .outputSchema(parser, { strategy: 'tool-forced' }) needs a provider that puts ` +
|
|
2986
|
-
`a forced tool choice on its wire, and '${
|
|
3008
|
+
`a forced tool choice on its wire, and '${provider.name}' does not declare one. ` +
|
|
2987
3009
|
`Anthropic, Bedrock, real OpenAI/Azure and the mock do; an OpenAI-COMPATIBLE endpoint ` +
|
|
2988
3010
|
`behind a custom baseURL (Ollama, vLLM, …) deliberately does not, because what that ` +
|
|
2989
3011
|
`server does with tool_choice is not this library's to promise. Use ` +
|
|
@@ -4523,6 +4545,11 @@ class Agent extends RunnerBase_js_1.RunnerBase {
|
|
|
4523
4545
|
// callLLM extracted to ./agent/stages/callLLM.ts (v2.11.2). Same
|
|
4524
4546
|
// late-binding pattern as seed for toolSchemas (computed below).
|
|
4525
4547
|
const callLLM = (0, callLLM_js_1.buildCallLLMStage)({
|
|
4548
|
+
onReplayPrepared: (preparation) => {
|
|
4549
|
+
if (this.checkpointTracker !== undefined &&
|
|
4550
|
+
this.inFlightRunId === this.checkpointTracker.runId)
|
|
4551
|
+
(0, runCheckpoint_js_1.retainReplayRetirements)(this.checkpointTracker, preparation);
|
|
4552
|
+
},
|
|
4526
4553
|
...(this.evidenceGate !== undefined &&
|
|
4527
4554
|
this.evidenceGate.posture !== 'assist' && {
|
|
4528
4555
|
hasEvidenceRecovery: true,
|
|
@@ -5127,6 +5154,9 @@ class Agent extends RunnerBase_js_1.RunnerBase {
|
|
|
5127
5154
|
this.memories.length > 0) && {
|
|
5128
5155
|
deliverStage: (0, deliver_js_1.buildDeliverStage)({
|
|
5129
5156
|
provider: this.provider,
|
|
5157
|
+
...(this.reliabilityConfig?.providers !== undefined && {
|
|
5158
|
+
providers: (0, providerTargets_js_1.providerTargets)(this.provider, this.model, this.reliabilityConfig.providers).map((target) => target.provider),
|
|
5159
|
+
}),
|
|
5130
5160
|
memoryIds: this.memories.map((m) => m.id),
|
|
5131
5161
|
}),
|
|
5132
5162
|
}),
|