@openclaw/ai 2026.9.6 → 2026.9.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 (99) hide show
  1. package/dist/{anthropic-DZQ_7gD1.mjs → anthropic-CTXJlfnS.mjs} +37 -66
  2. package/dist/{anthropic-payload-policy-DyfwikYJ.d.mts → anthropic-payload-policy-NIPVYXPq.d.mts} +7 -5
  3. package/dist/{anthropic-stream-reducer-D6ZI1wwj.mjs → anthropic-stream-reducer-DrsBCsFY.mjs} +192 -261
  4. package/dist/{api-registry-C2T3lTV7.d.mts → api-registry-D-nbmSqr.d.mts} +2 -2
  5. package/dist/{azure-openai-responses-DS86GYzq.mjs → azure-openai-responses-BBxv4QVI.mjs} +22 -33
  6. package/dist/{base64-CPmadnUf.mjs → base64-C1PsYcRQ.mjs} +15 -9
  7. package/dist/{diagnostics-CH8j2wIG.mjs → diagnostics-CJaB6g8J.mjs} +3 -3
  8. package/dist/diagnostics.d.mts +4 -4
  9. package/dist/diagnostics.mjs +2 -2
  10. package/dist/{env-api-keys-bktO00EJ.mjs → env-api-keys-CyX4VKGO.mjs} +7 -5
  11. package/dist/event-stream-CMQfX_yr.d.mts +1 -0
  12. package/dist/{event-stream-CjnIZZst.d.mts → event-stream-DOPFYVqs.d.mts} +2 -2
  13. package/dist/{event-stream-D8PARQfL.mjs → event-stream-vd9UnCAU.mjs} +10 -0
  14. package/dist/event-stream.d.mts +2 -2
  15. package/dist/event-stream.mjs +1 -1
  16. package/dist/{google-BZJFjhuC.mjs → google-B3HEK0Ag.mjs} +8 -11
  17. package/dist/google-interactions-vMlEfPAA.mjs +574 -0
  18. package/dist/{google-messages-DB7GKkDk.mjs → google-messages-Dz2dAnGo.mjs} +35 -71
  19. package/dist/{google-shared-Bok4I6zB.mjs → google-shared-B58i3c8H.mjs} +43 -47
  20. package/dist/{google-vertex-3eVNR2qW.mjs → google-vertex-DYFXzEbh.mjs} +16 -30
  21. package/dist/{host-yTvBrYM2.mjs → host-DwBmNMCC.mjs} +29 -188
  22. package/dist/{host-policy-DZO3oPPk.mjs → host-policy-wK-ay_RK.mjs} +2 -14
  23. package/dist/{host-DH-Z-LDb.d.mts → host-rxlNaBwm.d.mts} +9 -3
  24. package/dist/{index-C25RT6bP.d.mts → index-D6KsSE74.d.mts} +28 -8
  25. package/dist/index.d.mts +7 -7
  26. package/dist/index.mjs +6 -6
  27. package/dist/internal/anthropic.d.mts +8 -7
  28. package/dist/internal/anthropic.mjs +5 -5
  29. package/dist/internal/openai-completions-compat.d.mts +1 -1
  30. package/dist/internal/openai-completions-compat.mjs +1 -1
  31. package/dist/internal/openai-responses-payload-policy.d.mts +1 -1
  32. package/dist/internal/openai-responses-payload-policy.mjs +2 -2
  33. package/dist/internal/openai.d.mts +31 -8
  34. package/dist/internal/openai.mjs +13 -13
  35. package/dist/internal/runtime.d.mts +31 -70
  36. package/dist/internal/runtime.mjs +10 -65
  37. package/dist/internal/shared.d.mts +14 -12
  38. package/dist/internal/shared.mjs +5 -4
  39. package/dist/internal/tool-schema.d.mts +1 -1
  40. package/dist/internal/tool-schema.mjs +2 -2
  41. package/dist/{mistral-C_13dVBn.mjs → mistral-7wDWcjfF.mjs} +46 -93
  42. package/dist/{openai-chatgpt-responses-sTxPl4zM.mjs → openai-chatgpt-responses-Bc7NZrQR.mjs} +26 -30
  43. package/dist/{openai-completions-BO6D_hrB.mjs → openai-completions-CHnwIV-W.mjs} +14 -12
  44. package/dist/{openai-completions-compat-CUollwl6.mjs → openai-completions-compat-BJf57ZxN.mjs} +3 -5
  45. package/dist/{openai-completions-compat-DfJG1wSO.d.mts → openai-completions-compat-qJjmqQ71.d.mts} +3 -3
  46. package/dist/{openai-completions-stream-BpuJ0ZOA.mjs → openai-completions-stream-dju_5F3P.mjs} +101 -173
  47. package/dist/{openai-prompt-cache-CjV_2IRI.mjs → openai-prompt-cache-BTMs80_O.mjs} +1 -1
  48. package/dist/{openai-prompt-cache-C4RHdN4n.d.mts → openai-prompt-cache-CouErLh7.d.mts} +2 -2
  49. package/dist/{openai-provider-client-BP8J1aeg.mjs → openai-provider-client-G8Otsq2Q.mjs} +2 -2
  50. package/dist/{openai-reasoning-effort-ash8dPrd.mjs → openai-reasoning-effort-C_0p3psG.mjs} +5 -4
  51. package/dist/{openai-responses-BJ_IEoMU.mjs → openai-responses-DbPe3-Py.mjs} +12 -11
  52. package/dist/openai-responses-compaction-replay-DiYn-gFM.d.mts +12 -0
  53. package/dist/{openai-responses-compaction-window-BiNCT0bS.mjs → openai-responses-compaction-window-CYGCjAQz.mjs} +5 -5
  54. package/dist/{openai-responses-contracts-DWrfMODE.mjs → openai-responses-contracts-CLxnqS9p.mjs} +1 -1
  55. package/dist/{openai-responses-contracts-B1ENJFpI.d.mts → openai-responses-contracts-D1iZ0njF.d.mts} +4 -4
  56. package/dist/{openai-responses-prompt-observer-internal-DPHWgbBH.mjs → openai-responses-prompt-observer-internal-BX3QTNSv.mjs} +12 -12
  57. package/dist/{openai-responses-request-lifecycle-DFuyO1pQ.mjs → openai-responses-request-lifecycle-Fsag-IGZ.mjs} +1 -1
  58. package/dist/{openai-responses-shared-DvSqtJ6_.mjs → openai-responses-shared-CIEHiKx7.mjs} +312 -122
  59. package/dist/{openai-responses-terminal-usage-BNFbvY9f.d.mts → openai-responses-terminal-usage-BE7lf7nW.d.mts} +2 -2
  60. package/dist/{openai-stop-reason-Drnn_6Qj.mjs → openai-stop-reason-8s70vDXj.mjs} +2 -12
  61. package/dist/{openai-tool-schema-ynZBgqW-.d.mts → openai-tool-schema-a5ysBBga.d.mts} +0 -6
  62. package/dist/{openai-tool-schema-D4BMcj2D.mjs → openai-tool-schema-vsl-cE-n.mjs} +243 -383
  63. package/dist/{openai-transport-params-DZKOTSfH.mjs → openai-transport-params-DyFJ4cgR.mjs} +60 -105
  64. package/dist/{positive-integer-BiUxrd71.mjs → positive-integer-CjN5OJbH.mjs} +1 -1
  65. package/dist/{provider-error-CRhW7lkJ.mjs → provider-error-CwT_j2v0.mjs} +43 -4
  66. package/dist/{provider-options-DZYq53lj.d.mts → provider-options-Df7ov0K1.d.mts} +2 -2
  67. package/dist/{provider-replay-context-DPr3w20a.mjs → provider-replay-context-Bs5aWE1d.mjs} +1 -1
  68. package/dist/{provider-transcript-transform-BTocjCRs.mjs → provider-transcript-transform-DjA5Fk2P.mjs} +17 -2
  69. package/dist/{provider-transport-turn-state-lrXEFkYr.mjs → provider-transport-turn-state-Dw7OtYUs.mjs} +1 -1
  70. package/dist/{provider-types-w1rEqrGP.d.mts → provider-types-d4XnoZMd.d.mts} +3 -3
  71. package/dist/provider-types.d.mts +6 -6
  72. package/dist/providers.d.mts +2 -2
  73. package/dist/providers.mjs +15 -11
  74. package/dist/{reasoning-tag-text-partitioner-Di38crhI.mjs → reasoning-tag-text-partitioner-B6FIIBt6.mjs} +47 -71
  75. package/dist/{record-coerce-DwRYMj3t.mjs → record-coerce-CNDovvft.mjs} +1 -1
  76. package/dist/simple-options-BkDPMuxw.mjs +349 -0
  77. package/dist/{src-DwGYYyZp.mjs → src-H4aXcFuX.mjs} +43 -25
  78. package/dist/{stream-CREqxHgU.mjs → stream-DDsCBgd-.mjs} +1 -7
  79. package/dist/{stream-first-event-timeout-BeptfRL6.mjs → stream-first-event-timeout-B9o0S4SZ.mjs} +1 -1
  80. package/dist/{tool-schema-json-projection-CD9c_fK8.mjs → tool-schema-json-projection-Ct8SeBeJ.mjs} +63 -23
  81. package/dist/{transport-stream-shared-B5RioB_Q.mjs → transport-stream-shared-BU5pwY6W.mjs} +62 -28
  82. package/dist/{transport-stream-shared-B7Z9oCYg.d.mts → transport-stream-shared-yYhXa4kX.d.mts} +12 -6
  83. package/dist/{transport-utils-03Qi0CN2.mjs → transport-utils-CqXzku3R.mjs} +3 -4
  84. package/dist/transports.d.mts +36 -32
  85. package/dist/transports.mjs +160 -216
  86. package/dist/types-CB-_vNyI.d.mts +1 -0
  87. package/dist/{types-qZFbaDbK.d.mts → types-CLLR3eB4.d.mts} +3 -1
  88. package/dist/types.d.mts +6 -6
  89. package/dist/types.mjs +4 -4
  90. package/dist/{validation-Dw7cb6BV.mjs → validation-BFZc40Ig.mjs} +80 -54
  91. package/dist/{validation-DhQhmt6t.d.mts → validation-Cat2wQsc.d.mts} +1 -1
  92. package/dist/validation.d.mts +1 -1
  93. package/dist/validation.mjs +1 -1
  94. package/package.json +5 -5
  95. package/dist/assistant-output-DM1JBNs1.mjs +0 -16
  96. package/dist/event-stream-C0nsgbj2.d.mts +0 -1
  97. package/dist/simple-options-np1XPuhm.mjs +0 -175
  98. package/dist/types-DTvddOfm.d.mts +0 -1
  99. package/dist/utf16-slice-CvGodqok.mjs +0 -29
@@ -1,55 +1,40 @@
1
- import { _ as resolveClaudeSonnet5ModelIdentity, g as resolveClaudeOpus5ModelIdentity, y as supportsClaudeAdaptiveThinking } from "./src-DwGYYyZp.mjs";
1
+ import { S as supportsClaudeAdaptiveThinking, b as resolveClaudeSonnet5ModelIdentity, v as resolveClaudeOpus5ModelIdentity, y as resolveClaudeSonnet55ModelIdentity } from "./src-H4aXcFuX.mjs";
2
+ import { o as isRecord } from "./record-coerce-CNDovvft.mjs";
3
+ import { _ as requiresClaudeAdaptiveThinking, b as usesClaudeFable5MessagesContract, f as applyClaudeRequestContract, g as prepareClaudeNoPrefillRequestContext, m as defaultsClaudeAdaptiveThinking, n as getAiTransportHost, p as buildAnthropicClaudeCodeIdentity, r as resolveAiTransportHeaderSentinels, v as resolveAnthropicThinkingEffort, x as usesClaudeStreamingRefusalContract } from "./host-DwBmNMCC.mjs";
2
4
  import { n as normalizeLowercaseStringOrEmpty, t as hasNonEmptyString } from "./string-coerce-fsri9iCu.mjs";
3
- import { o as isRecord } from "./record-coerce-DwRYMj3t.mjs";
4
- import { E as resolveAnthropicThinkingEffort, O as usesClaudeFable5MessagesContract, S as defaultsClaudeAdaptiveThinking, T as requiresClaudeAdaptiveThinking, b as applyClaudeRequestContract, k as usesClaudeStreamingRefusalContract, n as getAiTransportHost, r as resolveAiTransportHeaderSentinels, w as prepareClaudeNoPrefillRequestContext, x as buildAnthropicClaudeCodeIdentity } from "./host-yTvBrYM2.mjs";
5
- import { t as truncateUtf16Safe } from "./utf16-slice-CvGodqok.mjs";
6
- import { a as redactDiagnosticText, o as stableStringify } from "./provider-error-CRhW7lkJ.mjs";
7
- import { a as resolveModelSseDebugMode, i as resolveModelPayloadDebugMode, n as formatModelTransportDebugUrl, r as emitModelTransportDebug, t as formatModelTransportDebugBaseUrl, u as hasOnlyResponsesFunctionTools, v as toErrorObject } from "./diagnostics-CH8j2wIG.mjs";
8
- import { a as readResponseTextSnippet, i as isCodeModeModelVisibleToolName, n as createAbortError$1, s as resolveModelHeaderSentinels, t as MALFORMED_STREAMING_FRAGMENT_ERROR_MESSAGE } from "./transport-utils-03Qi0CN2.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-CUollwl6.mjs";
10
- import { i as resolveProviderEndpoint, s as transformTransportMessages, t as buildGuardedModelFetch } from "./host-policy-DZO3oPPk.mjs";
11
- import { B as logAnthropicContextEdits, C as applyAnthropicThinkingBindingControls, D as ANTHROPIC_SERVER_SIDE_FALLBACKS, F as applyAnthropicPayloadPolicyToParams, G as resolveAnthropicServerCompactionPlan, H as resolveAnthropicContextManagementBetaHeader, I as applyAnthropicRequestCacheControl, J as usesFoundryBearerAuth, K as isAnthropicOAuthApiKey, L as buildAnthropicSystemBlocks, N as applyAnthropicContextManagementToRequest, O as ANTHROPIC_SERVER_SIDE_FALLBACK_BETA, P as applyAnthropicEphemeralCacheControlMarkers, R as isAnthropicServerToolClearingEnabled, U as resolveAnthropicEphemeralCacheControl, V as resolveAnthropicCacheOptions, W as resolveAnthropicPayloadPolicy, d as convertAnthropicTools, f as buildAnthropicReplayPlan, g as normalizeAnthropicToolCallId, h as suppressAnthropicCompaction, l as buildAnthropicGenerationParams, m as resolveNewestAnthropicCompaction, p as isAnthropicReplayRejection, q as omitFoundryBearerCredentialHeaders, t as consumeAnthropicStream, u as convertAnthropicMessages, z as isDirectAnthropicModel } from "./anthropic-stream-reducer-D6ZI1wwj.mjs";
5
+ import { a as redactDiagnosticText, o as truncateUtf16Safe, s as stableStringify } from "./provider-error-CwT_j2v0.mjs";
6
+ import { a as resolveModelSseDebugMode, i as resolveModelPayloadDebugMode, n as formatModelTransportDebugUrl, r as emitModelTransportDebug, t as formatModelTransportDebugBaseUrl, u as hasOnlyResponsesFunctionTools, v as toErrorObject } from "./diagnostics-CJaB6g8J.mjs";
7
+ import { a as readResponseTextSnippet, i as isCodeModeModelVisibleToolName, n as createAbortError$1, s as resolveModelHeaderSentinels, t as MALFORMED_STREAMING_FRAGMENT_ERROR_MESSAGE } from "./transport-utils-CqXzku3R.mjs";
8
+ import { a as resolveOpenAIPromptCacheKeySupport, i as resolveOpenAICompletionsCompat, n as isNativeOpenAIEndpoint, o as usesNativeOpenAICodexResponsesBackend, r as isOpenAICodexResponsesModel, t as detectOpenAICompletionsCompat } from "./openai-completions-compat-BJf57ZxN.mjs";
9
+ import { r as resolveProviderEndpoint, t as buildGuardedModelFetch } from "./host-policy-wK-ay_RK.mjs";
10
+ import { A as applyAnthropicRequestCacheControl, B as ANTHROPIC_SERVER_SIDE_FALLBACKS, C as applyAnthropicThinkingBindingControls, D as applyAnthropicContextManagementToRequest, F as resolveAnthropicCacheOptions, I as resolveAnthropicEphemeralCacheControl, J as usesFoundryBearerAuth, K as isAnthropicOAuthApiKey, L as resolveAnthropicPayloadPolicy, M as isAnthropicServerToolClearingEnabled, N as isDirectAnthropicModel, O as applyAnthropicEphemeralCacheControlMarkers, P as logAnthropicContextEdits, R as resolveAnthropicRequestBetaHeader, d as convertAnthropicTools, f as buildAnthropicReplayPlan, g as normalizeAnthropicToolCallId, h as suppressAnthropicCompaction, j as buildAnthropicSystemBlocks, k as applyAnthropicPayloadPolicyToParams, l as buildAnthropicGenerationParams, m as resolveNewestAnthropicCompaction, p as isAnthropicReplayRejection, q as omitFoundryBearerCredentialHeaders, t as consumeAnthropicStream, u as convertAnthropicMessages, z as resolveAnthropicServerCompactionPlan } from "./anthropic-stream-reducer-DrsBCsFY.mjs";
12
11
  import { t as resolveCacheRetention } from "./cache-retention-0x979a5V.mjs";
13
- import { a as codeModeToolSurfaceObserver, o as reasoningTagTextPolicy, t as adjustMaxTokensForThinking, v as sortPromptCacheToolsByName } from "./simple-options-np1XPuhm.mjs";
14
- import { A as resolvePromptCacheKey, C as isOpenAICompletionsThinkingEnabled, D as readOpenAICompletionsContentDeltas, E as parseOpenAICompletionsUsage, M as redactIdentifier, N as sha256Hex, O as readOpenAICompletionsReasoningBatch, S as createResponseModelTracker, T as measureUtf8AppendBytes, _ as resolveOpenAIReasoningEffortMap, a as enforceCodeModeResponsesToolSurface, b as createOpenAIProviderAcceptanceHook, c as readCodeModePayloadToolName, i as buildOpenAISdkRequestOptions, j as throwIfModelStreamAborted, k as resolveOpenAIClientBaseUrl, l as resolveCodeModeResponsesVisibleToolNames, n as buildOpenAIClientHeaders, o as filterCodeModePayloadTools, r as buildOpenAISdkClientOptions, s as getCompat, t as assertCodeModeResponsesToolSurface, u as resolveOpenAIStrictToolFlagWithDiagnostics, v as GEMINI_THOUGHT_SIGNATURE_VALIDATOR_SKIP, w as log, x as createOpenAIResponseHook, y as createModelStreamCooperativeScheduler } from "./openai-transport-params-DZKOTSfH.mjs";
15
- import { n as getEnvApiKey } from "./env-api-keys-bktO00EJ.mjs";
16
- import { C as quoteUnsafeIntegerLiterals, S as parseJsonPreservingUnsafeIntegers, _ as sanitizeTransportPayloadText, a as createEmptyTransportUsage, b as withProviderResponseHook, c as finalizeTerminalToolCallArguments, d as mergeTransportMetadata, f as notifyProviderHttpMetadata, g as sanitizeNonEmptyTransportPayloadText, h as parseTerminalToolCallArguments, i as copyProviderAcceptanceObserver, l as finalizeTransportStream, m as notifyProviderStreamOpened, n as assignTransportErrorDetails, o as createWritableTransportEventStream, p as notifyProviderHttpResponse, r as coerceTransportToolCallArguments, s as failTransportStream, t as IncompleteToolCallError, u as mergeTransportHeaders, v as transportAbortError, x as parseJsonObjectPreservingUnsafeIntegers, y as withProviderAcceptanceObserver } from "./transport-stream-shared-B5RioB_Q.mjs";
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, 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-BU5pwY6W.mjs";
13
+ import { D as sortPromptCacheToolsByName, l as codeModeToolSurfaceObserver, s as prepareModelRequestBody, t as adjustMaxTokensForThinking, u as reasoningTagTextPolicy } from "./simple-options-BkDPMuxw.mjs";
14
+ import { A as redactIdentifier, C as log, D as readOpenAICompletionsReasoningBatch, E as readOpenAICompletionsContentDeltas, O as resolveOpenAIClientBaseUrl, S as isOpenAICompletionsThinkingEnabled, T as parseOpenAICompletionsUsage, _ as resolveOpenAIReasoningEffortMap, a as enforceCodeModeResponsesToolSurface, b as createOpenAIResponseHook, c as readCodeModePayloadToolName, i as buildOpenAISdkRequestOptions, j as sha256Hex, k as resolvePromptCacheKey, l as resolveCodeModeResponsesVisibleToolNames, n as buildOpenAIClientHeaders, o as filterCodeModePayloadTools, r as buildOpenAISdkClientOptions, s as getCompat, t as assertCodeModeResponsesToolSurface, u as resolveOpenAIStrictToolFlagWithDiagnostics, v as GEMINI_THOUGHT_SIGNATURE_VALIDATOR_SKIP, w as measureUtf8AppendBytes, x as createResponseModelTracker, y as createOpenAIProviderAcceptanceHook } from "./openai-transport-params-DyFJ4cgR.mjs";
15
+ import { n as getEnvApiKey } from "./env-api-keys-CyX4VKGO.mjs";
17
16
  import { t as createDeferredEventBuffer } from "./deferred-event-buffer-DAvyP7qA.mjs";
18
- import { n as providerReplayContextMatches, t as buildProviderReplayContext } from "./provider-replay-context-DPr3w20a.mjs";
17
+ import { n as providerReplayContextMatches, t as buildProviderReplayContext } from "./provider-replay-context-Bs5aWE1d.mjs";
19
18
  import { a as tagUnresolvedTextAsCommentary } from "./assistant-text-phase-C20rxWwP.mjs";
20
- import { t as createAssistantOutput } from "./assistant-output-DM1JBNs1.mjs";
19
+ import { n as createAssistantOutput } from "./provider-transcript-transform-DjA5Fk2P.mjs";
21
20
  import { n as resolveOpencodeSessionHeaders } from "./session-affinity-Bcunsn4I.mjs";
22
- import { c as flattenCompletionMessagesToStringContent, d as canonicalizeMaxTokensParam, f as resolveMaxTokensParam, l as stripCompletionMessagesToRoleContent, n as shouldEmitOpenAICompletionsReasoning, o as isAzureOpenAICompatibleHost, p as createDeepSeekTextFilter, r as buildOpenAICompletionsParams, s as finalizeOpenAICompletionsToolCalls, t as processCompletionsStream, u as applyCompletionsAnthropicCacheControl } from "./openai-completions-stream-BpuJ0ZOA.mjs";
23
- import { a as googleFlashSupportsMinimalThinking, i as consumeGoogleGenerateContentStream, n as projectGoogleMessages, r as requiresGoogleToolCallId, t as convertGoogleTools } from "./google-messages-DB7GKkDk.mjs";
24
- import { i as getFirstStreamEventTimeoutMs, r as getFirstStreamEventTimeoutHandler, t as createFirstStreamEventAbortController } from "./stream-first-event-timeout-BeptfRL6.mjs";
25
- import { d as OpenAIResponsesWebSocketSafeRetryError, i as OPENAI_RESPONSES_APIS, l as OpenAIResponsesWebSocketPostDispatchError, m as parseOpenAIResponsesWebSocketServerError, t as AZURE_RESPONSES_FIRST_EVENT_TIMEOUT_MS, u as OpenAIResponsesWebSocketPreDispatchError } from "./openai-responses-contracts-DWrfMODE.mjs";
26
- import { r as resolveProviderTransportTurnState, t as filterProviderTurnHeadersForExplicitOpencodeSession } from "./provider-transport-turn-state-lrXEFkYr.mjs";
27
- import { a as applyOpenAIResponsesPayloadPolicy, c as resolveOpenAIResponsesServerCompactionPlan, i as sanitizeResponsesImagePayload, n as isOpenAIResponsesCompactionOutput, o as resolveOpenAIResponsesCompactEndpointPlan, s as resolveOpenAIResponsesPayloadPolicy, t as createBoundedOpenAIResponsesCompactionFetch } from "./openai-responses-compaction-window-BiNCT0bS.mjs";
28
- import { A as summarizeOpenAITransportError, B as resolveResponsesContinuationRequest, C as createResponsesStreamWithEncryptedContentRetry, D as ResponsesStreamFailure, E as resolveNextResponsesEncryptedContentAttempt, G as supportsResponsesReasoningUpdate, H as responsesContinuationRequestFingerprint, I as createOpenAIResponsesAssistantOutput, J as captureOpenAIResponsesCompaction, K as CompactionReplayRefreshRequiredError, L as recordResponsesInputReplay, M as recordResponsesContextUsage, N as resolveResponsesContextUsageBoundary, O as logResponsesFailedNoDetails, Q as resolveReplayableResponsesMessageId, R as responsesInputFingerprint, T as resolveAzureOpenAIApiVersion, U as isConfigurationUpdate, V as responsesContinuationPrefixFingerprint, W as replayResponsesReasoningUpdates, X as resolveNewestOpenAIResponsesCompactionReplay, Y as isOpenAIResponsesReplayContext, Z as suppressOpenAIResponsesCompaction, j as summarizeResponsesPayload, k as safeDebugValue, l as processResponsesStream, n as applyResponsesServiceTierPricing, q as buildOpenAIResponsesReasoningReplayMetadata, u as observeResponsesStream, w as isInvalidEncryptedContentError, z as claimOpenAIResponsesHttpContinuation } from "./openai-responses-shared-DvSqtJ6_.mjs";
21
+ import { c as flattenCompletionMessagesToStringContent, d as canonicalizeMaxTokensParam, f as resolveMaxTokensParam, l as stripCompletionMessagesToRoleContent, n as shouldEmitOpenAICompletionsReasoning, o as isAzureOpenAICompatibleHost, p as createDeepSeekTextFilter, r as buildOpenAICompletionsParams, s as finalizeOpenAICompletionsToolCalls, t as processCompletionsStream, u as applyCompletionsAnthropicCacheControl } from "./openai-completions-stream-dju_5F3P.mjs";
22
+ import { a as googleFlashSupportsMinimalThinking, i as consumeGoogleGenerateContentStream, n as projectGoogleMessages, r as requiresGoogleToolCallId, t as convertGoogleTools } from "./google-messages-Dz2dAnGo.mjs";
23
+ import { i as getFirstStreamEventTimeoutMs, r as getFirstStreamEventTimeoutHandler, t as createFirstStreamEventAbortController } from "./stream-first-event-timeout-B9o0S4SZ.mjs";
24
+ import { d as OpenAIResponsesWebSocketSafeRetryError, i as OPENAI_RESPONSES_APIS, l as OpenAIResponsesWebSocketPostDispatchError, m as parseOpenAIResponsesWebSocketServerError, t as AZURE_RESPONSES_FIRST_EVENT_TIMEOUT_MS, u as OpenAIResponsesWebSocketPreDispatchError } from "./openai-responses-contracts-CLxnqS9p.mjs";
25
+ import { r as resolveProviderTransportTurnState, t as filterProviderTurnHeadersForExplicitOpencodeSession } from "./provider-transport-turn-state-Dw7OtYUs.mjs";
26
+ import { a as applyOpenAIResponsesPayloadPolicy, c as resolveOpenAIResponsesServerCompactionPlan, i as sanitizeResponsesImagePayload, n as isOpenAIResponsesCompactionOutput, o as resolveOpenAIResponsesCompactEndpointPlan, s as resolveOpenAIResponsesPayloadPolicy, t as createBoundedOpenAIResponsesCompactionFetch } from "./openai-responses-compaction-window-CYGCjAQz.mjs";
27
+ import { $ as OPENAI_RESPONSES_FUNCTION_CALL_ITEM_ID_RE, A as recordResponsesContextUsage, B as resolveResponsesContinuationRequest, C as resolveAzureOpenAIApiVersion, D as safeDebugValue, E as logResponsesFailedNoDetails, G as supportsResponsesReasoningUpdate, H as responsesContinuationRequestFingerprint, I as recordResponsesInputReplay, J as captureOpenAIResponsesCompaction, K as CompactionReplayRefreshRequiredError, L as responsesInputFingerprint, O as summarizeOpenAITransportError, Q as OPENAI_RESPONSES_CALL_ID_RE, R as claimOpenAIResponsesHttpContinuation, S as isInvalidEncryptedContentError, T as ResponsesStreamFailure, U as isConfigurationUpdate, V as responsesContinuationPrefixFingerprint, W as replayResponsesReasoningUpdates, X as resolveNewestOpenAIResponsesCompactionReplay, Y as isOpenAIResponsesReplayContext, Z as suppressOpenAIResponsesCompaction, c as observeResponsesStream, et as OPENAI_RESPONSES_ID_MAX_LENGTH, it as resolveReplayableResponsesMessageId, j as resolveResponsesContextUsageBoundary, k as summarizeResponsesPayload, n as applyResponsesServiceTierPricing, nt as shouldNormalizeOpenAIResponsesToolCallId, q as buildOpenAIResponsesReasoningReplayMetadata, rt as splitOpenAIFunctionCallPairing, s as processResponsesStream, tt as normalizeOpenAIResponsesFunctionCallId, w as resolveNextResponsesEncryptedContentAttempt, x as createResponsesStreamWithEncryptedContentRetry, z as recordResponsesContinuationState } from "./openai-responses-shared-CIEHiKx7.mjs";
29
28
  import { i as resolveAzureDeploymentNameFromMap, t as isOpenAICompatibleAzureResponsesBaseUrl } from "./azure-openai-responses-client-compat-C7K7QfUE.mjs";
30
29
  import { n as registerSessionResourceCleanup } from "./session-resources-CkR4WWy1.mjs";
31
- import { a as sanitizeOpenAICodexResponsesParams, n as buildOpenAIResponsesCompactSystemMessage, r as buildOpenAIResponsesParams, t as createResponsesPromptEgressObserver } from "./openai-responses-prompt-observer-internal-DPHWgbBH.mjs";
32
- import { n as withResponsesRequestAcceptance, t as responsesRequestLifecycle } from "./openai-responses-request-lifecycle-DFuyO1pQ.mjs";
30
+ import { a as sanitizeOpenAICodexResponsesParams, n as buildOpenAIResponsesCompactSystemMessage, r as buildOpenAIResponsesParams, t as createResponsesPromptEgressObserver } from "./openai-responses-prompt-observer-internal-BX3QTNSv.mjs";
31
+ import { n as withResponsesRequestAcceptance, t as responsesRequestLifecycle } from "./openai-responses-request-lifecycle-Fsag-IGZ.mjs";
33
32
  import { randomUUID } from "node:crypto";
34
33
  import OpenAI, { AzureOpenAI } from "openai";
35
34
  import { ResponsesWS } from "openai/resources/responses/ws.js";
36
- //#region packages/ai/src/transports/anthropic-transport-stream.ts
37
- /**
38
- * Native Anthropic Messages streaming transport.
39
- * Converts OpenClaw contexts/tools into Anthropic payloads, streams SSE events
40
- * back into runtime output blocks, and applies provider request policy.
41
- */
42
- const ANTHROPIC_MESSAGES_ERROR_BODY_MAX_BYTES = 8192;
43
- const ANTHROPIC_MESSAGES_ERROR_BODY_MAX_CHARS = 400;
44
- const ANTHROPIC_MESSAGES_ERROR_BODY_READ_IDLE_TIMEOUT_MS = 1e4;
35
+ //#region packages/ai/src/transports/anthropic-transport-options.ts
45
36
  const ANTHROPIC_MESSAGES_DEFAULT_MAX_TOKENS = 4096;
46
37
  const ANTHROPIC_MESSAGES_FALLBACK_CONTEXT_DIVISOR = 4;
47
- const ANTHROPIC_MESSAGES_SSE_PENDING_BUFFER_MAX_CHARS = 16777216;
48
- function resolveAnthropicRequestModelId(model) {
49
- if (isDirectAnthropicModel(model) && /^anthropic\//i.test(model.id)) return model.id.replace(/^anthropic\//i, "");
50
- return model.id;
51
- }
52
- const EMPTY_ANTHROPIC_MESSAGES_FALLBACK_TEXT = ".";
53
38
  function resolvePositiveAnthropicTokenLimit(value) {
54
39
  if (typeof value !== "number" || !Number.isFinite(value)) return;
55
40
  const floored = Math.floor(value);
@@ -64,6 +49,72 @@ function resolveAnthropicMessagesMaxTokens(params) {
64
49
  const contextWindow = resolvePositiveAnthropicTokenLimit(params.modelContextWindow);
65
50
  return contextWindow === void 0 ? ANTHROPIC_MESSAGES_DEFAULT_MAX_TOKENS : Math.max(1, Math.min(ANTHROPIC_MESSAGES_DEFAULT_MAX_TOKENS, Math.floor(contextWindow / ANTHROPIC_MESSAGES_FALLBACK_CONTEXT_DIVISOR)));
66
51
  }
52
+ function resolveAnthropicTransportOptions(model, options, apiKey) {
53
+ const baseMaxTokens = resolveAnthropicMessagesMaxTokens({
54
+ modelContextWindow: model.contextWindow,
55
+ modelMaxTokens: model.maxTokens,
56
+ requestedMaxTokens: options?.maxTokens,
57
+ useModelDefault: resolveClaudeSonnet5ModelIdentity(model) !== void 0 || resolveClaudeOpus5ModelIdentity(model) !== void 0
58
+ });
59
+ if (baseMaxTokens === void 0) throw new Error(`Anthropic Messages transport requires a positive maxTokens value for ${model.provider}/${model.id}`);
60
+ const reasoningModelMaxTokens = resolvePositiveAnthropicTokenLimit(model.maxTokens) ?? baseMaxTokens;
61
+ const mandatoryAdaptiveThinking = requiresClaudeAdaptiveThinking(model);
62
+ const reasoning = options?.reasoning === "off" && mandatoryAdaptiveThinking ? "low" : options?.reasoning;
63
+ const resolved = copyProviderAcceptanceObserver(options, {
64
+ temperature: options?.temperature,
65
+ stop: options?.stop,
66
+ maxTokens: baseMaxTokens,
67
+ signal: options?.signal,
68
+ apiKey,
69
+ cacheRetention: options?.cacheRetention,
70
+ sessionId: options?.sessionId,
71
+ headers: options?.headers,
72
+ onPayload: options?.onPayload,
73
+ onResponse: options?.onResponse,
74
+ maxRetryDelayMs: options?.maxRetryDelayMs,
75
+ metadata: options?.metadata,
76
+ interleavedThinking: options?.interleavedThinking,
77
+ toolChoice: options?.toolChoice,
78
+ thinkingBudgets: options?.thinkingBudgets,
79
+ thinkingDisplay: options?.thinkingDisplay,
80
+ reasoning,
81
+ anthropicServerCompaction: options?.anthropicServerCompaction,
82
+ anthropicCompactThreshold: options?.anthropicCompactThreshold,
83
+ cacheTtlPruning: options?.cacheTtlPruning,
84
+ ...options?.authProfileId ? { authProfileId: options.authProfileId } : {}
85
+ });
86
+ if (reasoning === "off") {
87
+ resolved.thinkingEnabled = false;
88
+ return resolved;
89
+ }
90
+ if (!reasoning) {
91
+ resolved.thinkingEnabled = defaultsClaudeAdaptiveThinking(model);
92
+ if (resolved.thinkingEnabled) resolved.effort = resolveAnthropicThinkingEffort(model, reasoning);
93
+ return resolved;
94
+ }
95
+ if (supportsClaudeAdaptiveThinking(model)) {
96
+ resolved.thinkingEnabled = true;
97
+ resolved.effort = resolveAnthropicThinkingEffort(model, reasoning);
98
+ return resolved;
99
+ }
100
+ const adjusted = adjustMaxTokensForThinking(baseMaxTokens, reasoningModelMaxTokens, reasoning === "max" ? "high" : reasoning, options?.thinkingBudgets);
101
+ const thinkingEnabled = adjusted.thinkingBudget >= 1024;
102
+ resolved.maxTokens = adjusted.maxTokens;
103
+ resolved.thinkingEnabled = thinkingEnabled;
104
+ resolved.thinkingBudgetTokens = thinkingEnabled ? adjusted.thinkingBudget : void 0;
105
+ return resolved;
106
+ }
107
+ //#endregion
108
+ //#region packages/ai/src/transports/anthropic-transport-stream.ts
109
+ const ANTHROPIC_MESSAGES_ERROR_BODY_MAX_BYTES = 8192;
110
+ const ANTHROPIC_MESSAGES_ERROR_BODY_MAX_CHARS = 400;
111
+ const ANTHROPIC_MESSAGES_ERROR_BODY_READ_IDLE_TIMEOUT_MS = 1e4;
112
+ const ANTHROPIC_MESSAGES_SSE_PENDING_BUFFER_MAX_CHARS = 16777216;
113
+ function resolveAnthropicRequestModelId(model) {
114
+ if (isDirectAnthropicModel(model) && /^anthropic\//i.test(model.id)) return model.id.replace(/^anthropic\//i, "");
115
+ return model.id;
116
+ }
117
+ const EMPTY_ANTHROPIC_MESSAGES_FALLBACK_TEXT = ".";
67
118
  function isKimiAnthropicProvider(provider) {
68
119
  return /^kimi(?:-|$)/.test(normalizeLowercaseStringOrEmpty(provider ?? ""));
69
120
  }
@@ -73,7 +124,7 @@ function isKimiAnthropicProvider(provider) {
73
124
  * identity) requests are excluded until the beta is verified there.
74
125
  */
75
126
  function useAnthropicServerSideFallback(model) {
76
- return (usesClaudeFable5MessagesContract(model) || resolveClaudeOpus5ModelIdentity(model) !== void 0) && isDirectAnthropicModel(model);
127
+ return (usesClaudeFable5MessagesContract(model) || resolveClaudeOpus5ModelIdentity(model) !== void 0 || resolveClaudeSonnet55ModelIdentity(model) !== void 0) && isDirectAnthropicModel(model);
77
128
  }
78
129
  function supportsReasoningContentReplay(model) {
79
130
  return resolveProviderEndpoint(model).endpointClass === "xiaomi-native";
@@ -155,31 +206,27 @@ async function* parseAnthropicSseBody(body, signal) {
155
206
  const decoder = new TextDecoder();
156
207
  let buffer = "";
157
208
  let completed = false;
209
+ const delimiter = /(?:\r\n|\r(?!\n)|\n)(?:\r\n|\r(?!\n)|\n)/g;
210
+ let scanOffset = 0;
158
211
  try {
159
- while (true) {
212
+ while (!completed) {
160
213
  const { done, value } = await readAnthropicSseChunk(reader, signal);
161
- if (done) {
162
- completed = true;
163
- break;
164
- }
165
- buffer = `${buffer}${decoder.decode(value, { stream: true })}`.replaceAll("\r\n", "\n");
166
- let frameEnd = buffer.indexOf("\n\n");
167
- while (frameEnd >= 0) {
214
+ completed = done;
215
+ buffer += decoder.decode(value, { stream: !done });
216
+ delimiter.lastIndex = scanOffset;
217
+ for (;;) {
218
+ const boundary = delimiter.exec(buffer);
219
+ if (!boundary && (!completed || !buffer)) break;
220
+ const frameEnd = boundary?.index ?? buffer.length;
168
221
  assertAnthropicSsePendingBufferWithinLimit(frameEnd);
169
- const frame = buffer.slice(0, frameEnd);
170
- buffer = buffer.slice(frameEnd + 2);
171
- const data = frame.split("\n").filter((line) => line.startsWith("data:")).map((line) => line.slice(5).trimStart()).join("\n");
222
+ const frame = boundary ? buffer.slice(0, frameEnd) : buffer.trim();
223
+ buffer = boundary ? buffer.slice(frameEnd + boundary[0].length) : "";
224
+ delimiter.lastIndex = 0;
225
+ const data = frame.split(/\r\n|\n|\r/).filter((line) => line.startsWith("data:")).map((line) => line.slice(5).trimStart()).join("\n");
172
226
  if (data && data !== "[DONE]") yield parseAnthropicSseEventData(data);
173
- frameEnd = buffer.indexOf("\n\n");
174
227
  }
175
228
  assertAnthropicSsePendingBufferWithinLimit(buffer.length);
176
- }
177
- const tailBuffer = `${buffer}${decoder.decode()}`.replaceAll("\r\n", "\n");
178
- assertAnthropicSsePendingBufferWithinLimit(tailBuffer.length);
179
- const tail = tailBuffer.trim();
180
- if (tail) {
181
- const data = tail.split("\n").filter((line) => line.startsWith("data:")).map((line) => line.slice(5).trimStart()).join("\n");
182
- if (data && data !== "[DONE]") yield parseAnthropicSseEventData(data);
229
+ scanOffset = Math.max(0, buffer.length - 3);
183
230
  }
184
231
  } finally {
185
232
  if (!completed) {
@@ -190,9 +237,9 @@ async function* parseAnthropicSseBody(body, signal) {
190
237
  reader.releaseLock();
191
238
  }
192
239
  }
193
- function createAnthropicMessagesClient(params) {
240
+ function createAnthropicMessageRequest(params) {
194
241
  const url = resolveAnthropicMessagesUrl(params.baseURL);
195
- return { messages: { async stream(body, options) {
242
+ return async (body, options) => {
196
243
  const headers = new Headers(mergeTransportHeaders({
197
244
  "content-type": "application/json",
198
245
  "anthropic-version": "2023-06-01",
@@ -210,7 +257,7 @@ function createAnthropicMessagesClient(params) {
210
257
  response,
211
258
  stream: response.body ? parseAnthropicSseBody(response.body, options?.signal) : []
212
259
  };
213
- } } };
260
+ };
214
261
  }
215
262
  async function readAnthropicMessagesErrorBody(response) {
216
263
  try {
@@ -236,27 +283,11 @@ function createAnthropicTransportClient(params) {
236
283
  const optionHeaders = resolveOpencodeSessionHeaders(model, options);
237
284
  const needsInterleavedBeta = (options?.interleavedThinking ?? true) && !supportsClaudeAdaptiveThinking(model);
238
285
  const fetch = isKimiAnthropicProvider(model.provider) && options?.thinkingEnabled === true ? buildGuardedModelFetch(model, void 0, { sanitizeSse: false }) : buildGuardedModelFetch(model);
239
- if (model.provider === "github-copilot") {
240
- const betaFeatures = needsInterleavedBeta ? ["interleaved-thinking-2025-05-14"] : [];
241
- return {
242
- client: createAnthropicMessagesClient({
243
- apiKey: null,
244
- authToken: apiKey,
245
- baseURL: model.baseUrl,
246
- defaultHeaders: mergeTransportHeaders({
247
- accept: "application/json",
248
- "anthropic-dangerous-direct-browser-access": "true",
249
- ...betaFeatures.length > 0 ? { "anthropic-beta": betaFeatures.join(",") } : {}
250
- }, model.headers, getAiTransportHost().buildCopilotDynamicHeaders(context.messages), optionHeaders),
251
- fetch
252
- }),
253
- isOAuthToken: false
254
- };
255
- }
256
- if (usesFoundryBearerAuth(resolveModelHeaderSentinels(model))) {
286
+ const copilot = model.provider === "github-copilot";
287
+ if (copilot || usesFoundryBearerAuth(resolveModelHeaderSentinels(model))) {
257
288
  const betaFeatures = needsInterleavedBeta ? ["interleaved-thinking-2025-05-14"] : [];
258
289
  return {
259
- client: createAnthropicMessagesClient({
290
+ request: createAnthropicMessageRequest({
260
291
  apiKey: null,
261
292
  authToken: apiKey,
262
293
  baseURL: model.baseUrl,
@@ -264,7 +295,7 @@ function createAnthropicTransportClient(params) {
264
295
  accept: "application/json",
265
296
  "anthropic-dangerous-direct-browser-access": "true",
266
297
  ...betaFeatures.length > 0 ? { "anthropic-beta": betaFeatures.join(",") } : {}
267
- }, omitFoundryBearerCredentialHeaders(model.headers), optionHeaders),
298
+ }, copilot ? model.headers : omitFoundryBearerCredentialHeaders(model.headers), copilot ? getAiTransportHost().buildCopilotDynamicHeaders(context.messages) : void 0, optionHeaders),
268
299
  fetch
269
300
  }),
270
301
  isOAuthToken: false
@@ -276,7 +307,7 @@ function createAnthropicTransportClient(params) {
276
307
  const betaHeader = buildAnthropicBetaHeader(model, betaFeatures, { oauth: true });
277
308
  const identity = buildAnthropicClaudeCodeIdentity(betaHeader, model.headers, optionHeaders);
278
309
  return {
279
- client: createAnthropicMessagesClient({
310
+ request: createAnthropicMessageRequest({
280
311
  apiKey: null,
281
312
  authToken: apiKey,
282
313
  baseURL: model.baseUrl,
@@ -287,15 +318,15 @@ function createAnthropicTransportClient(params) {
287
318
  claudeCodeVersion: identity.version
288
319
  };
289
320
  }
290
- if (useAnthropicServerSideFallback(model)) betaFeatures.push(ANTHROPIC_SERVER_SIDE_FALLBACK_BETA);
291
321
  const betaHeader = buildAnthropicBetaHeader(model, betaFeatures, { oauth: false });
292
322
  const defaultHeaders = mergeTransportHeaders({
293
323
  accept: "application/json",
294
324
  "anthropic-dangerous-direct-browser-access": "true",
295
- ...betaHeader ? { "anthropic-beta": betaHeader } : {}
325
+ ...betaHeader ? { "anthropic-beta": betaHeader } : {},
326
+ ...options?.sessionId && options.cacheRetention !== "none" && model.compat?.sendSessionAffinityHeaders === true ? { "x-session-affinity": options.sessionId } : {}
296
327
  }, model.headers, optionHeaders);
297
328
  return {
298
- client: createAnthropicMessagesClient({
329
+ request: createAnthropicMessageRequest({
299
330
  apiKey,
300
331
  baseURL: model.baseUrl,
301
332
  defaultHeaders,
@@ -320,7 +351,7 @@ async function buildAnthropicParams(model, context, isOAuthToken, options, claud
320
351
  sessionId: options?.sessionId
321
352
  });
322
353
  const cacheBreakpointOptOutMessageIndexes = /* @__PURE__ */ new Set();
323
- const messages = await convertAnthropicMessages(transformTransportMessages(replayPlan.messages, model, normalizeAnthropicToolCallId), model, isOAuthToken, {
354
+ const messages = await convertAnthropicMessages(getAiTransportHost().transformTransportMessages(replayPlan.messages, model, normalizeAnthropicToolCallId, void 0), model, isOAuthToken, {
324
355
  profile: "transport",
325
356
  allowReasoningContentReplay: supportsReasoningContentReplay(model),
326
357
  allowEmptySignature: model.compat?.allowEmptySignature,
@@ -353,60 +384,6 @@ async function buildAnthropicParams(model, context, isOAuthToken, options, claud
353
384
  usedCompactionReplay: replayPlan.compaction !== void 0
354
385
  };
355
386
  }
356
- function resolveAnthropicTransportOptions(model, options, apiKey) {
357
- const baseMaxTokens = resolveAnthropicMessagesMaxTokens({
358
- modelContextWindow: model.contextWindow,
359
- modelMaxTokens: model.maxTokens,
360
- requestedMaxTokens: options?.maxTokens,
361
- useModelDefault: resolveClaudeSonnet5ModelIdentity(model) !== void 0 || resolveClaudeOpus5ModelIdentity(model) !== void 0
362
- });
363
- if (baseMaxTokens === void 0) throw new Error(`Anthropic Messages transport requires a positive maxTokens value for ${model.provider}/${model.id}`);
364
- const reasoningModelMaxTokens = resolvePositiveAnthropicTokenLimit(model.maxTokens) ?? baseMaxTokens;
365
- const mandatoryAdaptiveThinking = requiresClaudeAdaptiveThinking(model);
366
- const reasoning = options?.reasoning === "off" && mandatoryAdaptiveThinking ? "low" : options?.reasoning;
367
- const resolved = copyProviderAcceptanceObserver(options, {
368
- temperature: options?.temperature,
369
- stop: options?.stop,
370
- maxTokens: baseMaxTokens,
371
- signal: options?.signal,
372
- apiKey,
373
- cacheRetention: options?.cacheRetention,
374
- sessionId: options?.sessionId,
375
- headers: options?.headers,
376
- onPayload: options?.onPayload,
377
- onResponse: options?.onResponse,
378
- maxRetryDelayMs: options?.maxRetryDelayMs,
379
- metadata: options?.metadata,
380
- interleavedThinking: options?.interleavedThinking,
381
- toolChoice: options?.toolChoice,
382
- thinkingBudgets: options?.thinkingBudgets,
383
- reasoning,
384
- anthropicServerCompaction: options?.anthropicServerCompaction,
385
- anthropicCompactThreshold: options?.anthropicCompactThreshold,
386
- cacheTtlPruning: options?.cacheTtlPruning,
387
- ...options?.authProfileId ? { authProfileId: options.authProfileId } : {}
388
- });
389
- if (reasoning === "off") {
390
- resolved.thinkingEnabled = false;
391
- return resolved;
392
- }
393
- if (!reasoning) {
394
- resolved.thinkingEnabled = defaultsClaudeAdaptiveThinking(model);
395
- if (resolved.thinkingEnabled) resolved.effort = resolveAnthropicThinkingEffort(model, reasoning);
396
- return resolved;
397
- }
398
- if (supportsClaudeAdaptiveThinking(model)) {
399
- resolved.thinkingEnabled = true;
400
- resolved.effort = resolveAnthropicThinkingEffort(model, reasoning);
401
- return resolved;
402
- }
403
- const adjusted = adjustMaxTokensForThinking(baseMaxTokens, reasoningModelMaxTokens, reasoning === "max" ? "high" : reasoning, options?.thinkingBudgets);
404
- const thinkingEnabled = adjusted.thinkingBudget >= 1024;
405
- resolved.maxTokens = adjusted.maxTokens;
406
- resolved.thinkingEnabled = thinkingEnabled;
407
- resolved.thinkingBudgetTokens = thinkingEnabled ? adjusted.thinkingBudget : void 0;
408
- return resolved;
409
- }
410
387
  /** Create the stream function used by Anthropic Messages transport models. */
411
388
  function createAnthropicMessagesTransportStreamFn() {
412
389
  return (rawModel, context, rawOptions) => {
@@ -422,7 +399,7 @@ function createAnthropicMessagesTransportStreamFn() {
422
399
  if (!apiKey) throw new Error(`No API key for provider: ${model.provider}`);
423
400
  const transportOptions = resolveAnthropicTransportOptions(model, options, apiKey);
424
401
  const requestContext = prepareClaudeNoPrefillRequestContext(model, context);
425
- const { client, isOAuthToken, directApiKeyBetaHeader, claudeCodeVersion } = createAnthropicTransportClient({
402
+ const { request, isOAuthToken, directApiKeyBetaHeader, claudeCodeVersion } = createAnthropicTransportClient({
426
403
  model,
427
404
  context: requestContext,
428
405
  apiKey,
@@ -435,9 +412,9 @@ function createAnthropicMessagesTransportStreamFn() {
435
412
  const nextParams = await transportOptions.onPayload?.(params, model);
436
413
  if (nextParams !== void 0) params = nextParams;
437
414
  applyClaudeRequestContract(params, model);
438
- const betaHeader = resolveAnthropicContextManagementBetaHeader(params, directApiKeyBetaHeader);
415
+ const betaHeader = resolveAnthropicRequestBetaHeader(params, directApiKeyBetaHeader);
439
416
  const bindingHeaders = applyAnthropicThinkingBindingControls(params, betaHeader) ?? (betaHeader ? { "anthropic-beta": betaHeader } : void 0);
440
- const { response, stream: anthropicStream } = await client.messages.stream({
417
+ const { response, stream: anthropicStream } = await request({
441
418
  ...params,
442
419
  stream: true
443
420
  }, {
@@ -612,29 +589,7 @@ function createOpenAICompletionsTransportStreamFn() {
612
589
  return (model, context, options) => {
613
590
  const { eventStream, stream } = createWritableTransportEventStream();
614
591
  (async () => {
615
- const output = {
616
- role: "assistant",
617
- content: [],
618
- api: model.api,
619
- provider: model.provider,
620
- model: model.id,
621
- usage: {
622
- input: 0,
623
- output: 0,
624
- cacheRead: 0,
625
- cacheWrite: 0,
626
- totalTokens: 0,
627
- cost: {
628
- input: 0,
629
- output: 0,
630
- cacheRead: 0,
631
- cacheWrite: 0,
632
- total: 0
633
- }
634
- },
635
- stopReason: "stop",
636
- timestamp: Date.now()
637
- };
592
+ const output = createAssistantOutput(model);
638
593
  let firstEventAbort;
639
594
  try {
640
595
  const apiKey = options?.apiKey || getEnvApiKey(model.provider) || "";
@@ -673,6 +628,7 @@ function createOpenAICompletionsTransportStreamFn() {
673
628
  ...optionHeaders
674
629
  }, void 0, resolvePromptCacheKey(options, cacheRetention), cacheRetention), { fetch: doneDetectingFetch });
675
630
  let params = buildOpenAICompletionsParams(model, context, options);
631
+ const encodeBody = prepareModelRequestBody(options);
676
632
  const nextParams = await options?.onPayload?.(params, model);
677
633
  if (nextParams !== void 0) params = nextParams;
678
634
  if (options?.openclawCodeModeToolSurface === true) {
@@ -683,7 +639,10 @@ function createOpenAICompletionsTransportStreamFn() {
683
639
  if (getCompat(model).requiresNonEmptyUserOrAssistantMessage) assertOpenAICompletionsPayloadHasConversationTurn(params, model);
684
640
  const emitReasoning = shouldEmitOpenAICompletionsReasoning(model, options);
685
641
  firstEventAbort = createFirstStreamEventAbortController(options?.signal);
686
- const { data: responseStream, response } = await client.chat.completions.create(params, buildOpenAISdkRequestOptions(model, firstEventAbort.signal, { timeoutMs: options?.timeoutMs })).withResponse();
642
+ const { data: responseStream, response } = await client.chat.completions.create(params, {
643
+ ...buildOpenAISdkRequestOptions(model, firstEventAbort.signal, { timeoutMs: options?.timeoutMs }),
644
+ ...await encodeBody(params)
645
+ }).withResponse();
687
646
  const hookedResponseStream = withProviderResponseHook({
688
647
  stream: responseStream,
689
648
  signal: firstEventAbort.signal,
@@ -1021,10 +980,11 @@ function createOpenAIResponsesWebSocketStream(params) {
1021
980
  throw new OpenAIResponsesWebSocketPreDispatchError(error);
1022
981
  }
1023
982
  let prepared;
983
+ let previousContinuation;
1024
984
  const resumedSteering = lease.steeringContinuation;
1025
985
  const steeringMode = resumedSteering ? resumedSteering.requiresInput ? "required-input" : "automatic" : void 0;
1026
986
  try {
1027
- const continuation = lease.entry?.continuation;
987
+ const continuation = previousContinuation = lease.entry?.continuation;
1028
988
  if (continuation && lease.entry) {
1029
989
  lease.entry.continuation = void 0;
1030
990
  prepared = resolveResponsesContinuationRequest(continuation, fullRequest, steeringMode);
@@ -1090,11 +1050,7 @@ function createOpenAIResponsesWebSocketStream(params) {
1090
1050
  const finish = ({ keep = true } = {}) => {
1091
1051
  if (released) return;
1092
1052
  released = true;
1093
- if (keep && lease.entry && terminalResponse) lease.entry.continuation = {
1094
- lastRequest: prepared.fullRequest ?? fullRequest,
1095
- lastResponseId: terminalResponse.id,
1096
- lastResponseItems: terminalResponse.output
1097
- };
1053
+ if (keep && lease.entry && terminalResponse) lease.entry.continuation = recordResponsesContinuationState(previousContinuation, prepared.fullRequest ?? fullRequest, terminalResponse, previousContinuation?.lastResponseId === prepared.request.previous_response_id);
1098
1054
  lease.release({ keep });
1099
1055
  };
1100
1056
  return {
@@ -1395,13 +1351,14 @@ function createResponsesTransportExecutor(config) {
1395
1351
  const compactRequest = claimResponsesCompactRequest(responsesOptions);
1396
1352
  const { eventStream, stream } = createWritableTransportEventStream();
1397
1353
  (async () => {
1398
- const output = createOpenAIResponsesAssistantOutput(model, config.outputApi);
1354
+ const output = createAssistantOutput(model, config.outputApi);
1399
1355
  let firstEventAbort;
1400
1356
  let continuationClaim;
1401
1357
  const requestLifecycle = responsesRequestLifecycle.get(options);
1402
1358
  try {
1403
1359
  const apiKey = options?.apiKey || getEnvApiKey(model.provider) || "";
1404
1360
  const websocketMode = resolveNativeOpenAIResponsesWebSocketMode(model, responsesOptions?.transport);
1361
+ const encodeBody = prepareModelRequestBody(websocketMode || compactRequest ? void 0 : options);
1405
1362
  const turnState = resolveProviderTransportTurnState(model, {
1406
1363
  sessionId: options?.sessionId,
1407
1364
  turnId: randomUUID(),
@@ -1425,7 +1382,6 @@ function createResponsesTransportExecutor(config) {
1425
1382
  let params = request;
1426
1383
  const nextParams = await options?.onPayload?.(params, model);
1427
1384
  if (nextParams !== void 0) params = nextParams;
1428
- if (!isOpenAICodexResponsesModel(model)) params = mergeTransportMetadata(params, turnState?.metadata);
1429
1385
  params = sanitizeOpenAICodexResponsesParams(model, params);
1430
1386
  params = sanitizeResponsesImagePayload(params);
1431
1387
  if (options?.openclawCodeModeToolSurface === true) {
@@ -1499,6 +1455,7 @@ function createResponsesTransportExecutor(config) {
1499
1455
  emitModelTransportDebug(log, `[responses] start provider=${model.provider} api=${model.api} model=${model.id} requestIdHash=${redactIdentifier(options?.requestId, { len: 64 })} baseUrl=${formatModelTransportDebugBaseUrl(model.baseUrl)} timeoutMs=${safeDebugValue(requestOptions?.timeout)} apiKey=${apiKey ? "present" : "missing"} ${summarizeResponsesPayload(params)}`);
1500
1456
  const responseModelTracker = createResponseModelTracker(isOpenAICodexResponsesModel(model));
1501
1457
  let continuationBaseline;
1458
+ let dispatchedPreviousResponseId;
1502
1459
  let contextUsageEligible = true;
1503
1460
  const createSseStream = async (initialRequest = continuationClaim?.request ?? params, initialAttemptKind = "initial", initialRejectedCompaction) => {
1504
1461
  const { stream: responseStream } = await createResponsesStreamWithEncryptedContentRetry({
@@ -1506,6 +1463,7 @@ function createResponsesTransportExecutor(config) {
1506
1463
  request: initialRequest,
1507
1464
  requestOptions,
1508
1465
  model,
1466
+ encodeBody,
1509
1467
  observePrompt,
1510
1468
  initialAttemptKind,
1511
1469
  initialRejectedCompaction,
@@ -1514,6 +1472,7 @@ function createResponsesTransportExecutor(config) {
1514
1472
  canRetryStream: () => output.content.length === 0,
1515
1473
  wrapStream: ({ stream: rawResponseStream, response, attempt }) => {
1516
1474
  contextUsageEligible &&= attempt.kind === "initial";
1475
+ dispatchedPreviousResponseId = attempt.request.previous_response_id;
1517
1476
  continuationBaseline = attempt.request.previous_response_id ? params : attempt.request;
1518
1477
  const trackedResponseStream = responseModelTracker.track(response, rawResponseStream);
1519
1478
  return withProviderResponseHook({
@@ -1634,7 +1593,7 @@ function createResponsesTransportExecutor(config) {
1634
1593
  if (output.stopReason === "aborted" || output.stopReason === "error") throw new Error(output.errorMessage ?? "An unknown error occurred");
1635
1594
  const admitted = transport === "websocket" ? websocketBaseline : continuationBaseline;
1636
1595
  if (terminal && admitted && supportsNativeOpenAIResponsesEndpoint(model)) recordResponsesReasoningState(output, model, responsesOptions, admitted, terminal.output);
1637
- if (continuationClaim && continuationBaseline && terminal) continuationClaim.commit(continuationBaseline, terminal);
1596
+ if (continuationClaim && continuationBaseline && terminal) continuationClaim.commit(continuationBaseline, terminal, dispatchedPreviousResponseId);
1638
1597
  if (terminal && admitted && contextUsageEligible) recordResponsesContextUsage(output, model, responsesOptions, admitted, terminal.output, "transport");
1639
1598
  } catch (error) {
1640
1599
  finishWebSocket?.({ keep: false });
@@ -1909,21 +1868,8 @@ const SIMPLE_TRANSPORT_API_ALIAS = {
1909
1868
  "google-generative-ai": "openclaw-google-generative-ai-transport"
1910
1869
  };
1911
1870
  function createProviderOwnedGoogleTransportStreamFn(model, ctx) {
1912
- const streamFn = getAiTransportHost().plugin.resolveProviderStream({
1913
- provider: model.provider,
1914
- config: ctx?.cfg,
1915
- workspaceDir: ctx?.workspaceDir,
1916
- env: ctx?.env,
1917
- context: {
1918
- config: ctx?.cfg,
1919
- agentDir: ctx?.agentDir,
1920
- workspaceDir: ctx?.workspaceDir,
1921
- provider: model.provider,
1922
- modelId: model.id,
1923
- model
1924
- }
1925
- }) ?? getAiTransportHost().plugin.resolveProviderStream({
1926
- provider: "google",
1871
+ const resolveStream = (provider) => getAiTransportHost().plugin.resolveProviderStream({
1872
+ provider,
1927
1873
  config: ctx?.cfg,
1928
1874
  workspaceDir: ctx?.workspaceDir,
1929
1875
  env: ctx?.env,
@@ -1935,7 +1881,8 @@ function createProviderOwnedGoogleTransportStreamFn(model, ctx) {
1935
1881
  modelId: model.id,
1936
1882
  model
1937
1883
  }
1938
- }) ?? void 0;
1884
+ });
1885
+ const streamFn = resolveStream(model.provider) ?? resolveStream("google") ?? void 0;
1939
1886
  return streamFn ? (requestModel, context, options) => streamFn(requestModel, context, {
1940
1887
  ...options,
1941
1888
  headers: resolveOpencodeSessionHeaders(requestModel, options)
@@ -1952,13 +1899,6 @@ function createSupportedTransportStreamFn(model, ctx) {
1952
1899
  default: return;
1953
1900
  }
1954
1901
  }
1955
- function hasOpenClawTransportRequirement(model) {
1956
- return getAiTransportHost().requiresManagedTransport(model);
1957
- }
1958
- /** Returns whether OpenClaw has a managed transport implementation for this API. */
1959
- function isTransportAwareApiSupported(api) {
1960
- return SUPPORTED_TRANSPORT_APIS.has(api);
1961
- }
1962
1902
  /** Maps public model APIs to the internal transport API id used by simple runtime dispatch. */
1963
1903
  function resolveTransportAwareSimpleApi(api) {
1964
1904
  if (OPENAI_RESPONSES_APIS.has(api)) {
@@ -1969,19 +1909,17 @@ function resolveTransportAwareSimpleApi(api) {
1969
1909
  }
1970
1910
  /** Creates a managed transport stream only when request overrides require it. */
1971
1911
  function createTransportAwareStreamFnForModel(model, ctx) {
1972
- if (!hasOpenClawTransportRequirement(model)) return;
1973
- if (!isTransportAwareApiSupported(model.api)) throw new Error(`Model-provider request.proxy/request.tls/localService is not yet supported for api "${model.api}"`);
1912
+ if (!getAiTransportHost().requiresManagedTransport(model)) return;
1913
+ if (!SUPPORTED_TRANSPORT_APIS.has(model.api)) throw new Error(`Model-provider request.proxy/request.tls/localService is not yet supported for api "${model.api}"`);
1974
1914
  const streamFn = createSupportedTransportStreamFn(model, ctx);
1975
1915
  if (!streamFn) throw new Error(`Managed transport stream is unavailable for api "${model.api}"`);
1976
1916
  return streamFn;
1977
1917
  }
1978
1918
  /** Creates a managed OpenClaw transport stream for explicit fallback/runtime callers. */
1979
1919
  function createOpenClawTransportStreamFnForModel(model, ctx) {
1980
- if (!isTransportAwareApiSupported(model.api)) return;
1981
1920
  return createSupportedTransportStreamFn(model, ctx);
1982
1921
  }
1983
1922
  function createBoundaryAwareStreamFnForModel(model, ctx) {
1984
- if (!isTransportAwareApiSupported(model.api)) return;
1985
1923
  return createSupportedTransportStreamFn(model, ctx);
1986
1924
  }
1987
1925
  function prepareTransportAwareSimpleModel(model, ctx) {
@@ -2055,13 +1993,15 @@ function normalizeCodexResponsesBaseUrlForOpenAISdk(baseUrl) {
2055
1993
  if (path.endsWith("/codex/responses")) return path.slice(0, -10);
2056
1994
  return path.endsWith("/codex") ? path : `${path}/codex`;
2057
1995
  }
2058
- function resolveProviderSimpleCompletionApi(model) {
1996
+ function resolveProviderSimpleCompletionApi(model, auth, agentId) {
2059
1997
  const parts = [
2060
1998
  model.provider,
2061
1999
  model.id,
2062
2000
  model.api,
2063
2001
  model.baseUrl || "default"
2064
2002
  ];
2003
+ if (auth) parts.push(auth.mode, auth.authFlow ?? "");
2004
+ if (agentId) parts.push("agent", agentId);
2065
2005
  return `${PROVIDER_SIMPLE_COMPLETION_API_PREFIX}${parts.map((part) => encodeURIComponent(part)).join(":")}`;
2066
2006
  }
2067
2007
  function resolveProviderStreamApi(model) {
@@ -2073,7 +2013,7 @@ function resolveProviderStreamApi(model) {
2073
2013
  ];
2074
2014
  return `${PROVIDER_STREAM_API_PREFIX}${parts.map((part) => encodeURIComponent(part)).join(":")}`;
2075
2015
  }
2076
- function applyProviderSimpleCompletionWrapper(registry, model, cfg, hookSourceApi = model.api) {
2016
+ function applyProviderSimpleCompletionWrapper(registry, model, cfg, hookSourceApi = model.api, auth, agentId) {
2077
2017
  if (model.api.startsWith(PROVIDER_SIMPLE_COMPLETION_API_PREFIX)) return model;
2078
2018
  const sourceProvider = registry.getApiProvider(model.api);
2079
2019
  if (!sourceProvider) return model;
@@ -2088,12 +2028,15 @@ function applyProviderSimpleCompletionWrapper(registry, model, cfg, hookSourceAp
2088
2028
  modelId: model.id,
2089
2029
  model,
2090
2030
  sourceApi: hookSourceApi,
2031
+ auth,
2032
+ agentId,
2091
2033
  streamFn: sourceStreamFn
2092
2034
  }
2093
2035
  });
2094
2036
  if (!streamFn) return model;
2095
- const api = resolveProviderSimpleCompletionApi(model);
2096
- return registerCustomApi(registry, api, streamFn) ? projectModel(model, { api }) : model;
2037
+ const registeredStreamFn = (runtimeModel, context, options) => streamFn(projectModel(runtimeModel, { api: hookSourceApi }), context, options);
2038
+ const api = resolveProviderSimpleCompletionApi(model, auth, agentId);
2039
+ return registerCustomApi(registry, api, registeredStreamFn) ? projectModel(model, { api }) : model;
2097
2040
  }
2098
2041
  function prepareCodexSimpleTransportModel(registry, model, cfg) {
2099
2042
  if (model.provider !== "openai" || model.api !== "openai-chatgpt-responses") return;
@@ -2144,25 +2087,26 @@ function prepareProviderStreamModel(params) {
2144
2087
  return api === params.model.api ? params.model : projectModel(params.model, { api });
2145
2088
  }
2146
2089
  function prepareModelForSimpleCompletion(params) {
2147
- const { apiRegistry, model, cfg } = params;
2090
+ const { apiRegistry, model, cfg, auth, agentId } = params;
2091
+ const wrap = (prepared) => applyProviderSimpleCompletionWrapper(apiRegistry, prepared, cfg, model.api, auth, agentId);
2148
2092
  const providerStreamModel = prepareProviderStreamModel({
2149
2093
  model,
2150
2094
  cfg,
2151
2095
  apiRegistry
2152
2096
  });
2153
- if (providerStreamModel) return applyProviderSimpleCompletionWrapper(apiRegistry, providerStreamModel, cfg, model.api);
2097
+ if (providerStreamModel) return wrap(providerStreamModel);
2154
2098
  const codexTransportModel = prepareCodexSimpleTransportModel(apiRegistry, model, cfg);
2155
- if (codexTransportModel) return applyProviderSimpleCompletionWrapper(apiRegistry, codexTransportModel, cfg, model.api);
2099
+ if (codexTransportModel) return wrap(codexTransportModel);
2156
2100
  const transportAwareModel = prepareTransportAwareSimpleModel(model, { cfg });
2157
2101
  if (transportAwareModel !== model) {
2158
2102
  const streamFn = buildTransportAwareSimpleStreamFn(model, { cfg });
2159
- if (streamFn && registerCustomApi(apiRegistry, transportAwareModel.api, streamFn)) return applyProviderSimpleCompletionWrapper(apiRegistry, transportAwareModel, cfg, model.api);
2103
+ if (streamFn && registerCustomApi(apiRegistry, transportAwareModel.api, streamFn)) return wrap(transportAwareModel);
2160
2104
  }
2161
2105
  if (model.provider === "anthropic-vertex") {
2162
2106
  const api = resolveAnthropicVertexSimpleApi(model.baseUrl);
2163
- if (registerCustomApi(apiRegistry, api, getAiTransportHost().plugin.createAnthropicVertexStream(model))) return applyProviderSimpleCompletionWrapper(apiRegistry, projectModel(model, { api }), cfg, model.api);
2107
+ if (registerCustomApi(apiRegistry, api, getAiTransportHost().plugin.createAnthropicVertexStream(model))) return wrap(projectModel(model, { api }));
2164
2108
  }
2165
- return applyProviderSimpleCompletionWrapper(apiRegistry, model, cfg);
2109
+ return wrap(model);
2166
2110
  }
2167
2111
  //#endregion
2168
- export { CompactionReplayRefreshRequiredError, GEMINI_THOUGHT_SIGNATURE_VALIDATOR_SKIP, IncompleteToolCallError, MALFORMED_STREAMING_FRAGMENT_ERROR_MESSAGE, applyAnthropicContextManagementToRequest, applyAnthropicEphemeralCacheControlMarkers, applyAnthropicPayloadPolicyToParams, applyAnthropicRequestCacheControl, applyCompletionsAnthropicCacheControl, applyOpenAIResponsesPayloadPolicy, assertCodeModeResponsesToolSurface, assignTransportErrorDetails, buildAnthropicSystemBlocks, buildOpenAIClientHeaders, buildOpenAICompletionsParams, buildOpenAISdkClientOptions, buildOpenAISdkRequestOptions, buildTransportAwareSimpleStreamFn, canonicalizeMaxTokensParam, captureOpenAIResponsesCompaction, coerceTransportToolCallArguments, consumeGoogleGenerateContentStream, convertGoogleTools, copyProviderAcceptanceObserver, createAnthropicMessagesTransportStreamFn, createAzureOpenAIResponsesTransportStreamFn, createBoundaryAwareStreamFnForModel, createDeepSeekTextFilter, createEmptyTransportUsage, createModelStreamCooperativeScheduler, createOpenAICompletionsTransportStreamFn, createOpenAIProviderAcceptanceHook, createOpenAIResponseHook, createOpenAIResponsesTransportStreamFn, createOpenClawTransportStreamFnForModel, createResponseModelTracker, createTransportAwareStreamFnForModel, createWritableTransportEventStream, detectOpenAICompletionsCompat, emitModelTransportDebug, enforceCodeModeResponsesToolSurface, failTransportStream, filterCodeModePayloadTools, finalizeTerminalToolCallArguments, finalizeTransportStream, flattenCompletionMessagesToStringContent, formatModelTransportDebugBaseUrl, formatModelTransportDebugUrl, getCompat, googleFlashSupportsMinimalThinking, hasOpenAICompatibleConversationTurn, isAnthropicServerToolClearingEnabled, isCodeModeModelVisibleToolName, isCompactionReplayCheckpoint, isDirectAnthropicModel, isNativeOpenAIEndpoint, isOpenAICodexResponsesModel, isOpenAICompletionsThinkingEnabled, log, logAnthropicContextEdits, measureUtf8AppendBytes, mergeTransportHeaders, mergeTransportMetadata, normalizeCodexResponsesBaseUrlForOpenAISdk, notifyProviderHttpMetadata, notifyProviderHttpResponse, notifyProviderStreamOpened, parseJsonObjectPreservingUnsafeIntegers, parseJsonPreservingUnsafeIntegers, parseOpenAICompletionsUsage, parseTerminalToolCallArguments, prepareHeadersForSimpleCompletion, prepareModelForSimpleCompletion, prepareTransportAwareSimpleModel, preserveCompactionReplayWindow, projectGoogleMessages, quoteUnsafeIntegerLiterals, readCodeModePayloadToolName, readOpenAICompletionsContentDeltas, readOpenAICompletionsReasoningBatch, replaceCompactionReplayOwnerContent, requestPreparedOpenAIResponsesCompaction, requiresCompactionReplayRefresh, requiresGoogleToolCallId, resolveAnthropicCacheOptions, resolveAnthropicContextManagementBetaHeader, resolveAnthropicEphemeralCacheControl, resolveAnthropicMessagesUrl, resolveAnthropicPayloadPolicy, resolveAnthropicServerCompactionPlan, resolveCodeModeResponsesVisibleToolNames, resolveCompactionReplayEligibility, resolveCompactionReplayPressure, resolveMaxTokensParam, resolveModelPayloadDebugMode, resolveModelSseDebugMode, resolveOpenAIClientBaseUrl, resolveOpenAICompletionsCompat, resolveOpenAIPromptCacheKeySupport, resolveOpenAIReasoningEffortMap, resolveOpenAIResponsesCompactEndpointPlan, resolveOpenAIResponsesPayloadPolicy, resolveOpenAIResponsesServerCompactionPlan, resolveOpenAIStrictToolFlagWithDiagnostics, resolvePromptCacheKey, resolveReplayableResponsesMessageId, resolveTransportAwareSimpleApi, sanitizeNonEmptyTransportPayloadText, sanitizeResponsesImagePayload, sanitizeTransportPayloadText, sortPromptCacheToolsByName as sortTransportToolsByName, stripCompactionReplayCheckpoint, stripCompactionReplayCheckpointInPlace, stripCompletionMessagesToRoleContent, throwIfModelStreamAborted, transportAbortError, usesNativeOpenAICodexResponsesBackend, withProviderAcceptanceObserver, withProviderResponseHook };
2112
+ export { CompactionReplayRefreshRequiredError, GEMINI_THOUGHT_SIGNATURE_VALIDATOR_SKIP, IncompleteToolCallError, MALFORMED_STREAMING_FRAGMENT_ERROR_MESSAGE, OPENAI_RESPONSES_CALL_ID_RE, OPENAI_RESPONSES_FUNCTION_CALL_ITEM_ID_RE, OPENAI_RESPONSES_ID_MAX_LENGTH, applyAnthropicContextManagementToRequest, applyAnthropicEphemeralCacheControlMarkers, applyAnthropicPayloadPolicyToParams, applyAnthropicRequestCacheControl, applyCompletionsAnthropicCacheControl, applyOpenAIResponsesPayloadPolicy, assertCodeModeResponsesToolSurface, assignTransportErrorDetails, buildAnthropicSystemBlocks, buildOpenAIClientHeaders, buildOpenAICompletionsParams, buildOpenAISdkClientOptions, buildOpenAISdkRequestOptions, buildTransportAwareSimpleStreamFn, canonicalizeMaxTokensParam, captureOpenAIResponsesCompaction, coerceTransportToolCallArguments, consumeGoogleGenerateContentStream, convertGoogleTools, copyProviderAcceptanceObserver, createAnthropicMessagesTransportStreamFn, createAzureOpenAIResponsesTransportStreamFn, createBoundaryAwareStreamFnForModel, createDeepSeekTextFilter, createEmptyTransportUsage, createModelStreamCooperativeScheduler, createOpenAICompletionsTransportStreamFn, createOpenAIProviderAcceptanceHook, createOpenAIResponseHook, createOpenAIResponsesTransportStreamFn, createOpenClawTransportStreamFnForModel, createResponseModelTracker, createTransportAwareStreamFnForModel, createWritableTransportEventStream, detectOpenAICompletionsCompat, emitModelTransportDebug, enforceCodeModeResponsesToolSurface, failTransportStream, filterCodeModePayloadTools, finalizeTerminalToolCallArguments, finalizeTransportStream, flattenCompletionMessagesToStringContent, formatModelTransportDebugBaseUrl, formatModelTransportDebugUrl, getCompat, googleFlashSupportsMinimalThinking, hasOpenAICompatibleConversationTurn, isAnthropicServerToolClearingEnabled, isCodeModeModelVisibleToolName, isCompactionReplayCheckpoint, isDirectAnthropicModel, isNativeOpenAIEndpoint, isOpenAICodexResponsesModel, isOpenAICompletionsThinkingEnabled, iterateModelStream, log, logAnthropicContextEdits, measureUtf8AppendBytes, mergeTransportHeaders, normalizeCodexResponsesBaseUrlForOpenAISdk, normalizeOpenAIResponsesFunctionCallId, notifyProviderHttpMetadata, notifyProviderHttpResponse, notifyProviderStreamOpened, parseJsonObjectPreservingUnsafeIntegers, parseJsonPreservingUnsafeIntegers, parseOpenAICompletionsUsage, parseTerminalToolCallArguments, prepareHeadersForSimpleCompletion, prepareModelForSimpleCompletion, prepareTransportAwareSimpleModel, preserveCompactionReplayWindow, projectGoogleMessages, quoteUnsafeIntegerLiterals, readCodeModePayloadToolName, readOpenAICompletionsContentDeltas, readOpenAICompletionsReasoningBatch, replaceCompactionReplayOwnerContent, requestPreparedOpenAIResponsesCompaction, requiresCompactionReplayRefresh, requiresGoogleToolCallId, resolveAnthropicCacheOptions, resolveAnthropicEphemeralCacheControl, resolveAnthropicMessagesUrl, resolveAnthropicPayloadPolicy, resolveAnthropicRequestBetaHeader, resolveAnthropicServerCompactionPlan, resolveCodeModeResponsesVisibleToolNames, resolveCompactionReplayEligibility, resolveCompactionReplayPressure, resolveMaxTokensParam, resolveModelPayloadDebugMode, resolveModelSseDebugMode, resolveOpenAIClientBaseUrl, resolveOpenAICompletionsCompat, resolveOpenAIPromptCacheKeySupport, resolveOpenAIReasoningEffortMap, resolveOpenAIResponsesCompactEndpointPlan, resolveOpenAIResponsesPayloadPolicy, resolveOpenAIResponsesServerCompactionPlan, resolveOpenAIStrictToolFlagWithDiagnostics, resolvePromptCacheKey, resolveReplayableResponsesMessageId, resolveTransportAwareSimpleApi, sanitizeNonEmptyTransportPayloadText, sanitizeResponsesImagePayload, sanitizeTransportPayloadText, shouldNormalizeOpenAIResponsesToolCallId, sortPromptCacheToolsByName as sortTransportToolsByName, splitOpenAIFunctionCallPairing, stripCompactionReplayCheckpoint, stripCompactionReplayCheckpointInPlace, stripCompletionMessagesToRoleContent, throwIfModelStreamAborted, transportAbortError, usesNativeOpenAICodexResponsesBackend, withProviderAcceptanceObserver, withProviderResponseHook };