@openclaw/ai 2026.10.7 → 2026.10.8

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.
Files changed (24) hide show
  1. package/dist/{azure-openai-responses-yuBKi0s4.mjs → azure-openai-responses-CpTeMNMR.mjs} +1 -1
  2. package/dist/internal/anthropic.d.mts +2 -2
  3. package/dist/internal/anthropic.mjs +2 -2
  4. package/dist/internal/openai-completions-compat.d.mts +1 -1
  5. package/dist/internal/openai-completions-compat.mjs +1 -1
  6. package/dist/internal/openai.d.mts +1 -1
  7. package/dist/internal/openai.mjs +5 -5
  8. package/dist/internal/retry-after.d.mts +2 -2
  9. package/dist/internal/retry-after.mjs +75 -1
  10. package/dist/{openai-chatgpt-responses-BjfLWIK6.mjs → openai-chatgpt-responses-BOFtIBhI.mjs} +3 -3
  11. package/dist/{openai-completions-BkRt2Iy4.mjs → openai-completions-DayP68sM.mjs} +1 -1
  12. package/dist/{openai-completions-compat-CpeOT7jH.mjs → openai-completions-compat-B3qLTOYx.mjs} +4 -1
  13. package/dist/{openai-completions-compat-B86jN9ii.d.mts → openai-completions-compat-DHed0bE9.d.mts} +1 -0
  14. package/dist/{openai-completions-transport-BRjxCG1C.mjs → openai-completions-transport-DGXeWM4f.mjs} +12 -6
  15. package/dist/{openai-prompt-cache-CvftfMfD.mjs → openai-prompt-cache-Bu5ntysJ.mjs} +1 -1
  16. package/dist/{openai-responses-BUDpkW8I.mjs → openai-responses-DfdFDCyn.mjs} +4 -4
  17. package/dist/{openai-responses-shared-C1GHTB0q.mjs → openai-responses-shared-D80XGvI9.mjs} +2 -2
  18. package/dist/{provider-transport-turn-state-O5JWdUL4.mjs → provider-transport-turn-state-CDlBMPlS.mjs} +1 -1
  19. package/dist/providers.mjs +5 -5
  20. package/dist/retry-after-7SPL2Rl8.d.mts +25 -0
  21. package/dist/transports.d.mts +2 -1
  22. package/dist/transports.mjs +3 -3
  23. package/package.json +1 -1
  24. package/dist/retry-after-CdCURCVg.d.mts +0 -15
@@ -1,7 +1,7 @@
1
1
  import { t as AssistantMessageEventStream } from "./event-stream-X2gmsUWv.mjs";
2
2
  import { r as getAiTransportHost } from "./host-CIzdzpBn.mjs";
3
3
  import { n as buildBaseOptions } from "./simple-options-CmtE6whA.mjs";
4
- import { F as convertProviderResponsesMessages, It as resolvePromptCacheKey, _t as resolveOpenAISimpleReasoningEffort, r as runResponsesStreamLifecycle, t as applyCommonResponsesParams } from "./openai-responses-shared-C1GHTB0q.mjs";
4
+ import { F as convertProviderResponsesMessages, It as resolvePromptCacheKey, _t as resolveOpenAISimpleReasoningEffort, r as runResponsesStreamLifecycle, t as applyCommonResponsesParams } from "./openai-responses-shared-D80XGvI9.mjs";
5
5
  import { n as getEnvApiKey } from "./env-api-keys-CrxwdylR.mjs";
6
6
  import { t as createAssistantOutput } from "./assistant-output-DDZq4a3j.mjs";
7
7
  import { i as resolveAzureDeploymentNameFromMap, n as isTraditionalAzureOpenAIHost, t as isOpenAICompatibleAzureResponsesBaseUrl } from "./azure-openai-responses-client-compat-D0dvJMbZ.mjs";
@@ -2,7 +2,7 @@ import { C as resolveClaudeOpus55ModelIdentity, E as resolveClaudeSonnet5ModelId
2
2
  import { $ as StopReason, Et as AssistantMessageDiagnostic, Q as SimpleStreamOptions, d as Context, k as Model, pt as Usage, tt as StreamFunction } from "../types-Bd2T86VJ.mjs";
3
3
  import { i as AnthropicThinkingDisplay, n as AnthropicEffort, r as AnthropicOptions, t as AnthropicContextManagementOptions } from "../provider-options-DTuD2UNR.mjs";
4
4
  import "../types-Kdfw_04V.mjs";
5
- import { p as resolveAnthropicServerCompactionPlan, s as isDirectAnthropicModel } from "../anthropic-payload-policy-DVv20UCL.mjs";
5
+ import { a as buildAnthropicSystemBlocks, p as resolveAnthropicServerCompactionPlan, s as isDirectAnthropicModel } from "../anthropic-payload-policy-DVv20UCL.mjs";
6
6
  import { Tool } from "@anthropic-ai/sdk/resources/messages.js";
7
7
  //#region packages/ai/src/providers/anthropic.d.ts
8
8
  type AnthropicCompactionOptions = AnthropicOptions & {
@@ -230,4 +230,4 @@ export declare function applyAnthropicMessageStartUsage(target: Usage, payload:
230
230
  /** Keep billing and context distinct; omitted usage preserves the last snapshot. */
231
231
  export declare function applyAnthropicMessageDeltaUsage(target: Usage, usage: AnthropicUsagePayload | undefined, messageStartPromptUsage: AnthropicPromptUsageSnapshot | undefined): void;
232
232
  //#endregion
233
- export { type AnthropicEffort, type AnthropicOptions, type AnthropicThinkingDisplay, bindsClaudeThinkingPrefix, isDirectAnthropicModel, requiresClaudeBetweenToolsThinking, requiresClaudeDefaultSampling, requiresClaudeMandatoryAdaptiveThinking, resolveAnthropicServerCompactionPlan, resolveClaudeFable5ModelIdentity, resolveClaudeHaiku55ModelIdentity, resolveClaudeModelIdentity, resolveClaudeMythos5ModelIdentity, resolveClaudeNativeThinkingLevelMap, resolveClaudeOpus55ModelIdentity, resolveClaudeOpus5ModelIdentity, resolveClaudeSonnet55ModelIdentity, resolveClaudeSonnet5ModelIdentity, supportsClaudeAdaptiveThinking, supportsClaudeNativeMaxEffort, supportsClaudeNativeXhighEffort };
233
+ export { type AnthropicEffort, type AnthropicOptions, type AnthropicThinkingDisplay, bindsClaudeThinkingPrefix, buildAnthropicSystemBlocks, isDirectAnthropicModel, requiresClaudeBetweenToolsThinking, requiresClaudeDefaultSampling, requiresClaudeMandatoryAdaptiveThinking, resolveAnthropicServerCompactionPlan, resolveClaudeFable5ModelIdentity, resolveClaudeHaiku55ModelIdentity, resolveClaudeModelIdentity, resolveClaudeMythos5ModelIdentity, resolveClaudeNativeThinkingLevelMap, resolveClaudeOpus55ModelIdentity, resolveClaudeOpus5ModelIdentity, resolveClaudeSonnet55ModelIdentity, resolveClaudeSonnet5ModelIdentity, supportsClaudeAdaptiveThinking, supportsClaudeNativeMaxEffort, supportsClaudeNativeXhighEffort };
@@ -1,5 +1,5 @@
1
1
  import { D as supportsClaudeNativeMaxEffort, O as supportsClaudeNativeXhighEffort, S as resolveClaudeSonnet5ModelIdentity, _ as resolveClaudeMythos5ModelIdentity, b as resolveClaudeOpus5ModelIdentity, d as requiresClaudeBetweenToolsThinking, f as requiresClaudeDefaultSampling, g as resolveClaudeModelIdentity, h as resolveClaudeHaiku55ModelIdentity, m as resolveClaudeFable5ModelIdentity, p as requiresClaudeMandatoryAdaptiveThinking, u as bindsClaudeThinkingPrefix, v as resolveClaudeNativeThinkingLevelMap, w as supportsClaudeAdaptiveThinking, x as resolveClaudeSonnet55ModelIdentity, y as resolveClaudeOpus55ModelIdentity } from "../src-C44MKrW5.mjs";
2
2
  import { C as resolveModelBoundThinkingReplayMode, S as resolveAnthropicThinkingEffort, T as usesClaudeStreamingRefusalContract, _ as buildAnthropicClaudeCodeIdentity, b as prepareClaudeNoPrefillRequestContext, g as applyClaudeRequestContract, h as ANTHROPIC_CLAUDE_CODE_VERSION, v as defaultsClaudeAdaptiveThinking, w as usesClaudeFable5MessagesContract, x as requiresClaudeAdaptiveThinking, y as mapAnthropicStopReason } from "../host-CIzdzpBn.mjs";
3
- import { B as resolveAnthropicServerCompactionPlan, C as logAnthropicThinkingDrops, G as applyAnthropicFallbackBoundary, H as ANTHROPIC_SERVER_SIDE_FALLBACKS, J as isAnthropicOAuthApiKey, K as readAnthropicFallbackBoundary, P as isDirectAnthropicModel, S as findActiveAnthropicToolTurnAssistantIndex, U as ANTHROPIC_SERVER_SIDE_FALLBACK_BETA, W as CLAUDE_OPUS_FALLBACK_MODEL_COST, X as usesFoundryBearerAuth, Y as omitFoundryBearerCredentialHeaders, _ as reconcileAnthropicToolChoice, a as readAnthropicPromptUsageSnapshot, b as ANTHROPIC_OMITTED_REASONING_TEXT, c as applyAnthropicRefusal, g as projectAnthropicTools, h as normalizeAnthropicToolChoice, i as readAnthropicCacheWriteUsage, m as normalizeAnthropicToolCallId, n as applyAnthropicMessageDeltaUsage, o as readAnthropicUsageTokenCount, q as resolveAnthropicFallbackServingModelCost, r as applyAnthropicMessageStartUsage, s as readLastAnthropicIterationUsage, v as resolveOriginalAnthropicToolName, w as readAnthropicInputTransformations, x as applyAnthropicThinkingBindingControls, y as toClaudeCodeToolName } from "../anthropic-stream-reducer-BY-gN9EE.mjs";
3
+ import { B as resolveAnthropicServerCompactionPlan, C as logAnthropicThinkingDrops, G as applyAnthropicFallbackBoundary, H as ANTHROPIC_SERVER_SIDE_FALLBACKS, J as isAnthropicOAuthApiKey, K as readAnthropicFallbackBoundary, M as buildAnthropicSystemBlocks, P as isDirectAnthropicModel, S as findActiveAnthropicToolTurnAssistantIndex, U as ANTHROPIC_SERVER_SIDE_FALLBACK_BETA, W as CLAUDE_OPUS_FALLBACK_MODEL_COST, X as usesFoundryBearerAuth, Y as omitFoundryBearerCredentialHeaders, _ as reconcileAnthropicToolChoice, a as readAnthropicPromptUsageSnapshot, b as ANTHROPIC_OMITTED_REASONING_TEXT, c as applyAnthropicRefusal, g as projectAnthropicTools, h as normalizeAnthropicToolChoice, i as readAnthropicCacheWriteUsage, m as normalizeAnthropicToolCallId, n as applyAnthropicMessageDeltaUsage, o as readAnthropicUsageTokenCount, q as resolveAnthropicFallbackServingModelCost, r as applyAnthropicMessageStartUsage, s as readLastAnthropicIterationUsage, v as resolveOriginalAnthropicToolName, w as readAnthropicInputTransformations, x as applyAnthropicThinkingBindingControls, y as toClaudeCodeToolName } from "../anthropic-stream-reducer-BY-gN9EE.mjs";
4
4
  import { n as streamAnthropic, r as streamSimpleAnthropic } from "../anthropic-DusktpKG.mjs";
5
- export { ANTHROPIC_CLAUDE_CODE_VERSION, ANTHROPIC_OMITTED_REASONING_TEXT, ANTHROPIC_SERVER_SIDE_FALLBACKS, ANTHROPIC_SERVER_SIDE_FALLBACK_BETA, CLAUDE_OPUS_FALLBACK_MODEL_COST, applyAnthropicFallbackBoundary, applyAnthropicMessageDeltaUsage, applyAnthropicMessageStartUsage, applyAnthropicRefusal, applyAnthropicThinkingBindingControls, applyClaudeRequestContract, bindsClaudeThinkingPrefix, buildAnthropicClaudeCodeIdentity, defaultsClaudeAdaptiveThinking, findActiveAnthropicToolTurnAssistantIndex, isAnthropicOAuthApiKey, isDirectAnthropicModel, logAnthropicThinkingDrops, mapAnthropicStopReason, normalizeAnthropicToolCallId, normalizeAnthropicToolChoice, omitFoundryBearerCredentialHeaders, prepareClaudeNoPrefillRequestContext, projectAnthropicTools, readAnthropicCacheWriteUsage, readAnthropicFallbackBoundary, readAnthropicInputTransformations, readAnthropicPromptUsageSnapshot, readAnthropicUsageTokenCount, readLastAnthropicIterationUsage, reconcileAnthropicToolChoice, requiresClaudeAdaptiveThinking, requiresClaudeBetweenToolsThinking, requiresClaudeDefaultSampling, requiresClaudeMandatoryAdaptiveThinking, resolveAnthropicFallbackServingModelCost, resolveAnthropicServerCompactionPlan, resolveAnthropicThinkingEffort, resolveClaudeFable5ModelIdentity, resolveClaudeHaiku55ModelIdentity, resolveClaudeModelIdentity, resolveClaudeMythos5ModelIdentity, resolveClaudeNativeThinkingLevelMap, resolveClaudeOpus55ModelIdentity, resolveClaudeOpus5ModelIdentity, resolveClaudeSonnet55ModelIdentity, resolveClaudeSonnet5ModelIdentity, resolveModelBoundThinkingReplayMode, resolveOriginalAnthropicToolName, streamAnthropic, streamSimpleAnthropic, supportsClaudeAdaptiveThinking, supportsClaudeNativeMaxEffort, supportsClaudeNativeXhighEffort, toClaudeCodeToolName, usesClaudeFable5MessagesContract, usesClaudeStreamingRefusalContract, usesFoundryBearerAuth };
5
+ export { ANTHROPIC_CLAUDE_CODE_VERSION, ANTHROPIC_OMITTED_REASONING_TEXT, ANTHROPIC_SERVER_SIDE_FALLBACKS, ANTHROPIC_SERVER_SIDE_FALLBACK_BETA, CLAUDE_OPUS_FALLBACK_MODEL_COST, applyAnthropicFallbackBoundary, applyAnthropicMessageDeltaUsage, applyAnthropicMessageStartUsage, applyAnthropicRefusal, applyAnthropicThinkingBindingControls, applyClaudeRequestContract, bindsClaudeThinkingPrefix, buildAnthropicClaudeCodeIdentity, buildAnthropicSystemBlocks, defaultsClaudeAdaptiveThinking, findActiveAnthropicToolTurnAssistantIndex, isAnthropicOAuthApiKey, isDirectAnthropicModel, logAnthropicThinkingDrops, mapAnthropicStopReason, normalizeAnthropicToolCallId, normalizeAnthropicToolChoice, omitFoundryBearerCredentialHeaders, prepareClaudeNoPrefillRequestContext, projectAnthropicTools, readAnthropicCacheWriteUsage, readAnthropicFallbackBoundary, readAnthropicInputTransformations, readAnthropicPromptUsageSnapshot, readAnthropicUsageTokenCount, readLastAnthropicIterationUsage, reconcileAnthropicToolChoice, requiresClaudeAdaptiveThinking, requiresClaudeBetweenToolsThinking, requiresClaudeDefaultSampling, requiresClaudeMandatoryAdaptiveThinking, resolveAnthropicFallbackServingModelCost, resolveAnthropicServerCompactionPlan, resolveAnthropicThinkingEffort, resolveClaudeFable5ModelIdentity, resolveClaudeHaiku55ModelIdentity, resolveClaudeModelIdentity, resolveClaudeMythos5ModelIdentity, resolveClaudeNativeThinkingLevelMap, resolveClaudeOpus55ModelIdentity, resolveClaudeOpus5ModelIdentity, resolveClaudeSonnet55ModelIdentity, resolveClaudeSonnet5ModelIdentity, resolveModelBoundThinkingReplayMode, resolveOriginalAnthropicToolName, streamAnthropic, streamSimpleAnthropic, supportsClaudeAdaptiveThinking, supportsClaudeNativeMaxEffort, supportsClaudeNativeXhighEffort, toClaudeCodeToolName, usesClaudeFable5MessagesContract, usesClaudeStreamingRefusalContract, usesFoundryBearerAuth };
@@ -1,2 +1,2 @@
1
- import { a as resolveOpenAICompletionsCompat } from "../openai-completions-compat-B86jN9ii.mjs";
1
+ import { a as resolveOpenAICompletionsCompat } from "../openai-completions-compat-DHed0bE9.mjs";
2
2
  export { resolveOpenAICompletionsCompat };
@@ -1,2 +1,2 @@
1
- import { i as resolveOpenAICompletionsCompat } from "../openai-completions-compat-CpeOT7jH.mjs";
1
+ import { i as resolveOpenAICompletionsCompat } from "../openai-completions-compat-B3qLTOYx.mjs";
2
2
  export { resolveOpenAICompletionsCompat };
@@ -3,7 +3,7 @@ import { $ as StopReason, Q as SimpleStreamOptions, d as Context, k as Model, tt
3
3
  import { C as supportsOpenAIReasoningEffort, S as resolveOpenAISupportedReasoningEfforts, _ as isOpenAIGpt6Model, a as BaseOpenAIStreamOptions, b as resolveOpenAIReasoningEffortForModel, d as OpenAIApiReasoningEffort, f as OpenAIReasoningEffort, g as isOpenAIGpt56Model, h as isOpenAIGpt55Model, l as codeModeToolSurfaceObserver, m as isOpenAIGpt54MiniModel, o as CodeModeToolSurfaceObservation, p as applyOpenAICompletionsToolReasoning, s as OpenAICompletionsOptions, u as reasoningTagTextPolicy, v as normalizeOpenAIReasoningEffort, w as supportsOpenAITemperature, x as resolveOpenAIReasoningEffortMapping, y as resolveOpenAIModelReasoningEfforts } from "../provider-options-DTuD2UNR.mjs";
4
4
  import { a as reconcileOpenAIResponsesToolChoice, i as reconcileOpenAICompletionsToolChoice, n as OpenAIToolProjection, r as projectOpenAITools, t as OpenAICompletionsToolChoice } from "../openai-tool-projection-793cE3QX.mjs";
5
5
  import "../types-Kdfw_04V.mjs";
6
- import { t as ResolvedOpenAICompletionsCompat } from "../openai-completions-compat-B86jN9ii.mjs";
6
+ import { t as ResolvedOpenAICompletionsCompat } from "../openai-completions-compat-DHed0bE9.mjs";
7
7
  import { a as ResponsesPromptObservation, c as responsesServiceTierObserver, d as OpenAIRequestReasoningEffort, o as ResponsesServiceTierObservation, s as responsesPromptObserver } from "../openai-responses-contracts-Cm1QilsO.mjs";
8
8
  import { n as clampOpenAIPromptCacheKey, r as resolveOpenAIPromptCacheParams, t as OPENAI_PROMPT_CACHE_KEY_MAX_LENGTH } from "../openai-prompt-cache-DIPMrMFy.mjs";
9
9
  import { a as resolveResponsesTerminalStopReason, i as readResponsesReasoningTokens, n as isResponsesOutputLimitToolCallError, r as mapResponsesTerminalUsage, t as ResponsesTerminalUsagePayload } from "../openai-responses-terminal-usage-BygjiAdi.mjs";
@@ -1,12 +1,12 @@
1
1
  import { A as supportsOpenAITemperature, C as isOpenAIGpt6Model, D as resolveOpenAIReasoningEffortMapping, E as resolveOpenAIReasoningEffortForModel, O as resolveOpenAISupportedReasoningEfforts, S as isOpenAIGpt56Model, T as resolveOpenAIModelReasoningEfforts, b as isOpenAIGpt54MiniModel, g as responsesServiceTierObserver, h as responsesPromptObserver, k as supportsOpenAIReasoningEffort, w as normalizeOpenAIReasoningEffort, x as isOpenAIGpt55Model, y as applyOpenAICompletionsToolReasoning } from "../openai-responses-contracts-DbD7sGP-.mjs";
2
- import { n as clampOpenAIPromptCacheKey, r as resolveOpenAIPromptCacheParams, t as OPENAI_PROMPT_CACHE_KEY_MAX_LENGTH } from "../openai-prompt-cache-CvftfMfD.mjs";
2
+ import { n as clampOpenAIPromptCacheKey, r as resolveOpenAIPromptCacheParams, t as OPENAI_PROMPT_CACHE_KEY_MAX_LENGTH } from "../openai-prompt-cache-Bu5ntysJ.mjs";
3
3
  import { _ as resolveResponsesTerminalStopReason, g as readResponsesReasoningTokens, h as mapResponsesTerminalUsage, m as isResponsesOutputLimitToolCallError } from "../diagnostics-tQasYct1.mjs";
4
4
  import { a as encodedModelRequestBodyStream, c as serializeModelRequestBody, l as codeModeToolSurfaceObserver, o as modelRequestBodyState, u as reasoningTagTextPolicy } from "../simple-options-CmtE6whA.mjs";
5
- import { N as bindResponsesInputMessage, St as reconcileOpenAIResponsesToolChoice, _ as isResponsesTextContentPartType, bt as projectOpenAITools, d as AZURE_RESPONSES_TEXT_CONTENT_PART_TYPE, f as AZURE_RESPONSES_TEXT_DELTA_EVENT_TYPE, g as isAzureResponsesTextDeltaEventType, h as isAzureResponsesTextDeltaEvent, l as createResponsesToolCallTracker, m as OPENAI_RESPONSES_OUTPUT_TEXT_DELTA_EVENT_TYPE, p as OPENAI_RESPONSES_OUTPUT_TEXT_CONTENT_PART_TYPE, u as readResponsesToolCallItemIdentity, v as isResponsesTextDeltaEventType, xt as reconcileOpenAICompletionsToolChoice, y as resolveResponsesMessageSnapshotCollapse } from "../openai-responses-shared-C1GHTB0q.mjs";
6
- import { c as convertMessages, o as hasResponsesWebSearchTool } from "../openai-completions-transport-BRjxCG1C.mjs";
5
+ import { N as bindResponsesInputMessage, St as reconcileOpenAIResponsesToolChoice, _ as isResponsesTextContentPartType, bt as projectOpenAITools, d as AZURE_RESPONSES_TEXT_CONTENT_PART_TYPE, f as AZURE_RESPONSES_TEXT_DELTA_EVENT_TYPE, g as isAzureResponsesTextDeltaEventType, h as isAzureResponsesTextDeltaEvent, l as createResponsesToolCallTracker, m as OPENAI_RESPONSES_OUTPUT_TEXT_DELTA_EVENT_TYPE, p as OPENAI_RESPONSES_OUTPUT_TEXT_CONTENT_PART_TYPE, u as readResponsesToolCallItemIdentity, v as isResponsesTextDeltaEventType, xt as reconcileOpenAICompletionsToolChoice, y as resolveResponsesMessageSnapshotCollapse } from "../openai-responses-shared-D80XGvI9.mjs";
6
+ import { c as convertMessages, o as hasResponsesWebSearchTool } from "../openai-completions-transport-DGXeWM4f.mjs";
7
7
  import { t as mapOpenAIStopReason } from "../openai-stop-reason-8s70vDXj.mjs";
8
8
  import { i as resolveAzureDeploymentNameFromMap, n as isTraditionalAzureOpenAIHost, r as parseAzureDeploymentNameMap, t as isOpenAICompatibleAzureResponsesBaseUrl } from "../azure-openai-responses-client-compat-D0dvJMbZ.mjs";
9
9
  import { t as responsesRequestLifecycle } from "../openai-responses-request-lifecycle-Cx2nKN1G.mjs";
10
- import { n as streamOpenAICompletions, r as streamSimpleOpenAICompletions } from "../openai-completions-BkRt2Iy4.mjs";
11
- import { n as streamOpenAIResponses, r as streamSimpleOpenAIResponses } from "../openai-responses-BUDpkW8I.mjs";
10
+ import { n as streamOpenAICompletions, r as streamSimpleOpenAICompletions } from "../openai-completions-DayP68sM.mjs";
11
+ import { n as streamOpenAIResponses, r as streamSimpleOpenAIResponses } from "../openai-responses-DfdFDCyn.mjs";
12
12
  export { AZURE_RESPONSES_TEXT_CONTENT_PART_TYPE, AZURE_RESPONSES_TEXT_DELTA_EVENT_TYPE, OPENAI_PROMPT_CACHE_KEY_MAX_LENGTH, OPENAI_RESPONSES_OUTPUT_TEXT_CONTENT_PART_TYPE, OPENAI_RESPONSES_OUTPUT_TEXT_DELTA_EVENT_TYPE, applyOpenAICompletionsToolReasoning, bindResponsesInputMessage, clampOpenAIPromptCacheKey, codeModeToolSurfaceObserver, convertMessages, createResponsesToolCallTracker, encodedModelRequestBodyStream, hasResponsesWebSearchTool, isAzureResponsesTextDeltaEvent, isAzureResponsesTextDeltaEventType, isOpenAICompatibleAzureResponsesBaseUrl, isOpenAIGpt54MiniModel, isOpenAIGpt55Model, isOpenAIGpt56Model, isOpenAIGpt6Model, isResponsesOutputLimitToolCallError, isResponsesTextContentPartType, isResponsesTextDeltaEventType, isTraditionalAzureOpenAIHost, mapOpenAIStopReason, mapResponsesTerminalUsage, modelRequestBodyState, normalizeOpenAIReasoningEffort, parseAzureDeploymentNameMap, projectOpenAITools, readResponsesReasoningTokens, readResponsesToolCallItemIdentity, reasoningTagTextPolicy, reconcileOpenAICompletionsToolChoice, reconcileOpenAIResponsesToolChoice, resolveAzureDeploymentNameFromMap, resolveOpenAIModelReasoningEfforts, resolveOpenAIPromptCacheParams, resolveOpenAIReasoningEffortForModel, resolveOpenAIReasoningEffortMapping, resolveOpenAISupportedReasoningEfforts, resolveResponsesMessageSnapshotCollapse, resolveResponsesTerminalStopReason, responsesPromptObserver, responsesRequestLifecycle, responsesServiceTierObserver, serializeModelRequestBody, streamOpenAICompletions, streamOpenAIResponses, streamSimpleOpenAICompletions, streamSimpleOpenAIResponses, supportsOpenAIReasoningEffort, supportsOpenAITemperature };
@@ -1,2 +1,2 @@
1
- import { i as parseRetryAfterHttpDateMs, n as parseRetryAfterErrorSeconds, r as parseRetryAfterHeadersSeconds, t as parseHttpDateInstant } from "../retry-after-CdCURCVg.mjs";
2
- export { parseHttpDateInstant, parseRetryAfterErrorSeconds, parseRetryAfterHeadersSeconds, parseRetryAfterHttpDateMs };
1
+ import { a as parseRetryAfterHeadersSeconds, i as parseRetryAfterErrorSeconds, n as parseGoogleRetryDelaySeconds, o as parseRetryAfterHttpDateMs, r as parseHttpDateInstant, s as parseRetryAfterTextSeconds, t as RETRY_AFTER_TEXT_RE } from "../retry-after-7SPL2Rl8.mjs";
2
+ export { RETRY_AFTER_TEXT_RE, parseGoogleRetryDelaySeconds, parseHttpDateInstant, parseRetryAfterErrorSeconds, parseRetryAfterHeadersSeconds, parseRetryAfterHttpDateMs, parseRetryAfterTextSeconds };
@@ -75,6 +75,80 @@ function parseRetryAfterErrorSeconds(error, nowMs = Date.now()) {
75
75
  return;
76
76
  }
77
77
  }
78
+ function maxDefined(...values) {
79
+ let floor;
80
+ for (const value of values) if (value !== void 0) floor = Math.max(floor ?? 0, value);
81
+ return floor;
82
+ }
83
+ /** Provider prose such as "Please try again in 6s", "retry in 32s" or "Retry-After: 7". */
84
+ const RETRY_AFTER_TEXT_RE = /\b(?:retry[- ]after\b\s*:?\s*(?:in\b\s*)?|(?:please\s+)?(?:try again|retry) in\s+)([^\r\n;]+)/i;
85
+ const RETRY_TEXT_NUMBER_RE = /^(\d+(?:\.\d+)?|Infinity)\s*([a-z]+)?\b/i;
86
+ const MS_PER_SECOND = 1e3;
87
+ const RETRY_TEXT_UNIT_MS = new Map([
88
+ ["milliseconds millisecond msecs msec ms", 1],
89
+ ["seconds second secs sec s", MS_PER_SECOND],
90
+ ["minutes minute mins min m", 60 * MS_PER_SECOND],
91
+ ["hours hour hrs hr h", 3600 * MS_PER_SECOND],
92
+ ["days day d", 86400 * MS_PER_SECOND]
93
+ ].flatMap(([aliases, milliseconds]) => aliases.split(" ").map((alias) => [alias, milliseconds])));
94
+ /** Seconds named by a captured retry-text value: a number with an optional time unit, or an HTTP-date. */
95
+ function parseRetryAfterTextSeconds(valueText, nowMs = Date.now()) {
96
+ const secondsMatch = RETRY_TEXT_NUMBER_RE.exec(valueText);
97
+ if (secondsMatch?.[1]) {
98
+ const value = /^infinity$/i.test(secondsMatch[1]) ? Infinity : Number(secondsMatch[1]);
99
+ if (Number.isNaN(value) || value < 0) return;
100
+ const unitMilliseconds = RETRY_TEXT_UNIT_MS.get(secondsMatch[2]?.toLowerCase() ?? "s");
101
+ if (unitMilliseconds === void 0) return;
102
+ return unitMilliseconds === 1 ? value / MS_PER_SECOND : value * (unitMilliseconds / MS_PER_SECOND);
103
+ }
104
+ const retryAtMs = parseRetryAfterHttpDateMs(valueText, nowMs);
105
+ return retryAtMs === void 0 ? void 0 : Math.max(0, (retryAtMs - nowMs) / MS_PER_SECOND);
106
+ }
107
+ const GOOGLE_RETRY_DELAY_TEXT_RE = /"retryDelay"\s*:\s*"(\d+(?:\.\d{1,9})?)s"/g;
108
+ const GOOGLE_RETRY_DELAY_VALUE_RE = /^(\d+(?:\.\d{1,9})?)s$/;
109
+ const GOOGLE_RETRY_INFO_TYPE = "type.googleapis.com/google.rpc.RetryInfo";
110
+ const MAX_GOOGLE_ERROR_DETAILS = 16;
111
+ function googleRetryDelayTextSeconds(text) {
112
+ let floor;
113
+ for (const match of text.matchAll(GOOGLE_RETRY_DELAY_TEXT_RE)) floor = maxDefined(floor, Number(match[1]));
114
+ return floor;
115
+ }
116
+ function googleStatusRetryDelaySeconds(status) {
117
+ if (typeof status === "string") return googleRetryDelayTextSeconds(status);
118
+ const details = ownDataValue(status, "details");
119
+ if (!Array.isArray(details)) return;
120
+ let floor;
121
+ for (let index = 0; index < Math.min(details.length, MAX_GOOGLE_ERROR_DETAILS); index += 1) {
122
+ const detail = ownDataValue(details, String(index));
123
+ if (ownDataValue(detail, "@type") !== GOOGLE_RETRY_INFO_TYPE) continue;
124
+ const delay = ownDataValue(detail, "retryDelay");
125
+ const match = typeof delay === "string" ? GOOGLE_RETRY_DELAY_VALUE_RE.exec(delay) : null;
126
+ floor = maxDefined(floor, match?.[1] ? Number(match[1]) : void 0);
127
+ }
128
+ return floor;
129
+ }
130
+ /**
131
+ * Reads google.rpc.RetryInfo delays from raw error text or a google.rpc.Status-shaped body
132
+ * in any key order, with a fixed number of descriptor reads and no getters. Pass the
133
+ * untruncated body: Gemini puts RetryInfo after its QuotaFailure details.
134
+ */
135
+ function parseGoogleRetryDelaySeconds(value) {
136
+ try {
137
+ if (typeof value === "string") return googleRetryDelayTextSeconds(value);
138
+ const response = ownDataValue(value, "response");
139
+ return maxDefined(...[
140
+ value,
141
+ ownDataValue(value, "error"),
142
+ ownDataValue(value, "message"),
143
+ ownDataValue(value, "errorBody"),
144
+ ownDataValue(value, "body"),
145
+ ownDataValue(response, "body"),
146
+ ownDataValue(response, "data")
147
+ ].flatMap((candidate) => [googleStatusRetryDelaySeconds(candidate), typeof candidate === "string" ? void 0 : googleStatusRetryDelaySeconds(ownDataValue(candidate, "error"))]));
148
+ } catch {
149
+ return;
150
+ }
151
+ }
78
152
  /** Round leap seconds forward for Retry-After so an unrepresentable instant cannot retry early. */
79
153
  function parseRetryAfterHttpDateMs(value, nowMs = Date.now()) {
80
154
  return parseHttpDateInstant(value, nowMs)?.timestampMs;
@@ -147,4 +221,4 @@ function parseHttpDateCalendarMs(components) {
147
221
  return seconds === 60 ? timestamp + 1e3 : timestamp;
148
222
  }
149
223
  //#endregion
150
- export { parseHttpDateInstant, parseRetryAfterErrorSeconds, parseRetryAfterHeadersSeconds, parseRetryAfterHttpDateMs };
224
+ export { RETRY_AFTER_TEXT_RE, parseGoogleRetryDelaySeconds, parseHttpDateInstant, parseRetryAfterErrorSeconds, parseRetryAfterHeadersSeconds, parseRetryAfterHttpDateMs, parseRetryAfterTextSeconds };
@@ -6,15 +6,15 @@ import { E as headersToRecord, a as resolveAiTransportHeaderSentinels, r as getA
6
6
  import { A as supportsOpenAITemperature, h as responsesPromptObserver } from "./openai-responses-contracts-DbD7sGP-.mjs";
7
7
  import { r as registerSessionResourceCleanup } from "./session-resources-D1wgDQ8C.mjs";
8
8
  import "./provider-error-CF9GWCs2.mjs";
9
- import { n as clampOpenAIPromptCacheKey } from "./openai-prompt-cache-CvftfMfD.mjs";
9
+ import { n as clampOpenAIPromptCacheKey } from "./openai-prompt-cache-Bu5ntysJ.mjs";
10
10
  import { s as WEBSOCKET_NON_RETRYABLE_CLOSE_ERROR_CODE, v as extractErrorCodeOrErrno, y as toErrorObject } from "./diagnostics-tQasYct1.mjs";
11
11
  import { l as consumeResponseBytes, s as streamFragmentError, t as MALFORMED_STREAMING_FRAGMENT_ERROR_MESSAGE } from "./transport-utils-DmYqQcG7.mjs";
12
12
  import { parseRetryAfterHeadersSeconds } from "./internal/retry-after.mjs";
13
- import { c as resolveOpenAIResponsesTextFormat } from "./openai-completions-compat-CpeOT7jH.mjs";
13
+ import { c as resolveOpenAIResponsesTextFormat } from "./openai-completions-compat-B3qLTOYx.mjs";
14
14
  import { n as buildManagedModelFetch } from "./host-policy-C0y3BC9R.mjs";
15
15
  import { S as withProviderResponseHook, b as transportAbortError, h as notifyProviderStreamOpened, n as assignTransportErrorDetails } from "./transport-stream-shared-Dr_GBa9K.mjs";
16
16
  import { C as stripSystemPromptCacheBoundary, n as buildBaseOptions } from "./simple-options-CmtE6whA.mjs";
17
- import { Dt as createResponseModelTracker, E as ResponsesStreamFailure, Et as createOpenAIResponseHook, F as convertProviderResponsesMessages, S as isInvalidEncryptedContentError, T as resolveNextResponsesEncryptedContentAttempt, Tt as createOpenAIProviderAcceptanceHook, _t as resolveOpenAISimpleReasoningEffort, at as suppressOpenAIResponsesCompaction, b as commitResponsesEncryptedContentAttempt, gt as resolveOpenAIRequestReasoning, i as convertResponsesToolPayload, j as recordResponsesContextUsage, n as applyResponsesServiceTierPricing, nt as buildOpenAIResponsesReasoningReplayMetadata, o as readOpenAIMisalignmentReview, s as processResponsesStream } from "./openai-responses-shared-C1GHTB0q.mjs";
17
+ import { Dt as createResponseModelTracker, E as ResponsesStreamFailure, Et as createOpenAIResponseHook, F as convertProviderResponsesMessages, S as isInvalidEncryptedContentError, T as resolveNextResponsesEncryptedContentAttempt, Tt as createOpenAIProviderAcceptanceHook, _t as resolveOpenAISimpleReasoningEffort, at as suppressOpenAIResponsesCompaction, b as commitResponsesEncryptedContentAttempt, gt as resolveOpenAIRequestReasoning, i as convertResponsesToolPayload, j as recordResponsesContextUsage, n as applyResponsesServiceTierPricing, nt as buildOpenAIResponsesReasoningReplayMetadata, o as readOpenAIMisalignmentReview, s as processResponsesStream } from "./openai-responses-shared-D80XGvI9.mjs";
18
18
  import { t as createAssistantOutput } from "./assistant-output-DDZq4a3j.mjs";
19
19
  import { a as withFirstStreamEventTimeout, i as getFirstStreamEventTimeoutMs, r as getFirstStreamEventTimeoutHandler, t as createFirstStreamEventAbortController } from "./stream-first-event-timeout-Dc42hKv6.mjs";
20
20
  import { n as withResponsesRequestAcceptance, r as createResponsesPromptEgressObserver, t as responsesRequestLifecycle } from "./openai-responses-request-lifecycle-Cx2nKN1G.mjs";
@@ -1,7 +1,7 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-BhDjJH2R.mjs";
2
2
  import { k as clampThinkingLevel } from "./host-CIzdzpBn.mjs";
3
3
  import { n as buildBaseOptions } from "./simple-options-CmtE6whA.mjs";
4
- import { c as convertMessages, n as streamOpenAICompletionsRequest } from "./openai-completions-transport-BRjxCG1C.mjs";
4
+ import { c as convertMessages, n as streamOpenAICompletionsRequest } from "./openai-completions-transport-DGXeWM4f.mjs";
5
5
  import { t as requireApiKey } from "./required-api-key-CFJvcFy_.mjs";
6
6
  //#region packages/ai/src/providers/openai-completions.ts
7
7
  var openai_completions_exports = /* @__PURE__ */ __exportAll({
@@ -1,4 +1,5 @@
1
1
  import { o as isRecord } from "./record-coerce-CNDovvft.mjs";
2
+ import { D as resolveOpenAIReasoningEffortMapping, k as supportsOpenAIReasoningEffort } from "./openai-responses-contracts-DbD7sGP-.mjs";
2
3
  import { a as resolveProviderRequestCapabilities } from "./host-policy-C0y3BC9R.mjs";
3
4
  //#region packages/ai/src/providers/openai-response-format.ts
4
5
  const JSON_SCHEMA_RESPONSE_FORMAT_NAME = "openclaw_response";
@@ -153,13 +154,15 @@ function resolveOpenAICompletionsCompat(model, resolveCapabilities) {
153
154
  const { defaults, capabilities } = detectOpenAICompletionsCompat(model, resolveCapabilities);
154
155
  const configured = model.compat;
155
156
  const thinkingFormat = configured?.thinkingFormat ?? defaults.thinkingFormat;
157
+ const thinkingOffControlUndeclared = capabilities.usesExplicitProxyLikeEndpoint && thinkingFormat === "zai" && configured?.thinkingFormat === void 0 && !supportsOpenAIReasoningEffort({ compat: configured }, "none") && !supportsOpenAIReasoningEffort({ compat: configured }, "off") && resolveOpenAIReasoningEffortMapping("off", configured?.reasoningEffortMap) === void 0;
156
158
  return {
157
159
  supportsStore: configured?.supportsStore ?? defaults.supportsStore,
158
160
  supportsDeveloperRole: configured?.supportsDeveloperRole ?? defaults.supportsDeveloperRole,
159
161
  supportsReasoningEffort: configured?.supportsReasoningEffort ?? defaults.supportsReasoningEffort,
160
162
  supportedReasoningEfforts: configured?.supportedReasoningEfforts,
161
163
  reasoningEffortMap: configured?.reasoningEffortMap,
162
- reasoningEffortForOff: capabilities.usesExplicitProxyLikeEndpoint && thinkingFormat === "openai" && !configured?.supportedReasoningEfforts?.includes("none") ? null : "none",
164
+ reasoningEffortForOff: capabilities.usesExplicitProxyLikeEndpoint && (thinkingFormat === "openai" || thinkingOffControlUndeclared) && !configured?.supportedReasoningEfforts?.includes("none") ? null : "none",
165
+ thinkingOffControlUndeclared,
163
166
  supportsUsageInStreaming: configured?.supportsUsageInStreaming ?? defaults.supportsUsageInStreaming,
164
167
  maxTokensField: configured?.maxTokensField ?? defaults.maxTokensField,
165
168
  requiresToolResultName: configured?.requiresToolResultName ?? false,
@@ -29,6 +29,7 @@ type ResolvedOpenAICompletionsCompat = Omit<Required<OpenAICompletionsCompat>, "
29
29
  requiresNonEmptyUserOrAssistantMessage: boolean;
30
30
  configuredSupportsLongCacheRetention?: boolean;
31
31
  reasoningEffortForOff: "none" | null;
32
+ thinkingOffControlUndeclared: boolean;
32
33
  };
33
34
  /** Native OpenAI defaults never apply to a configured proxy endpoint. */
34
35
  declare function isNativeOpenAIEndpoint(model: {
@@ -8,15 +8,15 @@ import { A as supportsOpenAITemperature, C as isOpenAIGpt6Model, N as resolveOpe
8
8
  import { r as uniqueStrings } from "./string-normalization-I3ux50s9.mjs";
9
9
  import { n as getSessionResourceOwnerId, r as registerSessionResourceCleanup } from "./session-resources-D1wgDQ8C.mjs";
10
10
  import { c as stableStringify, s as truncateUtf16Safe } from "./provider-error-CF9GWCs2.mjs";
11
- import { r as resolveOpenAIPromptCacheParams } from "./openai-prompt-cache-CvftfMfD.mjs";
11
+ import { r as resolveOpenAIPromptCacheParams } from "./openai-prompt-cache-Bu5ntysJ.mjs";
12
12
  import { d as hasOnlyResponsesFunctionTools, i as emitModelTransportError, r as emitModelTransportDebug, t as formatModelTransportDebugBaseUrl } from "./diagnostics-tQasYct1.mjs";
13
13
  import { c as supportsModelTools, n as estimateStringChars } from "./transport-utils-DmYqQcG7.mjs";
14
- import { c as resolveOpenAIResponsesTextFormat, i as resolveOpenAICompletionsCompat, l as shouldOmitOllamaCompatResponseFormat, n as isNativeOpenAIEndpoint, o as usesNativeOpenAICodexResponsesBackend, r as isOpenAICodexResponsesModel, s as resolveOpenAICompletionsResponseFormat, t as detectOpenAICompletionsCompat } from "./openai-completions-compat-CpeOT7jH.mjs";
14
+ import { c as resolveOpenAIResponsesTextFormat, i as resolveOpenAICompletionsCompat, l as shouldOmitOllamaCompatResponseFormat, n as isNativeOpenAIEndpoint, o as usesNativeOpenAICodexResponsesBackend, r as isOpenAICodexResponsesModel, s as resolveOpenAICompletionsResponseFormat, t as detectOpenAICompletionsCompat } from "./openai-completions-compat-B3qLTOYx.mjs";
15
15
  import { i as resolveProviderEndpoint, t as buildGuardedModelFetch } from "./host-policy-C0y3BC9R.mjs";
16
16
  import { i as resolveCacheRetention, r as buildCopilotDynamicHeaders } from "./cloudflare-5qSGvIUH.mjs";
17
17
  import { E as createToolArgumentPreviewSchedule, M as racePromiseWithAbortSignal, O as parseStreamingJson, P as sanitizeSurrogates, S as withProviderResponseHook, b as transportAbortError, c as failTransportStream, d as iterateModelStream, h as notifyProviderStreamOpened, l as finalizeTerminalToolCallArguments, s as createWritableTransportEventStream, u as finalizeTransportStream, v as sanitizeTransportPayloadText, y as throwIfModelStreamAborted } from "./transport-stream-shared-Dr_GBa9K.mjs";
18
18
  import { C as stripSystemPromptCacheBoundary, D as sortPromptCacheToolsByName, S as splitSystemPromptRelocatableBoundary, d as describeToolResultMediaPlaceholder, l as codeModeToolSurfaceObserver, m as extractToolResultText, r as clampMaxTokensToModel, s as prepareModelRequestBody, u as reasoningTagTextPolicy, w as stripSystemPromptRelocatableBoundary, x as splitSystemPromptCacheBoundary } from "./simple-options-CmtE6whA.mjs";
19
- import { $ as replayResponsesReasoningUpdates, A as summarizeResponsesPayload, At as log, B as responsesInputFingerprint, C as readResponsesRecoveryEvent, Ct as toOpenAIResponsesToolChoice, D as logResponsesFailedNoDetails, Dt as createResponseModelTracker, E as ResponsesStreamFailure, Ft as resolveOpenAIClientBaseUrl, G as responsesContinuationRequestFingerprint, H as recordResponsesContinuationState, I as convertResponsesMessages, It as resolvePromptCacheKey, Lt as redactIdentifier, Mt as parseOpenAICompletionsUsage, Nt as readOpenAICompletionsContentDeltas, O as safeDebugValue, Ot as detachPartialSnapshot, P as buildResponsesInputMessage, Pt as readOpenAICompletionsReasoningBatch, Q as isConfigurationUpdate, R as readResponsesInputReplayState, Rt as sha256Hex, S as isInvalidEncryptedContentError, St as reconcileOpenAIResponsesToolChoice, T as resolveNextResponsesEncryptedContentAttempt, Tt as createOpenAIProviderAcceptanceHook, U as resolveResponsesContinuationRequest, V as claimOpenAIResponsesHttpContinuation, W as responsesContinuationPrefixFingerprint, _t as resolveOpenAISimpleReasoningEffort, a as prepareResponsesTools, at as suppressOpenAIResponsesCompaction, bt as projectOpenAITools, c as observeResponsesStream, ct as buildOpenAISdkClientOptions, et as supportsResponsesReasoningUpdate, ft as getCompat, gt as resolveOpenAIRequestReasoning, ht as resolveOpenAIStrictToolFlagWithDiagnostics, j as recordResponsesContextUsage, jt as measureUtf8AppendBytes, k as summarizeOpenAITransportError, kt as isOpenAICompletionsThinkingEnabled, lt as buildOpenAISdkRequestOptions, mt as resolveCodeModeResponsesVisibleToolNames, n as applyResponsesServiceTierPricing, nt as buildOpenAIResponsesReasoningReplayMetadata, ot as assertCodeModeResponsesToolSurface, s as processResponsesStream, st as buildOpenAIClientHeaders, ut as enforceCodeModeResponsesToolSurface, w as resolveAzureOpenAIApiVersion, wt as GEMINI_THOUGHT_SIGNATURE_VALIDATOR_SKIP, x as createResponsesStreamWithRecovery, xt as reconcileOpenAICompletionsToolChoice, yt as prepareOpenAITools, z as recordResponsesInputReplay } from "./openai-responses-shared-C1GHTB0q.mjs";
19
+ import { $ as replayResponsesReasoningUpdates, A as summarizeResponsesPayload, At as log, B as responsesInputFingerprint, C as readResponsesRecoveryEvent, Ct as toOpenAIResponsesToolChoice, D as logResponsesFailedNoDetails, Dt as createResponseModelTracker, E as ResponsesStreamFailure, Ft as resolveOpenAIClientBaseUrl, G as responsesContinuationRequestFingerprint, H as recordResponsesContinuationState, I as convertResponsesMessages, It as resolvePromptCacheKey, Lt as redactIdentifier, Mt as parseOpenAICompletionsUsage, Nt as readOpenAICompletionsContentDeltas, O as safeDebugValue, Ot as detachPartialSnapshot, P as buildResponsesInputMessage, Pt as readOpenAICompletionsReasoningBatch, Q as isConfigurationUpdate, R as readResponsesInputReplayState, Rt as sha256Hex, S as isInvalidEncryptedContentError, St as reconcileOpenAIResponsesToolChoice, T as resolveNextResponsesEncryptedContentAttempt, Tt as createOpenAIProviderAcceptanceHook, U as resolveResponsesContinuationRequest, V as claimOpenAIResponsesHttpContinuation, W as responsesContinuationPrefixFingerprint, _t as resolveOpenAISimpleReasoningEffort, a as prepareResponsesTools, at as suppressOpenAIResponsesCompaction, bt as projectOpenAITools, c as observeResponsesStream, ct as buildOpenAISdkClientOptions, et as supportsResponsesReasoningUpdate, ft as getCompat, gt as resolveOpenAIRequestReasoning, ht as resolveOpenAIStrictToolFlagWithDiagnostics, j as recordResponsesContextUsage, jt as measureUtf8AppendBytes, k as summarizeOpenAITransportError, kt as isOpenAICompletionsThinkingEnabled, lt as buildOpenAISdkRequestOptions, mt as resolveCodeModeResponsesVisibleToolNames, n as applyResponsesServiceTierPricing, nt as buildOpenAIResponsesReasoningReplayMetadata, ot as assertCodeModeResponsesToolSurface, s as processResponsesStream, st as buildOpenAIClientHeaders, ut as enforceCodeModeResponsesToolSurface, w as resolveAzureOpenAIApiVersion, wt as GEMINI_THOUGHT_SIGNATURE_VALIDATOR_SKIP, x as createResponsesStreamWithRecovery, xt as reconcileOpenAICompletionsToolChoice, yt as prepareOpenAITools, z as recordResponsesInputReplay } from "./openai-responses-shared-D80XGvI9.mjs";
20
20
  import { n as getEnvApiKey } from "./env-api-keys-CrxwdylR.mjs";
21
21
  import { i as providerReplayContextMatches, n as buildProviderReplayContext, r as isProviderReplayContext } from "./text-signature-an0fgbDz.mjs";
22
22
  import { n as transformProviderMessages, t as createAssistantOutput } from "./assistant-output-DDZq4a3j.mjs";
@@ -25,7 +25,7 @@ import { t as notifyLlmRequestActivity } from "./llm-request-activity-CfMuh5cC.m
25
25
  import { n as resolveOpencodeSessionHeaders } from "./session-affinity-DA4WHv1h.mjs";
26
26
  import { isGoogleGemini3ThinkingLevelModel } from "./internal/google-model-family.mjs";
27
27
  import "./types.mjs";
28
- import { i as createOpenAIProviderClient, n as resolveProviderSimpleCompletionHeaders, r as resolveProviderTransportTurnState, t as filterProviderTurnHeadersForExplicitOpencodeSession } from "./provider-transport-turn-state-O5JWdUL4.mjs";
28
+ import { i as createOpenAIProviderClient, n as resolveProviderSimpleCompletionHeaders, r as resolveProviderTransportTurnState, t as filterProviderTurnHeadersForExplicitOpencodeSession } from "./provider-transport-turn-state-CDlBMPlS.mjs";
29
29
  import { a as withFirstStreamEventTimeout, i as getFirstStreamEventTimeoutMs, r as getFirstStreamEventTimeoutHandler, t as createFirstStreamEventAbortController } from "./stream-first-event-timeout-Dc42hKv6.mjs";
30
30
  import { t as boundResponseBody } from "./streaming-byte-guard-DBXr1XYn.mjs";
31
31
  import { f as withPreparedToolSchemaNormalization, r as normalizeOpenAIStrictToolParameters } from "./openai-tool-schema-DDPXsvJP.mjs";
@@ -686,7 +686,7 @@ function applyCompletionsReasoningAndRouting(params, model, reasoning, compat, m
686
686
  const direct = mode === "direct";
687
687
  const nativeEffort = compat.thinkingFormat === "openrouter" ? void 0 : reasoning.effort;
688
688
  const enabled = reasoning.thinkingEnabled ?? false;
689
- if (model.reasoning) {
689
+ if (model.reasoning && (!compat.thinkingOffControlUndeclared || reasoning.thinkingEnabled !== void 0 || !reasoning.thinkingExplicit)) {
690
690
  let allowScalarEffort = true;
691
691
  if (direct && compat.thinkingFormat === "zai") {
692
692
  params.thinking = enabled ? {
@@ -791,6 +791,8 @@ const REASONING_CONTENT_REPLAY_MODEL_IDS = /* @__PURE__ */ new Set([
791
791
  "kimi-k2.7-code",
792
792
  "kimi-k2.7-code-highspeed",
793
793
  "kimi-k3",
794
+ "kimi-k3.1-pro",
795
+ "kimi-k3.1-pro-highspeed",
794
796
  "kimi-k2-thinking",
795
797
  "kimi-k2-thinking-turbo",
796
798
  "mimo-v2-pro",
@@ -1044,7 +1046,11 @@ function buildOpenAICompletionsRequest(model, context, options, policy) {
1044
1046
  ...model,
1045
1047
  compat: model.compat ?? void 0
1046
1048
  }, simpleReasoning)) ?? (usesBinaryOpenRouterThinking ? void 0 : "high");
1047
- const reasoning = resolveOpenAIRequestReasoning(model, requestedEffort, compat.reasoningEffortForOff);
1049
+ const thinkingExplicit = options?.reasoningEffort !== void 0 || options?.reasoning !== void 0;
1050
+ const reasoning = {
1051
+ ...resolveOpenAIRequestReasoning(model, requestedEffort, compat.reasoningEffortForOff),
1052
+ thinkingExplicit
1053
+ };
1048
1054
  const { effort, thinkingEnabled } = reasoning;
1049
1055
  {
1050
1056
  const maxTokenBudget = policy.mode === "direct" ? {
@@ -1,4 +1,4 @@
1
- import { n as isNativeOpenAIEndpoint } from "./openai-completions-compat-CpeOT7jH.mjs";
1
+ import { n as isNativeOpenAIEndpoint } from "./openai-completions-compat-B3qLTOYx.mjs";
2
2
  //#region packages/normalization-core/src/code-points.ts
3
3
  /** Truncates to a nonnegative code-point budget; grapheme clusters may be split. */
4
4
  function truncateCodePoints(text, maxCodePoints) {
@@ -1,13 +1,13 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-BhDjJH2R.mjs";
2
2
  import { t as AssistantMessageEventStream } from "./event-stream-X2gmsUWv.mjs";
3
- import { n as clampOpenAIPromptCacheKey, r as resolveOpenAIPromptCacheParams } from "./openai-prompt-cache-CvftfMfD.mjs";
4
- import { i as resolveOpenAICompletionsCompat } from "./openai-completions-compat-CpeOT7jH.mjs";
3
+ import { n as clampOpenAIPromptCacheKey, r as resolveOpenAIPromptCacheParams } from "./openai-prompt-cache-Bu5ntysJ.mjs";
4
+ import { i as resolveOpenAICompletionsCompat } from "./openai-completions-compat-B3qLTOYx.mjs";
5
5
  import { i as resolveCacheRetention, r as buildCopilotDynamicHeaders } from "./cloudflare-5qSGvIUH.mjs";
6
6
  import { n as buildBaseOptions } from "./simple-options-CmtE6whA.mjs";
7
- import { F as convertProviderResponsesMessages, _t as resolveOpenAISimpleReasoningEffort, n as applyResponsesServiceTierPricing, r as runResponsesStreamLifecycle, t as applyCommonResponsesParams } from "./openai-responses-shared-C1GHTB0q.mjs";
7
+ import { F as convertProviderResponsesMessages, _t as resolveOpenAISimpleReasoningEffort, n as applyResponsesServiceTierPricing, r as runResponsesStreamLifecycle, t as applyCommonResponsesParams } from "./openai-responses-shared-D80XGvI9.mjs";
8
8
  import { n as getEnvApiKey } from "./env-api-keys-CrxwdylR.mjs";
9
9
  import { t as createAssistantOutput } from "./assistant-output-DDZq4a3j.mjs";
10
- import { i as createOpenAIProviderClient, n as resolveProviderSimpleCompletionHeaders } from "./provider-transport-turn-state-O5JWdUL4.mjs";
10
+ import { i as createOpenAIProviderClient, n as resolveProviderSimpleCompletionHeaders } from "./provider-transport-turn-state-CDlBMPlS.mjs";
11
11
  import { t as requireApiKey } from "./required-api-key-CFJvcFy_.mjs";
12
12
  //#region packages/ai/src/providers/openai-responses.ts
13
13
  var openai_responses_exports = /* @__PURE__ */ __exportAll({
@@ -9,10 +9,10 @@ import { D as applyProviderReportedUsageCost, E as headersToRecord, N as isImage
9
9
  import { A as supportsOpenAITemperature, D as resolveOpenAIReasoningEffortMapping, E as resolveOpenAIReasoningEffortForModel, N as resolveOpenAIThinkingApi, T as resolveOpenAIModelReasoningEfforts, _ as isResponsesServiceTierRejection, a as OPENAI_RESPONSES_COMPACTION_REPLAY_TYPE, c as OPENAI_RESPONSES_RETAINED_COMPACTION_REPLAY_TYPE, f as RESPONSE_FAILED_NO_DETAILS_MESSAGE, g as responsesServiceTierObserver, i as OPENAI_RESPONSES_APIS, j as MODEL_CATALOG_THINKING_LEVELS, k as supportsOpenAIReasoningEffort, o as OPENAI_RESPONSES_REASONING_REPLAY_BLOCK_META_KEY, p as isPreviousResponseRejection, s as OPENAI_RESPONSES_REASONING_REPLAY_META_KEY, v as nextResponsesServiceTier, w as normalizeOpenAIReasoningEffort } from "./openai-responses-contracts-DbD7sGP-.mjs";
10
10
  import { n as getSessionResourceOwnerId, r as registerSessionResourceCleanup } from "./session-resources-D1wgDQ8C.mjs";
11
11
  import { c as stableStringify, s as truncateUtf16Safe } from "./provider-error-CF9GWCs2.mjs";
12
- import { n as clampOpenAIPromptCacheKey } from "./openai-prompt-cache-CvftfMfD.mjs";
12
+ import { n as clampOpenAIPromptCacheKey } from "./openai-prompt-cache-Bu5ntysJ.mjs";
13
13
  import { _ as resolveResponsesTerminalStopReason, a as resolveModelPayloadDebugMode, d as hasOnlyResponsesFunctionTools, f as isResponsesProviderTool, g as readResponsesReasoningTokens, h as mapResponsesTerminalUsage, o as resolveModelSseDebugMode, r as emitModelTransportDebug, u as ResponsesOutputIdentityError } from "./diagnostics-tQasYct1.mjs";
14
14
  import { a as redactSensitiveText, r as isCodeModeModelVisibleToolName } from "./transport-utils-DmYqQcG7.mjs";
15
- import { c as resolveOpenAIResponsesTextFormat, i as resolveOpenAICompletionsCompat, o as usesNativeOpenAICodexResponsesBackend } from "./openai-completions-compat-CpeOT7jH.mjs";
15
+ import { c as resolveOpenAIResponsesTextFormat, i as resolveOpenAICompletionsCompat, o as usesNativeOpenAICodexResponsesBackend } from "./openai-completions-compat-B3qLTOYx.mjs";
16
16
  import { r as resolveModelRequestTimeoutMs } from "./host-policy-C0y3BC9R.mjs";
17
17
  import { A as shortHash, C as parseJsonObjectPreservingUnsafeIntegers, E as createToolArgumentPreviewSchedule, O as parseStreamingJson, S as withProviderResponseHook, b as transportAbortError, c as failTransportStream, d as iterateModelStream, g as parseTerminalToolCallArguments, m as notifyProviderHttpResponse, t as IncompleteToolCallError, u as finalizeTransportStream, v as sanitizeTransportPayloadText } from "./transport-stream-shared-Dr_GBa9K.mjs";
18
18
  import { C as stripSystemPromptCacheBoundary, D as sortPromptCacheToolsByName, d as describeToolResultMediaPlaceholder, m as extractToolResultText, r as clampMaxTokensToModel, s as prepareModelRequestBody } from "./simple-options-CmtE6whA.mjs";
@@ -1,6 +1,6 @@
1
1
  import { r as getAiTransportHost } from "./host-CIzdzpBn.mjs";
2
2
  import { n as resolveCloudflareBaseUrl, t as isCloudflareProvider } from "./cloudflare-5qSGvIUH.mjs";
3
- import { Ft as resolveOpenAIClientBaseUrl } from "./openai-responses-shared-C1GHTB0q.mjs";
3
+ import { Ft as resolveOpenAIClientBaseUrl } from "./openai-responses-shared-D80XGvI9.mjs";
4
4
  import { n as resolveOpencodeSessionHeaders, t as hasOpencodeSessionHeader } from "./session-affinity-DA4WHv1h.mjs";
5
5
  import { randomUUID } from "node:crypto";
6
6
  import OpenAI from "openai";
@@ -1,6 +1,6 @@
1
1
  import { t as AssistantMessageEventStream } from "./event-stream-X2gmsUWv.mjs";
2
2
  import { n as projectProviderError } from "./provider-error-CF9GWCs2.mjs";
3
- import { n as clampOpenAIPromptCacheKey, t as OPENAI_PROMPT_CACHE_KEY_MAX_LENGTH } from "./openai-prompt-cache-CvftfMfD.mjs";
3
+ import { n as clampOpenAIPromptCacheKey, t as OPENAI_PROMPT_CACHE_KEY_MAX_LENGTH } from "./openai-prompt-cache-Bu5ntysJ.mjs";
4
4
  import { t as createZeroUsage } from "./usage-CJH5D6Ea.mjs";
5
5
  //#region packages/ai/src/providers/register-builtins.ts
6
6
  /** Source id used for built-in API provider registrations. */
@@ -54,7 +54,7 @@ const registerBuiltIns = [
54
54
  stream: module.streamAnthropic,
55
55
  streamSimple: module.streamSimpleAnthropic
56
56
  })),
57
- createLazyRegistration("openai-completions", () => import("./openai-completions-BkRt2Iy4.mjs").then((n) => n.t), (module) => ({
57
+ createLazyRegistration("openai-completions", () => import("./openai-completions-DayP68sM.mjs").then((n) => n.t), (module) => ({
58
58
  stream: module.streamOpenAICompletions,
59
59
  streamSimple: module.streamSimpleOpenAICompletions
60
60
  })),
@@ -62,15 +62,15 @@ const registerBuiltIns = [
62
62
  stream: module.streamMistral,
63
63
  streamSimple: module.streamSimpleMistral
64
64
  })),
65
- createLazyRegistration("openai-responses", () => import("./openai-responses-BUDpkW8I.mjs").then((n) => n.t), (module) => ({
65
+ createLazyRegistration("openai-responses", () => import("./openai-responses-DfdFDCyn.mjs").then((n) => n.t), (module) => ({
66
66
  stream: module.streamOpenAIResponses,
67
67
  streamSimple: module.streamSimpleOpenAIResponses
68
68
  })),
69
- createLazyRegistration("azure-openai-responses", () => import("./azure-openai-responses-yuBKi0s4.mjs"), (module) => ({
69
+ createLazyRegistration("azure-openai-responses", () => import("./azure-openai-responses-CpTeMNMR.mjs"), (module) => ({
70
70
  stream: module.streamAzureOpenAIResponses,
71
71
  streamSimple: module.streamSimpleAzureOpenAIResponses
72
72
  })),
73
- createLazyRegistration("openai-chatgpt-responses", () => import("./openai-chatgpt-responses-BjfLWIK6.mjs"), (module) => ({
73
+ createLazyRegistration("openai-chatgpt-responses", () => import("./openai-chatgpt-responses-BOFtIBhI.mjs"), (module) => ({
74
74
  stream: module.streamOpenAICodexResponses,
75
75
  streamSimple: module.streamSimpleOpenAICodexResponses
76
76
  })),
@@ -0,0 +1,25 @@
1
+ //#region packages/ai/src/internal/retry-after.d.ts
2
+ type HttpDateInstant = {
3
+ timestampMs: number;
4
+ leapSecond: boolean;
5
+ };
6
+ /** Reads only retry timing metadata, without invoking provider getters or serialization hooks. */
7
+ declare function parseRetryAfterHeadersSeconds(headers: unknown, nowMs?: number): number | undefined;
8
+ /** SDK errors carry native response headers separately from their error body. */
9
+ declare function parseRetryAfterErrorSeconds(error: unknown, nowMs?: number): number | undefined;
10
+ /** Provider prose such as "Please try again in 6s", "retry in 32s" or "Retry-After: 7". */
11
+ declare const RETRY_AFTER_TEXT_RE: RegExp;
12
+ /** Seconds named by a captured retry-text value: a number with an optional time unit, or an HTTP-date. */
13
+ declare function parseRetryAfterTextSeconds(valueText: string, nowMs?: number): number | undefined;
14
+ /**
15
+ * Reads google.rpc.RetryInfo delays from raw error text or a google.rpc.Status-shaped body
16
+ * in any key order, with a fixed number of descriptor reads and no getters. Pass the
17
+ * untruncated body: Gemini puts RetryInfo after its QuotaFailure details.
18
+ */
19
+ declare function parseGoogleRetryDelaySeconds(value: unknown): number | undefined;
20
+ /** Round leap seconds forward for Retry-After so an unrepresentable instant cannot retry early. */
21
+ declare function parseRetryAfterHttpDateMs(value: string, nowMs?: number): number | undefined;
22
+ /** Parse all three HTTP-date forms while retaining leap-second ordering. */
23
+ declare function parseHttpDateInstant(value: string, nowMs?: number): HttpDateInstant | undefined;
24
+ //#endregion
25
+ export { parseRetryAfterHeadersSeconds as a, parseRetryAfterErrorSeconds as i, parseGoogleRetryDelaySeconds as n, parseRetryAfterHttpDateMs as o, parseHttpDateInstant as r, parseRetryAfterTextSeconds as s, RETRY_AFTER_TEXT_RE as t };
@@ -6,7 +6,7 @@ import { a as BaseOpenAIStreamOptions, c as OpenAIResponsesCompactionRejection,
6
6
  import { n as OpenAIToolProjection } from "./openai-tool-projection-793cE3QX.mjs";
7
7
  import "./types-Kdfw_04V.mjs";
8
8
  import { a as buildAnthropicSystemBlocks, c as logAnthropicContextEdits, d as resolveAnthropicPayloadPolicy, f as resolveAnthropicRequestBetaHeader, i as applyAnthropicRequestCacheControl, l as resolveAnthropicCacheOptions, m as supportsAnthropicServerSideFallback, n as applyAnthropicEphemeralCacheControlMarkers, o as isAnthropicServerToolClearingEnabled, p as resolveAnthropicServerCompactionPlan, r as applyAnthropicPayloadPolicyToParams, s as isDirectAnthropicModel, t as applyAnthropicContextManagementToRequest, u as resolveAnthropicEphemeralCacheControl } from "./anthropic-payload-policy-DVv20UCL.mjs";
9
- import { a as resolveOpenAICompletionsCompat, i as isOpenAICodexResponsesModel, n as detectOpenAICompletionsCompat, o as resolveOpenAIPromptCacheKeySupport, r as isNativeOpenAIEndpoint, s as usesNativeOpenAICodexResponsesBackend, t as ResolvedOpenAICompletionsCompat } from "./openai-completions-compat-B86jN9ii.mjs";
9
+ import { a as resolveOpenAICompletionsCompat, i as isOpenAICodexResponsesModel, n as detectOpenAICompletionsCompat, o as resolveOpenAIPromptCacheKeySupport, r as isNativeOpenAIEndpoint, s as usesNativeOpenAICodexResponsesBackend, t as ResolvedOpenAICompletionsCompat } from "./openai-completions-compat-DHed0bE9.mjs";
10
10
  import { l as OpenAIResponsesCompactionOutput, n as OpenAIResponsesOptions, r as OpenAIResponsesReasoningReplayMetadata } from "./openai-responses-contracts-Cm1QilsO.mjs";
11
11
  import { i as resolveOpenAIResponsesServerCompactionPlan, n as resolveOpenAIResponsesCompactEndpointPlan, r as resolveOpenAIResponsesPayloadPolicy, t as applyOpenAIResponsesPayloadPolicy } from "./openai-responses-payload-policy-C7GsA1y0.mjs";
12
12
  import { n as captureOpenAIResponsesCompaction, t as CompactionReplayRefreshRequiredError } from "./openai-responses-compaction-replay-DtEbZJbU.mjs";
@@ -292,6 +292,7 @@ export declare function getCompat(model: OpenAIModeModel): {
292
292
  requiresNonEmptyUserOrAssistantMessage: boolean;
293
293
  configuredSupportsLongCacheRetention?: boolean;
294
294
  reasoningEffortForOff: "none" | null;
295
+ thinkingOffControlUndeclared: boolean;
295
296
  reasoningEffortMap: Record<string, string>;
296
297
  openRouterRouting: Record<string, unknown>;
297
298
  requiresStringContent: boolean;
@@ -6,17 +6,17 @@ import { i as OPENAI_RESPONSES_APIS } from "./openai-responses-contracts-DbD7sGP
6
6
  import { o as redactDiagnosticText, s as truncateUtf16Safe } from "./provider-error-CF9GWCs2.mjs";
7
7
  import { a as resolveModelPayloadDebugMode, i as emitModelTransportError, n as formatModelTransportDebugUrl, o as resolveModelSseDebugMode, r as emitModelTransportDebug, t as formatModelTransportDebugBaseUrl, y as toErrorObject } from "./diagnostics-tQasYct1.mjs";
8
8
  import { i as readResponseTextSnippet, o as resolveModelHeaderSentinels, r as isCodeModeModelVisibleToolName, s as streamFragmentError, t as MALFORMED_STREAMING_FRAGMENT_ERROR_MESSAGE } from "./transport-utils-DmYqQcG7.mjs";
9
- import { a as resolveOpenAIPromptCacheKeySupport, i as resolveOpenAICompletionsCompat, n as isNativeOpenAIEndpoint, o as usesNativeOpenAICodexResponsesBackend, r as isOpenAICodexResponsesModel, t as detectOpenAICompletionsCompat } from "./openai-completions-compat-CpeOT7jH.mjs";
9
+ import { a as resolveOpenAIPromptCacheKeySupport, i as resolveOpenAICompletionsCompat, n as isNativeOpenAIEndpoint, o as usesNativeOpenAICodexResponsesBackend, r as isOpenAICodexResponsesModel, t as detectOpenAICompletionsCompat } from "./openai-completions-compat-B3qLTOYx.mjs";
10
10
  import { t as buildGuardedModelFetch } from "./host-policy-C0y3BC9R.mjs";
11
11
  import { A as applyAnthropicPayloadPolicyToParams, B as resolveAnthropicServerCompactionPlan, D as suppressAnthropicCompaction, E as resolveNewestAnthropicCompaction, F as logAnthropicContextEdits, I as resolveAnthropicCacheOptions, J as isAnthropicOAuthApiKey, L as resolveAnthropicEphemeralCacheControl, M as buildAnthropicSystemBlocks, N as isAnthropicServerToolClearingEnabled, O as applyAnthropicContextManagementToRequest, P as isDirectAnthropicModel, R as resolveAnthropicPayloadPolicy, T as isAnthropicReplayRejection, V as supportsAnthropicServerSideFallback, X as usesFoundryBearerAuth, Y as omitFoundryBearerCredentialHeaders, f as resolveAnthropicTransportOptions, j as applyAnthropicRequestCacheControl, k as applyAnthropicEphemeralCacheControlMarkers, l as buildAnthropicRequest, p as resolveCompletionTokenReservation, t as consumeAnthropicStream, u as prepareAnthropicRequest, z as resolveAnthropicRequestBetaHeader } from "./anthropic-stream-reducer-BY-gN9EE.mjs";
12
12
  import { C as parseJsonObjectPreservingUnsafeIntegers, S as withProviderResponseHook, T as quoteUnsafeIntegerLiterals, _ as sanitizeNonEmptyTransportPayloadText, a as createEmptyTransportUsage, b as transportAbortError, c as failTransportStream, d as iterateModelStream, f as mergeTransportHeaders, g as parseTerminalToolCallArguments, h as notifyProviderStreamOpened, i as copyProviderAcceptanceObserver, j as createAbortError$1, l as finalizeTerminalToolCallArguments, m as notifyProviderHttpResponse, n as assignTransportErrorDetails, o as createModelStreamCooperativeScheduler, p as notifyProviderHttpMetadata, r as coerceTransportToolCallArguments, s as createWritableTransportEventStream, t as IncompleteToolCallError, u as finalizeTransportStream, v as sanitizeTransportPayloadText, w as parseJsonPreservingUnsafeIntegers, x as withProviderAcceptanceObserver, y as throwIfModelStreamAborted } from "./transport-stream-shared-Dr_GBa9K.mjs";
13
13
  import { D as sortPromptCacheToolsByName } from "./simple-options-CmtE6whA.mjs";
14
- import { At as log, Dt as createResponseModelTracker, Et as createOpenAIResponseHook, Ft as resolveOpenAIClientBaseUrl, It as resolvePromptCacheKey, J as OPENAI_RESPONSES_ID_MAX_LENGTH, K as OPENAI_RESPONSES_CALL_ID_RE, L as resolveReplayableResponsesMessageId, M as resolveResponsesContextUsageBoundary, Mt as parseOpenAICompletionsUsage, Nt as readOpenAICompletionsContentDeltas, Ot as detachPartialSnapshot, Pt as readOpenAICompletionsReasoningBatch, Tt as createOpenAIProviderAcceptanceHook, X as shouldNormalizeOpenAIResponsesToolCallId, Y as normalizeOpenAIResponsesFunctionCallId, Z as splitOpenAIFunctionCallPairing, ct as buildOpenAISdkClientOptions, dt as filterCodeModePayloadTools, ft as getCompat, ht as resolveOpenAIStrictToolFlagWithDiagnostics, it as resolveNewestOpenAIResponsesCompactionReplay, jt as measureUtf8AppendBytes, kt as isOpenAICompletionsThinkingEnabled, lt as buildOpenAISdkRequestOptions, mt as resolveCodeModeResponsesVisibleToolNames, ot as assertCodeModeResponsesToolSurface, pt as readCodeModePayloadToolName, q as OPENAI_RESPONSES_FUNCTION_CALL_ITEM_ID_RE, rt as captureOpenAIResponsesCompaction, st as buildOpenAIClientHeaders, tt as CompactionReplayRefreshRequiredError, ut as enforceCodeModeResponsesToolSurface, vt as resolveOpenAIReasoningEffortMap, wt as GEMINI_THOUGHT_SIGNATURE_VALIDATOR_SKIP } from "./openai-responses-shared-C1GHTB0q.mjs";
14
+ import { At as log, Dt as createResponseModelTracker, Et as createOpenAIResponseHook, Ft as resolveOpenAIClientBaseUrl, It as resolvePromptCacheKey, J as OPENAI_RESPONSES_ID_MAX_LENGTH, K as OPENAI_RESPONSES_CALL_ID_RE, L as resolveReplayableResponsesMessageId, M as resolveResponsesContextUsageBoundary, Mt as parseOpenAICompletionsUsage, Nt as readOpenAICompletionsContentDeltas, Ot as detachPartialSnapshot, Pt as readOpenAICompletionsReasoningBatch, Tt as createOpenAIProviderAcceptanceHook, X as shouldNormalizeOpenAIResponsesToolCallId, Y as normalizeOpenAIResponsesFunctionCallId, Z as splitOpenAIFunctionCallPairing, ct as buildOpenAISdkClientOptions, dt as filterCodeModePayloadTools, ft as getCompat, ht as resolveOpenAIStrictToolFlagWithDiagnostics, it as resolveNewestOpenAIResponsesCompactionReplay, jt as measureUtf8AppendBytes, kt as isOpenAICompletionsThinkingEnabled, lt as buildOpenAISdkRequestOptions, mt as resolveCodeModeResponsesVisibleToolNames, ot as assertCodeModeResponsesToolSurface, pt as readCodeModePayloadToolName, q as OPENAI_RESPONSES_FUNCTION_CALL_ITEM_ID_RE, rt as captureOpenAIResponsesCompaction, st as buildOpenAIClientHeaders, tt as CompactionReplayRefreshRequiredError, ut as enforceCodeModeResponsesToolSurface, vt as resolveOpenAIReasoningEffortMap, wt as GEMINI_THOUGHT_SIGNATURE_VALIDATOR_SKIP } from "./openai-responses-shared-D80XGvI9.mjs";
15
15
  import { n as getEnvApiKey } from "./env-api-keys-CrxwdylR.mjs";
16
16
  import { t as createDeferredEventBuffer } from "./deferred-event-buffer-DAvyP7qA.mjs";
17
17
  import { t as createAssistantOutput } from "./assistant-output-DDZq4a3j.mjs";
18
18
  import { n as resolveOpencodeSessionHeaders } from "./session-affinity-DA4WHv1h.mjs";
19
- import { a as requestPreparedOpenAIResponsesCompaction, d as applyCompletionsAnthropicCacheControl, f as hasOpenAICompatibleConversationTurn, h as createDeepSeekTextFilter, i as createOpenAIResponsesTransportStreamFn, l as flattenCompletionMessagesToStringContent, m as resolveMaxTokensParam, p as canonicalizeMaxTokensParam, r as createAzureOpenAIResponsesTransportStreamFn, s as buildOpenAICompletionsParams, t as createOpenAICompletionsTransportStreamFn, u as stripCompletionMessagesToRoleContent } from "./openai-completions-transport-BRjxCG1C.mjs";
19
+ import { a as requestPreparedOpenAIResponsesCompaction, d as applyCompletionsAnthropicCacheControl, f as hasOpenAICompatibleConversationTurn, h as createDeepSeekTextFilter, i as createOpenAIResponsesTransportStreamFn, l as flattenCompletionMessagesToStringContent, m as resolveMaxTokensParam, p as canonicalizeMaxTokensParam, r as createAzureOpenAIResponsesTransportStreamFn, s as buildOpenAICompletionsParams, t as createOpenAICompletionsTransportStreamFn, u as stripCompletionMessagesToRoleContent } from "./openai-completions-transport-DGXeWM4f.mjs";
20
20
  import { a as googleFlashSupportsMinimalThinking, i as consumeGoogleGenerateContentStream, n as projectGoogleMessages, r as requiresGoogleToolCallId, t as convertGoogleTools } from "./google-messages-BhdxpH4K.mjs";
21
21
  import { c as resolveOpenAIResponsesCompactEndpointPlan, l as resolveOpenAIResponsesPayloadPolicy, o as sanitizeResponsesImagePayload, s as applyOpenAIResponsesPayloadPolicy, u as resolveOpenAIResponsesServerCompactionPlan } from "./openai-responses-endpoint-COHJK1MR.mjs";
22
22
  import { randomUUID } from "node:crypto";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openclaw/ai",
3
- "version": "2026.10.7",
3
+ "version": "2026.10.8",
4
4
  "description": "Reusable model provider adapters and streaming runtime from OpenClaw",
5
5
  "keywords": [
6
6
  "ai",
@@ -1,15 +0,0 @@
1
- //#region packages/ai/src/internal/retry-after.d.ts
2
- type HttpDateInstant = {
3
- timestampMs: number;
4
- leapSecond: boolean;
5
- };
6
- /** Reads only retry timing metadata, without invoking provider getters or serialization hooks. */
7
- declare function parseRetryAfterHeadersSeconds(headers: unknown, nowMs?: number): number | undefined;
8
- /** SDK errors carry native response headers separately from their error body. */
9
- declare function parseRetryAfterErrorSeconds(error: unknown, nowMs?: number): number | undefined;
10
- /** Round leap seconds forward for Retry-After so an unrepresentable instant cannot retry early. */
11
- declare function parseRetryAfterHttpDateMs(value: string, nowMs?: number): number | undefined;
12
- /** Parse all three HTTP-date forms while retaining leap-second ordering. */
13
- declare function parseHttpDateInstant(value: string, nowMs?: number): HttpDateInstant | undefined;
14
- //#endregion
15
- export { parseRetryAfterHttpDateMs as i, parseRetryAfterErrorSeconds as n, parseRetryAfterHeadersSeconds as r, parseHttpDateInstant as t };