@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.
- package/dist/{anthropic-DZQ_7gD1.mjs → anthropic-CTXJlfnS.mjs} +37 -66
- package/dist/{anthropic-payload-policy-DyfwikYJ.d.mts → anthropic-payload-policy-NIPVYXPq.d.mts} +7 -5
- package/dist/{anthropic-stream-reducer-D6ZI1wwj.mjs → anthropic-stream-reducer-DrsBCsFY.mjs} +192 -261
- package/dist/{api-registry-C2T3lTV7.d.mts → api-registry-D-nbmSqr.d.mts} +2 -2
- package/dist/{azure-openai-responses-DS86GYzq.mjs → azure-openai-responses-BBxv4QVI.mjs} +22 -33
- package/dist/{base64-CPmadnUf.mjs → base64-C1PsYcRQ.mjs} +15 -9
- package/dist/{diagnostics-CH8j2wIG.mjs → diagnostics-CJaB6g8J.mjs} +3 -3
- package/dist/diagnostics.d.mts +4 -4
- package/dist/diagnostics.mjs +2 -2
- package/dist/{env-api-keys-bktO00EJ.mjs → env-api-keys-CyX4VKGO.mjs} +7 -5
- package/dist/event-stream-CMQfX_yr.d.mts +1 -0
- package/dist/{event-stream-CjnIZZst.d.mts → event-stream-DOPFYVqs.d.mts} +2 -2
- package/dist/{event-stream-D8PARQfL.mjs → event-stream-vd9UnCAU.mjs} +10 -0
- package/dist/event-stream.d.mts +2 -2
- package/dist/event-stream.mjs +1 -1
- package/dist/{google-BZJFjhuC.mjs → google-B3HEK0Ag.mjs} +8 -11
- package/dist/google-interactions-vMlEfPAA.mjs +574 -0
- package/dist/{google-messages-DB7GKkDk.mjs → google-messages-Dz2dAnGo.mjs} +35 -71
- package/dist/{google-shared-Bok4I6zB.mjs → google-shared-B58i3c8H.mjs} +43 -47
- package/dist/{google-vertex-3eVNR2qW.mjs → google-vertex-DYFXzEbh.mjs} +16 -30
- package/dist/{host-yTvBrYM2.mjs → host-DwBmNMCC.mjs} +29 -188
- package/dist/{host-policy-DZO3oPPk.mjs → host-policy-wK-ay_RK.mjs} +2 -14
- package/dist/{host-DH-Z-LDb.d.mts → host-rxlNaBwm.d.mts} +9 -3
- package/dist/{index-C25RT6bP.d.mts → index-D6KsSE74.d.mts} +28 -8
- package/dist/index.d.mts +7 -7
- package/dist/index.mjs +6 -6
- package/dist/internal/anthropic.d.mts +8 -7
- package/dist/internal/anthropic.mjs +5 -5
- package/dist/internal/openai-completions-compat.d.mts +1 -1
- package/dist/internal/openai-completions-compat.mjs +1 -1
- package/dist/internal/openai-responses-payload-policy.d.mts +1 -1
- package/dist/internal/openai-responses-payload-policy.mjs +2 -2
- package/dist/internal/openai.d.mts +31 -8
- package/dist/internal/openai.mjs +13 -13
- package/dist/internal/runtime.d.mts +31 -70
- package/dist/internal/runtime.mjs +10 -65
- package/dist/internal/shared.d.mts +14 -12
- package/dist/internal/shared.mjs +5 -4
- package/dist/internal/tool-schema.d.mts +1 -1
- package/dist/internal/tool-schema.mjs +2 -2
- package/dist/{mistral-C_13dVBn.mjs → mistral-7wDWcjfF.mjs} +46 -93
- package/dist/{openai-chatgpt-responses-sTxPl4zM.mjs → openai-chatgpt-responses-Bc7NZrQR.mjs} +26 -30
- package/dist/{openai-completions-BO6D_hrB.mjs → openai-completions-CHnwIV-W.mjs} +14 -12
- package/dist/{openai-completions-compat-CUollwl6.mjs → openai-completions-compat-BJf57ZxN.mjs} +3 -5
- package/dist/{openai-completions-compat-DfJG1wSO.d.mts → openai-completions-compat-qJjmqQ71.d.mts} +3 -3
- package/dist/{openai-completions-stream-BpuJ0ZOA.mjs → openai-completions-stream-dju_5F3P.mjs} +101 -173
- package/dist/{openai-prompt-cache-CjV_2IRI.mjs → openai-prompt-cache-BTMs80_O.mjs} +1 -1
- package/dist/{openai-prompt-cache-C4RHdN4n.d.mts → openai-prompt-cache-CouErLh7.d.mts} +2 -2
- package/dist/{openai-provider-client-BP8J1aeg.mjs → openai-provider-client-G8Otsq2Q.mjs} +2 -2
- package/dist/{openai-reasoning-effort-ash8dPrd.mjs → openai-reasoning-effort-C_0p3psG.mjs} +5 -4
- package/dist/{openai-responses-BJ_IEoMU.mjs → openai-responses-DbPe3-Py.mjs} +12 -11
- package/dist/openai-responses-compaction-replay-DiYn-gFM.d.mts +12 -0
- package/dist/{openai-responses-compaction-window-BiNCT0bS.mjs → openai-responses-compaction-window-CYGCjAQz.mjs} +5 -5
- package/dist/{openai-responses-contracts-DWrfMODE.mjs → openai-responses-contracts-CLxnqS9p.mjs} +1 -1
- package/dist/{openai-responses-contracts-B1ENJFpI.d.mts → openai-responses-contracts-D1iZ0njF.d.mts} +4 -4
- package/dist/{openai-responses-prompt-observer-internal-DPHWgbBH.mjs → openai-responses-prompt-observer-internal-BX3QTNSv.mjs} +12 -12
- package/dist/{openai-responses-request-lifecycle-DFuyO1pQ.mjs → openai-responses-request-lifecycle-Fsag-IGZ.mjs} +1 -1
- package/dist/{openai-responses-shared-DvSqtJ6_.mjs → openai-responses-shared-CIEHiKx7.mjs} +312 -122
- package/dist/{openai-responses-terminal-usage-BNFbvY9f.d.mts → openai-responses-terminal-usage-BE7lf7nW.d.mts} +2 -2
- package/dist/{openai-stop-reason-Drnn_6Qj.mjs → openai-stop-reason-8s70vDXj.mjs} +2 -12
- package/dist/{openai-tool-schema-ynZBgqW-.d.mts → openai-tool-schema-a5ysBBga.d.mts} +0 -6
- package/dist/{openai-tool-schema-D4BMcj2D.mjs → openai-tool-schema-vsl-cE-n.mjs} +243 -383
- package/dist/{openai-transport-params-DZKOTSfH.mjs → openai-transport-params-DyFJ4cgR.mjs} +60 -105
- package/dist/{positive-integer-BiUxrd71.mjs → positive-integer-CjN5OJbH.mjs} +1 -1
- package/dist/{provider-error-CRhW7lkJ.mjs → provider-error-CwT_j2v0.mjs} +43 -4
- package/dist/{provider-options-DZYq53lj.d.mts → provider-options-Df7ov0K1.d.mts} +2 -2
- package/dist/{provider-replay-context-DPr3w20a.mjs → provider-replay-context-Bs5aWE1d.mjs} +1 -1
- package/dist/{provider-transcript-transform-BTocjCRs.mjs → provider-transcript-transform-DjA5Fk2P.mjs} +17 -2
- package/dist/{provider-transport-turn-state-lrXEFkYr.mjs → provider-transport-turn-state-Dw7OtYUs.mjs} +1 -1
- package/dist/{provider-types-w1rEqrGP.d.mts → provider-types-d4XnoZMd.d.mts} +3 -3
- package/dist/provider-types.d.mts +6 -6
- package/dist/providers.d.mts +2 -2
- package/dist/providers.mjs +15 -11
- package/dist/{reasoning-tag-text-partitioner-Di38crhI.mjs → reasoning-tag-text-partitioner-B6FIIBt6.mjs} +47 -71
- package/dist/{record-coerce-DwRYMj3t.mjs → record-coerce-CNDovvft.mjs} +1 -1
- package/dist/simple-options-BkDPMuxw.mjs +349 -0
- package/dist/{src-DwGYYyZp.mjs → src-H4aXcFuX.mjs} +43 -25
- package/dist/{stream-CREqxHgU.mjs → stream-DDsCBgd-.mjs} +1 -7
- package/dist/{stream-first-event-timeout-BeptfRL6.mjs → stream-first-event-timeout-B9o0S4SZ.mjs} +1 -1
- package/dist/{tool-schema-json-projection-CD9c_fK8.mjs → tool-schema-json-projection-Ct8SeBeJ.mjs} +63 -23
- package/dist/{transport-stream-shared-B5RioB_Q.mjs → transport-stream-shared-BU5pwY6W.mjs} +62 -28
- package/dist/{transport-stream-shared-B7Z9oCYg.d.mts → transport-stream-shared-yYhXa4kX.d.mts} +12 -6
- package/dist/{transport-utils-03Qi0CN2.mjs → transport-utils-CqXzku3R.mjs} +3 -4
- package/dist/transports.d.mts +36 -32
- package/dist/transports.mjs +160 -216
- package/dist/types-CB-_vNyI.d.mts +1 -0
- package/dist/{types-qZFbaDbK.d.mts → types-CLLR3eB4.d.mts} +3 -1
- package/dist/types.d.mts +6 -6
- package/dist/types.mjs +4 -4
- package/dist/{validation-Dw7cb6BV.mjs → validation-BFZc40Ig.mjs} +80 -54
- package/dist/{validation-DhQhmt6t.d.mts → validation-Cat2wQsc.d.mts} +1 -1
- package/dist/validation.d.mts +1 -1
- package/dist/validation.mjs +1 -1
- package/package.json +5 -5
- package/dist/assistant-output-DM1JBNs1.mjs +0 -16
- package/dist/event-stream-C0nsgbj2.d.mts +0 -1
- package/dist/simple-options-np1XPuhm.mjs +0 -175
- package/dist/types-DTvddOfm.d.mts +0 -1
- package/dist/utf16-slice-CvGodqok.mjs +0 -29
package/dist/transports.mjs
CHANGED
|
@@ -1,55 +1,40 @@
|
|
|
1
|
-
import {
|
|
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
|
|
4
|
-
import {
|
|
5
|
-
import { t as
|
|
6
|
-
import { a as
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
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
|
|
14
|
-
import {
|
|
15
|
-
import { n as
|
|
16
|
-
import {
|
|
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-
|
|
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 {
|
|
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-
|
|
23
|
-
import { a as googleFlashSupportsMinimalThinking, i as consumeGoogleGenerateContentStream, n as projectGoogleMessages, r as requiresGoogleToolCallId, t as convertGoogleTools } from "./google-messages-
|
|
24
|
-
import { i as getFirstStreamEventTimeoutMs, r as getFirstStreamEventTimeoutHandler, t as createFirstStreamEventAbortController } from "./stream-first-event-timeout-
|
|
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-
|
|
26
|
-
import { r as resolveProviderTransportTurnState, t as filterProviderTurnHeadersForExplicitOpencodeSession } from "./provider-transport-turn-state-
|
|
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-
|
|
28
|
-
import { A as
|
|
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-
|
|
32
|
-
import { n as withResponsesRequestAcceptance, t as responsesRequestLifecycle } from "./openai-responses-request-lifecycle-
|
|
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-
|
|
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 (
|
|
212
|
+
while (!completed) {
|
|
160
213
|
const { done, value } = await readAnthropicSseChunk(reader, signal);
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
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 +
|
|
171
|
-
|
|
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
|
|
240
|
+
function createAnthropicMessageRequest(params) {
|
|
194
241
|
const url = resolveAnthropicMessagesUrl(params.baseURL);
|
|
195
|
-
return
|
|
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
|
-
|
|
240
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 {
|
|
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 =
|
|
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
|
|
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,
|
|
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 =
|
|
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
|
|
1913
|
-
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
|
-
})
|
|
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 (!
|
|
1973
|
-
if (!
|
|
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
|
|
2096
|
-
|
|
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
|
|
2097
|
+
if (providerStreamModel) return wrap(providerStreamModel);
|
|
2154
2098
|
const codexTransportModel = prepareCodexSimpleTransportModel(apiRegistry, model, cfg);
|
|
2155
|
-
if (codexTransportModel) return
|
|
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
|
|
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
|
|
2107
|
+
if (registerCustomApi(apiRegistry, api, getAiTransportHost().plugin.createAnthropicVertexStream(model))) return wrap(projectModel(model, { api }));
|
|
2164
2108
|
}
|
|
2165
|
-
return
|
|
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,
|
|
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 };
|