@openclaw/ai 2026.7.2-beta.3 → 2026.7.2-beta.5

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 (60) hide show
  1. package/README.md +6 -5
  2. package/dist/{anthropic-D7SyZQ5v.mjs → anthropic-CQVj3le6.mjs} +174 -33
  3. package/dist/{index-BoTnz8cv.d.mts → anthropic-SrGtwsJu.d.mts} +27 -1
  4. package/dist/{api-registry-DXBIXISf.d.mts → api-registry-DlMgPR39.d.mts} +1 -2
  5. package/dist/{azure-openai-responses-BkZgyZ3I.mjs → azure-openai-responses-DIYgsqFM.mjs} +7 -11
  6. package/dist/{env-api-keys-DnhYpc27.mjs → env-api-keys-DrgeBuva.mjs} +1 -1
  7. package/dist/error-coercion-DgxlWC0n.mjs +15 -0
  8. package/dist/{event-stream-BPemFrFW.d.mts → event-stream-YjaPW20U.d.mts} +1 -1
  9. package/dist/event-stream.d.mts +1 -1
  10. package/dist/{tool-schema-json-projection-BwNu3nDi.mjs → github-copilot-headers-BCoBNmL7.mjs} +48 -1
  11. package/dist/{google-C_biGbV7.mjs → google-f-A8xrae.mjs} +4 -4
  12. package/dist/{google-shared-BK-NoHl8.mjs → google-shared-J6qvYINH.mjs} +5 -4
  13. package/dist/{google-vertex-CvdzF1U7.mjs → google-vertex-D3yMVXIY.mjs} +3 -3
  14. package/dist/host-B9GUmcra.d.mts +173 -0
  15. package/dist/host-XYGZcgO8.mjs +98 -0
  16. package/dist/index-BVVgDSdq.d.mts +1 -0
  17. package/dist/index.d.mts +7 -50
  18. package/dist/index.mjs +3 -3
  19. package/dist/internal/anthropic.d.mts +15 -11
  20. package/dist/internal/anthropic.mjs +4 -4
  21. package/dist/internal/openai.d.mts +3 -280
  22. package/dist/internal/openai.mjs +5 -7
  23. package/dist/internal/runtime.d.mts +13 -34
  24. package/dist/internal/runtime.mjs +19 -11
  25. package/dist/internal/shared.d.mts +13 -8
  26. package/dist/internal/shared.mjs +2 -2
  27. package/dist/{mistral-BdrQmDWp.mjs → mistral-CKV-TOQj.mjs} +7 -6
  28. package/dist/number-coercion-DvG7SNMg.mjs +129 -0
  29. package/dist/openai-BPor_3WI.d.mts +358 -0
  30. package/dist/{openai-responses-shared-CwnGU0KW.mjs → openai-D3PD6PE-.mjs} +1890 -705
  31. package/dist/{openai-chatgpt-responses-DP63Qt01.mjs → openai-chatgpt-responses-CedIj0hk.mjs} +54 -58
  32. package/dist/{openai-completions-zLDfebnN.mjs → openai-completions-CiSutyu0.mjs} +459 -104
  33. package/dist/openai-prompt-cache-2uo_1OR1.d.mts +7 -0
  34. package/dist/openai-prompt-cache-mZTCdRPo.mjs +12 -0
  35. package/dist/prompt-cache-stability-Cwcjv_fx.d.mts +13 -0
  36. package/dist/{provider-error-LMfTEkfO.mjs → provider-error-apVOZI6G.mjs} +9 -2
  37. package/dist/providers.d.mts +3 -2
  38. package/dist/providers.mjs +10 -9
  39. package/dist/{transform-messages-eb6lxDLB.mjs → shared-CdjNZd35.mjs} +273 -161
  40. package/dist/{src-CXno1H5g.mjs → src-QkygScBs.mjs} +23 -4
  41. package/dist/stream-first-event-timeout-C3OgBjIk.mjs +12294 -0
  42. package/dist/stream-first-event-timeout-DvDeSucC.d.mts +29 -0
  43. package/dist/transport-stream-shared-BbMELSI4.mjs +297 -0
  44. package/dist/transports.d.mts +593 -0
  45. package/dist/transports.mjs +4069 -0
  46. package/dist/{types-CYORveZ7.d.mts → types-bzp5k29J.d.mts} +8 -0
  47. package/dist/types.d.mts +5 -5
  48. package/dist/types.mjs +2 -2
  49. package/dist/{validation-BX8euiDv.d.mts → validation-B-j7cOYp.d.mts} +1 -1
  50. package/dist/validation.d.mts +1 -1
  51. package/package.json +36 -11
  52. package/dist/azure-openai-responses-client-compat-C7K7QfUE.mjs +0 -62
  53. package/dist/github-copilot-headers-BsH5cqGj.mjs +0 -48
  54. package/dist/host-4t713IeR.mjs +0 -37
  55. package/dist/model-utils-1GiZ2_rr.mjs +0 -64
  56. package/dist/openai-responses-ClspWt4I.mjs +0 -136
  57. package/dist/openai-tool-projection-WHf2nuOI.mjs +0 -200
  58. package/dist/reasoning-tag-text-partitioner-BlVe67g6.mjs +0 -400
  59. package/dist/stream-first-event-timeout-RjWszj8c.mjs +0 -106
  60. package/npm-shrinkwrap.json +0 -645
@@ -0,0 +1,593 @@
1
+ import { E as Model, L as StreamFn, O as OpenAICompletionsCompat, X as Usage, a as AssistantMessageEvent, i as AssistantMessage, n as Api, u as Context } from "./types-bzp5k29J.mjs";
2
+ import { t as AssistantMessageEventStream } from "./event-stream-YjaPW20U.mjs";
3
+ import { n as ApiRegistry } from "./api-registry-DlMgPR39.mjs";
4
+ import { B as OpenAIApiReasoningEffort, V as OpenAIReasoningEffort, at as ResolvedOpenAICompletionsCompat, et as OpenAICompletionsToolChoice, ot as detectOpenAICompletionsCompat, st as resolveOpenAICompletionsCompat, tt as OpenAIToolProjection } from "./openai-BPor_3WI.mjs";
5
+ import { n as FirstStreamEventInternalOptions } from "./stream-first-event-timeout-DvDeSucC.mjs";
6
+ import { r as sortPromptCacheToolsByName } from "./prompt-cache-stability-Cwcjv_fx.mjs";
7
+ import OpenAI from "openai";
8
+ import { ChatCompletionChunk } from "openai/resources/chat/completions.js";
9
+ import { FunctionTool, ResponseCreateParamsStreaming, ResponseInput, ResponseReasoningItem } from "openai/resources/responses/responses.js";
10
+
11
+ //#region packages/ai/src/transports/anthropic-payload-policy.d.ts
12
+ /** @deprecated Anthropic-family provider payload helper; do not use from third-party plugins. */
13
+ type AnthropicServiceTier = "auto" | "standard_only";
14
+ /** @deprecated Anthropic-family provider payload helper; do not use from third-party plugins. */
15
+ type AnthropicEphemeralCacheControl = {
16
+ type: "ephemeral";
17
+ ttl?: "1h";
18
+ };
19
+ type AnthropicPayloadPolicyInput = {
20
+ api?: string;
21
+ baseUrl?: string;
22
+ cacheRetention?: "short" | "long" | "none";
23
+ enableCacheControl?: boolean;
24
+ provider?: string;
25
+ serviceTier?: AnthropicServiceTier;
26
+ };
27
+ /** @deprecated Anthropic-family provider payload helper; do not use from third-party plugins. */
28
+ type AnthropicPayloadPolicy = {
29
+ allowsServiceTier: boolean;
30
+ cacheControl: AnthropicEphemeralCacheControl | undefined;
31
+ serviceTier: AnthropicServiceTier | undefined;
32
+ };
33
+ /** Resolve Anthropic cache-control marker retention for a request endpoint. */
34
+ declare function resolveAnthropicEphemeralCacheControl(baseUrl: string | undefined, cacheRetention: AnthropicPayloadPolicyInput["cacheRetention"]): AnthropicEphemeralCacheControl | undefined;
35
+ /** @deprecated Anthropic-family provider payload helper; do not use from third-party plugins. */
36
+ declare function resolveAnthropicPayloadPolicy(input: AnthropicPayloadPolicyInput): AnthropicPayloadPolicy;
37
+ /** @deprecated Anthropic-family provider payload helper; do not use from third-party plugins. */
38
+ declare function applyAnthropicPayloadPolicyToParams(payloadObj: Record<string, unknown>, policy: AnthropicPayloadPolicy, cacheBreakpointOptOutMessageIndexes: ReadonlySet<number>): void;
39
+ /** @deprecated Anthropic-family provider payload helper; do not use from third-party plugins. */
40
+ declare function applyAnthropicEphemeralCacheControlMarkers(payloadObj: Record<string, unknown>, cacheControl?: AnthropicEphemeralCacheControl | null): void;
41
+ //#endregion
42
+ //#region packages/ai/src/transports/anthropic-transport-stream.d.ts
43
+ /** Resolve the Anthropic Messages endpoint URL for the effective base URL. */
44
+ declare function resolveAnthropicMessagesUrl(baseUrl?: string): string;
45
+ /** Create the stream function used by Anthropic Messages transport models. */
46
+ declare function createAnthropicMessagesTransportStreamFn(): StreamFn;
47
+ //#endregion
48
+ //#region packages/ai/src/transports/deepseek-text-filter.d.ts
49
+ interface DeepSeekTextFilter {
50
+ /** Push one streamed text chunk and receive any safe visible text segments. */
51
+ push(chunk: string): string[];
52
+ /** Flush buffered text at stream end, dropping any unterminated DSML block. */
53
+ flush(): string[];
54
+ }
55
+ /** Create an incremental text filter that strips DeepSeek DSML tool blocks. */
56
+ declare function createDeepSeekTextFilter(): DeepSeekTextFilter;
57
+ //#endregion
58
+ //#region packages/ai/src/transports/json-unsafe-integers.d.ts
59
+ /** Quotes integer literals above Number.MAX_SAFE_INTEGER before JSON.parse. */
60
+ declare function quoteUnsafeIntegerLiterals(input: string): string;
61
+ /** Parses JSON while preserving unsafe integer literals as strings. */
62
+ declare function parseJsonPreservingUnsafeIntegers(input: string): unknown;
63
+ /** Parses or accepts an object while preserving unsafe integer literals in string input. */
64
+ declare function parseJsonObjectPreservingUnsafeIntegers(value: unknown): Record<string, unknown> | null;
65
+ //#endregion
66
+ //#region packages/ai/src/transports/model-max-tokens-params.d.ts
67
+ /** Resolve the first supported max-token parameter present in a params object. */
68
+ declare function resolveMaxTokensParam(params: Record<string, unknown> | undefined): number | undefined;
69
+ /**
70
+ * Canonicalize merged params to `maxTokens`, preserving source precedence from
71
+ * left to right across the provided source objects.
72
+ */
73
+ declare function canonicalizeMaxTokensParam(params: {
74
+ merged: Record<string, unknown>;
75
+ sources: Array<Record<string, unknown> | undefined>;
76
+ }): void;
77
+ //#endregion
78
+ //#region packages/ai/src/transports/model-transport-debug.d.ts
79
+ /**
80
+ * Environment-driven debug controls for model transport logging.
81
+ *
82
+ * Model adapters share these helpers so payload, SSE, and transport diagnostics
83
+ * interpret OpenClaw debug environment variables consistently.
84
+ */
85
+ type SubsystemLogger = {
86
+ info(message: string): void;
87
+ debug(message: string): void;
88
+ };
89
+ type ModelTransportDebugEnv = NodeJS.ProcessEnv;
90
+ /** Payload debug detail levels accepted by `OPENCLAW_DEBUG_MODEL_PAYLOAD`. */
91
+ type ModelPayloadDebugMode = "off" | "summary" | "tools" | "full-redacted";
92
+ /** SSE debug detail levels accepted by `OPENCLAW_DEBUG_SSE`. */
93
+ type ModelSseDebugMode = "off" | "events" | "peek";
94
+ /** Resolves model payload debug verbosity from `OPENCLAW_DEBUG_MODEL_PAYLOAD`. */
95
+ declare function resolveModelPayloadDebugMode(env?: ModelTransportDebugEnv): ModelPayloadDebugMode;
96
+ /** Resolves SSE stream debug verbosity from `OPENCLAW_DEBUG_SSE`. */
97
+ declare function resolveModelSseDebugMode(env?: ModelTransportDebugEnv): ModelSseDebugMode;
98
+ /** Emits model-fetch metadata at info level by default; other diagnostics require debug env. */
99
+ declare function emitModelTransportDebug(log: SubsystemLogger, message: string): void;
100
+ //#endregion
101
+ //#region packages/ai/src/transports/model-transport-url.d.ts
102
+ /**
103
+ * Debug formatting helpers for model transport endpoints.
104
+ * Keeps logs useful without exposing credentials, request params, or fragments.
105
+ */
106
+ /** Return a sanitized URL suitable for logs and diagnostics. */
107
+ declare function formatModelTransportDebugUrl(rawUrl: string): string;
108
+ /** Format a configured base URL for debug output, or the implicit default. */
109
+ declare function formatModelTransportDebugBaseUrl(rawUrl: string | undefined): string;
110
+ //#endregion
111
+ //#region packages/ai/src/transports/openai-compatible-conversation-turn.d.ts
112
+ /** Returns whether an OpenAI-compatible messages payload contains a usable turn. */
113
+ declare function hasOpenAICompatibleConversationTurn(messages: unknown): boolean;
114
+ //#endregion
115
+ //#region packages/ai/src/transports/openai-completions-string-content.d.ts
116
+ /** Flatten string-only text block content arrays into newline-joined strings. */
117
+ declare function flattenCompletionMessagesToStringContent(messages: unknown[]): unknown[];
118
+ /** Strip completion messages to role/content fields for strict providers. */
119
+ declare function stripCompletionMessagesToRoleContent(messages: unknown[]): unknown[];
120
+ //#endregion
121
+ //#region packages/ai/src/transports/openai-transport-shared.d.ts
122
+ declare const GEMINI_THOUGHT_SIGNATURE_VALIDATOR_SKIP = "skip_thought_signature_validator";
123
+ declare const log: {
124
+ debug(message: string, data?: Record<string, unknown>): void;
125
+ info(message: string, data?: Record<string, unknown>): void;
126
+ warn(message: string, data?: Record<string, unknown>): void;
127
+ };
128
+ type BaseOpenAIStreamOptions = {
129
+ temperature?: number;
130
+ topP?: number;
131
+ maxTokens?: number;
132
+ stop?: string[];
133
+ signal?: AbortSignal;
134
+ apiKey?: string;
135
+ cacheRetention?: "none" | "short" | "long";
136
+ sessionId?: string;
137
+ promptCacheKey?: string;
138
+ authProfileId?: string;
139
+ onPayload?: (payload: unknown, model: Model) => unknown;
140
+ headers?: Record<string, string>;
141
+ firstEventTimeoutMs?: number;
142
+ onFirstEventTimeout?: (reason: Error) => void;
143
+ openclawCodeModeToolSurface?: boolean;
144
+ responseFormat?: Record<string, unknown>;
145
+ frequencyPenalty?: number;
146
+ presencePenalty?: number;
147
+ seed?: number;
148
+ };
149
+ type OpenAICompletionsOptions = BaseOpenAIStreamOptions & {
150
+ toolChoice?: OpenAICompletionsToolChoice;
151
+ reasoning?: OpenAIReasoningEffort;
152
+ reasoningEffort?: OpenAIReasoningEffort;
153
+ };
154
+ type OpenAIModeCompatInput = Omit<OpenAICompletionsCompat, "thinkingFormat"> & {
155
+ thinkingFormat?: string;
156
+ requiresStringContent?: boolean;
157
+ strictMessageKeys?: boolean;
158
+ unsupportedToolSchemaKeywords?: unknown;
159
+ omitEmptyArrayItems?: unknown;
160
+ visibleReasoningDetailTypes?: string[];
161
+ };
162
+ type OpenAIModeModel = Omit<Model, "compat"> & {
163
+ compat?: OpenAIModeCompatInput | null;
164
+ };
165
+ type MutableAssistantOutput = {
166
+ role: "assistant";
167
+ content: Array<Record<string, unknown>>;
168
+ api: Api;
169
+ provider: string;
170
+ model: string;
171
+ usage: {
172
+ input: number;
173
+ output: number;
174
+ cacheRead: number;
175
+ cacheWrite: number;
176
+ reasoningTokens?: number;
177
+ totalTokens: number;
178
+ cost: Usage["cost"];
179
+ };
180
+ stopReason: string;
181
+ timestamp: number;
182
+ responseId?: string;
183
+ errorMessage?: string;
184
+ errorCode?: string;
185
+ errorType?: string;
186
+ errorBody?: string;
187
+ };
188
+ type ModelStreamCooperativeScheduler = {
189
+ afterEvent: () => Promise<void>;
190
+ };
191
+ declare function throwIfModelStreamAborted(signal?: AbortSignal): void;
192
+ declare function createModelStreamCooperativeScheduler(signal?: AbortSignal): ModelStreamCooperativeScheduler;
193
+ declare function resolveCacheRetention(cacheRetention: string | undefined): "short" | "long" | "none";
194
+ declare function resolvePromptCacheKey(options: Pick<BaseOpenAIStreamOptions, "promptCacheKey" | "sessionId"> | undefined, cacheRetention: "short" | "long" | "none"): string | undefined;
195
+ //#endregion
196
+ //#region packages/ai/src/transports/openai-transport-params.d.ts
197
+ declare function enforceCodeModeResponsesToolSurface(payload: unknown): void;
198
+ declare function assertCodeModeResponsesToolSurface(payload: unknown): void;
199
+ declare function resolveOpenAIStrictToolFlagWithDiagnostics(projection: OpenAIToolProjection, strictSetting: boolean | null | undefined, context: {
200
+ transport: "responses" | "completions";
201
+ model: OpenAIModeModel;
202
+ }): boolean | undefined;
203
+ declare function isOpenAICodexResponsesModel(model: Model): boolean;
204
+ declare function usesNativeOpenAICodexResponsesBackend(model: Model): boolean;
205
+ declare function buildOpenAIClientHeaders(model: Model, context: Context, optionHeaders?: Record<string, string>, turnHeaders?: Record<string, string>, sessionId?: string): Record<string, string>;
206
+ declare function buildOpenAISdkClientOptions(model: Model): {
207
+ timeout?: number;
208
+ };
209
+ declare function buildOpenAISdkRequestOptions(model: Model, signal?: AbortSignal, options?: {
210
+ stream?: boolean;
211
+ }): {
212
+ signal?: AbortSignal;
213
+ timeout?: number;
214
+ headers?: Record<string, string>;
215
+ } | undefined;
216
+ declare function getCompat(model: OpenAIModeModel): {
217
+ cacheControlFormat: "anthropic" | undefined;
218
+ reasoningEffortMap: Record<string, string>;
219
+ openRouterRouting: Record<string, unknown>;
220
+ vercelGatewayRouting: Record<string, unknown>;
221
+ requiresStringContent: boolean;
222
+ strictMessageKeys: boolean;
223
+ supportsStore: boolean;
224
+ supportsDeveloperRole: boolean;
225
+ supportsReasoningEffort: boolean;
226
+ supportsUsageInStreaming: boolean;
227
+ maxTokensField: "max_completion_tokens" | "max_tokens";
228
+ requiresToolResultName: boolean;
229
+ requiresAssistantAfterToolResult: boolean;
230
+ requiresThinkingAsText: boolean;
231
+ requiresReasoningContentOnAssistantMessages: boolean;
232
+ thinkingFormat: "openai" | "openrouter" | "deepseek" | "together" | "zai" | "qwen" | "qwen-chat-template";
233
+ zaiToolStream: boolean;
234
+ supportsStrictMode: boolean;
235
+ supportsJsonSchemaResponseFormat: boolean;
236
+ supportsPromptCacheKey: boolean;
237
+ supportsLongCacheRetention: boolean;
238
+ sessionAffinity: "openai" | "openrouter" | "none";
239
+ visibleReasoningDetailTypes: string[];
240
+ requiresNonEmptyUserOrAssistantMessage: boolean;
241
+ };
242
+ //#endregion
243
+ //#region packages/ai/src/transports/openai-completions-transport.d.ts
244
+ declare function createSseDoneDetector(): {
245
+ observe(chunk: Uint8Array): void;
246
+ finish(): void;
247
+ sawDone: () => boolean;
248
+ };
249
+ declare function createOpenAICompletionsClient(model: Model, context: Context, apiKey: string, optionHeaders?: Record<string, string>, opts?: {
250
+ fetch?: typeof globalThis.fetch;
251
+ }): OpenAI;
252
+ declare function buildOpenAICompletionsClientConfig(model: Model, context: Context, optionHeaders?: Record<string, string>): {
253
+ baseURL: string;
254
+ defaultHeaders: Record<string, string>;
255
+ defaultQuery?: Record<string, string>;
256
+ };
257
+ declare function createOpenAICompletionsTransportStreamFn(): StreamFn;
258
+ declare function processOpenAICompletionsStream(responseStream: AsyncIterable<ChatCompletionChunk>, output: MutableAssistantOutput, model: Model, stream: {
259
+ push(event: unknown): void;
260
+ }, options?: {
261
+ signal?: AbortSignal;
262
+ emitReasoning?: boolean;
263
+ firstEventTimeoutMs?: number;
264
+ abortFirstEventStream?: (reason: Error) => void;
265
+ onFirstEventTimeout?: (reason: Error) => void;
266
+ sawStreamDONE?: () => boolean;
267
+ }): Promise<void>;
268
+ declare function shouldEmitOpenAICompletionsReasoningForModel(model: OpenAIModeModel, options: OpenAICompletionsOptions | undefined): boolean;
269
+ declare function buildOpenAICompletionsParams(model: OpenAIModeModel, context: Context, options: OpenAICompletionsOptions | undefined): Record<string, unknown>;
270
+ declare function parseTransportChunkUsage(rawUsage: NonNullable<ChatCompletionChunk["usage"]> & {
271
+ cost?: unknown;
272
+ prompt_tokens_details?: {
273
+ cache_write_tokens?: number | null;
274
+ };
275
+ }, model: Model): MutableAssistantOutput["usage"];
276
+ declare const completionsTesting: {
277
+ getCompat: typeof getCompat;
278
+ createSseDoneDetector: typeof createSseDoneDetector;
279
+ createOpenAICompletionsClient: typeof createOpenAICompletionsClient;
280
+ buildOpenAICompletionsClientConfig: typeof buildOpenAICompletionsClientConfig;
281
+ parseTransportChunkUsage: typeof parseTransportChunkUsage;
282
+ processOpenAICompletionsStream: typeof processOpenAICompletionsStream;
283
+ shouldEmitOpenAICompletionsReasoningForModel: typeof shouldEmitOpenAICompletionsReasoningForModel;
284
+ };
285
+ declare global {
286
+ var openclawOpenAICompletionsTransportTestApi: typeof completionsTesting | undefined;
287
+ }
288
+ //#endregion
289
+ //#region packages/ai/src/transports/openai-reasoning-compat.d.ts
290
+ /** Minimal model fields needed to resolve OpenAI reasoning effort compatibility. */
291
+ type OpenAIReasoningCompatModel = {
292
+ provider?: string | null;
293
+ id?: string | null;
294
+ compat?: unknown;
295
+ };
296
+ /** Resolves the reasoning effort remap for an OpenAI-compatible model. */
297
+ declare function resolveOpenAIReasoningEffortMap(model: OpenAIReasoningCompatModel, fallbackMap?: Record<string, string>): Record<string, string>;
298
+ //#endregion
299
+ //#region packages/ai/src/transports/openai-responses-payload-policy.d.ts
300
+ type OpenAIResponsesPayloadModel = {
301
+ api?: unknown;
302
+ baseUrl?: unknown;
303
+ id?: unknown;
304
+ provider?: unknown;
305
+ contextWindow?: unknown;
306
+ compat?: unknown;
307
+ };
308
+ type OpenAIResponsesPayloadPolicyOptions = {
309
+ extraParams?: Record<string, unknown>;
310
+ storeMode?: "provider-policy" | "disable" | "preserve";
311
+ enablePromptCacheStripping?: boolean;
312
+ enableServerCompaction?: boolean;
313
+ };
314
+ type OpenAIResponsesPayloadPolicy = {
315
+ allowsServiceTier: boolean;
316
+ compactThreshold: number;
317
+ explicitStore: boolean | undefined;
318
+ shouldStripDisabledReasoningPayload: boolean;
319
+ shouldStripInputStatus: boolean;
320
+ shouldStripPromptCache: boolean;
321
+ shouldStripStore: boolean;
322
+ useServerCompaction: boolean;
323
+ };
324
+ /** Resolve payload mutation policy for one OpenAI Responses-style model endpoint. */
325
+ declare function resolveOpenAIResponsesPayloadPolicy(model: OpenAIResponsesPayloadModel, options?: OpenAIResponsesPayloadPolicyOptions): OpenAIResponsesPayloadPolicy;
326
+ /** Mutate a Responses request payload according to the resolved endpoint policy. */
327
+ declare function applyOpenAIResponsesPayloadPolicy(payloadObj: Record<string, unknown>, policy: OpenAIResponsesPayloadPolicy): void;
328
+ //#endregion
329
+ //#region packages/ai/src/transports/openai-responses-replay.d.ts
330
+ /** Resolves the assistant message id that can be replayed to OpenAI Responses. */
331
+ declare function resolveReplayableResponsesMessageId(params: {
332
+ replayResponsesItemIds: boolean;
333
+ textSignatureId?: string;
334
+ fallbackId: string;
335
+ fallbackOrdinal: number;
336
+ previousReplayItemWasReasoning: boolean;
337
+ }): string | undefined;
338
+ //#endregion
339
+ //#region packages/ai/src/transports/openai-responses-client.d.ts
340
+ declare function createOpenAIResponsesClient(model: Model, context: Context, apiKey: string, optionHeaders?: Record<string, string>, turnHeaders?: Record<string, string>, sessionId?: string): OpenAI;
341
+ declare function createOpenAIResponsesTransportStreamFn(): StreamFn;
342
+ declare function createAzureOpenAIResponsesTransportStreamFn(): StreamFn;
343
+ declare function createAzureOpenAIClient(model: Model, context: Context, apiKey: string, optionHeaders?: Record<string, string>, turnHeaders?: Record<string, string>): OpenAI;
344
+ //#endregion
345
+ //#region packages/ai/src/transports/openai-responses-debug.d.ts
346
+ declare function summarizeResponsesTools(tools: unknown): string;
347
+ declare function stringifyRedactedPayload(value: unknown): string;
348
+ declare function stringifyRedactedEvent(value: unknown): string;
349
+ type ResponsesFailedNoDetailsObservation = {
350
+ event: "openai_responses_response_failed_without_details";
351
+ provider: string;
352
+ api: Api;
353
+ transportModel: string;
354
+ providerRuntimeFailureKind: "no_error_details";
355
+ responseId: string;
356
+ responseStatus: string;
357
+ responseModel: string;
358
+ responseObject: string;
359
+ metadataKeys: string[];
360
+ requestIdHashes: string[];
361
+ failureFieldsPreview: string;
362
+ responsePreview: string;
363
+ };
364
+ type ResponsesFailedEventSummary = {
365
+ message: string;
366
+ responseId?: string;
367
+ observation?: ResponsesFailedNoDetailsObservation;
368
+ };
369
+ declare function buildResponsesFailedNoDetailsObservation(event: Record<string, unknown>, model: Model, response?: Record<string, unknown> | undefined): ResponsesFailedNoDetailsObservation;
370
+ declare function summarizeResponsesFailedNoDetailsObservation(observation: ResponsesFailedNoDetailsObservation): string;
371
+ declare function normalizeResponsesFailedEvent(event: Record<string, unknown>, model: Model): ResponsesFailedEventSummary;
372
+ declare function summarizeResponsesPayload(params: unknown): string;
373
+ //#endregion
374
+ //#region packages/ai/src/transports/openai-responses-contracts.d.ts
375
+ declare const OPENAI_RESPONSES_REASONING_REPLAY_META_KEY = "__openclaw_replay";
376
+ type OpenAIResponsesReasoningReplayMetadata = {
377
+ v: 1;
378
+ source: "openai-responses";
379
+ provider: string;
380
+ api: Api;
381
+ model: string;
382
+ baseUrlHash?: string;
383
+ sessionHash?: string;
384
+ authProfileHash?: string;
385
+ };
386
+ type ReplayableResponseReasoningItem = Omit<ResponseReasoningItem, "id"> & {
387
+ id?: string;
388
+ [OPENAI_RESPONSES_REASONING_REPLAY_META_KEY]?: OpenAIResponsesReasoningReplayMetadata;
389
+ };
390
+ type OpenAIResponsesOptions = BaseOpenAIStreamOptions & {
391
+ reasoning?: OpenAIReasoningEffort;
392
+ reasoningEffort?: OpenAIReasoningEffort;
393
+ reasoningSummary?: "auto" | "detailed" | "concise" | null;
394
+ replayResponsesItemIds?: boolean;
395
+ serviceTier?: ResponseCreateParamsStreaming["service_tier"];
396
+ toolChoice?: ResponseCreateParamsStreaming["tool_choice"];
397
+ };
398
+ type OpenAIResponsesReplayContext = {
399
+ provider: string;
400
+ api: Api;
401
+ model: string;
402
+ baseUrlHash?: string;
403
+ sessionHash?: string;
404
+ authProfileHash?: string;
405
+ };
406
+ type OpenAIResponsesRequestParams = {
407
+ model: string;
408
+ input: ResponseInput;
409
+ stream: true;
410
+ instructions?: string;
411
+ prompt_cache_key?: string;
412
+ prompt_cache_retention?: "24h";
413
+ metadata?: Record<string, string>;
414
+ store?: boolean;
415
+ max_output_tokens?: number;
416
+ temperature?: number;
417
+ top_p?: number;
418
+ text?: ResponseCreateParamsStreaming["text"];
419
+ service_tier?: ResponseCreateParamsStreaming["service_tier"];
420
+ tools?: FunctionTool[];
421
+ tool_choice?: ResponseCreateParamsStreaming["tool_choice"];
422
+ reasoning?: {
423
+ effort: OpenAIApiReasoningEffort;
424
+ } | {
425
+ effort: OpenAIApiReasoningEffort;
426
+ summary: NonNullable<OpenAIResponsesOptions["reasoningSummary"]>;
427
+ };
428
+ include?: string[];
429
+ };
430
+ //#endregion
431
+ //#region packages/ai/src/transports/openai-responses-params-internal.d.ts
432
+ declare function sanitizeOpenAICodexResponsesParams<T extends Record<string, unknown>>(model: Model, params: T): T;
433
+ declare function buildOpenAIResponsesParams(model: Model, context: Context, options: OpenAIResponsesOptions | undefined, metadata?: Record<string, string>): OpenAIResponsesRequestParams;
434
+ //#endregion
435
+ //#region packages/ai/src/transports/openai-responses-replay-internal.d.ts
436
+ type ResponsesClientLike = ReturnType<typeof createOpenAIResponsesClient>;
437
+ declare function isInvalidEncryptedContentError(error: unknown): boolean;
438
+ declare function stripResponsesRequestEncryptedContent(params: OpenAIResponsesRequestParams): OpenAIResponsesRequestParams;
439
+ declare function buildOpenAIResponsesReasoningReplayMetadata(model: Model, options?: Pick<BaseOpenAIStreamOptions, "authProfileId" | "sessionId">): OpenAIResponsesReasoningReplayMetadata;
440
+ declare function tagOpenAIResponsesReasoningReplayItem(item: Record<string, unknown>, model: Model, options?: Pick<BaseOpenAIStreamOptions, "authProfileId" | "sessionId">): Record<string, unknown>;
441
+ declare function prepareOpenAIResponsesReasoningItemForReplay(item: ReplayableResponseReasoningItem, context: OpenAIResponsesReplayContext, blockMetadata?: OpenAIResponsesReasoningReplayMetadata): ReplayableResponseReasoningItem;
442
+ declare function createResponsesStreamWithEncryptedContentRetry(params: {
443
+ client: ResponsesClientLike;
444
+ request: OpenAIResponsesRequestParams;
445
+ requestOptions: unknown;
446
+ model: Model;
447
+ }): Promise<AsyncIterable<unknown>>;
448
+ declare function resolveAzureOpenAIApiVersion(env?: NodeJS.ProcessEnv): string;
449
+ //#endregion
450
+ //#region packages/ai/src/transports/openai-responses-stream-terminal-internal.d.ts
451
+ type ResponsesEventSink = {
452
+ push(event: AssistantMessageEvent): void;
453
+ };
454
+ //#endregion
455
+ //#region packages/ai/src/transports/openai-responses-stream-internal.d.ts
456
+ type ResponsesStreamOptions = FirstStreamEventInternalOptions & {
457
+ serviceTier?: ResponseCreateParamsStreaming["service_tier"];
458
+ resolveServiceTier?: (responseServiceTier: ResponseCreateParamsStreaming["service_tier"] | undefined, requestServiceTier: ResponseCreateParamsStreaming["service_tier"] | undefined) => ResponseCreateParamsStreaming["service_tier"] | undefined;
459
+ applyServiceTierPricing?: (usage: Usage, serviceTier: ResponseCreateParamsStreaming["service_tier"] | undefined) => void;
460
+ signal?: AbortSignal;
461
+ reasoningReplayMetadata?: OpenAIResponsesReasoningReplayMetadata;
462
+ };
463
+ declare function processResponsesStream<TApi extends Api>(openaiStream: AsyncIterable<unknown>, output: AssistantMessage, stream: ResponsesEventSink, model: Model<TApi>, options?: ResponsesStreamOptions): Promise<void>;
464
+ //#endregion
465
+ //#region packages/ai/src/transports/openai-responses-transport.d.ts
466
+ declare const responsesTesting: {
467
+ getCompat: typeof getCompat;
468
+ assertCodeModeResponsesToolSurface: typeof assertCodeModeResponsesToolSurface;
469
+ buildOpenAIResponsesParams: typeof buildOpenAIResponsesParams;
470
+ buildOpenAIClientHeaders: typeof buildOpenAIClientHeaders;
471
+ buildOpenAISdkClientOptions: typeof buildOpenAISdkClientOptions;
472
+ buildOpenAISdkRequestOptions: typeof buildOpenAISdkRequestOptions;
473
+ createAzureOpenAIClient: typeof createAzureOpenAIClient;
474
+ createOpenAIResponsesClient: typeof createOpenAIResponsesClient;
475
+ enforceCodeModeResponsesToolSurface: typeof enforceCodeModeResponsesToolSurface;
476
+ sanitizeOpenAICodexResponsesParams: typeof sanitizeOpenAICodexResponsesParams;
477
+ processResponsesStream: typeof processResponsesStream;
478
+ formatModelTransportDebugBaseUrl: typeof formatModelTransportDebugBaseUrl;
479
+ buildResponsesFailedNoDetailsObservation: typeof buildResponsesFailedNoDetailsObservation;
480
+ buildOpenAIResponsesReasoningReplayMetadata: typeof buildOpenAIResponsesReasoningReplayMetadata;
481
+ isInvalidEncryptedContentError: typeof isInvalidEncryptedContentError;
482
+ normalizeResponsesFailedEvent: typeof normalizeResponsesFailedEvent;
483
+ prepareOpenAIResponsesReasoningItemForReplay: typeof prepareOpenAIResponsesReasoningItemForReplay;
484
+ createResponsesStreamWithEncryptedContentRetry: typeof createResponsesStreamWithEncryptedContentRetry;
485
+ resolveAzureOpenAIApiVersion: typeof resolveAzureOpenAIApiVersion;
486
+ stripResponsesRequestEncryptedContent: typeof stripResponsesRequestEncryptedContent;
487
+ tagOpenAIResponsesReasoningReplayItem: typeof tagOpenAIResponsesReasoningReplayItem;
488
+ summarizeResponsesFailedNoDetailsObservation: typeof summarizeResponsesFailedNoDetailsObservation;
489
+ summarizeResponsesPayload: typeof summarizeResponsesPayload;
490
+ summarizeResponsesTools: typeof summarizeResponsesTools;
491
+ stringifyRedactedEvent: typeof stringifyRedactedEvent;
492
+ stringifyRedactedPayload: typeof stringifyRedactedPayload;
493
+ };
494
+ declare global {
495
+ var openclawOpenAIResponsesTransportTestApi: typeof responsesTesting | undefined;
496
+ }
497
+ //#endregion
498
+ //#region packages/ai/src/transports/provider-transport-stream.d.ts
499
+ type ProviderTransportStreamContext = {
500
+ cfg?: unknown;
501
+ agentDir?: string;
502
+ workspaceDir?: string;
503
+ env?: NodeJS.ProcessEnv;
504
+ };
505
+ /** Maps public model APIs to the internal transport API id used by simple runtime dispatch. */
506
+ declare function resolveTransportAwareSimpleApi(api: Api): Api | undefined;
507
+ /** Creates a managed transport stream only when request overrides require it. */
508
+ declare function createTransportAwareStreamFnForModel(model: Model, ctx?: ProviderTransportStreamContext): StreamFn | undefined;
509
+ /** Creates a managed OpenClaw transport stream for explicit fallback/runtime callers. */
510
+ declare function createOpenClawTransportStreamFnForModel(model: Model, ctx?: ProviderTransportStreamContext): StreamFn | undefined;
511
+ declare function createBoundaryAwareStreamFnForModel(model: Model, ctx?: ProviderTransportStreamContext): StreamFn | undefined;
512
+ declare function prepareTransportAwareSimpleModel<TApi extends Api>(model: Model<TApi>, ctx?: ProviderTransportStreamContext): Model;
513
+ declare function buildTransportAwareSimpleStreamFn(model: Model, ctx?: ProviderTransportStreamContext): StreamFn | undefined;
514
+ //#endregion
515
+ //#region packages/ai/src/transports/responses-image-payload-sanitizer.d.ts
516
+ /** Sanitize inline image fields inside a Responses API payload. */
517
+ declare function sanitizeResponsesImagePayload<T extends Record<string, unknown>>(params: T): T;
518
+ //#endregion
519
+ //#region packages/ai/src/transports/simple-completion-transport.d.ts
520
+ declare function normalizeCodexResponsesBaseUrlForOpenAISdk(baseUrl?: string): string;
521
+ declare function prepareModelForSimpleCompletion<TApi extends Api>(params: {
522
+ apiRegistry: ApiRegistry;
523
+ model: Model<TApi>;
524
+ cfg?: unknown;
525
+ }): Model;
526
+ //#endregion
527
+ //#region packages/ai/src/transports/transport-stream-shared.d.ts
528
+ type ContextUsage = NonNullable<Usage["contextUsage"]>;
529
+ type TransportUsage = {
530
+ input: number;
531
+ output: number;
532
+ cacheRead: number;
533
+ cacheWrite: number;
534
+ contextUsage?: ContextUsage;
535
+ totalTokens: number;
536
+ cost: {
537
+ input: number;
538
+ output: number;
539
+ cacheRead: number;
540
+ cacheWrite: number;
541
+ total: number;
542
+ };
543
+ };
544
+ type WritableTransportStream = {
545
+ push(event: unknown): void;
546
+ end(): void;
547
+ };
548
+ type TransportOutputShape = {
549
+ stopReason: string;
550
+ errorMessage?: string;
551
+ errorCode?: string;
552
+ errorType?: string;
553
+ errorBody?: string;
554
+ };
555
+ declare function sanitizeTransportPayloadText(text: string): string;
556
+ declare function sanitizeNonEmptyTransportPayloadText(text: string, fallback?: string): string;
557
+ declare function coerceTransportToolCallArguments(argumentsValue: unknown): Record<string, unknown>;
558
+ declare function mergeTransportHeaders(...headerSources: Array<Record<string, string> | undefined>): Record<string, string> | undefined;
559
+ declare function mergeTransportMetadata<T extends Record<string, unknown>>(payload: T, metadata?: Record<string, string>): T;
560
+ declare function createEmptyTransportUsage(): TransportUsage;
561
+ declare function createWritableTransportEventStream(): {
562
+ eventStream: AssistantMessageEventStream;
563
+ stream: WritableTransportStream;
564
+ };
565
+ /**
566
+ * Abort error to surface for an aborted `signal`.
567
+ *
568
+ * Rethrows the caller's abort reason only when it carries a `code`, so that code
569
+ * survives into `errorCode` on the persisted assistant message and consumers can
570
+ * recognize an abort's origin without matching error text. A default
571
+ * `abort()` reason is an uncoded DOMException that carries nothing the synthetic
572
+ * error does not, so it keeps the "Request was aborted" text every transport
573
+ * already emits rather than churning it.
574
+ */
575
+ declare function transportAbortError(signal?: AbortSignal): Error;
576
+ declare function finalizeTransportStream(params: {
577
+ stream: WritableTransportStream;
578
+ output: TransportOutputShape;
579
+ signal?: AbortSignal;
580
+ }): void;
581
+ declare function assignTransportErrorDetails(output: TransportOutputShape, error: unknown, signal?: AbortSignal): void;
582
+ declare function failTransportStream(params: {
583
+ stream: WritableTransportStream;
584
+ output: TransportOutputShape;
585
+ signal?: AbortSignal;
586
+ error: unknown;
587
+ cleanup?: () => void;
588
+ }): void;
589
+ //#endregion
590
+ //#region packages/ai/src/transports/transport-utils.d.ts
591
+ declare function isCodeModeModelVisibleToolName(name: string): boolean;
592
+ //#endregion
593
+ export { BaseOpenAIStreamOptions, GEMINI_THOUGHT_SIGNATURE_VALIDATOR_SKIP, MutableAssistantOutput, OpenAICompletionsOptions, OpenAIModeModel, ResolvedOpenAICompletionsCompat, WritableTransportStream, applyAnthropicEphemeralCacheControlMarkers, applyAnthropicPayloadPolicyToParams, applyOpenAIResponsesPayloadPolicy, assertCodeModeResponsesToolSurface, assignTransportErrorDetails, buildOpenAIClientHeaders, buildOpenAICompletionsParams, buildOpenAISdkClientOptions, buildOpenAISdkRequestOptions, buildTransportAwareSimpleStreamFn, canonicalizeMaxTokensParam, coerceTransportToolCallArguments, createAnthropicMessagesTransportStreamFn, createAzureOpenAIResponsesTransportStreamFn, createBoundaryAwareStreamFnForModel, createDeepSeekTextFilter, createEmptyTransportUsage, createModelStreamCooperativeScheduler, createOpenAICompletionsTransportStreamFn, createOpenAIResponsesTransportStreamFn, createOpenClawTransportStreamFnForModel, createTransportAwareStreamFnForModel, createWritableTransportEventStream, detectOpenAICompletionsCompat, emitModelTransportDebug, enforceCodeModeResponsesToolSurface, failTransportStream, finalizeTransportStream, flattenCompletionMessagesToStringContent, formatModelTransportDebugBaseUrl, formatModelTransportDebugUrl, getCompat, hasOpenAICompatibleConversationTurn, isCodeModeModelVisibleToolName, isOpenAICodexResponsesModel, log, mergeTransportHeaders, mergeTransportMetadata, normalizeCodexResponsesBaseUrlForOpenAISdk, parseJsonObjectPreservingUnsafeIntegers, parseJsonPreservingUnsafeIntegers, prepareModelForSimpleCompletion, prepareTransportAwareSimpleModel, quoteUnsafeIntegerLiterals, resolveAnthropicEphemeralCacheControl, resolveAnthropicMessagesUrl, resolveAnthropicPayloadPolicy, resolveCacheRetention, resolveMaxTokensParam, resolveModelPayloadDebugMode, resolveModelSseDebugMode, resolveOpenAICompletionsCompat, resolveOpenAIReasoningEffortMap, resolveOpenAIResponsesPayloadPolicy, resolveOpenAIStrictToolFlagWithDiagnostics, resolvePromptCacheKey, resolveReplayableResponsesMessageId, resolveTransportAwareSimpleApi, sanitizeNonEmptyTransportPayloadText, sanitizeResponsesImagePayload, sanitizeTransportPayloadText, sortPromptCacheToolsByName as sortTransportToolsByName, stripCompletionMessagesToRoleContent, throwIfModelStreamAborted, transportAbortError, usesNativeOpenAICodexResponsesBackend };