@openclaw/ai 2026.9.2 → 2026.9.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.
Files changed (115) hide show
  1. package/README.md +3 -2
  2. package/dist/anthropic-C4Qu4H0Z.mjs +377 -0
  3. package/dist/{anthropic-payload-policy-d46X2pR0.d.mts → anthropic-payload-policy-BZ8umAbk.d.mts} +16 -6
  4. package/dist/{anthropic-compaction-replay-DB2FGLQc.mjs → anthropic-stream-reducer-CILWF7JD.mjs} +931 -184
  5. package/dist/{api-registry-DWtPjzyn.d.mts → api-registry-ByUwIR0e.d.mts} +2 -2
  6. package/dist/assistant-output-tLt4H-iQ.mjs +16 -0
  7. package/dist/assistant-text-phase-C20rxWwP.mjs +55 -0
  8. package/dist/{azure-openai-responses-C5bZRfAP.mjs → azure-openai-responses-BAlqlKKc.mjs} +5 -5
  9. package/dist/{base64-CEFBpSkN.mjs → base64-D-su8YVo.mjs} +1 -27
  10. package/dist/{diagnostics-DfFyKeX_.mjs → diagnostics-QuErwCIl.mjs} +96 -21
  11. package/dist/diagnostics.d.mts +3 -1
  12. package/dist/diagnostics.mjs +3 -3
  13. package/dist/{event-stream-BhT5T1Ay.d.mts → event-stream-Bt5Y4Pav.d.mts} +11 -3
  14. package/dist/event-stream-C3WGFsum.d.mts +1 -0
  15. package/dist/{event-stream-BgDvQeum.mjs → event-stream-D8PARQfL.mjs} +45 -1
  16. package/dist/event-stream.d.mts +2 -2
  17. package/dist/event-stream.mjs +1 -1
  18. package/dist/{github-copilot-headers-NCJtz9i0.mjs → github-copilot-headers-B37TB3rB.mjs} +3 -10
  19. package/dist/github-copilot-request-facts-BTEBMeOv.mjs +16 -0
  20. package/dist/{google-4qeuE8iX.mjs → google-DPBAOaOW.mjs} +10 -10
  21. package/dist/google-messages-6JkpHrhJ.mjs +448 -0
  22. package/dist/google-shared-BvBeW9aq.mjs +185 -0
  23. package/dist/{google-vertex-O9BcnB6X.mjs → google-vertex-k-TMCAYD.mjs} +7 -6
  24. package/dist/{host-DjzGmdZ2.d.mts → host-4atIX-2V.d.mts} +5 -3
  25. package/dist/{host-CEvLw30U.mjs → host-B8YfDGd4.mjs} +181 -41
  26. package/dist/host-policy-Zcg_cNz8.mjs +37 -0
  27. package/dist/{index-FnHM2FcI.d.mts → index-DdD3qerf.d.mts} +4 -4
  28. package/dist/index.d.mts +7 -7
  29. package/dist/index.mjs +7 -6
  30. package/dist/internal/anthropic.d.mts +7 -7
  31. package/dist/internal/anthropic.mjs +4 -4
  32. package/dist/internal/google-model-family.d.mts +5 -0
  33. package/dist/internal/google-model-family.mjs +15 -0
  34. package/dist/internal/openai-responses-payload-policy.d.mts +3 -3
  35. package/dist/internal/openai-responses-payload-policy.mjs +3 -2
  36. package/dist/internal/openai.d.mts +8 -103
  37. package/dist/internal/openai.mjs +9 -10
  38. package/dist/internal/retry-after.d.mts +2 -4
  39. package/dist/internal/retry-after.mjs +57 -8
  40. package/dist/internal/runtime.d.mts +43 -7
  41. package/dist/internal/runtime.mjs +6 -7
  42. package/dist/internal/shared.d.mts +43 -3
  43. package/dist/internal/shared.mjs +5 -4
  44. package/dist/internal/tool-schema.d.mts +63 -0
  45. package/dist/internal/tool-schema.mjs +3 -0
  46. package/dist/{mistral-Tb6oalqH.mjs → mistral-CxUZ1jUb.mjs} +10 -37
  47. package/dist/model-transport-url-DKocrEsb.d.mts +28 -0
  48. package/dist/{openai-chatgpt-responses-yUXjPNfu.mjs → openai-chatgpt-responses-CgO6kZfo.mjs} +50 -41
  49. package/dist/{openai-completions-compat-CpjYUArk.d.mts → openai-completions-compat-eHgh5UPE.d.mts} +26 -4
  50. package/dist/{openai-completions-stream-BsrBe3Gg.mjs → openai-completions-stream-Da2vvl-S.mjs} +654 -453
  51. package/dist/openai-completions-yJuk7eis.mjs +187 -0
  52. package/dist/openai-prompt-cache-B4eYo2-I.d.mts +16 -0
  53. package/dist/openai-prompt-cache-Bds-n_9Q.mjs +220 -0
  54. package/dist/openai-provider-client-S2gCrM2Z.mjs +24 -0
  55. package/dist/{openai-responses-CCL41ALM.mjs → openai-responses-DaYwH05E.mjs} +14 -29
  56. package/dist/{openai-responses-compaction-window-BMVHFOtq.mjs → openai-responses-compaction-window-CIhBAkkq.mjs} +6 -246
  57. package/dist/{openai-responses-contracts-rF5DDRNS.d.mts → openai-responses-contracts-BjBAqAg_.d.mts} +5 -38
  58. package/dist/openai-responses-contracts-DDOHA62Y.mjs +245 -0
  59. package/dist/{openai-responses-prompt-observer-internal-D0bhBfgL.mjs → openai-responses-prompt-observer-internal-f8J7wpsk.mjs} +3 -3
  60. package/dist/{openai-responses-shared-Bmma_3Qc.mjs → openai-responses-shared-B8RdBPCv.mjs} +47 -118
  61. package/dist/openai-tool-projection-793cE3QX.d.mts +37 -0
  62. package/dist/{openai-tool-schema-_pTAJqKF.mjs → openai-tool-schema-CzjyYXun.mjs} +38 -556
  63. package/dist/openai-tool-schema-ynZBgqW-.d.mts +38 -0
  64. package/dist/openai-transport-params-9aPuV5YY.mjs +675 -0
  65. package/dist/positive-integer-41zhOdcV.mjs +8 -0
  66. package/dist/{provider-error-9TraxGvt.mjs → provider-error-BA-v_tKd.mjs} +70 -11
  67. package/dist/{provider-options-Bcc_p-TU.d.mts → provider-options-Ceqv1OKk.d.mts} +4 -39
  68. package/dist/{provider-replay-context-BuSUaAk5.mjs → provider-replay-context-CJ_YvcEW.mjs} +1 -1
  69. package/dist/{provider-transcript-transform-BaMbI1hr.mjs → provider-transcript-transform-V5YzU9zh.mjs} +1 -1
  70. package/dist/provider-transport-turn-state-D5EXOFL2.mjs +42 -0
  71. package/dist/provider-types-CVjKjsuq.d.mts +29 -0
  72. package/dist/provider-types.d.mts +6 -31
  73. package/dist/providers.d.mts +2 -2
  74. package/dist/providers.mjs +11 -11
  75. package/dist/{reasoning-tag-text-partitioner-DLCNXki6.mjs → reasoning-tag-text-partitioner-BcR5pztD.mjs} +19 -19
  76. package/dist/record-coerce-DwRYMj3t.mjs +32 -0
  77. package/dist/retry-after-CdCURCVg.d.mts +15 -0
  78. package/dist/session-affinity-Bcunsn4I.mjs +23 -0
  79. package/dist/{simple-options-BjHCCh4v.mjs → simple-options-BQbb4yQL.mjs} +24 -5
  80. package/dist/src-DDmEryvj.mjs +2 -0
  81. package/dist/{stream-first-event-timeout-DcNjoFQE.mjs → stream-first-event-timeout-2hfrquuz.mjs} +1 -1
  82. package/dist/string-coerce-fsri9iCu.mjs +34 -0
  83. package/dist/{string-normalization--fwJ4S2q.mjs → string-normalization-CmLIasuf.mjs} +1 -1
  84. package/dist/{tool-schema-json-projection-mJhXDcyz.mjs → tool-schema-json-projection-ClptDdAO.mjs} +2 -38
  85. package/dist/{transport-stream-shared-xnaqxmbP.d.mts → transport-stream-shared-DNvmoWnv.d.mts} +20 -36
  86. package/dist/{transport-stream-shared-CZqMhfIw.mjs → transport-stream-shared-zHll9BxO.mjs} +225 -13
  87. package/dist/transport-utils-zrYjICLZ.mjs +118 -0
  88. package/dist/transports.d.mts +137 -193
  89. package/dist/transports.mjs +204 -1334
  90. package/dist/types-DlfwzH3T.d.mts +1 -0
  91. package/dist/types-LFWwv0cF.mjs +8 -0
  92. package/dist/{types-CJ1-Ht7A.d.mts → types-Ntv5z2g2.d.mts} +74 -57
  93. package/dist/types.d.mts +6 -6
  94. package/dist/types.mjs +6 -5
  95. package/dist/{src-2qBGKg8O.mjs → usage-cost-BNWbbXav.mjs} +0 -1
  96. package/dist/utf16-slice-CvGodqok.mjs +29 -0
  97. package/dist/{validation-AKZBDGQd.d.mts → validation-B0t_G2H6.d.mts} +1 -1
  98. package/dist/{validation-CJZtym2g.mjs → validation-BDzVDnTs.mjs} +9 -1
  99. package/dist/validation.d.mts +1 -1
  100. package/dist/validation.mjs +1 -1
  101. package/package.json +13 -3
  102. package/dist/anthropic-BDdqdVLK.mjs +0 -886
  103. package/dist/event-stream-zctLx0yr.d.mts +0 -1
  104. package/dist/google-shared-CWeG8RIl.mjs +0 -636
  105. package/dist/google-thinking-level-C-V3tecN.mjs +0 -9
  106. package/dist/hash-CHgqbJmD.mjs +0 -16
  107. package/dist/json-parse-BuAJEbdW.mjs +0 -146
  108. package/dist/openai-completions-BIUV3RDT.mjs +0 -403
  109. package/dist/openai-prompt-cache-CGnVB74a.mjs +0 -21
  110. package/dist/openai-prompt-cache-CNoIfHYC.d.mts +0 -16
  111. package/dist/sanitize-unicode-D6xUvZaS.mjs +0 -83
  112. package/dist/transport-utils-7il795_9.mjs +0 -138
  113. package/dist/types-3Lnm-QSJ.d.mts +0 -1
  114. package/dist/types-BDdaOVi2.mjs +0 -6
  115. package/dist/utf16-slice-qz3nsy87.mjs +0 -84
@@ -1,44 +1,13 @@
1
- import { D as Model, G as StopReason, W as SimpleStreamOptions, at as Usage, d as Context, q as StreamFunction } from "../types-CJ1-Ht7A.mjs";
2
- import { C as resolveOpenAIReasoningEffortForModel, E as supportsOpenAITemperature, S as resolveOpenAIModelReasoningEfforts, T as supportsOpenAIReasoningEffort, _ as OpenAIReasoningEffort, a as BaseOpenAIStreamOptions, b as isOpenAIGpt56Model, d as OpenAICompletionsToolChoice, f as OpenAIToolProjection, g as OpenAIApiReasoningEffort, h as reconcileOpenAIResponsesToolChoice, l as codeModeToolSurfaceObserver, m as reconcileOpenAICompletionsToolChoice, o as CodeModeToolSurfaceObservation, p as projectOpenAITools, s as OpenAICompletionsOptions, u as reasoningTagTextPolicy, v as isOpenAIGpt54MiniModel, w as resolveOpenAISupportedReasoningEfforts, x as normalizeOpenAIReasoningEffort, y as isOpenAIGpt55Model } from "../provider-options-Bcc_p-TU.mjs";
3
- import "../types-3Lnm-QSJ.mjs";
4
- import { o as ResponsesPromptObservation, s as responsesPromptObserver } from "../openai-responses-contracts-rF5DDRNS.mjs";
5
- import { t as ResolvedOpenAICompletionsCompat } from "../openai-completions-compat-CpjYUArk.mjs";
6
- import { n as clampOpenAIPromptCacheKey, r as resolveOpenAIResponsesCacheParams, t as OPENAI_PROMPT_CACHE_KEY_MAX_LENGTH } from "../openai-prompt-cache-CNoIfHYC.mjs";
1
+ import { G as SimpleStreamOptions, J as StreamFunction, K as StopReason, O as Model, d as Context, ot as Usage } from "../types-Ntv5z2g2.mjs";
2
+ import { _ as resolveOpenAIModelReasoningEfforts, a as BaseOpenAIStreamOptions, b as supportsOpenAIReasoningEffort, d as OpenAIApiReasoningEffort, f as OpenAIReasoningEffort, g as normalizeOpenAIReasoningEffort, h as isOpenAIGpt56Model, l as codeModeToolSurfaceObserver, m as isOpenAIGpt55Model, o as CodeModeToolSurfaceObservation, p as isOpenAIGpt54MiniModel, s as OpenAICompletionsOptions, u as reasoningTagTextPolicy, v as resolveOpenAIReasoningEffortForModel, x as supportsOpenAITemperature, y as resolveOpenAISupportedReasoningEfforts } from "../provider-options-Ceqv1OKk.mjs";
3
+ import { a as reconcileOpenAIResponsesToolChoice, i as reconcileOpenAICompletionsToolChoice, n as OpenAIToolProjection, r as projectOpenAITools, t as OpenAICompletionsToolChoice } from "../openai-tool-projection-793cE3QX.mjs";
4
+ import "../types-DlfwzH3T.mjs";
5
+ import { a as ResponsesPromptObservation, o as responsesPromptObserver } from "../openai-responses-contracts-BjBAqAg_.mjs";
6
+ import { t as ResolvedOpenAICompletionsCompat } from "../openai-completions-compat-eHgh5UPE.mjs";
7
+ import { n as clampOpenAIPromptCacheKey, r as resolveOpenAIPromptCacheParams, t as OPENAI_PROMPT_CACHE_KEY_MAX_LENGTH } from "../openai-prompt-cache-B4eYo2-I.mjs";
7
8
  import OpenAI from "openai";
8
- import { TSchema } from "typebox";
9
9
  import { ResponseCreateParamsStreaming } from "openai/resources/responses/responses.js";
10
10
  import { ChatCompletionMessageParam } from "openai/resources/chat/completions.js";
11
- //#region packages/ai/src/providers/agent-tools-parameter-schema.d.ts
12
- /**
13
- * Narrow structural view of the host's model compat config. packages/ai must stay
14
- * config-agnostic, so only tool-schema-relevant fields are modeled here; the host's
15
- * ModelCompatConfig remains structurally assignable.
16
- */
17
- export type ToolSchemaModelCompat = {
18
- toolSchemaProfile?: string;
19
- unsupportedToolSchemaKeywords?: string[];
20
- omitEmptyArrayItems?: boolean;
21
- };
22
- /** Extracts the compat record whether callers pass a model (`{ compat }`) or the compat itself. */
23
- export declare function extractToolSchemaModelCompat(modelOrCompat: {
24
- compat?: unknown;
25
- } | ToolSchemaModelCompat | undefined): ToolSchemaModelCompat | undefined;
26
- /** JSON Schema keywords this model/provider rejects in tool schemas. */
27
- export declare function resolveUnsupportedToolSchemaKeywords(modelOrCompat: {
28
- compat?: unknown;
29
- } | ToolSchemaModelCompat | undefined): ReadonlySet<string>;
30
- /** Whether empty `items: {}` on array schemas must be omitted for this model/provider. */
31
- export declare function shouldOmitEmptyArrayItems(modelOrCompat: {
32
- compat?: unknown;
33
- } | ToolSchemaModelCompat | undefined): boolean;
34
- export type ToolParameterSchemaOptions = {
35
- modelProvider?: string;
36
- modelId?: string;
37
- modelCompat?: ToolSchemaModelCompat;
38
- };
39
- /** Return a provider-compatible JSON schema for a model-facing tool. */
40
- export declare function normalizeToolParameterSchema(schema: unknown, options?: ToolParameterSchemaOptions): TSchema;
41
- //#endregion
42
11
  //#region packages/ai/src/providers/azure-deployment-map.d.ts
43
12
  /** Parses AZURE_OPENAI_DEPLOYMENT_MAP-style model=deployment entries. */
44
13
  export declare function parseAzureDeploymentNameMap(value: string | undefined): Map<string, string>;
@@ -58,18 +27,6 @@ export declare function resolveAzureDeploymentNameFromMap(params: {
58
27
  export declare function isTraditionalAzureOpenAIHost(hostname: string): boolean;
59
28
  export declare function isOpenAICompatibleAzureResponsesBaseUrl(baseUrl: string): boolean;
60
29
  //#endregion
61
- //#region packages/ai/src/providers/clean-for-gemini.d.ts
62
- export declare const GEMINI_UNSUPPORTED_SCHEMA_KEYWORDS: Set<string>;
63
- export declare function cleanSchemaForGemini(schema: unknown): TSchema;
64
- //#endregion
65
- //#region packages/ai/src/providers/clean-for-llamacpp-gbnf.d.ts
66
- /** llama.cpp rejects grammar repetitions whose expanded rule count reaches 2000. */
67
- export declare const LLAMACPP_GBNF_MAX_REPETITION_THRESHOLD = 2000;
68
- /** Removes JSON Schema constraints that llama.cpp cannot compile into GBNF. */
69
- export declare function cleanSchemaForLlamacppGbnf(schema: unknown): unknown;
70
- /** Reports schema paths that llama.cpp cannot compile into GBNF. */
71
- export declare function findLlamacppGbnfSchemaViolations(schema: unknown, path: string): string[];
72
- //#endregion
73
30
  //#region packages/ai/src/openai-completions-messages.d.ts
74
31
  /** Convert a normalized transcript to OpenAI Chat Completions messages. */
75
32
  export declare function convertMessages(model: Model<"openai-completions">, context: Context, compat: ResolvedOpenAICompletionsCompat, options?: {
@@ -207,56 +164,4 @@ export declare function mapOpenAIStopReason(reason: string | null, options?: {
207
164
  allowSingularToolCall?: boolean;
208
165
  }): OpenAIStopReasonResult;
209
166
  //#endregion
210
- //#region packages/ai/src/providers/openai-tool-schema-compat.d.ts
211
- /** Repairs recoverable OpenAI tool-schema shapes before canonical normalization. */
212
- export declare function normalizeOpenAIStrictCompatSchema(schema: unknown): TSchema;
213
- /** Finds schema paths that violate OpenAI strict tool-schema requirements. */
214
- export declare function findOpenAIStrictSchemaViolations(schema: unknown, path: string, options?: {
215
- requireObjectRoot?: boolean;
216
- }): string[];
217
- //#endregion
218
- //#region packages/ai/src/providers/openai-tool-schema.d.ts
219
- /**
220
- * OpenAI strict-tool-schema normalization and diagnostics.
221
- *
222
- * Strict schemas need all object properties required and `additionalProperties: false`; model
223
- * compatibility settings can also remove unsupported schema constructs before strict checks run.
224
- */
225
- type ToolSchemaCompatInput = {
226
- unsupportedToolSchemaKeywords?: unknown;
227
- omitEmptyArrayItems?: unknown;
228
- };
229
- /** Normalizes a tool parameter schema into the OpenAI strict JSON-schema subset. */
230
- export declare function normalizeStrictOpenAIJsonSchema(schema: unknown, modelCompat?: ToolSchemaCompatInput | null): unknown;
231
- /** Normalizes tool parameters using strict OpenAI rules only when strict mode is active. */
232
- export declare function normalizeOpenAIStrictToolParameters<T>(schema: T, strict: boolean, modelCompat?: ToolSchemaCompatInput | null): T;
233
- /** Returns whether a schema already satisfies OpenAI strict tool-schema constraints. */
234
- export declare function isStrictOpenAIJsonSchemaCompatible(schema: unknown): boolean;
235
- type OpenAIStrictToolSchemaDiagnostic = {
236
- toolIndex: number;
237
- toolName?: string;
238
- violations: string[];
239
- };
240
- /** Returns strict-schema diagnostics for an already materialized OpenAI tool projection. */
241
- export declare function findOpenAIStrictToolProjectionDiagnostics(projection: OpenAIToolProjection): OpenAIStrictToolSchemaDiagnostic[];
242
- /** Resolves strict mode for the projected tools that will be emitted in the request payload. */
243
- export declare function resolveOpenAIProjectedToolsStrictToolFlag(projection: OpenAIToolProjection, strict: boolean | null | undefined): boolean | undefined;
244
- //#endregion
245
- //#region packages/ai/src/providers/schema-keyword-strip.d.ts
246
- /** Recursively remove schema keywords unsupported by a target provider/tool surface. */
247
- export declare function stripUnsupportedSchemaKeywords(schema: unknown, unsupportedKeywords: ReadonlySet<string>): unknown;
248
- //#endregion
249
- //#region packages/ai/src/providers/tool-schema-json-projection.d.ts
250
- /** JSON-safe schema value used when projecting runtime tool parameters. */
251
- export type RuntimeToolInputSchemaJson = null | boolean | number | string | RuntimeToolInputSchemaJson[] | {
252
- [key: string]: RuntimeToolInputSchemaJson;
253
- };
254
- /** Projected runtime tool schema plus validation violations. */
255
- export type RuntimeToolInputSchemaProjection = {
256
- readonly schema: RuntimeToolInputSchemaJson;
257
- readonly violations: readonly string[];
258
- };
259
- /** Projects one runtime tool input schema to JSON and reports runtime incompatibilities. */
260
- export declare function projectRuntimeToolInputSchema(schema: unknown, path?: string): RuntimeToolInputSchemaProjection;
261
- //#endregion
262
- export { type CodeModeToolSurfaceObservation, OPENAI_PROMPT_CACHE_KEY_MAX_LENGTH, OpenAIApiReasoningEffort, type OpenAICompletionsOptions, OpenAICompletionsToolChoice, OpenAIReasoningEffort, OpenAIToolProjection, type ResponsesPromptObservation, clampOpenAIPromptCacheKey, codeModeToolSurfaceObserver, isOpenAIGpt54MiniModel, isOpenAIGpt55Model, isOpenAIGpt56Model, normalizeOpenAIReasoningEffort, projectOpenAITools, reasoningTagTextPolicy, reconcileOpenAICompletionsToolChoice, reconcileOpenAIResponsesToolChoice, resolveOpenAIModelReasoningEfforts, resolveOpenAIReasoningEffortForModel, resolveOpenAIResponsesCacheParams, resolveOpenAISupportedReasoningEfforts, responsesPromptObserver, supportsOpenAIReasoningEffort, supportsOpenAITemperature };
167
+ export { type CodeModeToolSurfaceObservation, OPENAI_PROMPT_CACHE_KEY_MAX_LENGTH, OpenAIApiReasoningEffort, type OpenAICompletionsOptions, OpenAICompletionsToolChoice, OpenAIReasoningEffort, OpenAIToolProjection, type ResponsesPromptObservation, clampOpenAIPromptCacheKey, codeModeToolSurfaceObserver, isOpenAIGpt54MiniModel, isOpenAIGpt55Model, isOpenAIGpt56Model, normalizeOpenAIReasoningEffort, projectOpenAITools, reasoningTagTextPolicy, reconcileOpenAICompletionsToolChoice, reconcileOpenAIResponsesToolChoice, resolveOpenAIModelReasoningEfforts, resolveOpenAIPromptCacheParams, resolveOpenAIReasoningEffortForModel, resolveOpenAISupportedReasoningEfforts, responsesPromptObserver, supportsOpenAIReasoningEffort, supportsOpenAITemperature };
@@ -1,12 +1,11 @@
1
- import { n as clampOpenAIPromptCacheKey, r as resolveOpenAIResponsesCacheParams, t as OPENAI_PROMPT_CACHE_KEY_MAX_LENGTH } from "../openai-prompt-cache-CGnVB74a.mjs";
2
- import { a as codeModeToolSurfaceObserver, o as reasoningTagTextPolicy } from "../simple-options-BjHCCh4v.mjs";
3
- import { t as projectRuntimeToolInputSchema } from "../tool-schema-json-projection-mJhXDcyz.mjs";
4
- import { g as convertMessages } from "../openai-completions-stream-BsrBe3Gg.mjs";
5
- import { A as OPENAI_RESPONSES_OUTPUT_TEXT_DELTA_EVENT_TYPE, D as AZURE_RESPONSES_TEXT_CONTENT_PART_TYPE, E as readResponsesToolCallItemIdentity, F as resolveResponsesMessageSnapshotCollapse, M as isAzureResponsesTextDeltaEventType, N as isResponsesTextContentPartType, O as AZURE_RESPONSES_TEXT_DELTA_EVENT_TYPE, P as isResponsesTextDeltaEventType, T as createResponsesToolCallTracker, d as readResponsesReasoningTokens, f as resolveResponsesTerminalStopReason, j as isAzureResponsesTextDeltaEvent, k as OPENAI_RESPONSES_OUTPUT_TEXT_CONTENT_PART_TYPE, u as mapResponsesTerminalUsage } from "../openai-responses-shared-Bmma_3Qc.mjs";
6
- import { _ as cleanSchemaForGemini, a as resolveOpenAIProjectedToolsStrictToolFlag, b as reconcileOpenAIResponsesToolChoice, c as extractToolSchemaModelCompat, d as shouldOmitEmptyArrayItems, f as stripUnsupportedSchemaKeywords, g as GEMINI_UNSUPPORTED_SCHEMA_KEYWORDS, h as findLlamacppGbnfSchemaViolations, i as normalizeStrictOpenAIJsonSchema, l as normalizeToolParameterSchema, m as cleanSchemaForLlamacppGbnf, n as isStrictOpenAIJsonSchemaCompatible, o as findOpenAIStrictSchemaViolations, p as LLAMACPP_GBNF_MAX_REPETITION_THRESHOLD, r as normalizeOpenAIStrictToolParameters, s as normalizeOpenAIStrictCompatSchema, t as findOpenAIStrictToolProjectionDiagnostics, u as resolveUnsupportedToolSchemaKeywords, v as projectOpenAITools, y as reconcileOpenAICompletionsToolChoice } from "../openai-tool-schema-_pTAJqKF.mjs";
7
- import { A as supportsOpenAIReasoningEffort, C as isOpenAIGpt54MiniModel, D as resolveOpenAIModelReasoningEfforts, E as normalizeOpenAIReasoningEffort, O as resolveOpenAIReasoningEffortForModel, S as responsesPromptObserver, T as isOpenAIGpt56Model, j as supportsOpenAITemperature, k as resolveOpenAISupportedReasoningEfforts, w as isOpenAIGpt55Model } from "../openai-responses-compaction-window-BMVHFOtq.mjs";
1
+ import { n as clampOpenAIPromptCacheKey, r as resolveOpenAIPromptCacheParams, t as OPENAI_PROMPT_CACHE_KEY_MAX_LENGTH } from "../openai-prompt-cache-Bds-n_9Q.mjs";
2
+ import { a as codeModeToolSurfaceObserver, o as reasoningTagTextPolicy } from "../simple-options-BQbb4yQL.mjs";
3
+ import { f as projectOpenAITools, m as reconcileOpenAIResponsesToolChoice, p as reconcileOpenAICompletionsToolChoice } from "../openai-transport-params-9aPuV5YY.mjs";
4
+ import { a as convertMessages } from "../openai-completions-stream-Da2vvl-S.mjs";
5
+ import { C as supportsOpenAITemperature, S as supportsOpenAIReasoningEffort, _ as isOpenAIGpt56Model, b as resolveOpenAIReasoningEffortForModel, g as isOpenAIGpt55Model, h as isOpenAIGpt54MiniModel, m as responsesPromptObserver, v as normalizeOpenAIReasoningEffort, x as resolveOpenAISupportedReasoningEfforts, y as resolveOpenAIModelReasoningEfforts } from "../openai-responses-contracts-DDOHA62Y.mjs";
8
6
  import { t as mapOpenAIStopReason } from "../openai-stop-reason-Drnn_6Qj.mjs";
7
+ import { A as resolveResponsesMessageSnapshotCollapse, C as AZURE_RESPONSES_TEXT_DELTA_EVENT_TYPE, D as isAzureResponsesTextDeltaEventType, E as isAzureResponsesTextDeltaEvent, O as isResponsesTextContentPartType, S as AZURE_RESPONSES_TEXT_CONTENT_PART_TYPE, T as OPENAI_RESPONSES_OUTPUT_TEXT_DELTA_EVENT_TYPE, b as createResponsesToolCallTracker, d as mapResponsesTerminalUsage, f as readResponsesReasoningTokens, k as isResponsesTextDeltaEventType, p as resolveResponsesTerminalStopReason, w as OPENAI_RESPONSES_OUTPUT_TEXT_CONTENT_PART_TYPE, x as readResponsesToolCallItemIdentity } from "../openai-responses-shared-B8RdBPCv.mjs";
9
8
  import { i as resolveAzureDeploymentNameFromMap, n as isTraditionalAzureOpenAIHost, r as parseAzureDeploymentNameMap, t as isOpenAICompatibleAzureResponsesBaseUrl } from "../azure-openai-responses-client-compat-C7K7QfUE.mjs";
10
- import { n as streamOpenAICompletions, r as streamSimpleOpenAICompletions } from "../openai-completions-BIUV3RDT.mjs";
11
- import { n as streamOpenAIResponses, r as streamSimpleOpenAIResponses } from "../openai-responses-CCL41ALM.mjs";
12
- export { AZURE_RESPONSES_TEXT_CONTENT_PART_TYPE, AZURE_RESPONSES_TEXT_DELTA_EVENT_TYPE, GEMINI_UNSUPPORTED_SCHEMA_KEYWORDS, LLAMACPP_GBNF_MAX_REPETITION_THRESHOLD, OPENAI_PROMPT_CACHE_KEY_MAX_LENGTH, OPENAI_RESPONSES_OUTPUT_TEXT_CONTENT_PART_TYPE, OPENAI_RESPONSES_OUTPUT_TEXT_DELTA_EVENT_TYPE, clampOpenAIPromptCacheKey, cleanSchemaForGemini, cleanSchemaForLlamacppGbnf, codeModeToolSurfaceObserver, convertMessages, createResponsesToolCallTracker, extractToolSchemaModelCompat, findLlamacppGbnfSchemaViolations, findOpenAIStrictSchemaViolations, findOpenAIStrictToolProjectionDiagnostics, isAzureResponsesTextDeltaEvent, isAzureResponsesTextDeltaEventType, isOpenAICompatibleAzureResponsesBaseUrl, isOpenAIGpt54MiniModel, isOpenAIGpt55Model, isOpenAIGpt56Model, isResponsesTextContentPartType, isResponsesTextDeltaEventType, isStrictOpenAIJsonSchemaCompatible, isTraditionalAzureOpenAIHost, mapOpenAIStopReason, mapResponsesTerminalUsage, normalizeOpenAIReasoningEffort, normalizeOpenAIStrictCompatSchema, normalizeOpenAIStrictToolParameters, normalizeStrictOpenAIJsonSchema, normalizeToolParameterSchema, parseAzureDeploymentNameMap, projectOpenAITools, projectRuntimeToolInputSchema, readResponsesReasoningTokens, readResponsesToolCallItemIdentity, reasoningTagTextPolicy, reconcileOpenAICompletionsToolChoice, reconcileOpenAIResponsesToolChoice, resolveAzureDeploymentNameFromMap, resolveOpenAIModelReasoningEfforts, resolveOpenAIProjectedToolsStrictToolFlag, resolveOpenAIReasoningEffortForModel, resolveOpenAIResponsesCacheParams, resolveOpenAISupportedReasoningEfforts, resolveResponsesMessageSnapshotCollapse, resolveResponsesTerminalStopReason, resolveUnsupportedToolSchemaKeywords, responsesPromptObserver, shouldOmitEmptyArrayItems, streamOpenAICompletions, streamOpenAIResponses, streamSimpleOpenAICompletions, streamSimpleOpenAIResponses, stripUnsupportedSchemaKeywords, supportsOpenAIReasoningEffort, supportsOpenAITemperature };
9
+ import { n as streamOpenAICompletions, r as streamSimpleOpenAICompletions } from "../openai-completions-yJuk7eis.mjs";
10
+ import { n as streamOpenAIResponses, r as streamSimpleOpenAIResponses } from "../openai-responses-DaYwH05E.mjs";
11
+ export { AZURE_RESPONSES_TEXT_CONTENT_PART_TYPE, AZURE_RESPONSES_TEXT_DELTA_EVENT_TYPE, OPENAI_PROMPT_CACHE_KEY_MAX_LENGTH, OPENAI_RESPONSES_OUTPUT_TEXT_CONTENT_PART_TYPE, OPENAI_RESPONSES_OUTPUT_TEXT_DELTA_EVENT_TYPE, clampOpenAIPromptCacheKey, codeModeToolSurfaceObserver, convertMessages, createResponsesToolCallTracker, isAzureResponsesTextDeltaEvent, isAzureResponsesTextDeltaEventType, isOpenAICompatibleAzureResponsesBaseUrl, isOpenAIGpt54MiniModel, isOpenAIGpt55Model, isOpenAIGpt56Model, isResponsesTextContentPartType, isResponsesTextDeltaEventType, isTraditionalAzureOpenAIHost, mapOpenAIStopReason, mapResponsesTerminalUsage, normalizeOpenAIReasoningEffort, parseAzureDeploymentNameMap, projectOpenAITools, readResponsesReasoningTokens, readResponsesToolCallItemIdentity, reasoningTagTextPolicy, reconcileOpenAICompletionsToolChoice, reconcileOpenAIResponsesToolChoice, resolveAzureDeploymentNameFromMap, resolveOpenAIModelReasoningEfforts, resolveOpenAIPromptCacheParams, resolveOpenAIReasoningEffortForModel, resolveOpenAISupportedReasoningEfforts, resolveResponsesMessageSnapshotCollapse, resolveResponsesTerminalStopReason, responsesPromptObserver, streamOpenAICompletions, streamOpenAIResponses, streamSimpleOpenAICompletions, streamSimpleOpenAIResponses, supportsOpenAIReasoningEffort, supportsOpenAITemperature };
@@ -1,4 +1,2 @@
1
- //#region packages/ai/src/internal/retry-after.d.ts
2
- /** Parses the three HTTP-date forms accepted for Retry-After without Date.parse normalization. */
3
- export declare function parseRetryAfterHttpDateMs(value: string, nowMs?: number): number | undefined;
4
- //#endregion
1
+ import { i as parseRetryAfterHttpDateMs, n as parseRetryAfterErrorSeconds, r as parseRetryAfterHeadersSeconds, t as parseHttpDateInstant } from "../retry-after-CdCURCVg.mjs";
2
+ export { parseHttpDateInstant, parseRetryAfterErrorSeconds, parseRetryAfterHeadersSeconds, parseRetryAfterHttpDateMs };
@@ -34,10 +34,55 @@ const HTTP_DATE_LONG_WEEKDAY_INDEX = new Map([
34
34
  const IMF_FIXDATE_RE = /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\d{2}) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{4}) (\d{2}):(\d{2}):(\d{2}) GMT$/;
35
35
  const OBSOLETE_RFC850_DATE_RE = /^(Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\d{2})-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\d{2}) (\d{2}):(\d{2}):(\d{2}) GMT$/;
36
36
  const OBSOLETE_ASCTIME_DATE_RE = /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{2}| \d) (\d{2}):(\d{2}):(\d{2}) (\d{4})$/;
37
- /** Parses the three HTTP-date forms accepted for Retry-After without Date.parse normalization. */
37
+ function ownDataValue(value, key) {
38
+ return value && typeof value === "object" ? Object.getOwnPropertyDescriptor(value, key)?.value : void 0;
39
+ }
40
+ /** Reads only retry timing metadata, without invoking provider getters or serialization hooks. */
41
+ function parseRetryAfterHeadersSeconds(headers, nowMs = Date.now()) {
42
+ if (!headers || typeof headers !== "object") return;
43
+ try {
44
+ let entries;
45
+ try {
46
+ entries = ["retry-after", "retry-after-ms"].map((key) => [key, Headers.prototype.get.call(headers, key)]);
47
+ } catch {
48
+ entries = Object.getOwnPropertyNames(headers).flatMap((key) => {
49
+ const name = key.toLowerCase();
50
+ return name === "retry-after" || name === "retry-after-ms" ? [[name, ownDataValue(headers, key)]] : [];
51
+ });
52
+ }
53
+ let floor;
54
+ for (const [key, value] of entries) {
55
+ const text = typeof value === "string" ? value.trim() : typeof value === "number" ? String(value) : "";
56
+ const milliseconds = key === "retry-after-ms";
57
+ const numeric = typeof value === "number" ? value >= 0 && (milliseconds || Number.isInteger(value) || value === Infinity) : (milliseconds ? /^\d+(?:\.\d+)?$/ : /^\d+$/).test(text);
58
+ const number = typeof value === "number" ? value : Number(text);
59
+ const retryAt = !numeric && !milliseconds ? parseRetryAfterHttpDateMs(text, nowMs) : void 0;
60
+ const seconds = numeric ? Number.isFinite(number) && number <= Number.MAX_SAFE_INTEGER ? number / (milliseconds ? 1e3 : 1) : Infinity : retryAt === void 0 ? void 0 : Math.max(0, (retryAt - nowMs) / 1e3);
61
+ if (seconds !== void 0) floor = Math.max(floor ?? 0, seconds);
62
+ }
63
+ return floor;
64
+ } catch {
65
+ return;
66
+ }
67
+ }
68
+ /** SDK errors carry native response headers separately from their error body. */
69
+ function parseRetryAfterErrorSeconds(error, nowMs = Date.now()) {
70
+ try {
71
+ const direct = parseRetryAfterHeadersSeconds(ownDataValue(error, "headers"), nowMs);
72
+ const response = parseRetryAfterHeadersSeconds(ownDataValue(ownDataValue(error, "response"), "headers"), nowMs);
73
+ return direct === void 0 && response === void 0 ? void 0 : Math.max(direct ?? 0, response ?? 0);
74
+ } catch {
75
+ return;
76
+ }
77
+ }
78
+ /** Round leap seconds forward for Retry-After so an unrepresentable instant cannot retry early. */
38
79
  function parseRetryAfterHttpDateMs(value, nowMs = Date.now()) {
80
+ return parseHttpDateInstant(value, nowMs)?.timestampMs;
81
+ }
82
+ /** Parse all three HTTP-date forms while retaining leap-second ordering. */
83
+ function parseHttpDateInstant(value, nowMs = Date.now()) {
39
84
  const imfFixdate = IMF_FIXDATE_RE.exec(value);
40
- if (imfFixdate) return parseHttpDateComponentsMs({
85
+ if (imfFixdate) return parseHttpDateComponents({
41
86
  weekday: HTTP_DATE_SHORT_WEEKDAY_INDEX.get(imfFixdate[1] ?? ""),
42
87
  year: Number.parseInt(imfFixdate[4] ?? "", 10),
43
88
  month: HTTP_DATE_MONTH_INDEX.get(imfFixdate[3] ?? ""),
@@ -65,13 +110,13 @@ function parseRetryAfterHttpDateMs(value, nowMs = Date.now()) {
65
110
  ...components
66
111
  });
67
112
  if (candidate === void 0) return;
68
- return parseHttpDateComponentsMs({
113
+ return parseHttpDateComponents({
69
114
  year: candidate > Date.UTC(now.getUTCFullYear() + 50, now.getUTCMonth(), now.getUTCDate(), now.getUTCHours(), now.getUTCMinutes(), now.getUTCSeconds(), now.getUTCMilliseconds()) ? candidateYear - 100 : candidateYear,
70
115
  ...components
71
116
  });
72
117
  }
73
118
  const asctimeDate = OBSOLETE_ASCTIME_DATE_RE.exec(value);
74
- if (asctimeDate) return parseHttpDateComponentsMs({
119
+ if (asctimeDate) return parseHttpDateComponents({
75
120
  weekday: HTTP_DATE_SHORT_WEEKDAY_INDEX.get(asctimeDate[1] ?? ""),
76
121
  year: Number.parseInt(asctimeDate[7] ?? "", 10),
77
122
  month: HTTP_DATE_MONTH_INDEX.get(asctimeDate[2] ?? ""),
@@ -81,12 +126,16 @@ function parseRetryAfterHttpDateMs(value, nowMs = Date.now()) {
81
126
  seconds: Number.parseInt(asctimeDate[6] ?? "", 10)
82
127
  });
83
128
  }
84
- function parseHttpDateComponentsMs(components) {
129
+ function parseHttpDateComponents(components) {
85
130
  const timestamp = parseHttpDateCalendarMs(components);
86
131
  if (timestamp === void 0) return;
87
- const weekdayTimestamp = components.seconds === 60 ? timestamp - 1e3 : timestamp;
132
+ const leapSecond = components.seconds === 60;
133
+ const weekdayTimestamp = leapSecond ? timestamp - 1e3 : timestamp;
88
134
  if (new Date(weekdayTimestamp).getUTCDay() !== components.weekday) return;
89
- return timestamp;
135
+ return {
136
+ timestampMs: timestamp,
137
+ leapSecond
138
+ };
90
139
  }
91
140
  function parseHttpDateCalendarMs(components) {
92
141
  const { year, month, day, hours, minutes, seconds } = components;
@@ -98,4 +147,4 @@ function parseHttpDateCalendarMs(components) {
98
147
  return seconds === 60 ? timestamp + 1e3 : timestamp;
99
148
  }
100
149
  //#endregion
101
- export { parseRetryAfterHttpDateMs };
150
+ export { parseHttpDateInstant, parseRetryAfterErrorSeconds, parseRetryAfterHeadersSeconds, parseRetryAfterHttpDateMs };
@@ -1,9 +1,10 @@
1
- import "../index-FnHM2FcI.mjs";
2
- import { A as ModelThinkingLevel, D as Model, J as StreamOptions, V as ProviderStreamOptions, W as SimpleStreamOptions, a as AssistantMessage, at as Usage, d as Context, n as Api, s as AssistantMessageEventStreamContract } from "../types-CJ1-Ht7A.mjs";
3
- import { a as RegisteredApiProvider, t as ApiProvider } from "../api-registry-DWtPjzyn.mjs";
4
- import "../types-3Lnm-QSJ.mjs";
1
+ import "../index-DdD3qerf.mjs";
2
+ import { G as SimpleStreamOptions, H as ProviderStreamOptions, O as Model, Y as StreamOptions, a as AssistantMessage, d as Context, j as ModelThinkingLevel, n as Api, ot as Usage, s as AssistantMessageEventStreamContract } from "../types-Ntv5z2g2.mjs";
3
+ import { i as getEventStreamCompletion } from "../event-stream-Bt5Y4Pav.mjs";
4
+ import { a as RegisteredApiProvider, t as ApiProvider } from "../api-registry-ByUwIR0e.mjs";
5
+ import "../types-DlfwzH3T.mjs";
5
6
  import { t as sanitizeSurrogates } from "../sanitize-unicode-BZiVbGwK.mjs";
6
- import { C as FirstStreamEventInternalOptions, D as getFirstStreamEventTimeoutHandler, E as createFirstStreamEventTimeoutError, O as getFirstStreamEventTimeoutMs, S as FirstStreamEventAbortController, T as createFirstStreamEventAbortController, g as parseTerminalToolCallArguments, k as withFirstStreamEventTimeout, w as FirstStreamEventTimeoutContext } from "../transport-stream-shared-xnaqxmbP.mjs";
7
+ import { _ as parseTerminalToolCallArguments } from "../transport-stream-shared-DNvmoWnv.mjs";
7
8
  //#region packages/ai/src/internal/default-runtime.d.ts
8
9
  export declare const defaultApiRegistry: {
9
10
  registerApiProvider: <TApi extends Api, TOptions extends StreamOptions>(provider: ApiProvider<TApi, TOptions>, sourceId?: string) => void;
@@ -88,8 +89,15 @@ export declare function headersToRecord(headers: Headers): Record<string, string
88
89
  * Repairs malformed JSON string literals by:
89
90
  * - escaping raw control characters inside strings
90
91
  * - doubling backslashes before invalid escape characters
92
+ *
93
+ * By default a valid control escape (`\n`, `\t`, ...) that follows a Windows-path-looking
94
+ * prefix is treated as an unescaped path separator and doubled. Pass
95
+ * `preserveValidControlEscapes` when the text is authoritative (for example a completed
96
+ * tool-call argument buffer) and every valid escape must survive as written.
91
97
  */
92
- export declare function repairJson(json: string): string;
98
+ export declare function repairJson(json: string, options?: {
99
+ preserveValidControlEscapes?: boolean;
100
+ }): string;
93
101
  export declare function parseJsonWithRepair(json: string): unknown;
94
102
  /**
95
103
  * Attempts to parse potentially incomplete JSON during streaming.
@@ -216,6 +224,34 @@ interface ReasoningTagTextPartitioner {
216
224
  /** Creates a block-incremental parser that emits only Markdown-stable text. */
217
225
  export declare function createReasoningTagTextPartitioner(): ReasoningTagTextPartitioner;
218
226
  //#endregion
227
+ //#region packages/ai/src/utils/stream-first-event-timeout.d.ts
228
+ type StreamStage = "responses" | "completions";
229
+ export type FirstStreamEventTimeoutContext = {
230
+ provider?: string;
231
+ api?: string;
232
+ model?: string;
233
+ timeoutMs: number;
234
+ stage?: StreamStage;
235
+ hint?: string;
236
+ abort?: (reason: Error) => void;
237
+ onTimeout?: (reason: Error) => void;
238
+ };
239
+ export type FirstStreamEventInternalOptions = {
240
+ firstEventTimeoutMs?: number;
241
+ abortFirstEventStream?: (reason: Error) => void;
242
+ onFirstEventTimeout?: (reason: Error) => void;
243
+ };
244
+ export type FirstStreamEventAbortController = {
245
+ signal: AbortSignal;
246
+ abort: (reason: Error) => void;
247
+ dispose: () => void;
248
+ };
249
+ export declare function getFirstStreamEventTimeoutMs(options: unknown): number | undefined;
250
+ export declare function getFirstStreamEventTimeoutHandler(options: unknown): ((reason: Error) => void) | undefined;
251
+ export declare function createFirstStreamEventTimeoutError(context: FirstStreamEventTimeoutContext): Error;
252
+ export declare function createFirstStreamEventAbortController(parentSignal?: AbortSignal): FirstStreamEventAbortController;
253
+ export declare function withFirstStreamEventTimeout<T>(stream: AsyncIterable<T>, context: FirstStreamEventTimeoutContext): AsyncIterable<T>;
254
+ //#endregion
219
255
  //#region packages/ai/src/utils/streaming-byte-guard.d.ts
220
256
  /**
221
257
  * Bounded SSE / NDJSON stream reader guard.
@@ -246,4 +282,4 @@ export type SseByteGuard = {
246
282
  };
247
283
  export declare function createSseByteGuard(reader: ReadableStreamDefaultReader<Uint8Array>, opts: ReadSseStreamWithLimitOptions): SseByteGuard;
248
284
  //#endregion
249
- export { FirstStreamEventAbortController, FirstStreamEventInternalOptions, FirstStreamEventTimeoutContext, type ReasoningTagTextDelta, type ReasoningTagTextPartitioner, createFirstStreamEventAbortController, createFirstStreamEventTimeoutError, getFirstStreamEventTimeoutHandler, getFirstStreamEventTimeoutMs, parseTerminalToolCallArguments, sanitizeSurrogates, withFirstStreamEventTimeout };
285
+ export { type ReasoningTagTextDelta, type ReasoningTagTextPartitioner, getEventStreamCompletion, parseTerminalToolCallArguments, sanitizeSurrogates };
@@ -1,14 +1,13 @@
1
1
  import { a as isProviderRefusalAssistantError } from "../diagnostics-CPeq9F7y.mjs";
2
+ import { a as getEventStreamCompletion } from "../event-stream-D8PARQfL.mjs";
2
3
  import { n as createApiRegistry, t as createLlmRuntime } from "../stream-CREqxHgU.mjs";
3
- import { a as getSupportedThinkingLevels, i as clampThinkingLevel, n as applyProviderReportedUsageCost, o as modelsAreEqual, r as calculateCost, t as sanitizeSurrogates } from "../sanitize-unicode-D6xUvZaS.mjs";
4
- import { t as createReasoningTagTextPartitioner } from "../reasoning-tag-text-partitioner-DLCNXki6.mjs";
4
+ import { A as applyProviderReportedUsageCost, M as clampThinkingLevel, N as getSupportedThinkingLevels, P as modelsAreEqual, j as calculateCost, v as sanitizeSurrogates } from "../host-B8YfDGd4.mjs";
5
5
  import { n as getEnvApiKey, t as findEnvKeys } from "../env-api-keys-bktO00EJ.mjs";
6
- import { C as headersToRecord, m as parseTerminalToolCallArguments } from "../transport-stream-shared-CZqMhfIw.mjs";
6
+ import { D as repairJson, E as parseStreamingJson, O as headersToRecord, T as parseJsonWithRepair, h as parseTerminalToolCallArguments, k as shortHash, w as createToolArgumentPreviewSchedule } from "../transport-stream-shared-zHll9BxO.mjs";
7
7
  import { t as createDeferredEventBuffer } from "../deferred-event-buffer-DAvyP7qA.mjs";
8
- import { i as repairJson, n as parseJsonWithRepair, r as parseStreamingJson, t as createToolArgumentPreviewSchedule } from "../json-parse-BuAJEbdW.mjs";
9
8
  import { n as onLlmRequestActivity, t as notifyLlmRequestActivity } from "../llm-request-activity-BjtkplhG.mjs";
10
- import { t as shortHash } from "../hash-CHgqbJmD.mjs";
11
- import { a as withFirstStreamEventTimeout, i as getFirstStreamEventTimeoutMs, n as createFirstStreamEventTimeoutError, r as getFirstStreamEventTimeoutHandler, t as createFirstStreamEventAbortController } from "../stream-first-event-timeout-DcNjoFQE.mjs";
9
+ import { a as withFirstStreamEventTimeout, i as getFirstStreamEventTimeoutMs, n as createFirstStreamEventTimeoutError, r as getFirstStreamEventTimeoutHandler, t as createFirstStreamEventAbortController } from "../stream-first-event-timeout-2hfrquuz.mjs";
10
+ import { t as createReasoningTagTextPartitioner } from "../reasoning-tag-text-partitioner-BcR5pztD.mjs";
12
11
  import { t as createSseByteGuard } from "../streaming-byte-guard-CC-HMn_u.mjs";
13
12
  import { n as registerSessionResourceCleanup, t as cleanupSessionResources } from "../session-resources-CkR4WWy1.mjs";
14
13
  import { n as resolveOpenAICodexAccountId, t as decodeOpenAICodexJwtPayload } from "../openai-chatgpt-jwt-KWcgd0d_.mjs";
@@ -200,4 +199,4 @@ function isContextOverflow(message, contextWindow) {
200
199
  return false;
201
200
  }
202
201
  //#endregion
203
- export { applyProviderReportedUsageCost, calculateCost, clampThinkingLevel, cleanupSessionResources, clearApiProviders, complete, completeSimple, createDeferredEventBuffer, createFirstStreamEventAbortController, createFirstStreamEventTimeoutError, createReasoningTagTextPartitioner, createSseByteGuard, createToolArgumentPreviewSchedule, decodeOpenAICodexJwtPayload, defaultApiRegistry, defaultLlmRuntime, findEnvKeys, getApiProvider, getApiProviders, getEnvApiKey, getFirstStreamEventTimeoutHandler, getFirstStreamEventTimeoutMs, getSupportedThinkingLevels, headersToRecord, isConfiguredContextSizeOverflowError, isContextOverflow, matchesContextOverflowMessage, modelsAreEqual, notifyLlmRequestActivity, onLlmRequestActivity, parseJsonWithRepair, parseStreamingJson, parseTerminalToolCallArguments, registerSessionResourceCleanup, repairJson, resolveOpenAICodexAccountId, sanitizeSurrogates, shortHash, stream, streamSimple, withFirstStreamEventTimeout };
202
+ export { applyProviderReportedUsageCost, calculateCost, clampThinkingLevel, cleanupSessionResources, clearApiProviders, complete, completeSimple, createDeferredEventBuffer, createFirstStreamEventAbortController, createFirstStreamEventTimeoutError, createReasoningTagTextPartitioner, createSseByteGuard, createToolArgumentPreviewSchedule, decodeOpenAICodexJwtPayload, defaultApiRegistry, defaultLlmRuntime, findEnvKeys, getApiProvider, getApiProviders, getEnvApiKey, getEventStreamCompletion, getFirstStreamEventTimeoutHandler, getFirstStreamEventTimeoutMs, getSupportedThinkingLevels, headersToRecord, isConfiguredContextSizeOverflowError, isContextOverflow, matchesContextOverflowMessage, modelsAreEqual, notifyLlmRequestActivity, onLlmRequestActivity, parseJsonWithRepair, parseStreamingJson, parseTerminalToolCallArguments, registerSessionResourceCleanup, repairJson, resolveOpenAICodexAccountId, sanitizeSurrogates, shortHash, stream, streamSimple, withFirstStreamEventTimeout };
@@ -1,5 +1,6 @@
1
- import { $ as ThinkingLevel, D as Model, E as Message, J as StreamOptions, W as SimpleStreamOptions, Z as ThinkingBudgets, a as AssistantMessage, n as Api } from "../types-CJ1-Ht7A.mjs";
2
- import "../types-3Lnm-QSJ.mjs";
1
+ import { D as Message, G as SimpleStreamOptions, O as Model, Q as ThinkingBudgets, Y as StreamOptions, a as AssistantMessage, et as ThinkingLevel, n as Api } from "../types-Ntv5z2g2.mjs";
2
+ import { a as readAssistantThinkingAppend } from "../event-stream-Bt5Y4Pav.mjs";
3
+ import "../types-DlfwzH3T.mjs";
3
4
  import { t as sanitizeSurrogates } from "../sanitize-unicode-BZiVbGwK.mjs";
4
5
  import { n as normalizeStructuredPromptSection, r as sortPromptCacheToolsByName, t as normalizePromptCapabilityIds } from "../prompt-cache-stability-Cwcjv_fx.mjs";
5
6
  //#region packages/ai/src/providers/simple-options.d.ts
@@ -48,14 +49,43 @@ export declare function formatToolResultText(params: {
48
49
  //#region packages/ai/src/transcript-transform.d.ts
49
50
  export declare function transformMessages<TApi extends Api>(messages: Message[], model: Model<TApi>, normalizeToolCallId?: (id: string, model: Model<TApi>, source: AssistantMessage) => string): Message[];
50
51
  //#endregion
52
+ //#region packages/ai/src/replay-turn-classification.d.ts
53
+ type AssistantTurnLike = {
54
+ role?: unknown;
55
+ stopReason?: unknown;
56
+ content?: unknown;
57
+ };
58
+ /** Returns true when an assistant turn contains only provider reasoning and blank text. */
59
+ export declare function hasOnlyAssistantReasoningContent(message: AssistantTurnLike): boolean;
60
+ /** Returns true when a token-limited turn contains only incomplete provider reasoning. */
61
+ export declare function isReasoningOnlyLengthAssistantTurn(message: AssistantTurnLike): boolean;
62
+ export declare const STREAM_ERROR_FALLBACK_TEXT = "[assistant turn failed before producing content]";
63
+ export declare function isStreamErrorFallbackContent(content: unknown): boolean;
64
+ export declare const FAILED_ASSISTANT_REPLAY_TEXT = "[This turn failed before it completed. Do not redo its work without confirming with the user first.]";
65
+ type FailedAssistantReplay = "keep" | "drop" | "marker";
66
+ /** Classify failed source content before model-specific thinking or tool projection. */
67
+ export declare function resolveFailedAssistantReplay(message: AssistantTurnLike, options: {
68
+ pairingAware: boolean;
69
+ }): FailedAssistantReplay;
70
+ //#endregion
51
71
  //#region packages/ai/src/utils/system-prompt-cache-boundary.d.ts
52
72
  export declare const SYSTEM_PROMPT_CACHE_BOUNDARY = "\n<!-- OPENCLAW_CACHE_BOUNDARY -->\n";
73
+ /** Producer-delimited Runtime facts; instructions must remain outside this region. */
74
+ export declare const SYSTEM_PROMPT_RELOCATABLE_BOUNDARY = "\n<!-- OPENCLAW-RELOCATABLE-BOUNDARY -->\n";
75
+ export declare const SYSTEM_PROMPT_RELOCATABLE_BOUNDARY_END = "\n<!-- /OPENCLAW-RELOCATABLE-BOUNDARY -->";
53
76
  export declare function stripSystemPromptCacheBoundary(text: string): string;
77
+ /** Reject ambiguous markers from workspace or hook text instead of moving instructions. */
78
+ export declare function splitSystemPromptRelocatableBoundary(text: string): {
79
+ remainingPrompt: string;
80
+ relocatable: string;
81
+ } | undefined;
54
82
  export declare function ensureSystemPromptCacheBoundary(systemPrompt: string): string;
55
83
  export declare function splitSystemPromptCacheBoundary(text: string): {
56
84
  stablePrefix: string;
57
85
  dynamicSuffix: string;
58
86
  } | undefined;
87
+ /** Keep explicit cache breakpoints while removing relocation metadata. */
88
+ export declare function stripSystemPromptRelocatableBoundary(text: string): string;
59
89
  export declare function prependSystemPromptAdditionAfterCacheBoundary(params: {
60
90
  systemPrompt: string;
61
91
  systemPromptAddition?: string;
@@ -71,4 +101,14 @@ export type TlsCertificateErrorDetails = {
71
101
  /** Classify deterministic Node/OpenSSL certificate validation failures. */
72
102
  export declare function inspectTlsCertificateError(error: unknown): TlsCertificateErrorDetails | null;
73
103
  //#endregion
74
- export { normalizePromptCapabilityIds, normalizeStructuredPromptSection, sanitizeSurrogates, sortPromptCacheToolsByName };
104
+ //#region packages/ai/src/providers/github-copilot-request-facts.d.ts
105
+ /** Request facts shared by Copilot transports; identity headers remain plugin-owned. */
106
+ export declare function projectCopilotRequestFacts(messages: readonly {
107
+ role: string;
108
+ content: unknown;
109
+ }[], contentMode: "direct" | "nested", hasImages?: boolean): {
110
+ initiator: "user" | "agent";
111
+ hasImages: boolean;
112
+ };
113
+ //#endregion
114
+ export { normalizePromptCapabilityIds, normalizeStructuredPromptSection, readAssistantThinkingAppend, sanitizeSurrogates, sortPromptCacheToolsByName };
@@ -1,6 +1,7 @@
1
- import { t as sanitizeSurrogates } from "../sanitize-unicode-D6xUvZaS.mjs";
2
- import { a as describeToolResultMediaPlaceholder, c as extractToolResultText, d as isImageWithMediaPayload, i as transformMessages, l as formatToolResultText, o as describeUnsupportedToolResultMedia, s as extractToolResultBlockText, u as hasMediaPayload } from "../host-CEvLw30U.mjs";
3
- import { c as ensureSystemPromptCacheBoundary, d as stripSystemPromptCacheBoundary, f as normalizePromptCapabilityIds, i as clampReasoning, l as prependSystemPromptAdditionAfterCacheBoundary, m as sortPromptCacheToolsByName, n as buildBaseOptions, p as normalizeStructuredPromptSection, r as clampMaxTokensToModel, s as SYSTEM_PROMPT_CACHE_BOUNDARY, t as adjustMaxTokensForThinking, u as splitSystemPromptCacheBoundary } from "../simple-options-BjHCCh4v.mjs";
1
+ import { o as readAssistantThinkingAppend } from "../event-stream-D8PARQfL.mjs";
2
+ import { _ as isImageWithMediaPayload, a as FAILED_ASSISTANT_REPLAY_TEXT, c as isReasoningOnlyLengthAssistantTurn, d as describeToolResultMediaPlaceholder, f as describeUnsupportedToolResultMedia, g as hasMediaPayload, h as formatToolResultText, i as transformMessages, l as isStreamErrorFallbackContent, m as extractToolResultText, o as STREAM_ERROR_FALLBACK_TEXT, p as extractToolResultBlockText, s as hasOnlyAssistantReasoningContent, u as resolveFailedAssistantReplay, v as sanitizeSurrogates } from "../host-B8YfDGd4.mjs";
3
+ import { _ as normalizeStructuredPromptSection, c as SYSTEM_PROMPT_RELOCATABLE_BOUNDARY, d as prependSystemPromptAdditionAfterCacheBoundary, f as splitSystemPromptCacheBoundary, g as normalizePromptCapabilityIds, h as stripSystemPromptRelocatableBoundary, i as clampReasoning, l as SYSTEM_PROMPT_RELOCATABLE_BOUNDARY_END, m as stripSystemPromptCacheBoundary, n as buildBaseOptions, p as splitSystemPromptRelocatableBoundary, r as clampMaxTokensToModel, s as SYSTEM_PROMPT_CACHE_BOUNDARY, t as adjustMaxTokensForThinking, u as ensureSystemPromptCacheBoundary, v as sortPromptCacheToolsByName } from "../simple-options-BQbb4yQL.mjs";
4
+ import { t as projectCopilotRequestFacts } from "../github-copilot-request-facts-BTEBMeOv.mjs";
4
5
  //#region packages/ai/src/utils/tls-certificate-errors.ts
5
6
  const HOSTNAME_MISMATCH_CODES = /* @__PURE__ */ new Set(["ERR_TLS_CERT_ALTNAME_INVALID", "HOSTNAME_MISMATCH"]);
6
7
  const CERTIFICATE_INVALID_CODES = /* @__PURE__ */ new Set([
@@ -93,4 +94,4 @@ function inspectTlsCertificateError(error) {
93
94
  return inspectTlsCertificateErrorInternal(error, /* @__PURE__ */ new Set(), 0);
94
95
  }
95
96
  //#endregion
96
- export { SYSTEM_PROMPT_CACHE_BOUNDARY, adjustMaxTokensForThinking, buildBaseOptions, clampMaxTokensToModel, clampReasoning, describeToolResultMediaPlaceholder, describeUnsupportedToolResultMedia, ensureSystemPromptCacheBoundary, extractToolResultBlockText, extractToolResultText, formatToolResultText, hasMediaPayload, inspectTlsCertificateError, isImageWithMediaPayload, normalizePromptCapabilityIds, normalizeStructuredPromptSection, prependSystemPromptAdditionAfterCacheBoundary, sanitizeSurrogates, sortPromptCacheToolsByName, splitSystemPromptCacheBoundary, stripSystemPromptCacheBoundary, transformMessages };
97
+ export { FAILED_ASSISTANT_REPLAY_TEXT, STREAM_ERROR_FALLBACK_TEXT, SYSTEM_PROMPT_CACHE_BOUNDARY, SYSTEM_PROMPT_RELOCATABLE_BOUNDARY, SYSTEM_PROMPT_RELOCATABLE_BOUNDARY_END, adjustMaxTokensForThinking, buildBaseOptions, clampMaxTokensToModel, clampReasoning, describeToolResultMediaPlaceholder, describeUnsupportedToolResultMedia, ensureSystemPromptCacheBoundary, extractToolResultBlockText, extractToolResultText, formatToolResultText, hasMediaPayload, hasOnlyAssistantReasoningContent, inspectTlsCertificateError, isImageWithMediaPayload, isReasoningOnlyLengthAssistantTurn, isStreamErrorFallbackContent, normalizePromptCapabilityIds, normalizeStructuredPromptSection, prependSystemPromptAdditionAfterCacheBoundary, projectCopilotRequestFacts, readAssistantThinkingAppend, resolveFailedAssistantReplay, sanitizeSurrogates, sortPromptCacheToolsByName, splitSystemPromptCacheBoundary, splitSystemPromptRelocatableBoundary, stripSystemPromptCacheBoundary, stripSystemPromptRelocatableBoundary, transformMessages };
@@ -0,0 +1,63 @@
1
+ import { a as resolveOpenAIProjectedToolsStrictToolFlag, i as normalizeStrictOpenAIJsonSchema, n as isStrictOpenAIJsonSchemaCompatible, o as findOpenAIStrictSchemaViolations, r as normalizeOpenAIStrictToolParameters, s as normalizeOpenAIStrictCompatSchema, t as findOpenAIStrictToolProjectionDiagnostics } from "../openai-tool-schema-ynZBgqW-.mjs";
2
+ import { TSchema } from "typebox";
3
+ //#region packages/ai/src/providers/agent-tools-parameter-schema.d.ts
4
+ /**
5
+ * Narrow structural view of the host's model compat config. packages/ai must stay
6
+ * config-agnostic, so only tool-schema-relevant fields are modeled here; the host's
7
+ * ModelCompatConfig remains structurally assignable.
8
+ */
9
+ export type ToolSchemaModelCompat = {
10
+ toolSchemaProfile?: string;
11
+ unsupportedToolSchemaKeywords?: string[];
12
+ omitEmptyArrayItems?: boolean;
13
+ };
14
+ /** Extracts the compat record whether callers pass a model (`{ compat }`) or the compat itself. */
15
+ export declare function extractToolSchemaModelCompat(modelOrCompat: {
16
+ compat?: unknown;
17
+ } | ToolSchemaModelCompat | undefined): ToolSchemaModelCompat | undefined;
18
+ /** JSON Schema keywords this model/provider rejects in tool schemas. */
19
+ export declare function resolveUnsupportedToolSchemaKeywords(modelOrCompat: {
20
+ compat?: unknown;
21
+ } | ToolSchemaModelCompat | undefined): ReadonlySet<string>;
22
+ /** Whether empty `items: {}` on array schemas must be omitted for this model/provider. */
23
+ export declare function shouldOmitEmptyArrayItems(modelOrCompat: {
24
+ compat?: unknown;
25
+ } | ToolSchemaModelCompat | undefined): boolean;
26
+ export type ToolParameterSchemaOptions = {
27
+ modelProvider?: string;
28
+ modelId?: string;
29
+ modelCompat?: ToolSchemaModelCompat;
30
+ };
31
+ /** Return a provider-compatible JSON schema for a model-facing tool. */
32
+ export declare function normalizeToolParameterSchema(schema: unknown, options?: ToolParameterSchemaOptions): TSchema;
33
+ //#endregion
34
+ //#region packages/ai/src/providers/clean-for-gemini.d.ts
35
+ export declare const GEMINI_UNSUPPORTED_SCHEMA_KEYWORDS: Set<string>;
36
+ export declare function cleanSchemaForGemini(schema: unknown): TSchema;
37
+ //#endregion
38
+ //#region packages/ai/src/providers/clean-for-llamacpp-gbnf.d.ts
39
+ /** llama.cpp rejects grammar repetitions whose expanded rule count reaches 2000. */
40
+ export declare const LLAMACPP_GBNF_MAX_REPETITION_THRESHOLD = 2000;
41
+ /** Removes JSON Schema constraints that llama.cpp cannot compile into GBNF. */
42
+ export declare function cleanSchemaForLlamacppGbnf(schema: unknown): unknown;
43
+ /** Reports schema paths that llama.cpp cannot compile into GBNF. */
44
+ export declare function findLlamacppGbnfSchemaViolations(schema: unknown, path: string): string[];
45
+ //#endregion
46
+ //#region packages/ai/src/providers/schema-keyword-strip.d.ts
47
+ /** Recursively remove schema keywords unsupported by a target provider/tool surface. */
48
+ export declare function stripUnsupportedSchemaKeywords(schema: unknown, unsupportedKeywords: ReadonlySet<string>): unknown;
49
+ //#endregion
50
+ //#region packages/ai/src/providers/tool-schema-json-projection.d.ts
51
+ /** JSON-safe schema value used when projecting runtime tool parameters. */
52
+ export type RuntimeToolInputSchemaJson = null | boolean | number | string | RuntimeToolInputSchemaJson[] | {
53
+ [key: string]: RuntimeToolInputSchemaJson;
54
+ };
55
+ /** Projected runtime tool schema plus validation violations. */
56
+ export type RuntimeToolInputSchemaProjection = {
57
+ readonly schema: RuntimeToolInputSchemaJson;
58
+ readonly violations: readonly string[];
59
+ };
60
+ /** Projects one runtime tool input schema to JSON and reports runtime incompatibilities. */
61
+ export declare function projectRuntimeToolInputSchema(schema: unknown, path?: string): RuntimeToolInputSchemaProjection;
62
+ //#endregion
63
+ export { findOpenAIStrictSchemaViolations, findOpenAIStrictToolProjectionDiagnostics, isStrictOpenAIJsonSchemaCompatible, normalizeOpenAIStrictCompatSchema, normalizeOpenAIStrictToolParameters, normalizeStrictOpenAIJsonSchema, resolveOpenAIProjectedToolsStrictToolFlag };
@@ -0,0 +1,3 @@
1
+ import { t as projectRuntimeToolInputSchema } from "../tool-schema-json-projection-ClptDdAO.mjs";
2
+ import { _ as cleanSchemaForGemini, a as resolveOpenAIProjectedToolsStrictToolFlag, c as extractToolSchemaModelCompat, d as shouldOmitEmptyArrayItems, f as stripUnsupportedSchemaKeywords, g as GEMINI_UNSUPPORTED_SCHEMA_KEYWORDS, h as findLlamacppGbnfSchemaViolations, i as normalizeStrictOpenAIJsonSchema, l as normalizeToolParameterSchema, m as cleanSchemaForLlamacppGbnf, n as isStrictOpenAIJsonSchemaCompatible, o as findOpenAIStrictSchemaViolations, p as LLAMACPP_GBNF_MAX_REPETITION_THRESHOLD, r as normalizeOpenAIStrictToolParameters, s as normalizeOpenAIStrictCompatSchema, t as findOpenAIStrictToolProjectionDiagnostics, u as resolveUnsupportedToolSchemaKeywords } from "../openai-tool-schema-CzjyYXun.mjs";
3
+ export { GEMINI_UNSUPPORTED_SCHEMA_KEYWORDS, LLAMACPP_GBNF_MAX_REPETITION_THRESHOLD, cleanSchemaForGemini, cleanSchemaForLlamacppGbnf, extractToolSchemaModelCompat, findLlamacppGbnfSchemaViolations, findOpenAIStrictSchemaViolations, findOpenAIStrictToolProjectionDiagnostics, isStrictOpenAIJsonSchemaCompatible, normalizeOpenAIStrictCompatSchema, normalizeOpenAIStrictToolParameters, normalizeStrictOpenAIJsonSchema, normalizeToolParameterSchema, projectRuntimeToolInputSchema, resolveOpenAIProjectedToolsStrictToolFlag, resolveUnsupportedToolSchemaKeywords, shouldOmitEmptyArrayItems, stripUnsupportedSchemaKeywords };