@openclaw/ai 0.0.0 → 2026.7.1-2

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 (64) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +27 -3
  3. package/dist/anthropic-B5gZQM5X.mjs +1383 -0
  4. package/dist/api-registry-BXYnCOIR.d.mts +33 -0
  5. package/dist/azure-openai-responses-DNoSk8Uy.mjs +141 -0
  6. package/dist/azure-openai-responses-client-compat-a_O_GVQV.mjs +41 -0
  7. package/dist/diagnostics-BaTA9eVl.d.mts +25 -0
  8. package/dist/diagnostics-COpOtRwq.mjs +36 -0
  9. package/dist/diagnostics.d.mts +2 -0
  10. package/dist/diagnostics.mjs +2 -0
  11. package/dist/env-api-keys-CtMlqaQ4.mjs +171 -0
  12. package/dist/event-stream-0nZeBKl2.d.mts +26 -0
  13. package/dist/event-stream-ReMmOTzX.mjs +65 -0
  14. package/dist/event-stream.d.mts +2 -0
  15. package/dist/event-stream.mjs +2 -0
  16. package/dist/github-copilot-headers-BsH5cqGj.mjs +48 -0
  17. package/dist/google-D6sIQ1bL.mjs +55 -0
  18. package/dist/google-shared-ZPSl2qTi.mjs +548 -0
  19. package/dist/google-vertex-rDGwkoZK.mjs +111 -0
  20. package/dist/hash-CHgqbJmD.mjs +16 -0
  21. package/dist/headers-B_e4-1J0.mjs +9 -0
  22. package/dist/host-4t713IeR.mjs +37 -0
  23. package/dist/index-BoTnz8cv.d.mts +74 -0
  24. package/dist/index.d.mts +69 -0
  25. package/dist/index.mjs +7 -0
  26. package/dist/internal/anthropic.d.mts +234 -0
  27. package/dist/internal/anthropic.mjs +4 -0
  28. package/dist/internal/openai.d.mts +244 -0
  29. package/dist/internal/openai.mjs +7 -0
  30. package/dist/internal/runtime.d.mts +245 -0
  31. package/dist/internal/runtime.mjs +176 -0
  32. package/dist/internal/shared.d.mts +48 -0
  33. package/dist/internal/shared.mjs +3 -0
  34. package/dist/json-parse-DzNSIQBq.mjs +134 -0
  35. package/dist/llm-request-activity-CehVkZP-.mjs +35 -0
  36. package/dist/mistral-CePVNdws.mjs +563 -0
  37. package/dist/model-utils-DgmOla96.mjs +69 -0
  38. package/dist/openai-chatgpt-jwt-DhAAzLkj.mjs +39 -0
  39. package/dist/openai-chatgpt-responses-DVC4Bk_A.mjs +1068 -0
  40. package/dist/openai-completions-B9QLIq2U.mjs +844 -0
  41. package/dist/openai-responses-B6LylGxM.mjs +136 -0
  42. package/dist/openai-responses-shared-sj2YUPYc.mjs +1944 -0
  43. package/dist/openai-tool-projection-BknoV11q.mjs +195 -0
  44. package/dist/providers.d.mts +11 -0
  45. package/dist/providers.mjs +109 -0
  46. package/dist/reasoning-tag-text-partitioner-axhAdUwg.mjs +394 -0
  47. package/dist/sanitize-unicode-BZiVbGwK.d.mts +24 -0
  48. package/dist/sanitize-unicode-DT5o51ur.mjs +26 -0
  49. package/dist/src-CZ503MYJ.mjs +99 -0
  50. package/dist/stream-CREqxHgU.mjs +74 -0
  51. package/dist/stream-first-event-timeout-RjWszj8c.mjs +106 -0
  52. package/dist/streaming-byte-guard-BrbkbwUu.mjs +46 -0
  53. package/dist/tool-schema-json-projection-BXtBc_mD.mjs +74 -0
  54. package/dist/transform-messages-BhGF_fF4.mjs +507 -0
  55. package/dist/types-BVVgDSdq.d.mts +1 -0
  56. package/dist/types-DRgdPqaZ.d.mts +587 -0
  57. package/dist/types.d.mts +6 -0
  58. package/dist/types.mjs +5 -0
  59. package/dist/validation-BDMWOr8d.d.mts +9 -0
  60. package/dist/validation-FrchoOlv.mjs +199 -0
  61. package/dist/validation.d.mts +2 -0
  62. package/dist/validation.mjs +2 -0
  63. package/npm-shrinkwrap.json +645 -0
  64. package/package.json +74 -2
@@ -0,0 +1,244 @@
1
+ import { E as Model, F as SimpleStreamOptions, I as StopReason, O as OpenAICompletionsCompat, R as StreamFunction, u as Context, z as StreamOptions } from "../types-DRgdPqaZ.mjs";
2
+ import OpenAI from "openai";
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
+ /** Resolves the Azure deployment name for a model id, falling back to the model id. */
42
+ declare function resolveAzureDeploymentNameFromMap(params: {
43
+ modelId: string;
44
+ deploymentMap?: string;
45
+ }): string;
46
+ //#endregion
47
+ //#region packages/ai/src/providers/azure-openai-responses-client-compat.d.ts
48
+ declare function isTraditionalAzureOpenAIHost(hostname: string): boolean;
49
+ declare function isOpenAICompatibleAzureResponsesBaseUrl(baseUrl: string): boolean;
50
+ //#endregion
51
+ //#region packages/ai/src/providers/clean-for-gemini.d.ts
52
+ declare const GEMINI_UNSUPPORTED_SCHEMA_KEYWORDS: Set<string>;
53
+ declare function cleanSchemaForGemini(schema: unknown): TSchema;
54
+ //#endregion
55
+ //#region packages/ai/src/providers/openai-tool-projection.d.ts
56
+ type OpenAIToolDescriptor = {
57
+ readonly name?: unknown;
58
+ readonly description?: unknown;
59
+ readonly parameters: unknown;
60
+ };
61
+ type OpenAIProjectedTool = {
62
+ readonly toolIndex: number;
63
+ readonly name: string;
64
+ readonly description?: string;
65
+ readonly parameters: Record<string, unknown>;
66
+ };
67
+ type OpenAIToolProjectionDiagnostic = {
68
+ readonly toolIndex: number;
69
+ readonly toolName?: string;
70
+ readonly violations: readonly string[];
71
+ };
72
+ type OpenAIToolProjection = {
73
+ readonly inputToolCount: number;
74
+ readonly tools: readonly OpenAIProjectedTool[];
75
+ readonly diagnostics: readonly OpenAIToolProjectionDiagnostic[];
76
+ };
77
+ type OpenAIResponsesToolChoice = ResponseCreateParamsStreaming["tool_choice"];
78
+ type OpenAICompletionsSdkToolChoice = OpenAI.Chat.Completions.ChatCompletionCreateParamsStreaming["tool_choice"];
79
+ type OpenAICompletionsToolChoice = Exclude<OpenAICompletionsSdkToolChoice, {
80
+ type: "custom";
81
+ }>;
82
+ /** Snapshots direct/custom tool descriptors before OpenAI payload construction. */
83
+ declare function projectOpenAITools(tools: readonly OpenAIToolDescriptor[]): OpenAIToolProjection;
84
+ /** Keeps Responses tool choices aligned with surviving function schemas. */
85
+ declare function reconcileOpenAIResponsesToolChoice(choice: OpenAIResponsesToolChoice, projection: OpenAIToolProjection): OpenAIResponsesToolChoice | undefined;
86
+ /** Keeps Chat Completions tool choices aligned with surviving function schemas. */
87
+ declare function reconcileOpenAICompletionsToolChoice(choice: OpenAICompletionsSdkToolChoice, projection: OpenAIToolProjection): OpenAICompletionsSdkToolChoice | undefined;
88
+ //#endregion
89
+ //#region packages/ai/src/providers/openai-completions.d.ts
90
+ interface OpenAICompletionsOptions extends StreamOptions {
91
+ toolChoice?: OpenAICompletionsToolChoice;
92
+ reasoningEffort?: "minimal" | "low" | "medium" | "high" | "xhigh";
93
+ }
94
+ type ResolvedOpenAICompletionsCompat = Omit<Required<OpenAICompletionsCompat>, "cacheControlFormat"> & {
95
+ cacheControlFormat?: OpenAICompletionsCompat["cacheControlFormat"];
96
+ };
97
+ declare const streamOpenAICompletions: StreamFunction<"openai-completions", OpenAICompletionsOptions>;
98
+ declare const streamSimpleOpenAICompletions: StreamFunction<"openai-completions", SimpleStreamOptions>;
99
+ declare function convertMessages(model: Model<"openai-completions">, context: Context, compat: ResolvedOpenAICompletionsCompat, options?: {
100
+ cacheOptOutIndexes?: Set<number>;
101
+ preserveSystemPromptCacheBoundary?: boolean;
102
+ }): ChatCompletionMessageParam[];
103
+ //#endregion
104
+ //#region packages/ai/src/providers/openai-prompt-cache.d.ts
105
+ /** Maximum prompt cache key length accepted by OpenAI-compatible request metadata. */
106
+ declare const OPENAI_PROMPT_CACHE_KEY_MAX_LENGTH = 64;
107
+ /** Truncates a prompt cache key by Unicode code point count. */
108
+ declare function clampOpenAIPromptCacheKey(key: string | undefined): string | undefined;
109
+ //#endregion
110
+ //#region packages/ai/src/providers/openai-reasoning-effort.d.ts
111
+ type OpenAIReasoningEffort = "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max";
112
+ type OpenAIApiReasoningEffort = OpenAIReasoningEffort | (string & {});
113
+ type OpenAIReasoningModel = {
114
+ provider?: unknown;
115
+ id?: unknown;
116
+ name?: unknown;
117
+ api?: unknown;
118
+ baseUrl?: unknown;
119
+ compat?: unknown;
120
+ };
121
+ /** Return whether a model is the GPT-5.4 mini family. */
122
+ declare function isOpenAIGpt54MiniModel(model: OpenAIReasoningModel): boolean;
123
+ /** Return whether a model is the GPT-5.5 family. */
124
+ declare function isOpenAIGpt55Model(model: OpenAIReasoningModel): boolean;
125
+ /** Return whether a model is the GPT-5.6 family. */
126
+ declare function isOpenAIGpt56Model(model: OpenAIReasoningModel): boolean;
127
+ /** Normalize user-facing reasoning effort names to API effort names. */
128
+ declare function normalizeOpenAIReasoningEffort(effort: string): string;
129
+ /** Resolve the reasoning efforts accepted by a specific OpenAI-compatible model. */
130
+ declare function resolveOpenAISupportedReasoningEfforts(model: OpenAIReasoningModel): readonly OpenAIApiReasoningEffort[];
131
+ /** Return whether a model accepts a requested reasoning effort. */
132
+ declare function supportsOpenAIReasoningEffort(model: OpenAIReasoningModel, effort: string): boolean;
133
+ /** Resolve a requested reasoning effort to the closest value supported by the model. */
134
+ declare function resolveOpenAIReasoningEffortForModel(params: {
135
+ model: OpenAIReasoningModel;
136
+ effort: string;
137
+ fallbackMap?: Record<string, string>;
138
+ }): OpenAIApiReasoningEffort | undefined;
139
+ //#endregion
140
+ //#region packages/ai/src/providers/openai-responses.d.ts
141
+ interface OpenAIResponsesOptions extends StreamOptions {
142
+ reasoningEffort?: "minimal" | "low" | "medium" | "high" | "xhigh" | "max";
143
+ reasoningSummary?: "auto" | "detailed" | "concise" | null;
144
+ replayResponsesItemIds?: boolean;
145
+ serviceTier?: ResponseCreateParamsStreaming["service_tier"];
146
+ }
147
+ /**
148
+ * Generate function for OpenAI Responses API
149
+ */
150
+ declare const streamOpenAIResponses: StreamFunction<"openai-responses", OpenAIResponsesOptions>;
151
+ declare const streamSimpleOpenAIResponses: StreamFunction<"openai-responses", SimpleStreamOptions>;
152
+ //#endregion
153
+ //#region packages/ai/src/providers/openai-responses-stream-compat.d.ts
154
+ declare const OPENAI_RESPONSES_OUTPUT_TEXT_CONTENT_PART_TYPE = "output_text";
155
+ declare const AZURE_RESPONSES_TEXT_CONTENT_PART_TYPE = "text";
156
+ declare const OPENAI_RESPONSES_OUTPUT_TEXT_DELTA_EVENT_TYPE = "response.output_text.delta";
157
+ declare const AZURE_RESPONSES_TEXT_DELTA_EVENT_TYPE = "response.text.delta";
158
+ type ResponsesTextContentPartType = typeof OPENAI_RESPONSES_OUTPUT_TEXT_CONTENT_PART_TYPE | typeof AZURE_RESPONSES_TEXT_CONTENT_PART_TYPE;
159
+ type ResponsesTextDeltaEventType = typeof OPENAI_RESPONSES_OUTPUT_TEXT_DELTA_EVENT_TYPE | typeof AZURE_RESPONSES_TEXT_DELTA_EVENT_TYPE;
160
+ type AzureResponsesTextContentPart = {
161
+ type: typeof AZURE_RESPONSES_TEXT_CONTENT_PART_TYPE;
162
+ text: string;
163
+ };
164
+ type AzureResponsesTextDeltaEvent = {
165
+ type: typeof AZURE_RESPONSES_TEXT_DELTA_EVENT_TYPE;
166
+ delta: string;
167
+ };
168
+ declare function isResponsesTextContentPartType(type: unknown): type is ResponsesTextContentPartType;
169
+ declare function isResponsesTextDeltaEventType(type: unknown): type is ResponsesTextDeltaEventType;
170
+ declare function isAzureResponsesTextDeltaEventType(type: unknown): type is typeof AZURE_RESPONSES_TEXT_DELTA_EVENT_TYPE;
171
+ declare function isAzureResponsesTextDeltaEvent(event: {
172
+ type?: unknown;
173
+ delta?: unknown;
174
+ }): event is AzureResponsesTextDeltaEvent;
175
+ type ResponsesMessageSnapshotCollapse = {
176
+ kind: "extend";
177
+ text: string;
178
+ } | {
179
+ kind: "keep";
180
+ };
181
+ declare function resolveResponsesMessageSnapshotCollapse(params: {
182
+ prior: {
183
+ text: string;
184
+ phase: string | undefined;
185
+ } | null;
186
+ nextText: string;
187
+ nextPhase: string | undefined;
188
+ }): ResponsesMessageSnapshotCollapse;
189
+ //#endregion
190
+ //#region packages/ai/src/providers/openai-stop-reason.d.ts
191
+ type OpenAIStopReasonResult = {
192
+ stopReason: StopReason;
193
+ errorMessage?: string;
194
+ };
195
+ declare function mapOpenAIStopReason(reason: string | null, options?: {
196
+ allowSingularToolCall?: boolean;
197
+ }): OpenAIStopReasonResult;
198
+ //#endregion
199
+ //#region packages/ai/src/providers/openai-tool-schema.d.ts
200
+ /**
201
+ * OpenAI strict-tool-schema normalization and diagnostics.
202
+ *
203
+ * Strict schemas need all object properties required and `additionalProperties: false`; model
204
+ * compatibility settings can also remove unsupported schema constructs before strict checks run.
205
+ */
206
+ type ToolSchemaCompatInput = {
207
+ unsupportedToolSchemaKeywords?: unknown;
208
+ omitEmptyArrayItems?: unknown;
209
+ };
210
+ declare function clearOpenAIToolSchemaCacheForTest(): void;
211
+ /** Normalizes a tool parameter schema into the OpenAI strict JSON-schema subset. */
212
+ declare function normalizeStrictOpenAIJsonSchema(schema: unknown, modelCompat?: ToolSchemaCompatInput | null): unknown;
213
+ /** Normalizes tool parameters using strict OpenAI rules only when strict mode is active. */
214
+ declare function normalizeOpenAIStrictToolParameters<T>(schema: T, strict: boolean, modelCompat?: ToolSchemaCompatInput | null): T;
215
+ /** Returns whether a schema already satisfies OpenAI strict tool-schema constraints. */
216
+ declare function isStrictOpenAIJsonSchemaCompatible(schema: unknown): boolean;
217
+ type OpenAIStrictToolSchemaDiagnostic = {
218
+ toolIndex: number;
219
+ toolName?: string;
220
+ violations: string[];
221
+ };
222
+ /** Returns strict-schema diagnostics for an already materialized OpenAI tool projection. */
223
+ declare function findOpenAIStrictToolProjectionDiagnostics(projection: OpenAIToolProjection): OpenAIStrictToolSchemaDiagnostic[];
224
+ /** Resolves strict mode for the projected tools that will be emitted in the request payload. */
225
+ declare function resolveOpenAIProjectedToolsStrictToolFlag(projection: OpenAIToolProjection, strict: boolean | null | undefined): boolean | undefined;
226
+ //#endregion
227
+ //#region packages/ai/src/providers/schema-keyword-strip.d.ts
228
+ /** Recursively remove schema keywords unsupported by a target provider/tool surface. */
229
+ declare function stripUnsupportedSchemaKeywords(schema: unknown, unsupportedKeywords: ReadonlySet<string>): unknown;
230
+ //#endregion
231
+ //#region packages/ai/src/providers/tool-schema-json-projection.d.ts
232
+ /** JSON-safe schema value used when projecting runtime tool parameters. */
233
+ type RuntimeToolInputSchemaJson = null | boolean | number | string | RuntimeToolInputSchemaJson[] | {
234
+ [key: string]: RuntimeToolInputSchemaJson;
235
+ };
236
+ /** Projected runtime tool schema plus validation violations. */
237
+ type RuntimeToolInputSchemaProjection = {
238
+ readonly schema: RuntimeToolInputSchemaJson;
239
+ readonly violations: readonly string[];
240
+ };
241
+ /** Projects one runtime tool input schema to JSON and reports runtime incompatibilities. */
242
+ declare function projectRuntimeToolInputSchema(schema: unknown, path?: string): RuntimeToolInputSchemaProjection;
243
+ //#endregion
244
+ 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, RuntimeToolInputSchemaJson, RuntimeToolInputSchemaProjection, ToolParameterSchemaOptions, ToolSchemaModelCompat, clampOpenAIPromptCacheKey, cleanSchemaForGemini, clearOpenAIToolSchemaCacheForTest, convertMessages, extractToolSchemaModelCompat, findOpenAIStrictToolProjectionDiagnostics, isAzureResponsesTextDeltaEvent, isAzureResponsesTextDeltaEventType, isOpenAICompatibleAzureResponsesBaseUrl, isOpenAIGpt54MiniModel, isOpenAIGpt55Model, isOpenAIGpt56Model, isResponsesTextContentPartType, isResponsesTextDeltaEventType, isStrictOpenAIJsonSchemaCompatible, isTraditionalAzureOpenAIHost, mapOpenAIStopReason, normalizeOpenAIReasoningEffort, normalizeOpenAIStrictToolParameters, normalizeStrictOpenAIJsonSchema, normalizeToolParameterSchema, parseAzureDeploymentNameMap, projectOpenAITools, projectRuntimeToolInputSchema, reconcileOpenAICompletionsToolChoice, reconcileOpenAIResponsesToolChoice, resolveAzureDeploymentNameFromMap, resolveOpenAIProjectedToolsStrictToolFlag, resolveOpenAIReasoningEffortForModel, resolveOpenAISupportedReasoningEfforts, resolveResponsesMessageSnapshotCollapse, resolveUnsupportedToolSchemaKeywords, shouldOmitEmptyArrayItems, streamOpenAICompletions, streamOpenAIResponses, streamSimpleOpenAICompletions, streamSimpleOpenAIResponses, stripUnsupportedSchemaKeywords, supportsOpenAIReasoningEffort };
@@ -0,0 +1,7 @@
1
+ import { t as projectRuntimeToolInputSchema } from "../tool-schema-json-projection-BXtBc_mD.mjs";
2
+ import { A as extractToolSchemaModelCompat, C as isOpenAIGpt54MiniModel, D as resolveOpenAIReasoningEffortForModel, E as normalizeOpenAIReasoningEffort, F as GEMINI_UNSUPPORTED_SCHEMA_KEYWORDS, I as cleanSchemaForGemini, M as resolveUnsupportedToolSchemaKeywords, N as shouldOmitEmptyArrayItems, O as resolveOpenAISupportedReasoningEfforts, P as stripUnsupportedSchemaKeywords, S as resolveResponsesMessageSnapshotCollapse, T as isOpenAIGpt56Model, _ as OPENAI_RESPONSES_OUTPUT_TEXT_DELTA_EVENT_TYPE, b as isResponsesTextContentPartType, c as clearOpenAIToolSchemaCacheForTest, d as normalizeOpenAIStrictToolParameters, f as normalizeStrictOpenAIJsonSchema, g as OPENAI_RESPONSES_OUTPUT_TEXT_CONTENT_PART_TYPE, h as AZURE_RESPONSES_TEXT_DELTA_EVENT_TYPE, j as normalizeToolParameterSchema, k as supportsOpenAIReasoningEffort, l as findOpenAIStrictToolProjectionDiagnostics, m as AZURE_RESPONSES_TEXT_CONTENT_PART_TYPE, p as resolveOpenAIProjectedToolsStrictToolFlag, u as isStrictOpenAIJsonSchemaCompatible, v as isAzureResponsesTextDeltaEvent, w as isOpenAIGpt55Model, x as isResponsesTextDeltaEventType, y as isAzureResponsesTextDeltaEventType } from "../openai-responses-shared-sj2YUPYc.mjs";
3
+ import { i as resolveAzureDeploymentNameFromMap, n as isTraditionalAzureOpenAIHost, r as parseAzureDeploymentNameMap, t as isOpenAICompatibleAzureResponsesBaseUrl } from "../azure-openai-responses-client-compat-a_O_GVQV.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-BknoV11q.mjs";
5
+ import { a as mapOpenAIStopReason, i as streamSimpleOpenAICompletions, r as streamOpenAICompletions, t as convertMessages } from "../openai-completions-B9QLIq2U.mjs";
6
+ import { n as streamOpenAIResponses, r as streamSimpleOpenAIResponses } from "../openai-responses-B6LylGxM.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, extractToolSchemaModelCompat, findOpenAIStrictToolProjectionDiagnostics, isAzureResponsesTextDeltaEvent, isAzureResponsesTextDeltaEventType, isOpenAICompatibleAzureResponsesBaseUrl, isOpenAIGpt54MiniModel, isOpenAIGpt55Model, isOpenAIGpt56Model, isResponsesTextContentPartType, isResponsesTextDeltaEventType, isStrictOpenAIJsonSchemaCompatible, isTraditionalAzureOpenAIHost, mapOpenAIStopReason, normalizeOpenAIReasoningEffort, normalizeOpenAIStrictToolParameters, normalizeStrictOpenAIJsonSchema, normalizeToolParameterSchema, parseAzureDeploymentNameMap, projectOpenAITools, projectRuntimeToolInputSchema, reconcileOpenAICompletionsToolChoice, reconcileOpenAIResponsesToolChoice, resolveAzureDeploymentNameFromMap, resolveOpenAIProjectedToolsStrictToolFlag, resolveOpenAIReasoningEffortForModel, resolveOpenAISupportedReasoningEfforts, resolveResponsesMessageSnapshotCollapse, resolveUnsupportedToolSchemaKeywords, shouldOmitEmptyArrayItems, streamOpenAICompletions, streamOpenAIResponses, streamSimpleOpenAICompletions, streamSimpleOpenAIResponses, stripUnsupportedSchemaKeywords, supportsOpenAIReasoningEffort };
@@ -0,0 +1,245 @@
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-DRgdPqaZ.mjs";
2
+ import { a as RegisteredApiProvider, t as ApiProvider } from "../api-registry-BXYnCOIR.mjs";
3
+ import { t as sanitizeSurrogates } from "../sanitize-unicode-BZiVbGwK.mjs";
4
+
5
+ //#region packages/ai/src/internal/default-runtime.d.ts
6
+ declare const defaultApiRegistry: {
7
+ registerApiProvider: <TApi extends Api, TOptions extends StreamOptions>(provider: ApiProvider<TApi, TOptions>, sourceId?: string) => void;
8
+ getApiProvider: (api: Api) => RegisteredApiProvider | undefined;
9
+ getApiProviders: () => RegisteredApiProvider[];
10
+ unregisterApiProviders: (sourceId: string) => void;
11
+ clearApiProviders: () => void;
12
+ };
13
+ declare const defaultLlmRuntime: {
14
+ registry: {
15
+ registerApiProvider: <TApi extends Api, TOptions extends StreamOptions>(provider: ApiProvider<TApi, TOptions>, sourceId?: string) => void;
16
+ getApiProvider: (api: Api) => RegisteredApiProvider | undefined;
17
+ getApiProviders: () => RegisteredApiProvider[];
18
+ unregisterApiProviders: (sourceId: string) => void;
19
+ clearApiProviders: () => void;
20
+ };
21
+ stream: <TApi extends Api>(model: Model<TApi>, context: Context, options?: ProviderStreamOptions) => AssistantMessageEventStreamContract;
22
+ complete: <TApi extends Api>(model: Model<TApi>, context: Context, options?: ProviderStreamOptions) => Promise<AssistantMessage>;
23
+ streamSimple: <TApi extends Api>(model: Model<TApi>, context: Context, options?: SimpleStreamOptions) => AssistantMessageEventStreamContract;
24
+ completeSimple: <TApi extends Api>(model: Model<TApi>, context: Context, options?: SimpleStreamOptions) => Promise<AssistantMessage>;
25
+ };
26
+ declare const registerApiProvider: <TApi extends Api, TOptions extends StreamOptions>(provider: ApiProvider<TApi, TOptions>, sourceId?: string) => void, getApiProvider: (api: Api) => RegisteredApiProvider | undefined, getApiProviders: () => RegisteredApiProvider[], unregisterApiProviders: (sourceId: string) => void, clearApiProviders: () => void;
27
+ 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
+ //#endregion
29
+ //#region packages/ai/src/env-api-keys.d.ts
30
+ /**
31
+ * Find configured environment variables that can provide an API key for a provider.
32
+ *
33
+ * This only reports actual API key variables. It intentionally excludes ambient
34
+ * credential sources such as AWS profiles, AWS IAM credentials, and Google
35
+ * Application Default Credentials.
36
+ */
37
+ declare function findEnvKeys(provider: string): string[] | undefined;
38
+ /**
39
+ * Get API key for provider from known environment variables, e.g. OPENAI_API_KEY.
40
+ *
41
+ * Will not return API keys for providers that require OAuth tokens.
42
+ */
43
+ declare function getEnvApiKey(provider: string): string | undefined;
44
+ //#endregion
45
+ //#region packages/ai/src/model-utils.d.ts
46
+ /** Calculates and stores model cost fields from token usage and per-million pricing. */
47
+ declare function calculateCost<TApi extends Api>(model: Model<TApi>, usage: Usage): Usage["cost"];
48
+ /** Replaces the catalog estimate when the provider reports an authoritative billed total. */
49
+ declare function applyProviderReportedUsageCost(usage: Usage, reportedCost: unknown): void;
50
+ /** Returns thinking levels exposed by a reasoning-capable model. */
51
+ declare function getSupportedThinkingLevels<TApi extends Api>(model: Model<TApi>): ModelThinkingLevel[];
52
+ /** Clamps a requested thinking level to the closest supported level for a model. */
53
+ declare function clampThinkingLevel<TApi extends Api>(model: Model<TApi>, level: ModelThinkingLevel): ModelThinkingLevel;
54
+ /** Compares model identity by provider and id. */
55
+ declare function modelsAreEqual<TApi extends Api>(a: Model<TApi> | null | undefined, b: Model<TApi> | null | undefined): boolean;
56
+ //#endregion
57
+ //#region packages/ai/src/session-resources.d.ts
58
+ /** Cleanup callback for resources tied to an LLM session or all sessions. */
59
+ type SessionResourceCleanup = (sessionId?: string) => void;
60
+ /** Registers a session-resource cleanup hook and returns an unregister function. */
61
+ declare function registerSessionResourceCleanup(cleanup: SessionResourceCleanup): () => void;
62
+ /** Runs all registered cleanup hooks, aggregating failures after every hook has run. */
63
+ declare function cleanupSessionResources(sessionId?: string): void;
64
+ //#endregion
65
+ //#region packages/ai/src/utils/deferred-event-buffer.d.ts
66
+ type EventSink<T> = {
67
+ push(event: T): void;
68
+ };
69
+ declare function createDeferredEventBuffer<T>(sink: EventSink<T>, onBufferedEvent?: () => void): {
70
+ push(event: T): void;
71
+ flush(): void;
72
+ discard(): void;
73
+ };
74
+ //#endregion
75
+ //#region packages/ai/src/utils/hash.d.ts
76
+ /** Fast deterministic hash to shorten long strings */
77
+ declare function shortHash(str: string): string;
78
+ //#endregion
79
+ //#region packages/ai/src/utils/headers.d.ts
80
+ /** Converts a Headers object to a plain record for provider request handling. */
81
+ declare function headersToRecord(headers: Headers): Record<string, string>;
82
+ //#endregion
83
+ //#region packages/ai/src/utils/json-parse.d.ts
84
+ /**
85
+ * Repairs malformed JSON string literals by:
86
+ * - escaping raw control characters inside strings
87
+ * - doubling backslashes before invalid escape characters
88
+ */
89
+ declare function repairJson(json: string): string;
90
+ declare function parseJsonWithRepair(json: string): unknown;
91
+ /**
92
+ * Attempts to parse potentially incomplete JSON during streaming.
93
+ * Always returns a valid object, even if the JSON is incomplete.
94
+ *
95
+ * @param partialJson The partial JSON string from streaming
96
+ * @returns Parsed object or empty object if parsing fails
97
+ */
98
+ declare function parseStreamingJson(partialJson: string | undefined): Record<string, unknown>;
99
+ //#endregion
100
+ //#region packages/ai/src/utils/llm-request-activity.d.ts
101
+ declare function notifyLlmRequestActivity(signal: AbortSignal | undefined): void;
102
+ declare function onLlmRequestActivity(signal: AbortSignal, listener: () => void): () => void;
103
+ //#endregion
104
+ //#region packages/ai/src/utils/oauth/openai-chatgpt-jwt.d.ts
105
+ declare const OPENAI_CODEX_AUTH_CLAIM = "https://api.openai.com/auth";
106
+ type OpenAICodexJwtPayload = {
107
+ [OPENAI_CODEX_AUTH_CLAIM]?: {
108
+ chatgpt_account_id?: unknown;
109
+ };
110
+ [key: string]: unknown;
111
+ };
112
+ declare function decodeOpenAICodexJwtPayload(token: string): OpenAICodexJwtPayload | null;
113
+ declare function resolveOpenAICodexAccountId(token: string): string | null;
114
+ //#endregion
115
+ //#region packages/ai/src/utils/overflow.d.ts
116
+ /** Detects DS4-style raw token-count context overflow errors. */
117
+ declare function isConfiguredContextSizeOverflowError(errorMessage: string): boolean;
118
+ /**
119
+ * Check if an assistant message represents a context overflow error.
120
+ *
121
+ * This handles two cases:
122
+ * 1. Error-based overflow: Most providers return stopReason "error" with a
123
+ * specific error message pattern.
124
+ * 2. Silent overflow: Some providers accept overflow requests and return
125
+ * successfully. For these, we check if usage.input exceeds the context window.
126
+ *
127
+ * ## Reliability by Provider
128
+ *
129
+ * **Reliable detection (returns error with detectable message):**
130
+ * - Anthropic: "prompt is too long: X tokens > Y maximum" or "request_too_large"
131
+ * - OpenAI (Completions & Responses): "exceeds the context window" or "exceeds the model's maximum context length of X tokens"
132
+ * - Google Gemini: "input token count exceeds the maximum"
133
+ * - xAI (Grok): "maximum prompt length is X but request contains Y"
134
+ * - Groq: "reduce the length of the messages"
135
+ * - Cerebras: 400/413 status code (no body)
136
+ * - Mistral: "Prompt contains X tokens ... too large for model with Y maximum context length"
137
+ * - OpenRouter (all backends): "maximum context length is X tokens"
138
+ * - Together AI: "The input (X tokens) is longer than the model's context length (Y tokens)."
139
+ * - llama.cpp: "exceeds the available context size"
140
+ * - LM Studio: "greater than the context length"
141
+ * - Kimi For Coding: "exceeded model token limit: X (requested: Y)"
142
+ *
143
+ * **Unreliable detection:**
144
+ * - z.ai: Sometimes accepts overflow silently (detectable via usage.input > contextWindow),
145
+ * sometimes returns rate limit errors. Pass contextWindow param to detect silent overflow.
146
+ * - Xiaomi MiMo: Truncates input to fit contextWindow then returns stopReason "length" with
147
+ * output=0. Pass contextWindow param to detect via the "filled context + zero output" signal.
148
+ * - Ollama: May truncate input silently for some setups, but may also return explicit
149
+ * overflow errors that match the patterns above. Silent truncation still cannot be
150
+ * detected here because we do not know the expected token count.
151
+ *
152
+ * ## Custom Providers
153
+ *
154
+ * If you've added custom models via settings.json, this function may not detect
155
+ * overflow errors from those providers. To add support:
156
+ *
157
+ * 1. Send a request that exceeds the model's context window
158
+ * 2. Check the errorMessage in the response
159
+ * 3. Create a regex pattern that matches the error
160
+ * 4. The pattern should be added to OVERFLOW_PATTERNS in this file, or
161
+ * check the errorMessage yourself before calling this function
162
+ *
163
+ * @param message - The assistant message to check
164
+ * @param contextWindow - Optional context window size for detecting silent overflow (z.ai)
165
+ * @returns true if the message indicates a context overflow
166
+ */
167
+ declare function isContextOverflow(message: AssistantMessage, contextWindow?: number): boolean;
168
+ //#endregion
169
+ //#region packages/ai/src/utils/reasoning-tag-text-partitioner.d.ts
170
+ type ReasoningTagTextDelta = {
171
+ kind: "text";
172
+ text: string;
173
+ } | {
174
+ kind: "thinking";
175
+ text: string;
176
+ };
177
+ interface ReasoningTagTextPartitioner {
178
+ markStrict(): void;
179
+ push(chunk: string): ReasoningTagTextDelta[];
180
+ pushVisible(chunk: string): ReasoningTagTextDelta[];
181
+ flush(): ReasoningTagTextDelta[];
182
+ hasPending(): boolean;
183
+ isInsideReasoning(): boolean;
184
+ }
185
+ declare function createReasoningTagTextPartitioner(): ReasoningTagTextPartitioner;
186
+ //#endregion
187
+ //#region packages/ai/src/utils/stream-first-event-timeout.d.ts
188
+ type StreamStage = "responses" | "completions";
189
+ type FirstStreamEventTimeoutContext = {
190
+ provider?: string;
191
+ api?: string;
192
+ model?: string;
193
+ timeoutMs: number;
194
+ stage?: StreamStage;
195
+ hint?: string;
196
+ abort?: (reason: Error) => void;
197
+ onTimeout?: (reason: Error) => void;
198
+ };
199
+ type FirstStreamEventInternalOptions = {
200
+ firstEventTimeoutMs?: number;
201
+ abortFirstEventStream?: (reason: Error) => void;
202
+ onFirstEventTimeout?: (reason: Error) => void;
203
+ };
204
+ type FirstStreamEventAbortController = {
205
+ signal: AbortSignal;
206
+ abort: (reason: Error) => void;
207
+ dispose: () => void;
208
+ };
209
+ declare function getFirstStreamEventTimeoutMs(options: unknown): number | undefined;
210
+ declare function getFirstStreamEventTimeoutHandler(options: unknown): ((reason: Error) => void) | undefined;
211
+ declare function createFirstStreamEventTimeoutError(context: FirstStreamEventTimeoutContext): Error;
212
+ declare function createFirstStreamEventAbortController(parentSignal?: AbortSignal): FirstStreamEventAbortController;
213
+ declare function withFirstStreamEventTimeout<T>(stream: AsyncIterable<T>, context: FirstStreamEventTimeoutContext): AsyncIterable<T>;
214
+ //#endregion
215
+ //#region packages/ai/src/utils/streaming-byte-guard.d.ts
216
+ /**
217
+ * Bounded SSE / NDJSON stream reader guard.
218
+ *
219
+ * Wraps a `ReadableStreamDefaultReader<Uint8Array>` so the caller's existing
220
+ * chunk-by-chunk parsing logic is unchanged, but accumulated bytes are tracked
221
+ * against a hard cap. On overflow the underlying reader is cancelled and a
222
+ * canonical error is thrown. Mirrors the `readResponseWithLimit` / bounded
223
+ * JSON response pattern (see `src/agents/provider-http-errors.ts`).
224
+ *
225
+ * Internal helper for now. If extensions need it, promote to a plugin-SDK
226
+ * subpath in a separate, dedicated PR with full SDK metadata sync.
227
+ */
228
+ type SseStreamOverflow = {
229
+ size: number;
230
+ maxBytes: number;
231
+ };
232
+ type ReadSseStreamWithLimitOptions = {
233
+ maxBytes: number;
234
+ onOverflow?: (params: SseStreamOverflow) => Error;
235
+ };
236
+ type SseByteGuard = {
237
+ read(): Promise<ReadableStreamReadResult<Uint8Array>>;
238
+ cancel(reason?: unknown): Promise<void>;
239
+ totalBytes(): number;
240
+ overflowed(): boolean;
241
+ cancelled(): boolean;
242
+ };
243
+ declare function createSseByteGuard(reader: ReadableStreamDefaultReader<Uint8Array>, opts: ReadSseStreamWithLimitOptions): SseByteGuard;
244
+ //#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, registerApiProvider, registerSessionResourceCleanup, repairJson, resolveOpenAICodexAccountId, sanitizeSurrogates, shortHash, stream, streamSimple, unregisterApiProviders, withFirstStreamEventTimeout };