@openclaw/ai 2026.7.2-beta.2 → 2026.7.2-beta.4
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/README.md +6 -5
- package/dist/{anthropic-BIRSg5x9.mjs → anthropic-CrUDIBpM.mjs} +173 -47
- package/dist/{api-registry-Byvoz8Ha.d.mts → api-registry-BMphkFf1.d.mts} +1 -2
- package/dist/{azure-openai-responses-CHi7Wo4A.mjs → azure-openai-responses-CbrpVeEv.mjs} +9 -11
- package/dist/{env-api-keys-DnhYpc27.mjs → env-api-keys-DrgeBuva.mjs} +1 -1
- package/dist/{event-stream-uQspnL8S.d.mts → event-stream-Douf9dob.d.mts} +1 -1
- package/dist/event-stream.d.mts +1 -1
- package/dist/{google-BmsqsNwR.mjs → google-Cs62KA7t.mjs} +4 -4
- package/dist/{google-shared-Dx2aba47.mjs → google-shared-CMLI-tCZ.mjs} +4 -3
- package/dist/{google-vertex-HZ_0rTwS.mjs → google-vertex-B4SD3U0f.mjs} +3 -3
- package/dist/host-WvWBo4h8.d.mts +173 -0
- package/dist/host-XYGZcgO8.mjs +98 -0
- package/dist/index-BVVgDSdq.d.mts +1 -0
- package/dist/index.d.mts +7 -50
- package/dist/index.mjs +1 -1
- package/dist/internal/anthropic.d.mts +9 -3
- package/dist/internal/anthropic.mjs +3 -3
- package/dist/internal/openai.d.mts +2 -279
- package/dist/internal/openai.mjs +5 -5
- package/dist/internal/runtime.d.mts +8 -5
- package/dist/internal/runtime.mjs +22 -12
- package/dist/internal/shared.d.mts +4 -2
- package/dist/internal/shared.mjs +2 -2
- package/dist/{mistral-DxMPt9q9.mjs → mistral-D5Ps7Led.mjs} +26 -10
- package/dist/{model-utils-Q1LSRIdo.mjs → model-utils-1GiZ2_rr.mjs} +3 -1
- package/dist/openai-CoGicoDt.d.mts +332 -0
- package/dist/{openai-chatgpt-responses-BuH2NvsR.mjs → openai-chatgpt-responses-h0o5yV8Y.mjs} +47 -48
- package/dist/{openai-completions-DPR_O2RW.mjs → openai-completions-exO8NFQf.mjs} +342 -102
- package/dist/{openai-responses-Cov-Vdc2.mjs → openai-responses-BHpmtUKo.mjs} +5 -5
- package/dist/{openai-responses-shared-Befb4D6R.mjs → openai-responses-shared-CzCurmY1.mjs} +527 -268
- package/dist/{openai-tool-projection-CFqm42J2.mjs → openai-tool-projection-ITOU9bG1.mjs} +1 -1
- package/dist/provider-error-C4VvV_3t.mjs +41 -0
- package/dist/providers.d.mts +1 -1
- package/dist/providers.mjs +8 -8
- package/dist/{stream-first-event-timeout-RjWszj8c.mjs → stream-first-event-timeout-DP4xEyBY.mjs} +45 -1
- package/dist/{transform-messages-BmS70CP5.mjs → system-prompt-cache-boundary-CbHeV4_l.mjs} +171 -161
- package/dist/transports.d.mts +590 -0
- package/dist/transports.mjs +5701 -0
- package/dist/{types-Cx2zJtyz.d.mts → types-AFwwWium.d.mts} +7 -0
- package/dist/types.d.mts +4 -4
- package/dist/{validation-Cej7htKc.d.mts → validation-sxvxC8J-.d.mts} +1 -1
- package/dist/validation.d.mts +1 -1
- package/npm-shrinkwrap.json +43 -50
- package/package.json +36 -10
- package/dist/host-4t713IeR.mjs +0 -37
- /package/dist/{index-BoTnz8cv.d.mts → anthropic-BoTnz8cv.d.mts} +0 -0
|
@@ -1,279 +1,2 @@
|
|
|
1
|
-
import { E as
|
|
2
|
-
|
|
3
|
-
import { TSchema } from "typebox";
|
|
4
|
-
import { ChatCompletionMessageParam } from "openai/resources/chat/completions.js";
|
|
5
|
-
import { ResponseCreateParamsStreaming } from "openai/resources/responses/responses.js";
|
|
6
|
-
|
|
7
|
-
//#region packages/ai/src/providers/agent-tools-parameter-schema.d.ts
|
|
8
|
-
/**
|
|
9
|
-
* Narrow structural view of the host's model compat config. packages/ai must stay
|
|
10
|
-
* config-agnostic, so only tool-schema-relevant fields are modeled here; the host's
|
|
11
|
-
* ModelCompatConfig remains structurally assignable.
|
|
12
|
-
*/
|
|
13
|
-
type ToolSchemaModelCompat = {
|
|
14
|
-
toolSchemaProfile?: string;
|
|
15
|
-
unsupportedToolSchemaKeywords?: string[];
|
|
16
|
-
omitEmptyArrayItems?: boolean;
|
|
17
|
-
};
|
|
18
|
-
/** Extracts the compat record whether callers pass a model (`{ compat }`) or the compat itself. */
|
|
19
|
-
declare function extractToolSchemaModelCompat(modelOrCompat: {
|
|
20
|
-
compat?: unknown;
|
|
21
|
-
} | ToolSchemaModelCompat | undefined): ToolSchemaModelCompat | undefined;
|
|
22
|
-
/** JSON Schema keywords this model/provider rejects in tool schemas. */
|
|
23
|
-
declare function resolveUnsupportedToolSchemaKeywords(modelOrCompat: {
|
|
24
|
-
compat?: unknown;
|
|
25
|
-
} | ToolSchemaModelCompat | undefined): ReadonlySet<string>;
|
|
26
|
-
/** Whether empty `items: {}` on array schemas must be omitted for this model/provider. */
|
|
27
|
-
declare function shouldOmitEmptyArrayItems(modelOrCompat: {
|
|
28
|
-
compat?: unknown;
|
|
29
|
-
} | ToolSchemaModelCompat | undefined): boolean;
|
|
30
|
-
type ToolParameterSchemaOptions = {
|
|
31
|
-
modelProvider?: string;
|
|
32
|
-
modelId?: string;
|
|
33
|
-
modelCompat?: ToolSchemaModelCompat;
|
|
34
|
-
};
|
|
35
|
-
/** Return a provider-compatible JSON schema for a model-facing tool. */
|
|
36
|
-
declare function normalizeToolParameterSchema(schema: unknown, options?: ToolParameterSchemaOptions): TSchema;
|
|
37
|
-
//#endregion
|
|
38
|
-
//#region packages/ai/src/providers/azure-deployment-map.d.ts
|
|
39
|
-
/** Parses AZURE_OPENAI_DEPLOYMENT_MAP-style model=deployment entries. */
|
|
40
|
-
declare function parseAzureDeploymentNameMap(value: string | undefined): Map<string, string>;
|
|
41
|
-
/**
|
|
42
|
-
* Resolves the Azure deployment name for a model id, falling back to the model id.
|
|
43
|
-
*
|
|
44
|
-
* An exact-case match always wins, so configs that intentionally distinguish keys by
|
|
45
|
-
* case keep their exact mappings; a case-insensitive match is only used as a fallback
|
|
46
|
-
* (e.g. `GPT-4o` against a `gpt-4o=...` map) to avoid 404s from casing differences.
|
|
47
|
-
*/
|
|
48
|
-
declare function resolveAzureDeploymentNameFromMap(params: {
|
|
49
|
-
modelId: string;
|
|
50
|
-
deploymentMap?: string;
|
|
51
|
-
}): string;
|
|
52
|
-
//#endregion
|
|
53
|
-
//#region packages/ai/src/providers/azure-openai-responses-client-compat.d.ts
|
|
54
|
-
declare function isTraditionalAzureOpenAIHost(hostname: string): boolean;
|
|
55
|
-
declare function isOpenAICompatibleAzureResponsesBaseUrl(baseUrl: string): boolean;
|
|
56
|
-
//#endregion
|
|
57
|
-
//#region packages/ai/src/providers/clean-for-gemini.d.ts
|
|
58
|
-
declare const GEMINI_UNSUPPORTED_SCHEMA_KEYWORDS: Set<string>;
|
|
59
|
-
declare function cleanSchemaForGemini(schema: unknown): TSchema;
|
|
60
|
-
//#endregion
|
|
61
|
-
//#region packages/ai/src/providers/openai-tool-projection.d.ts
|
|
62
|
-
type OpenAIToolDescriptor = {
|
|
63
|
-
readonly name?: unknown;
|
|
64
|
-
readonly description?: unknown;
|
|
65
|
-
readonly parameters: unknown;
|
|
66
|
-
};
|
|
67
|
-
type OpenAIProjectedTool = {
|
|
68
|
-
readonly toolIndex: number;
|
|
69
|
-
readonly name: string;
|
|
70
|
-
readonly description?: string;
|
|
71
|
-
readonly parameters: Record<string, unknown>;
|
|
72
|
-
};
|
|
73
|
-
type OpenAIToolProjectionDiagnostic = {
|
|
74
|
-
readonly toolIndex: number;
|
|
75
|
-
readonly toolName?: string;
|
|
76
|
-
readonly violations: readonly string[];
|
|
77
|
-
};
|
|
78
|
-
type OpenAIToolProjection = {
|
|
79
|
-
readonly inputToolCount: number;
|
|
80
|
-
readonly tools: readonly OpenAIProjectedTool[];
|
|
81
|
-
readonly diagnostics: readonly OpenAIToolProjectionDiagnostic[];
|
|
82
|
-
};
|
|
83
|
-
type OpenAIResponsesToolChoice = ResponseCreateParamsStreaming["tool_choice"];
|
|
84
|
-
type OpenAICompletionsSdkToolChoice = OpenAI.Chat.Completions.ChatCompletionCreateParamsStreaming["tool_choice"];
|
|
85
|
-
type OpenAICompletionsToolChoice = Exclude<OpenAICompletionsSdkToolChoice, {
|
|
86
|
-
type: "custom";
|
|
87
|
-
}>;
|
|
88
|
-
/** Snapshots direct/custom tool descriptors before OpenAI payload construction. */
|
|
89
|
-
declare function projectOpenAITools(tools: readonly OpenAIToolDescriptor[]): OpenAIToolProjection;
|
|
90
|
-
/** Keeps Responses tool choices aligned with surviving function schemas. */
|
|
91
|
-
declare function reconcileOpenAIResponsesToolChoice(choice: OpenAIResponsesToolChoice, projection: OpenAIToolProjection): OpenAIResponsesToolChoice | undefined;
|
|
92
|
-
/** Keeps Chat Completions tool choices aligned with surviving function schemas. */
|
|
93
|
-
declare function reconcileOpenAICompletionsToolChoice(choice: OpenAICompletionsSdkToolChoice, projection: OpenAIToolProjection): OpenAICompletionsSdkToolChoice | undefined;
|
|
94
|
-
//#endregion
|
|
95
|
-
//#region packages/ai/src/providers/openai-completions.d.ts
|
|
96
|
-
interface OpenAICompletionsOptions extends StreamOptions {
|
|
97
|
-
toolChoice?: OpenAICompletionsToolChoice;
|
|
98
|
-
reasoningEffort?: "minimal" | "low" | "medium" | "high" | "xhigh";
|
|
99
|
-
}
|
|
100
|
-
type ResolvedOpenAICompletionsCompat = Omit<Required<OpenAICompletionsCompat>, "cacheControlFormat"> & {
|
|
101
|
-
cacheControlFormat?: OpenAICompletionsCompat["cacheControlFormat"];
|
|
102
|
-
};
|
|
103
|
-
declare const streamOpenAICompletions: StreamFunction<"openai-completions", OpenAICompletionsOptions>;
|
|
104
|
-
declare const streamSimpleOpenAICompletions: StreamFunction<"openai-completions", SimpleStreamOptions>;
|
|
105
|
-
declare function convertMessages(model: Model<"openai-completions">, context: Context, compat: ResolvedOpenAICompletionsCompat, options?: {
|
|
106
|
-
cacheOptOutIndexes?: Set<number>;
|
|
107
|
-
preserveSystemPromptCacheBoundary?: boolean;
|
|
108
|
-
}): ChatCompletionMessageParam[];
|
|
109
|
-
//#endregion
|
|
110
|
-
//#region packages/ai/src/providers/openai-prompt-cache.d.ts
|
|
111
|
-
/** Maximum prompt cache key length accepted by OpenAI-compatible request metadata. */
|
|
112
|
-
declare const OPENAI_PROMPT_CACHE_KEY_MAX_LENGTH = 64;
|
|
113
|
-
/** Truncates a prompt cache key by Unicode code point count. */
|
|
114
|
-
declare function clampOpenAIPromptCacheKey(key: string | undefined): string | undefined;
|
|
115
|
-
//#endregion
|
|
116
|
-
//#region packages/ai/src/providers/openai-reasoning-effort.d.ts
|
|
117
|
-
type OpenAIReasoningEffort = "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max";
|
|
118
|
-
type OpenAIApiReasoningEffort = OpenAIReasoningEffort | (string & {});
|
|
119
|
-
type OpenAIReasoningModel = {
|
|
120
|
-
provider?: unknown;
|
|
121
|
-
id?: unknown;
|
|
122
|
-
name?: unknown;
|
|
123
|
-
api?: unknown;
|
|
124
|
-
baseUrl?: unknown;
|
|
125
|
-
compat?: unknown;
|
|
126
|
-
};
|
|
127
|
-
/** Return whether a model is the GPT-5.4 mini family. */
|
|
128
|
-
declare function isOpenAIGpt54MiniModel(model: OpenAIReasoningModel): boolean;
|
|
129
|
-
/** Return whether a model is the GPT-5.5 family. */
|
|
130
|
-
declare function isOpenAIGpt55Model(model: OpenAIReasoningModel): boolean;
|
|
131
|
-
/** Return whether a model is the GPT-5.6 family. */
|
|
132
|
-
declare function isOpenAIGpt56Model(model: OpenAIReasoningModel): boolean;
|
|
133
|
-
/** Normalize user-facing reasoning effort names to API effort names. */
|
|
134
|
-
declare function normalizeOpenAIReasoningEffort(effort: string): string;
|
|
135
|
-
/** Resolve the reasoning efforts accepted by a specific OpenAI-compatible model. */
|
|
136
|
-
declare function resolveOpenAISupportedReasoningEfforts(model: OpenAIReasoningModel): readonly OpenAIApiReasoningEffort[];
|
|
137
|
-
/**
|
|
138
|
-
* Return whether a model accepts the temperature parameter. The GPT-5.6
|
|
139
|
-
* family rejects it with a 400; catalog compat can override per model.
|
|
140
|
-
*/
|
|
141
|
-
declare function supportsOpenAITemperature(model: OpenAIReasoningModel): boolean;
|
|
142
|
-
/** Return whether a model accepts a requested reasoning effort. */
|
|
143
|
-
declare function supportsOpenAIReasoningEffort(model: OpenAIReasoningModel, effort: string): boolean;
|
|
144
|
-
/** Resolve a requested reasoning effort to the closest value supported by the model. */
|
|
145
|
-
declare function resolveOpenAIReasoningEffortForModel(params: {
|
|
146
|
-
model: OpenAIReasoningModel;
|
|
147
|
-
effort: string;
|
|
148
|
-
fallbackMap?: Record<string, string>;
|
|
149
|
-
}): OpenAIApiReasoningEffort | undefined;
|
|
150
|
-
//#endregion
|
|
151
|
-
//#region packages/ai/src/providers/openai-responses.d.ts
|
|
152
|
-
interface OpenAIResponsesOptions extends StreamOptions {
|
|
153
|
-
reasoningEffort?: "minimal" | "low" | "medium" | "high" | "xhigh" | "max";
|
|
154
|
-
reasoningSummary?: "auto" | "detailed" | "concise" | null;
|
|
155
|
-
replayResponsesItemIds?: boolean;
|
|
156
|
-
serviceTier?: ResponseCreateParamsStreaming["service_tier"];
|
|
157
|
-
}
|
|
158
|
-
/**
|
|
159
|
-
* Generate function for OpenAI Responses API
|
|
160
|
-
*/
|
|
161
|
-
declare const streamOpenAIResponses: StreamFunction<"openai-responses", OpenAIResponsesOptions>;
|
|
162
|
-
declare const streamSimpleOpenAIResponses: StreamFunction<"openai-responses", SimpleStreamOptions>;
|
|
163
|
-
//#endregion
|
|
164
|
-
//#region packages/ai/src/providers/openai-responses-stream-compat.d.ts
|
|
165
|
-
declare const OPENAI_RESPONSES_OUTPUT_TEXT_CONTENT_PART_TYPE = "output_text";
|
|
166
|
-
declare const AZURE_RESPONSES_TEXT_CONTENT_PART_TYPE = "text";
|
|
167
|
-
declare const OPENAI_RESPONSES_OUTPUT_TEXT_DELTA_EVENT_TYPE = "response.output_text.delta";
|
|
168
|
-
declare const AZURE_RESPONSES_TEXT_DELTA_EVENT_TYPE = "response.text.delta";
|
|
169
|
-
type ResponsesTextContentPartType = typeof OPENAI_RESPONSES_OUTPUT_TEXT_CONTENT_PART_TYPE | typeof AZURE_RESPONSES_TEXT_CONTENT_PART_TYPE;
|
|
170
|
-
type ResponsesTextDeltaEventType = typeof OPENAI_RESPONSES_OUTPUT_TEXT_DELTA_EVENT_TYPE | typeof AZURE_RESPONSES_TEXT_DELTA_EVENT_TYPE;
|
|
171
|
-
type AzureResponsesTextContentPart = {
|
|
172
|
-
type: typeof AZURE_RESPONSES_TEXT_CONTENT_PART_TYPE;
|
|
173
|
-
text: string;
|
|
174
|
-
};
|
|
175
|
-
type AzureResponsesTextDeltaEvent = {
|
|
176
|
-
type: typeof AZURE_RESPONSES_TEXT_DELTA_EVENT_TYPE;
|
|
177
|
-
delta: string;
|
|
178
|
-
};
|
|
179
|
-
declare function isResponsesTextContentPartType(type: unknown): type is ResponsesTextContentPartType;
|
|
180
|
-
declare function isResponsesTextDeltaEventType(type: unknown): type is ResponsesTextDeltaEventType;
|
|
181
|
-
declare function isAzureResponsesTextDeltaEventType(type: unknown): type is typeof AZURE_RESPONSES_TEXT_DELTA_EVENT_TYPE;
|
|
182
|
-
declare function isAzureResponsesTextDeltaEvent(event: {
|
|
183
|
-
type?: unknown;
|
|
184
|
-
delta?: unknown;
|
|
185
|
-
}): event is AzureResponsesTextDeltaEvent;
|
|
186
|
-
type ResponsesMessageSnapshotCollapse = {
|
|
187
|
-
kind: "extend";
|
|
188
|
-
text: string;
|
|
189
|
-
} | {
|
|
190
|
-
kind: "keep";
|
|
191
|
-
};
|
|
192
|
-
declare function resolveResponsesMessageSnapshotCollapse(params: {
|
|
193
|
-
prior: {
|
|
194
|
-
text: string;
|
|
195
|
-
phase: string | undefined;
|
|
196
|
-
} | null;
|
|
197
|
-
nextText: string;
|
|
198
|
-
nextPhase: string | undefined;
|
|
199
|
-
}): ResponsesMessageSnapshotCollapse;
|
|
200
|
-
//#endregion
|
|
201
|
-
//#region packages/ai/src/providers/openai-responses-tool-call-tracker.d.ts
|
|
202
|
-
type ResponsesToolCallIdentity = {
|
|
203
|
-
itemId?: string;
|
|
204
|
-
callId?: string;
|
|
205
|
-
};
|
|
206
|
-
type ResponsesToolCallState = ResponsesToolCallIdentity & {
|
|
207
|
-
argumentStreamReliable: boolean;
|
|
208
|
-
};
|
|
209
|
-
type ResponsesToolCallEvent = {
|
|
210
|
-
output_index?: unknown;
|
|
211
|
-
item_id?: unknown;
|
|
212
|
-
};
|
|
213
|
-
declare function readResponsesToolCallItemIdentity(item: {
|
|
214
|
-
id?: unknown;
|
|
215
|
-
call_id?: unknown;
|
|
216
|
-
}): ResponsesToolCallIdentity;
|
|
217
|
-
declare function createResponsesToolCallTracker<TState extends ResponsesToolCallState>(): {
|
|
218
|
-
register(event: ResponsesToolCallEvent, state: TState): void;
|
|
219
|
-
resolve(event: ResponsesToolCallEvent, identity?: ResponsesToolCallIdentity): TState | undefined;
|
|
220
|
-
forget(toolCall: TState): void;
|
|
221
|
-
markArgumentsUnreliable(): void;
|
|
222
|
-
hasActive(): boolean;
|
|
223
|
-
};
|
|
224
|
-
//#endregion
|
|
225
|
-
//#region packages/ai/src/providers/openai-stop-reason.d.ts
|
|
226
|
-
type OpenAIStopReasonResult = {
|
|
227
|
-
stopReason: StopReason;
|
|
228
|
-
errorMessage?: string;
|
|
229
|
-
};
|
|
230
|
-
declare function mapOpenAIStopReason(reason: string | null, options?: {
|
|
231
|
-
allowSingularToolCall?: boolean;
|
|
232
|
-
}): OpenAIStopReasonResult;
|
|
233
|
-
//#endregion
|
|
234
|
-
//#region packages/ai/src/providers/openai-tool-schema.d.ts
|
|
235
|
-
/**
|
|
236
|
-
* OpenAI strict-tool-schema normalization and diagnostics.
|
|
237
|
-
*
|
|
238
|
-
* Strict schemas need all object properties required and `additionalProperties: false`; model
|
|
239
|
-
* compatibility settings can also remove unsupported schema constructs before strict checks run.
|
|
240
|
-
*/
|
|
241
|
-
type ToolSchemaCompatInput = {
|
|
242
|
-
unsupportedToolSchemaKeywords?: unknown;
|
|
243
|
-
omitEmptyArrayItems?: unknown;
|
|
244
|
-
};
|
|
245
|
-
declare function clearOpenAIToolSchemaCacheForTest(): void;
|
|
246
|
-
/** Normalizes a tool parameter schema into the OpenAI strict JSON-schema subset. */
|
|
247
|
-
declare function normalizeStrictOpenAIJsonSchema(schema: unknown, modelCompat?: ToolSchemaCompatInput | null): unknown;
|
|
248
|
-
/** Normalizes tool parameters using strict OpenAI rules only when strict mode is active. */
|
|
249
|
-
declare function normalizeOpenAIStrictToolParameters<T>(schema: T, strict: boolean, modelCompat?: ToolSchemaCompatInput | null): T;
|
|
250
|
-
/** Returns whether a schema already satisfies OpenAI strict tool-schema constraints. */
|
|
251
|
-
declare function isStrictOpenAIJsonSchemaCompatible(schema: unknown): boolean;
|
|
252
|
-
type OpenAIStrictToolSchemaDiagnostic = {
|
|
253
|
-
toolIndex: number;
|
|
254
|
-
toolName?: string;
|
|
255
|
-
violations: string[];
|
|
256
|
-
};
|
|
257
|
-
/** Returns strict-schema diagnostics for an already materialized OpenAI tool projection. */
|
|
258
|
-
declare function findOpenAIStrictToolProjectionDiagnostics(projection: OpenAIToolProjection): OpenAIStrictToolSchemaDiagnostic[];
|
|
259
|
-
/** Resolves strict mode for the projected tools that will be emitted in the request payload. */
|
|
260
|
-
declare function resolveOpenAIProjectedToolsStrictToolFlag(projection: OpenAIToolProjection, strict: boolean | null | undefined): boolean | undefined;
|
|
261
|
-
//#endregion
|
|
262
|
-
//#region packages/ai/src/providers/schema-keyword-strip.d.ts
|
|
263
|
-
/** Recursively remove schema keywords unsupported by a target provider/tool surface. */
|
|
264
|
-
declare function stripUnsupportedSchemaKeywords(schema: unknown, unsupportedKeywords: ReadonlySet<string>): unknown;
|
|
265
|
-
//#endregion
|
|
266
|
-
//#region packages/ai/src/providers/tool-schema-json-projection.d.ts
|
|
267
|
-
/** JSON-safe schema value used when projecting runtime tool parameters. */
|
|
268
|
-
type RuntimeToolInputSchemaJson = null | boolean | number | string | RuntimeToolInputSchemaJson[] | {
|
|
269
|
-
[key: string]: RuntimeToolInputSchemaJson;
|
|
270
|
-
};
|
|
271
|
-
/** Projected runtime tool schema plus validation violations. */
|
|
272
|
-
type RuntimeToolInputSchemaProjection = {
|
|
273
|
-
readonly schema: RuntimeToolInputSchemaJson;
|
|
274
|
-
readonly violations: readonly string[];
|
|
275
|
-
};
|
|
276
|
-
/** Projects one runtime tool input schema to JSON and reports runtime incompatibilities. */
|
|
277
|
-
declare function projectRuntimeToolInputSchema(schema: unknown, path?: string): RuntimeToolInputSchemaProjection;
|
|
278
|
-
//#endregion
|
|
279
|
-
export { AZURE_RESPONSES_TEXT_CONTENT_PART_TYPE, AZURE_RESPONSES_TEXT_DELTA_EVENT_TYPE, AzureResponsesTextContentPart, AzureResponsesTextDeltaEvent, GEMINI_UNSUPPORTED_SCHEMA_KEYWORDS, OPENAI_PROMPT_CACHE_KEY_MAX_LENGTH, OPENAI_RESPONSES_OUTPUT_TEXT_CONTENT_PART_TYPE, OPENAI_RESPONSES_OUTPUT_TEXT_DELTA_EVENT_TYPE, OpenAIApiReasoningEffort, OpenAICompletionsOptions, OpenAICompletionsToolChoice, OpenAIReasoningEffort, OpenAIResponsesOptions, OpenAIStopReasonResult, OpenAIToolProjection, ResponsesMessageSnapshotCollapse, ResponsesTextContentPartType, ResponsesTextDeltaEventType, ResponsesToolCallIdentity, ResponsesToolCallState, RuntimeToolInputSchemaJson, RuntimeToolInputSchemaProjection, ToolParameterSchemaOptions, ToolSchemaModelCompat, clampOpenAIPromptCacheKey, cleanSchemaForGemini, clearOpenAIToolSchemaCacheForTest, convertMessages, createResponsesToolCallTracker, extractToolSchemaModelCompat, findOpenAIStrictToolProjectionDiagnostics, isAzureResponsesTextDeltaEvent, isAzureResponsesTextDeltaEventType, isOpenAICompatibleAzureResponsesBaseUrl, isOpenAIGpt54MiniModel, isOpenAIGpt55Model, isOpenAIGpt56Model, isResponsesTextContentPartType, isResponsesTextDeltaEventType, isStrictOpenAIJsonSchemaCompatible, isTraditionalAzureOpenAIHost, mapOpenAIStopReason, normalizeOpenAIReasoningEffort, normalizeOpenAIStrictToolParameters, normalizeStrictOpenAIJsonSchema, normalizeToolParameterSchema, parseAzureDeploymentNameMap, projectOpenAITools, projectRuntimeToolInputSchema, readResponsesToolCallItemIdentity, reconcileOpenAICompletionsToolChoice, reconcileOpenAIResponsesToolChoice, resolveAzureDeploymentNameFromMap, resolveOpenAIProjectedToolsStrictToolFlag, resolveOpenAIReasoningEffortForModel, resolveOpenAISupportedReasoningEfforts, resolveResponsesMessageSnapshotCollapse, resolveUnsupportedToolSchemaKeywords, shouldOmitEmptyArrayItems, streamOpenAICompletions, streamOpenAIResponses, streamSimpleOpenAICompletions, streamSimpleOpenAIResponses, stripUnsupportedSchemaKeywords, supportsOpenAIReasoningEffort, supportsOpenAITemperature };
|
|
1
|
+
import { $ as convertMessages, A as ResponsesTextContentPartType, B as OpenAIApiReasoningEffort, C as AZURE_RESPONSES_TEXT_CONTENT_PART_TYPE, D as OPENAI_RESPONSES_OUTPUT_TEXT_CONTENT_PART_TYPE, E as AzureResponsesTextDeltaEvent, F as isResponsesTextDeltaEventType, G as normalizeOpenAIReasoningEffort, H as isOpenAIGpt54MiniModel, I as resolveResponsesMessageSnapshotCollapse, J as supportsOpenAIReasoningEffort, K as resolveOpenAIReasoningEffortForModel, L as OpenAIResponsesOptions, M as isAzureResponsesTextDeltaEvent, N as isAzureResponsesTextDeltaEventType, O as OPENAI_RESPONSES_OUTPUT_TEXT_DELTA_EVENT_TYPE, P as isResponsesTextContentPartType, Q as OpenAICompletionsOptions, R as streamOpenAIResponses, S as resolveResponsesTerminalStopReason, T as AzureResponsesTextContentPart, U as isOpenAIGpt55Model, V as OpenAIReasoningEffort, W as isOpenAIGpt56Model, X as OPENAI_PROMPT_CACHE_KEY_MAX_LENGTH, Y as supportsOpenAITemperature, Z as clampOpenAIPromptCacheKey, _ as createResponsesToolCallTracker, _t as resolveUnsupportedToolSchemaKeywords, a as clearOpenAIToolSchemaCacheForTest, at as reconcileOpenAICompletionsToolChoice, b as mapResponsesTerminalUsage, c as normalizeOpenAIStrictToolParameters, ct as cleanSchemaForGemini, d as findOpenAIStrictSchemaViolations, dt as parseAzureDeploymentNameMap, et as streamOpenAICompletions, f as normalizeOpenAIStrictCompatSchema, ft as resolveAzureDeploymentNameFromMap, g as ResponsesToolCallState, gt as normalizeToolParameterSchema, h as ResponsesToolCallIdentity, ht as extractToolSchemaModelCompat, i as stripUnsupportedSchemaKeywords, it as projectOpenAITools, j as ResponsesTextDeltaEventType, k as ResponsesMessageSnapshotCollapse, l as normalizeStrictOpenAIJsonSchema, lt as isOpenAICompatibleAzureResponsesBaseUrl, m as mapOpenAIStopReason, mt as ToolSchemaModelCompat, n as RuntimeToolInputSchemaProjection, nt as OpenAICompletionsToolChoice, o as findOpenAIStrictToolProjectionDiagnostics, ot as reconcileOpenAIResponsesToolChoice, p as OpenAIStopReasonResult, pt as ToolParameterSchemaOptions, q as resolveOpenAISupportedReasoningEfforts, r as projectRuntimeToolInputSchema, rt as OpenAIToolProjection, s as isStrictOpenAIJsonSchemaCompatible, st as GEMINI_UNSUPPORTED_SCHEMA_KEYWORDS, t as RuntimeToolInputSchemaJson, tt as streamSimpleOpenAICompletions, u as resolveOpenAIProjectedToolsStrictToolFlag, ut as isTraditionalAzureOpenAIHost, v as readResponsesToolCallItemIdentity, vt as shouldOmitEmptyArrayItems, w as AZURE_RESPONSES_TEXT_DELTA_EVENT_TYPE, x as readResponsesReasoningTokens, y as ResponsesTerminalUsagePayload, z as streamSimpleOpenAIResponses } from "../openai-CoGicoDt.mjs";
|
|
2
|
+
export { AZURE_RESPONSES_TEXT_CONTENT_PART_TYPE, AZURE_RESPONSES_TEXT_DELTA_EVENT_TYPE, AzureResponsesTextContentPart, AzureResponsesTextDeltaEvent, GEMINI_UNSUPPORTED_SCHEMA_KEYWORDS, OPENAI_PROMPT_CACHE_KEY_MAX_LENGTH, OPENAI_RESPONSES_OUTPUT_TEXT_CONTENT_PART_TYPE, OPENAI_RESPONSES_OUTPUT_TEXT_DELTA_EVENT_TYPE, OpenAIApiReasoningEffort, OpenAICompletionsOptions, OpenAICompletionsToolChoice, OpenAIReasoningEffort, OpenAIResponsesOptions, OpenAIStopReasonResult, OpenAIToolProjection, ResponsesMessageSnapshotCollapse, ResponsesTerminalUsagePayload, ResponsesTextContentPartType, ResponsesTextDeltaEventType, ResponsesToolCallIdentity, ResponsesToolCallState, RuntimeToolInputSchemaJson, RuntimeToolInputSchemaProjection, ToolParameterSchemaOptions, ToolSchemaModelCompat, clampOpenAIPromptCacheKey, cleanSchemaForGemini, clearOpenAIToolSchemaCacheForTest, convertMessages, createResponsesToolCallTracker, extractToolSchemaModelCompat, findOpenAIStrictSchemaViolations, findOpenAIStrictToolProjectionDiagnostics, isAzureResponsesTextDeltaEvent, isAzureResponsesTextDeltaEventType, isOpenAICompatibleAzureResponsesBaseUrl, isOpenAIGpt54MiniModel, isOpenAIGpt55Model, isOpenAIGpt56Model, isResponsesTextContentPartType, isResponsesTextDeltaEventType, isStrictOpenAIJsonSchemaCompatible, isTraditionalAzureOpenAIHost, mapOpenAIStopReason, mapResponsesTerminalUsage, normalizeOpenAIReasoningEffort, normalizeOpenAIStrictCompatSchema, normalizeOpenAIStrictToolParameters, normalizeStrictOpenAIJsonSchema, normalizeToolParameterSchema, parseAzureDeploymentNameMap, projectOpenAITools, projectRuntimeToolInputSchema, readResponsesReasoningTokens, readResponsesToolCallItemIdentity, reconcileOpenAICompletionsToolChoice, reconcileOpenAIResponsesToolChoice, resolveAzureDeploymentNameFromMap, resolveOpenAIProjectedToolsStrictToolFlag, resolveOpenAIReasoningEffortForModel, resolveOpenAISupportedReasoningEfforts, resolveResponsesMessageSnapshotCollapse, resolveResponsesTerminalStopReason, resolveUnsupportedToolSchemaKeywords, shouldOmitEmptyArrayItems, streamOpenAICompletions, streamOpenAIResponses, streamSimpleOpenAICompletions, streamSimpleOpenAIResponses, stripUnsupportedSchemaKeywords, supportsOpenAIReasoningEffort, supportsOpenAITemperature };
|
package/dist/internal/openai.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { t as projectRuntimeToolInputSchema } from "../tool-schema-json-projection-BwNu3nDi.mjs";
|
|
2
|
-
import {
|
|
2
|
+
import { a as mapOpenAIStopReason, i as streamSimpleOpenAICompletions, r as streamOpenAICompletions, t as convertMessages } from "../openai-completions-exO8NFQf.mjs";
|
|
3
|
+
import { A as isOpenAIGpt54MiniModel, B as resolveUnsupportedToolSchemaKeywords, C as OPENAI_RESPONSES_OUTPUT_TEXT_CONTENT_PART_TYPE, D as isResponsesTextContentPartType, E as isAzureResponsesTextDeltaEventType, F as resolveOpenAISupportedReasoningEfforts, H as stripUnsupportedSchemaKeywords, I as supportsOpenAIReasoningEffort, L as supportsOpenAITemperature, M as isOpenAIGpt56Model, N as normalizeOpenAIReasoningEffort, O as isResponsesTextDeltaEventType, P as resolveOpenAIReasoningEffortForModel, R as extractToolSchemaModelCompat, S as AZURE_RESPONSES_TEXT_DELTA_EVENT_TYPE, T as isAzureResponsesTextDeltaEvent, U as GEMINI_UNSUPPORTED_SCHEMA_KEYWORDS, V as shouldOmitEmptyArrayItems, W as cleanSchemaForGemini, _ as readResponsesToolCallItemIdentity, b as resolveResponsesTerminalStopReason, c as clearOpenAIToolSchemaCacheForTest, d as normalizeOpenAIStrictToolParameters, f as normalizeStrictOpenAIJsonSchema, g as createResponsesToolCallTracker, h as normalizeOpenAIStrictCompatSchema, j as isOpenAIGpt55Model, k as resolveResponsesMessageSnapshotCollapse, l as findOpenAIStrictToolProjectionDiagnostics, m as findOpenAIStrictSchemaViolations, p as resolveOpenAIProjectedToolsStrictToolFlag, u as isStrictOpenAIJsonSchemaCompatible, v as mapResponsesTerminalUsage, w as OPENAI_RESPONSES_OUTPUT_TEXT_DELTA_EVENT_TYPE, x as AZURE_RESPONSES_TEXT_CONTENT_PART_TYPE, y as readResponsesReasoningTokens, z as normalizeToolParameterSchema } from "../openai-responses-shared-CzCurmY1.mjs";
|
|
3
4
|
import { i as resolveAzureDeploymentNameFromMap, n as isTraditionalAzureOpenAIHost, r as parseAzureDeploymentNameMap, t as isOpenAICompatibleAzureResponsesBaseUrl } from "../azure-openai-responses-client-compat-C7K7QfUE.mjs";
|
|
4
|
-
import { a as clampOpenAIPromptCacheKey, i as OPENAI_PROMPT_CACHE_KEY_MAX_LENGTH, n as reconcileOpenAICompletionsToolChoice, r as reconcileOpenAIResponsesToolChoice, t as projectOpenAITools } from "../openai-tool-projection-
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
export { AZURE_RESPONSES_TEXT_CONTENT_PART_TYPE, AZURE_RESPONSES_TEXT_DELTA_EVENT_TYPE, GEMINI_UNSUPPORTED_SCHEMA_KEYWORDS, OPENAI_PROMPT_CACHE_KEY_MAX_LENGTH, OPENAI_RESPONSES_OUTPUT_TEXT_CONTENT_PART_TYPE, OPENAI_RESPONSES_OUTPUT_TEXT_DELTA_EVENT_TYPE, clampOpenAIPromptCacheKey, cleanSchemaForGemini, clearOpenAIToolSchemaCacheForTest, convertMessages, createResponsesToolCallTracker, extractToolSchemaModelCompat, findOpenAIStrictToolProjectionDiagnostics, isAzureResponsesTextDeltaEvent, isAzureResponsesTextDeltaEventType, isOpenAICompatibleAzureResponsesBaseUrl, isOpenAIGpt54MiniModel, isOpenAIGpt55Model, isOpenAIGpt56Model, isResponsesTextContentPartType, isResponsesTextDeltaEventType, isStrictOpenAIJsonSchemaCompatible, isTraditionalAzureOpenAIHost, mapOpenAIStopReason, normalizeOpenAIReasoningEffort, normalizeOpenAIStrictToolParameters, normalizeStrictOpenAIJsonSchema, normalizeToolParameterSchema, parseAzureDeploymentNameMap, projectOpenAITools, projectRuntimeToolInputSchema, readResponsesToolCallItemIdentity, reconcileOpenAICompletionsToolChoice, reconcileOpenAIResponsesToolChoice, resolveAzureDeploymentNameFromMap, resolveOpenAIProjectedToolsStrictToolFlag, resolveOpenAIReasoningEffortForModel, resolveOpenAISupportedReasoningEfforts, resolveResponsesMessageSnapshotCollapse, resolveUnsupportedToolSchemaKeywords, shouldOmitEmptyArrayItems, streamOpenAICompletions, streamOpenAIResponses, streamSimpleOpenAICompletions, streamSimpleOpenAIResponses, stripUnsupportedSchemaKeywords, supportsOpenAIReasoningEffort, supportsOpenAITemperature };
|
|
5
|
+
import { a as clampOpenAIPromptCacheKey, i as OPENAI_PROMPT_CACHE_KEY_MAX_LENGTH, n as reconcileOpenAICompletionsToolChoice, r as reconcileOpenAIResponsesToolChoice, t as projectOpenAITools } from "../openai-tool-projection-ITOU9bG1.mjs";
|
|
6
|
+
import { n as streamOpenAIResponses, r as streamSimpleOpenAIResponses } from "../openai-responses-BHpmtUKo.mjs";
|
|
7
|
+
export { AZURE_RESPONSES_TEXT_CONTENT_PART_TYPE, AZURE_RESPONSES_TEXT_DELTA_EVENT_TYPE, GEMINI_UNSUPPORTED_SCHEMA_KEYWORDS, OPENAI_PROMPT_CACHE_KEY_MAX_LENGTH, OPENAI_RESPONSES_OUTPUT_TEXT_CONTENT_PART_TYPE, OPENAI_RESPONSES_OUTPUT_TEXT_DELTA_EVENT_TYPE, clampOpenAIPromptCacheKey, cleanSchemaForGemini, clearOpenAIToolSchemaCacheForTest, convertMessages, createResponsesToolCallTracker, extractToolSchemaModelCompat, findOpenAIStrictSchemaViolations, findOpenAIStrictToolProjectionDiagnostics, isAzureResponsesTextDeltaEvent, isAzureResponsesTextDeltaEventType, isOpenAICompatibleAzureResponsesBaseUrl, isOpenAIGpt54MiniModel, isOpenAIGpt55Model, isOpenAIGpt56Model, isResponsesTextContentPartType, isResponsesTextDeltaEventType, isStrictOpenAIJsonSchemaCompatible, isTraditionalAzureOpenAIHost, mapOpenAIStopReason, mapResponsesTerminalUsage, normalizeOpenAIReasoningEffort, normalizeOpenAIStrictCompatSchema, normalizeOpenAIStrictToolParameters, normalizeStrictOpenAIJsonSchema, normalizeToolParameterSchema, parseAzureDeploymentNameMap, projectOpenAITools, projectRuntimeToolInputSchema, readResponsesReasoningTokens, readResponsesToolCallItemIdentity, reconcileOpenAICompletionsToolChoice, reconcileOpenAIResponsesToolChoice, resolveAzureDeploymentNameFromMap, resolveOpenAIProjectedToolsStrictToolFlag, resolveOpenAIReasoningEffortForModel, resolveOpenAISupportedReasoningEfforts, resolveResponsesMessageSnapshotCollapse, resolveResponsesTerminalStopReason, resolveUnsupportedToolSchemaKeywords, shouldOmitEmptyArrayItems, streamOpenAICompletions, streamOpenAIResponses, streamSimpleOpenAICompletions, streamSimpleOpenAIResponses, stripUnsupportedSchemaKeywords, supportsOpenAIReasoningEffort, supportsOpenAITemperature };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { D as ModelThinkingLevel, E as Model, F as SimpleStreamOptions, P as ProviderStreamOptions, X as Usage, i as AssistantMessage, n as Api, o as AssistantMessageEventStreamContract, u as Context, z as StreamOptions } from "../types-
|
|
2
|
-
import { a as RegisteredApiProvider, t as ApiProvider } from "../api-registry-
|
|
1
|
+
import { D as ModelThinkingLevel, E as Model, F as SimpleStreamOptions, P as ProviderStreamOptions, X as Usage, i as AssistantMessage, n as Api, o as AssistantMessageEventStreamContract, u as Context, z as StreamOptions } from "../types-AFwwWium.mjs";
|
|
2
|
+
import { a as RegisteredApiProvider, t as ApiProvider } from "../api-registry-BMphkFf1.mjs";
|
|
3
3
|
import { t as sanitizeSurrogates } from "../sanitize-unicode-BZiVbGwK.mjs";
|
|
4
4
|
|
|
5
5
|
//#region packages/ai/src/internal/default-runtime.d.ts
|
|
@@ -23,7 +23,8 @@ declare const defaultLlmRuntime: {
|
|
|
23
23
|
streamSimple: <TApi extends Api>(model: Model<TApi>, context: Context, options?: SimpleStreamOptions) => AssistantMessageEventStreamContract;
|
|
24
24
|
completeSimple: <TApi extends Api>(model: Model<TApi>, context: Context, options?: SimpleStreamOptions) => Promise<AssistantMessage>;
|
|
25
25
|
};
|
|
26
|
-
declare const
|
|
26
|
+
declare const getApiProvider: (api: Api) => RegisteredApiProvider | undefined, getApiProviders: () => RegisteredApiProvider[];
|
|
27
|
+
declare function clearApiProviders(): void;
|
|
27
28
|
declare const stream: <TApi extends Api>(model: Model<TApi>, context: Context, options?: ProviderStreamOptions) => AssistantMessageEventStreamContract, complete: <TApi extends Api>(model: Model<TApi>, context: Context, options?: ProviderStreamOptions) => Promise<AssistantMessage>, streamSimple: <TApi extends Api>(model: Model<TApi>, context: Context, options?: SimpleStreamOptions) => AssistantMessageEventStreamContract, completeSimple: <TApi extends Api>(model: Model<TApi>, context: Context, options?: SimpleStreamOptions) => Promise<AssistantMessage>;
|
|
28
29
|
//#endregion
|
|
29
30
|
//#region packages/ai/src/env-api-keys.d.ts
|
|
@@ -139,10 +140,12 @@ declare function isConfiguredContextSizeOverflowError(errorMessage: string): boo
|
|
|
139
140
|
* - llama.cpp: "exceeds the available context size"
|
|
140
141
|
* - LM Studio: "greater than the context length"
|
|
141
142
|
* - Kimi For Coding: "exceeded model token limit: X (requested: Y)"
|
|
143
|
+
* - z.ai: "tokens in request more than max tokens allowed" or "Prompt exceeds max length"
|
|
142
144
|
*
|
|
143
145
|
* **Unreliable detection:**
|
|
144
146
|
* - z.ai: Sometimes accepts overflow silently (detectable via usage.input > contextWindow),
|
|
145
|
-
* sometimes returns rate limit errors
|
|
147
|
+
* sometimes returns rate limit errors instead of the explicit overflow error above. Pass
|
|
148
|
+
* contextWindow param to detect silent overflow.
|
|
146
149
|
* - Xiaomi MiMo: Truncates input to fit contextWindow then returns stopReason "length" with
|
|
147
150
|
* output=0. Pass contextWindow param to detect via the "filled context + zero output" signal.
|
|
148
151
|
* - Ollama: May truncate input silently for some setups, but may also return explicit
|
|
@@ -242,4 +245,4 @@ type SseByteGuard = {
|
|
|
242
245
|
};
|
|
243
246
|
declare function createSseByteGuard(reader: ReadableStreamDefaultReader<Uint8Array>, opts: ReadSseStreamWithLimitOptions): SseByteGuard;
|
|
244
247
|
//#endregion
|
|
245
|
-
export { FirstStreamEventAbortController, FirstStreamEventInternalOptions, FirstStreamEventTimeoutContext, OpenAICodexJwtPayload, ReadSseStreamWithLimitOptions, ReasoningTagTextDelta, ReasoningTagTextPartitioner, SessionResourceCleanup, SseByteGuard, SseStreamOverflow, applyProviderReportedUsageCost, calculateCost, clampThinkingLevel, cleanupSessionResources, clearApiProviders, complete, completeSimple, createDeferredEventBuffer, createFirstStreamEventAbortController, createFirstStreamEventTimeoutError, createReasoningTagTextPartitioner, createSseByteGuard, decodeOpenAICodexJwtPayload, defaultApiRegistry, defaultLlmRuntime, findEnvKeys, getApiProvider, getApiProviders, getEnvApiKey, getFirstStreamEventTimeoutHandler, getFirstStreamEventTimeoutMs, getSupportedThinkingLevels, headersToRecord, isConfiguredContextSizeOverflowError, isContextOverflow, modelsAreEqual, notifyLlmRequestActivity, onLlmRequestActivity, parseJsonWithRepair, parseStreamingJson,
|
|
248
|
+
export { FirstStreamEventAbortController, FirstStreamEventInternalOptions, FirstStreamEventTimeoutContext, OpenAICodexJwtPayload, ReadSseStreamWithLimitOptions, ReasoningTagTextDelta, ReasoningTagTextPartitioner, SessionResourceCleanup, SseByteGuard, SseStreamOverflow, applyProviderReportedUsageCost, calculateCost, clampThinkingLevel, cleanupSessionResources, clearApiProviders, complete, completeSimple, createDeferredEventBuffer, createFirstStreamEventAbortController, createFirstStreamEventTimeoutError, createReasoningTagTextPartitioner, createSseByteGuard, decodeOpenAICodexJwtPayload, defaultApiRegistry, defaultLlmRuntime, findEnvKeys, getApiProvider, getApiProviders, getEnvApiKey, getFirstStreamEventTimeoutHandler, getFirstStreamEventTimeoutMs, getSupportedThinkingLevels, headersToRecord, isConfiguredContextSizeOverflowError, isContextOverflow, modelsAreEqual, notifyLlmRequestActivity, onLlmRequestActivity, parseJsonWithRepair, parseStreamingJson, registerSessionResourceCleanup, repairJson, resolveOpenAICodexAccountId, sanitizeSurrogates, shortHash, stream, streamSimple, withFirstStreamEventTimeout };
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { n as getEnvApiKey, t as findEnvKeys } from "../env-api-keys-
|
|
1
|
+
import { n as getEnvApiKey, t as findEnvKeys } from "../env-api-keys-DrgeBuva.mjs";
|
|
2
2
|
import { n as createApiRegistry, t as createLlmRuntime } from "../stream-CREqxHgU.mjs";
|
|
3
|
-
import {
|
|
3
|
+
import { t as sanitizeSurrogates } from "../sanitize-unicode-DT5o51ur.mjs";
|
|
4
|
+
import { a as modelsAreEqual, i as getSupportedThinkingLevels, n as calculateCost, r as clampThinkingLevel, t as applyProviderReportedUsageCost } from "../model-utils-1GiZ2_rr.mjs";
|
|
4
5
|
import { n as onLlmRequestActivity, r as createDeferredEventBuffer, t as notifyLlmRequestActivity } from "../llm-request-activity-CehVkZP-.mjs";
|
|
5
6
|
import { t as headersToRecord } from "../headers-B_e4-1J0.mjs";
|
|
6
7
|
import { n as parseStreamingJson, r as repairJson, t as parseJsonWithRepair } from "../json-parse-BvXNt1-7.mjs";
|
|
7
|
-
import { t as sanitizeSurrogates } from "../sanitize-unicode-DT5o51ur.mjs";
|
|
8
|
-
import { t as createReasoningTagTextPartitioner } from "../reasoning-tag-text-partitioner-BlVe67g6.mjs";
|
|
9
|
-
import { a as withFirstStreamEventTimeout, i as getFirstStreamEventTimeoutMs, n as createFirstStreamEventTimeoutError, r as getFirstStreamEventTimeoutHandler, t as createFirstStreamEventAbortController } from "../stream-first-event-timeout-RjWszj8c.mjs";
|
|
10
|
-
import { t as shortHash } from "../hash-CHgqbJmD.mjs";
|
|
11
8
|
import { i as registerSessionResourceCleanup, n as resolveOpenAICodexAccountId, r as cleanupSessionResources, t as decodeOpenAICodexJwtPayload } from "../openai-chatgpt-jwt-DhAAzLkj.mjs";
|
|
9
|
+
import { t as shortHash } from "../hash-CHgqbJmD.mjs";
|
|
10
|
+
import { t as createReasoningTagTextPartitioner } from "../reasoning-tag-text-partitioner-BlVe67g6.mjs";
|
|
11
|
+
import { a as withFirstStreamEventTimeout, i as getFirstStreamEventTimeoutMs, n as createFirstStreamEventTimeoutError, r as getFirstStreamEventTimeoutHandler, t as createFirstStreamEventAbortController } from "../stream-first-event-timeout-DP4xEyBY.mjs";
|
|
12
12
|
import { t as createSseByteGuard } from "../streaming-byte-guard-BrbkbwUu.mjs";
|
|
13
13
|
//#region packages/ai/src/internal/default-runtime.ts
|
|
14
14
|
const DEFAULT_RUNTIME_KEY = Symbol.for("openclaw.ai.defaultRuntime");
|
|
@@ -26,7 +26,10 @@ function resolveDefaultRuntime() {
|
|
|
26
26
|
const defaultRuntime = resolveDefaultRuntime();
|
|
27
27
|
const defaultApiRegistry = defaultRuntime.registry;
|
|
28
28
|
const defaultLlmRuntime = defaultRuntime.runtime;
|
|
29
|
-
const {
|
|
29
|
+
const { getApiProvider, getApiProviders } = defaultApiRegistry;
|
|
30
|
+
function clearApiProviders() {
|
|
31
|
+
defaultApiRegistry.clearApiProviders();
|
|
32
|
+
}
|
|
30
33
|
const { stream, complete, streamSimple, completeSimple } = defaultLlmRuntime;
|
|
31
34
|
//#endregion
|
|
32
35
|
//#region packages/ai/src/utils/overflow.ts
|
|
@@ -59,7 +62,9 @@ function isConfiguredContextSizeOverflowError(errorMessage) {
|
|
|
59
62
|
* - Kimi For Coding: "Your request exceeded model token limit: X (requested: Y)"
|
|
60
63
|
* - Cerebras: "400/413 status code (no body)"
|
|
61
64
|
* - Mistral: "Prompt contains X tokens ... too large for model with Y maximum context length"
|
|
62
|
-
* - z.ai:
|
|
65
|
+
* - z.ai: May return "tokens in request more than max tokens allowed" (code 1210),
|
|
66
|
+
* "Prompt exceeds max length" (code 1261), or accept overflow silently; handled via the
|
|
67
|
+
* error patterns or usage.input > contextWindow
|
|
63
68
|
* - Xiaomi MiMo: Truncates input to fill contextWindow exactly, then returns finish_reason "length"
|
|
64
69
|
* with output=0 (no room left to generate). Detected via stopReason "length" + zero output +
|
|
65
70
|
* input filling the context window.
|
|
@@ -70,17 +75,20 @@ const OVERFLOW_PATTERNS = [
|
|
|
70
75
|
/request_too_large/i,
|
|
71
76
|
/input is too long for requested model/i,
|
|
72
77
|
/exceeds the context window/i,
|
|
73
|
-
/exceeds (?:the )?(?:model'?s )?maximum context length of [\d,]+ tokens
|
|
78
|
+
/exceeds (?:the )?(?:model'?s )?maximum context length(?: of [\d,]+ tokens?|\s*\([\d,]+\))/i,
|
|
74
79
|
/input token count.*exceeds the maximum/i,
|
|
75
80
|
/maximum prompt length is \d+/i,
|
|
76
81
|
/reduce the length of the messages/i,
|
|
77
82
|
/maximum context length is \d+ tokens/i,
|
|
83
|
+
/exceeds (?:the )?maximum allowed input length of [\d,]+ tokens?/i,
|
|
78
84
|
/input \(\d+ tokens\) is longer than the model'?s context length \(\d+ tokens\)/i,
|
|
79
85
|
/exceeds the limit of \d+/i,
|
|
80
86
|
/exceeds the available context size/i,
|
|
81
87
|
/greater than the context length/i,
|
|
82
88
|
/context window exceeds limit/i,
|
|
83
89
|
/exceeded model token limit/i,
|
|
90
|
+
/tokens? in request more than max tokens? allowed/i,
|
|
91
|
+
/prompt exceeds max(?:imum)? length/i,
|
|
84
92
|
/too large for model with \d+ maximum context length/i,
|
|
85
93
|
CONFIGURED_CONTEXT_SIZE_OVERFLOW_RE,
|
|
86
94
|
/model_context_window_exceeded/i,
|
|
@@ -107,7 +115,7 @@ const NON_OVERFLOW_PATTERNS = [
|
|
|
107
115
|
function resolveContextInputTokens(message) {
|
|
108
116
|
if (message.usage.contextUsage?.state === "available") return message.usage.contextUsage.promptTokens;
|
|
109
117
|
if (message.usage.contextUsage?.state === "unavailable") return;
|
|
110
|
-
return message.usage.input + message.usage.cacheRead;
|
|
118
|
+
return message.usage.input + message.usage.cacheRead + message.usage.cacheWrite;
|
|
111
119
|
}
|
|
112
120
|
/**
|
|
113
121
|
* Check if an assistant message represents a context overflow error.
|
|
@@ -133,10 +141,12 @@ function resolveContextInputTokens(message) {
|
|
|
133
141
|
* - llama.cpp: "exceeds the available context size"
|
|
134
142
|
* - LM Studio: "greater than the context length"
|
|
135
143
|
* - Kimi For Coding: "exceeded model token limit: X (requested: Y)"
|
|
144
|
+
* - z.ai: "tokens in request more than max tokens allowed" or "Prompt exceeds max length"
|
|
136
145
|
*
|
|
137
146
|
* **Unreliable detection:**
|
|
138
147
|
* - z.ai: Sometimes accepts overflow silently (detectable via usage.input > contextWindow),
|
|
139
|
-
* sometimes returns rate limit errors
|
|
148
|
+
* sometimes returns rate limit errors instead of the explicit overflow error above. Pass
|
|
149
|
+
* contextWindow param to detect silent overflow.
|
|
140
150
|
* - Xiaomi MiMo: Truncates input to fit contextWindow then returns stopReason "length" with
|
|
141
151
|
* output=0. Pass contextWindow param to detect via the "filled context + zero output" signal.
|
|
142
152
|
* - Ollama: May truncate input silently for some setups, but may also return explicit
|
|
@@ -174,4 +184,4 @@ function isContextOverflow(message, contextWindow) {
|
|
|
174
184
|
return false;
|
|
175
185
|
}
|
|
176
186
|
//#endregion
|
|
177
|
-
export { applyProviderReportedUsageCost, calculateCost, clampThinkingLevel, cleanupSessionResources, clearApiProviders, complete, completeSimple, createDeferredEventBuffer, createFirstStreamEventAbortController, createFirstStreamEventTimeoutError, createReasoningTagTextPartitioner, createSseByteGuard, decodeOpenAICodexJwtPayload, defaultApiRegistry, defaultLlmRuntime, findEnvKeys, getApiProvider, getApiProviders, getEnvApiKey, getFirstStreamEventTimeoutHandler, getFirstStreamEventTimeoutMs, getSupportedThinkingLevels, headersToRecord, isConfiguredContextSizeOverflowError, isContextOverflow, modelsAreEqual, notifyLlmRequestActivity, onLlmRequestActivity, parseJsonWithRepair, parseStreamingJson,
|
|
187
|
+
export { applyProviderReportedUsageCost, calculateCost, clampThinkingLevel, cleanupSessionResources, clearApiProviders, complete, completeSimple, createDeferredEventBuffer, createFirstStreamEventAbortController, createFirstStreamEventTimeoutError, createReasoningTagTextPartitioner, createSseByteGuard, decodeOpenAICodexJwtPayload, defaultApiRegistry, defaultLlmRuntime, findEnvKeys, getApiProvider, getApiProviders, getEnvApiKey, getFirstStreamEventTimeoutHandler, getFirstStreamEventTimeoutMs, getSupportedThinkingLevels, headersToRecord, isConfiguredContextSizeOverflowError, isContextOverflow, modelsAreEqual, notifyLlmRequestActivity, onLlmRequestActivity, parseJsonWithRepair, parseStreamingJson, registerSessionResourceCleanup, repairJson, resolveOpenAICodexAccountId, sanitizeSurrogates, shortHash, stream, streamSimple, withFirstStreamEventTimeout };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { E as Model, F as SimpleStreamOptions, H as ThinkingBudgets, T as Message, W as ThinkingLevel, i as AssistantMessage, n as Api, z as StreamOptions } from "../types-
|
|
1
|
+
import { E as Model, F as SimpleStreamOptions, H as ThinkingBudgets, T as Message, W as ThinkingLevel, i as AssistantMessage, n as Api, z as StreamOptions } from "../types-AFwwWium.mjs";
|
|
2
2
|
import { t as sanitizeSurrogates } from "../sanitize-unicode-BZiVbGwK.mjs";
|
|
3
3
|
|
|
4
4
|
//#region packages/ai/src/providers/simple-options.d.ts
|
|
@@ -7,6 +7,8 @@ type FirstEventStreamOptions = {
|
|
|
7
7
|
onFirstEventTimeout?: (reason: Error) => void;
|
|
8
8
|
};
|
|
9
9
|
declare function buildBaseOptions(model: Model, options?: SimpleStreamOptions, apiKey?: string): StreamOptions & FirstEventStreamOptions;
|
|
10
|
+
declare function clampMaxTokensToModel(model: Model, requestedMaxTokens: number): number;
|
|
11
|
+
declare function clampMaxTokensToModel(model: Model, requestedMaxTokens: number | undefined): number | undefined;
|
|
10
12
|
declare function clampReasoning(effort: ThinkingLevel): Exclude<ThinkingLevel, "xhigh">;
|
|
11
13
|
declare function clampReasoning(effort: ThinkingLevel | undefined): Exclude<ThinkingLevel, "xhigh"> | undefined;
|
|
12
14
|
declare function adjustMaxTokensForThinking(baseMaxTokens: number | undefined, modelMaxTokens: number, reasoningLevel: ThinkingLevel, customBudgets?: ThinkingBudgets): {
|
|
@@ -55,4 +57,4 @@ declare function prependSystemPromptAdditionAfterCacheBoundary(params: {
|
|
|
55
57
|
systemPromptAddition?: string;
|
|
56
58
|
}): string;
|
|
57
59
|
//#endregion
|
|
58
|
-
export { SYSTEM_PROMPT_CACHE_BOUNDARY, adjustMaxTokensForThinking, buildBaseOptions, clampReasoning, describeToolResultMediaPlaceholder, ensureSystemPromptCacheBoundary, extractToolResultBlockText, extractToolResultText, hasMediaPayload, isImageWithMediaPayload, normalizePromptCapabilityIds, normalizeStructuredPromptSection, prependSystemPromptAdditionAfterCacheBoundary, sanitizeSurrogates, splitSystemPromptCacheBoundary, stripSystemPromptCacheBoundary, transformMessages };
|
|
60
|
+
export { SYSTEM_PROMPT_CACHE_BOUNDARY, adjustMaxTokensForThinking, buildBaseOptions, clampMaxTokensToModel, clampReasoning, describeToolResultMediaPlaceholder, ensureSystemPromptCacheBoundary, extractToolResultBlockText, extractToolResultText, hasMediaPayload, isImageWithMediaPayload, normalizePromptCapabilityIds, normalizeStructuredPromptSection, prependSystemPromptAdditionAfterCacheBoundary, sanitizeSurrogates, splitSystemPromptCacheBoundary, stripSystemPromptCacheBoundary, transformMessages };
|
package/dist/internal/shared.mjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
+
import { C as isImageWithMediaPayload, D as buildBaseOptions, E as adjustMaxTokensForThinking, O as clampMaxTokensToModel, S as hasMediaPayload, a as stripSystemPromptCacheBoundary, b as extractToolResultBlockText, c as transformMessages, i as splitSystemPromptCacheBoundary, k as clampReasoning, n as ensureSystemPromptCacheBoundary, o as normalizePromptCapabilityIds, r as prependSystemPromptAdditionAfterCacheBoundary, s as normalizeStructuredPromptSection, t as SYSTEM_PROMPT_CACHE_BOUNDARY, x as extractToolResultText, y as describeToolResultMediaPlaceholder } from "../system-prompt-cache-boundary-CbHeV4_l.mjs";
|
|
1
2
|
import { t as sanitizeSurrogates } from "../sanitize-unicode-DT5o51ur.mjs";
|
|
2
|
-
|
|
3
|
-
export { SYSTEM_PROMPT_CACHE_BOUNDARY, adjustMaxTokensForThinking, buildBaseOptions, clampReasoning, describeToolResultMediaPlaceholder, ensureSystemPromptCacheBoundary, extractToolResultBlockText, extractToolResultText, hasMediaPayload, isImageWithMediaPayload, normalizePromptCapabilityIds, normalizeStructuredPromptSection, prependSystemPromptAdditionAfterCacheBoundary, sanitizeSurrogates, splitSystemPromptCacheBoundary, stripSystemPromptCacheBoundary, transformMessages };
|
|
3
|
+
export { SYSTEM_PROMPT_CACHE_BOUNDARY, adjustMaxTokensForThinking, buildBaseOptions, clampMaxTokensToModel, clampReasoning, describeToolResultMediaPlaceholder, ensureSystemPromptCacheBoundary, extractToolResultBlockText, extractToolResultText, hasMediaPayload, isImageWithMediaPayload, normalizePromptCapabilityIds, normalizeStructuredPromptSection, prependSystemPromptAdditionAfterCacheBoundary, sanitizeSurrogates, splitSystemPromptCacheBoundary, stripSystemPromptCacheBoundary, transformMessages };
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { n as getEnvApiKey } from "./env-api-keys-
|
|
1
|
+
import { n as getEnvApiKey } from "./env-api-keys-DrgeBuva.mjs";
|
|
2
2
|
import { t as AssistantMessageEventStream } from "./event-stream-D8n2uFee.mjs";
|
|
3
|
-
import { n as getAiTransportHost } from "./host-
|
|
4
|
-
import {
|
|
5
|
-
import { n as parseStreamingJson } from "./json-parse-BvXNt1-7.mjs";
|
|
3
|
+
import { n as getAiTransportHost } from "./host-XYGZcgO8.mjs";
|
|
4
|
+
import { C as isImageWithMediaPayload, D as buildBaseOptions, O as clampMaxTokensToModel, a as stripSystemPromptCacheBoundary, c as transformMessages, w as truncateUtf16Safe, x as extractToolResultText, y as describeToolResultMediaPlaceholder } from "./system-prompt-cache-boundary-CbHeV4_l.mjs";
|
|
6
5
|
import { t as sanitizeSurrogates } from "./sanitize-unicode-DT5o51ur.mjs";
|
|
7
|
-
import {
|
|
6
|
+
import { n as calculateCost, r as clampThinkingLevel } from "./model-utils-1GiZ2_rr.mjs";
|
|
7
|
+
import { n as parseStreamingJson } from "./json-parse-BvXNt1-7.mjs";
|
|
8
8
|
import { t as shortHash } from "./hash-CHgqbJmD.mjs";
|
|
9
9
|
import { t as createSseByteGuard } from "./streaming-byte-guard-BrbkbwUu.mjs";
|
|
10
10
|
import { randomUUID } from "node:crypto";
|
|
@@ -75,7 +75,7 @@ const streamMistral = (model, context, options) => {
|
|
|
75
75
|
...model.headers,
|
|
76
76
|
...options?.headers
|
|
77
77
|
};
|
|
78
|
-
if (options?.sessionId) headers["x-affinity"] ||= options.sessionId;
|
|
78
|
+
if (resolveMistralPromptCacheKey(options) && options?.sessionId) headers["x-affinity"] ||= options.sessionId;
|
|
79
79
|
const mistralStream = await mistral.chat.stream(payload, {
|
|
80
80
|
headers,
|
|
81
81
|
signal: options?.signal
|
|
@@ -113,7 +113,10 @@ const streamMistral = (model, context, options) => {
|
|
|
113
113
|
const streamSimpleMistral = (model, context, options) => {
|
|
114
114
|
const apiKey = options?.apiKey || getEnvApiKey(model.provider);
|
|
115
115
|
if (!apiKey) throw new Error(`No API key for provider: ${model.provider}`);
|
|
116
|
-
const base =
|
|
116
|
+
const base = {
|
|
117
|
+
...buildBaseOptions(model, options, apiKey),
|
|
118
|
+
maxTokens: clampMaxTokensToModel(model, options?.maxTokens)
|
|
119
|
+
};
|
|
117
120
|
const clampedReasoning = options?.reasoning ? clampThinkingLevel(model, options.reasoning) : void 0;
|
|
118
121
|
const reasoning = clampedReasoning === "off" ? void 0 : clampedReasoning;
|
|
119
122
|
const shouldUseReasoning = model.reasoning && reasoning !== void 0;
|
|
@@ -218,12 +221,23 @@ function buildChatPayload(model, context, messages, options) {
|
|
|
218
221
|
}
|
|
219
222
|
if (options?.promptMode) payload.promptMode = options.promptMode;
|
|
220
223
|
if (options?.reasoningEffort) payload.reasoningEffort = options.reasoningEffort;
|
|
224
|
+
const promptCacheKey = resolveMistralPromptCacheKey(options);
|
|
225
|
+
if (promptCacheKey) payload.promptCacheKey = promptCacheKey;
|
|
221
226
|
if (context.systemPrompt) payload.messages.unshift({
|
|
222
227
|
role: "system",
|
|
223
228
|
content: sanitizeSurrogates(stripSystemPromptCacheBoundary(context.systemPrompt))
|
|
224
229
|
});
|
|
225
230
|
return payload;
|
|
226
231
|
}
|
|
232
|
+
function resolveMistralPromptCacheKey(options) {
|
|
233
|
+
if (options?.cacheRetention === "none") return;
|
|
234
|
+
return options?.promptCacheKey?.trim() || options?.sessionId?.trim() || void 0;
|
|
235
|
+
}
|
|
236
|
+
function readMistralCachedPromptTokens(usage, promptTokens) {
|
|
237
|
+
const record = usage;
|
|
238
|
+
const rawCachedTokens = record.promptTokensDetails?.cachedTokens ?? record.prompt_tokens_details?.cached_tokens ?? record.cachedTokens ?? record.cached_tokens;
|
|
239
|
+
return Math.min(promptTokens, Math.max(0, typeof rawCachedTokens === "number" && Number.isFinite(rawCachedTokens) ? rawCachedTokens : 0));
|
|
240
|
+
}
|
|
227
241
|
async function consumeChatStream(model, output, stream, mistralStream) {
|
|
228
242
|
let currentBlock = null;
|
|
229
243
|
const blocks = output.content;
|
|
@@ -309,11 +323,13 @@ async function consumeChatStream(model, output, stream, mistralStream) {
|
|
|
309
323
|
const chunk = event.data;
|
|
310
324
|
output.responseId ||= chunk.id;
|
|
311
325
|
if (chunk.usage) {
|
|
312
|
-
|
|
326
|
+
const promptTokens = chunk.usage.promptTokens || 0;
|
|
327
|
+
const cachedPromptTokens = readMistralCachedPromptTokens(chunk.usage, promptTokens);
|
|
328
|
+
output.usage.input = Math.max(0, promptTokens - cachedPromptTokens);
|
|
313
329
|
output.usage.output = chunk.usage.completionTokens || 0;
|
|
314
|
-
output.usage.cacheRead =
|
|
330
|
+
output.usage.cacheRead = cachedPromptTokens;
|
|
315
331
|
output.usage.cacheWrite = 0;
|
|
316
|
-
output.usage.totalTokens = chunk.usage.totalTokens || output.usage.input + output.usage.output;
|
|
332
|
+
output.usage.totalTokens = chunk.usage.totalTokens || output.usage.input + output.usage.output + output.usage.cacheRead;
|
|
317
333
|
calculateCost(model, output.usage);
|
|
318
334
|
}
|
|
319
335
|
const choice = chunk.choices[0];
|
|
@@ -2,10 +2,12 @@ import { c as resolveClaudeNativeThinkingLevelMap, i as requiresClaudeMandatoryA
|
|
|
2
2
|
//#region packages/ai/src/model-utils.ts
|
|
3
3
|
/** Calculates and stores model cost fields from token usage and per-million pricing. */
|
|
4
4
|
function calculateCost(model, usage) {
|
|
5
|
+
const cacheWrite1h = Math.min(usage.cacheWrite, Math.max(0, usage.cacheWrite1h ?? 0));
|
|
6
|
+
const cacheWrite5m = usage.cacheWrite - cacheWrite1h;
|
|
5
7
|
usage.cost.input = model.cost.input / 1e6 * usage.input;
|
|
6
8
|
usage.cost.output = model.cost.output / 1e6 * usage.output;
|
|
7
9
|
usage.cost.cacheRead = model.cost.cacheRead / 1e6 * usage.cacheRead;
|
|
8
|
-
usage.cost.cacheWrite = model.cost.cacheWrite
|
|
10
|
+
usage.cost.cacheWrite = (model.cost.cacheWrite * cacheWrite5m + model.cost.input * 2 * cacheWrite1h) / 1e6;
|
|
9
11
|
usage.cost.total = usage.cost.input + usage.cost.output + usage.cost.cacheRead + usage.cost.cacheWrite;
|
|
10
12
|
return usage.cost;
|
|
11
13
|
}
|