@openclaw/ai 2026.7.2-beta.7 → 2026.8.1-beta.1

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 (57) hide show
  1. package/dist/{anthropic-CH4UUnZr.mjs → anthropic-CE-7SkF6.mjs} +28 -191
  2. package/dist/{anthropic-usage-DWU-x8MI.mjs → anthropic-usage-Ma4iX6uG.mjs} +262 -4
  3. package/dist/{api-registry-DlMgPR39.d.mts → api-registry-EpJoVwM1.d.mts} +1 -1
  4. package/dist/{azure-openai-responses-CImcwB83.mjs → azure-openai-responses-Cc_kasye.mjs} +4 -4
  5. package/dist/{event-stream-D8n2uFee.mjs → event-stream-CEV9t6da.mjs} +10 -2
  6. package/dist/{event-stream-YjaPW20U.d.mts → event-stream-DRmDMRHH.d.mts} +2 -1
  7. package/dist/event-stream.d.mts +1 -1
  8. package/dist/event-stream.mjs +1 -1
  9. package/dist/{google-CtSg0iTS.mjs → google-CGQu21aw.mjs} +5 -5
  10. package/dist/{google-shared-DNBz5rcD.mjs → google-shared-Cq2UKx1l.mjs} +151 -85
  11. package/dist/{google-vertex-31f1uS9L.mjs → google-vertex-CusxWzvE.mjs} +10 -7
  12. package/dist/{host-Dog2WQiR.mjs → host-Bl7Kgddo.mjs} +40 -2
  13. package/dist/{host-B9GUmcra.d.mts → host-Dn4_SZI2.d.mts} +2 -2
  14. package/dist/index.d.mts +5 -5
  15. package/dist/index.mjs +2 -2
  16. package/dist/internal/anthropic.d.mts +19 -3
  17. package/dist/internal/anthropic.mjs +4 -4
  18. package/dist/internal/openai.d.mts +4 -4
  19. package/dist/internal/openai.mjs +7 -7
  20. package/dist/internal/runtime.d.mts +2 -2
  21. package/dist/internal/runtime.mjs +3 -3
  22. package/dist/internal/shared.d.mts +1 -1
  23. package/dist/internal/shared.mjs +3 -4
  24. package/dist/{mistral-CWmpvWYh.mjs → mistral-Dx6VzNjf.mjs} +25 -9
  25. package/dist/model-utils-Dau5dlgm.mjs +64 -0
  26. package/dist/number-coercion-1Miyb5MO.mjs +66 -0
  27. package/dist/{openai-chatgpt-responses-B84Ibtrd.mjs → openai-chatgpt-responses-SC9m0FSf.mjs} +94 -131
  28. package/dist/{openai-completions-DsOxhOD1.mjs → openai-completions-BaIpl93j.mjs} +47 -66
  29. package/dist/{openai-reasoning-compat-YgeLncHw.mjs → openai-reasoning-compat-DKebnIBL.mjs} +147 -6
  30. package/dist/{openai-responses-BT7A3sLu.mjs → openai-responses-Bdx3V_Yu.mjs} +6 -22
  31. package/dist/openai-responses-contracts-BBKBfAqR.d.mts +116 -0
  32. package/dist/openai-responses-prompt-observer-internal-DDZPxRfr.mjs +46 -0
  33. package/dist/{openai-responses-shared-pXl6Wd8S.mjs → openai-responses-shared-CCyMvg7M.mjs} +21 -10
  34. package/dist/{openai-responses-stream-internal-Cw5txaGW.mjs → openai-responses-stream-internal-Bl8YyVtF.mjs} +244 -81
  35. package/dist/{openai-tool-projection-OhX64DoP.mjs → openai-transport-shared-Cipt7egQ.mjs} +129 -29
  36. package/dist/{provider-error-CAEvRjry.mjs → provider-error-DI0Ts28U.mjs} +1 -1
  37. package/dist/{provider-options-D8bB3z9b.d.mts → provider-options-C5kYML7i.d.mts} +1 -1
  38. package/dist/providers.d.mts +1 -1
  39. package/dist/providers.mjs +9 -9
  40. package/dist/{stream-first-event-timeout-BBys9hSb.mjs → stream-first-event-timeout-BIBomOGq.mjs} +1 -1
  41. package/dist/{tool-result-text-CTpIRbYd.mjs → tool-result-text-Dvkp2Dus.mjs} +51 -2
  42. package/dist/{tool-schema-json-projection-BwNu3nDi.mjs → tool-schema-json-projection-B1b-XCn5.mjs} +28 -1
  43. package/dist/transform-messages-DfjpNXNQ.mjs +2 -0
  44. package/dist/{transport-stream-shared-D81p90xq.mjs → transport-stream-shared-CPNv7A3r.mjs} +4 -4
  45. package/dist/transports.d.mts +41 -73
  46. package/dist/transports.mjs +317 -601
  47. package/dist/{types-bzp5k29J.d.mts → types-CH7ReIcU.d.mts} +4 -0
  48. package/dist/types.d.mts +3 -3
  49. package/dist/types.mjs +1 -1
  50. package/dist/{validation-B-j7cOYp.d.mts → validation-CcPcuEbR.d.mts} +1 -1
  51. package/dist/validation.d.mts +1 -1
  52. package/package.json +1 -1
  53. package/dist/error-coercion-DgxlWC0n.mjs +0 -15
  54. package/dist/number-coercion-DvG7SNMg.mjs +0 -129
  55. package/dist/openai-completions-compat-DBWjXoMZ.d.mts +0 -43
  56. package/dist/simple-options-9lhRrN73.mjs +0 -50
  57. package/dist/transform-messages-C8mBqZxF.mjs +0 -2
@@ -1,7 +1,7 @@
1
1
  import { a as requiresClaudeMandatoryAdaptiveThinking, c as resolveClaudeMythos5ModelIdentity, d as resolveClaudeSonnet5ModelIdentity, g as supportsClaudeNativeXhighEffort, h as supportsClaudeNativeMaxEffort, i as requiresClaudeDefaultSampling, l as resolveClaudeNativeThinkingLevelMap, o as resolveClaudeFable5ModelIdentity, p as supportsClaudeAdaptiveThinking, s as resolveClaudeModelIdentity, u as resolveClaudeOpus5ModelIdentity } from "../anthropic-SrGtwsJu.mjs";
2
2
  import { t as AssistantMessageDiagnostic } from "../diagnostics-BaTA9eVl.mjs";
3
- import { E as Model, F as SimpleStreamOptions, R as StreamFunction, u as Context } from "../types-bzp5k29J.mjs";
4
- import { n as AnthropicOptions, r as AnthropicThinkingDisplay, t as AnthropicEffort } from "../provider-options-D8bB3z9b.mjs";
3
+ import { E as Model, F as SimpleStreamOptions, I as StopReason, R as StreamFunction, X as Usage, u as Context } from "../types-CH7ReIcU.mjs";
4
+ import { n as AnthropicOptions, r as AnthropicThinkingDisplay, t as AnthropicEffort } from "../provider-options-C5kYML7i.mjs";
5
5
  //#region packages/ai/src/providers/anthropic.d.ts
6
6
  declare const streamAnthropic: StreamFunction<"anthropic-messages", AnthropicOptions>;
7
7
  type AnthropicSimpleStreamOptions = SimpleStreamOptions & {
@@ -19,6 +19,8 @@ declare function usesFoundryBearerAuth(model: AnthropicAuthModel): boolean;
19
19
  declare function omitFoundryBearerCredentialHeaders(headers?: Record<string, string>): Record<string, string> | undefined;
20
20
  //#endregion
21
21
  //#region packages/ai/src/providers/anthropic-model-contract.d.ts
22
+ declare const ANTHROPIC_CLAUDE_CODE_VERSION = "2.1.75";
23
+ declare const ANTHROPIC_CLAUDE_CODE_BILLING_SYSTEM_BLOCK = "x-anthropic-billing-header: cc_version=2.1.75; cc_entrypoint=sdk-cli;";
22
24
  type ReplayModelRef = {
23
25
  provider?: string;
24
26
  api?: string;
@@ -48,6 +50,10 @@ declare function defaultsClaudeAdaptiveThinking(model: {
48
50
  params?: Record<string, unknown>;
49
51
  api?: string;
50
52
  }): boolean;
53
+ /** Resolve provider-native effort once for direct and managed Claude requests. */
54
+ declare function resolveAnthropicThinkingEffort(model: Model<"anthropic-messages">, level: SimpleStreamOptions["reasoning"]): AnthropicEffort;
55
+ /** Normalize Anthropic and Anthropic-compatible terminal reasons identically. */
56
+ declare function mapAnthropicStopReason(reason: string | undefined): StopReason;
51
57
  /** Remove unsupported assistant prefills while preserving completed tool-use turns. */
52
58
  declare function prepareClaudeNoPrefillRequestContext(model: Model, context: Context): Context;
53
59
  declare function applyClaudeRequestContract(params: Record<string, unknown>, model: {
@@ -149,6 +155,12 @@ type AnthropicProjectedToolChoice = ({
149
155
  readonly type: "tool";
150
156
  readonly name: string;
151
157
  } & AnthropicParallelToolChoice);
158
+ /** Preserve Claude Code's canonical tool casing for subscription OAuth requests. */
159
+ declare function toClaudeCodeToolName(name: string): string;
160
+ /** Anthropic rejects forced tools while extended thinking is enabled. */
161
+ declare function normalizeAnthropicToolChoice(thinkingEnabled: boolean, toolChoice: NonNullable<AnthropicOptions["toolChoice"]>): AnthropicProjectedToolChoice;
162
+ /** Anthropic tool identifiers accept only ASCII word characters and dashes. */
163
+ declare function normalizeAnthropicToolCallId(id: string): string;
152
164
  /** Snapshots direct/custom tool descriptors before Anthropic payload construction. */
153
165
  declare function projectAnthropicTools(tools: readonly AnthropicToolDescriptor[], toWireName: (name: string) => string): AnthropicToolProjection;
154
166
  /** Keeps forced Anthropic tool choices aligned with the projected wire names. */
@@ -190,5 +202,9 @@ declare function readAnthropicUsageTokenCount(value: unknown): number | undefine
190
202
  declare function readAnthropicCacheWriteUsage(usage: AnthropicUsagePayload): AnthropicCacheWriteUsage;
191
203
  declare function readAnthropicPromptUsageSnapshot(usage: AnthropicUsagePayload): AnthropicPromptUsageSnapshot | undefined;
192
204
  declare function readLastAnthropicIterationUsage(usage: AnthropicUsagePayload): AnthropicIterationUsageResult;
205
+ /** Record independent billing buckets without treating zero placeholders as context proof. */
206
+ declare function applyAnthropicMessageStartUsage(target: Usage, payload: AnthropicUsagePayload): AnthropicPromptUsageSnapshot | undefined;
207
+ /** Keep cumulative billing separate from the final server-side iteration context. */
208
+ declare function applyAnthropicMessageDeltaUsage(target: Usage, payload: AnthropicUsagePayload | undefined, messageStartPromptUsage: AnthropicPromptUsageSnapshot | undefined): void;
193
209
  //#endregion
194
- export { ANTHROPIC_OMITTED_REASONING_TEXT, ANTHROPIC_SERVER_SIDE_FALLBACKS, ANTHROPIC_SERVER_SIDE_FALLBACK_BETA, AnthropicCacheWriteUsage, type AnthropicEffort, AnthropicFallbackBoundary, AnthropicIterationUsageResult, AnthropicIterationUsageSnapshot, type AnthropicOptions, AnthropicProjectedToolChoice, AnthropicPromptUsageSnapshot, type AnthropicThinkingDisplay, AnthropicToolProjection, CLAUDE_OPUS_FALLBACK_MODEL_COST, applyAnthropicFallbackBoundary, applyAnthropicRefusal, applyClaudeRequestContract, defaultsClaudeAdaptiveThinking, findActiveAnthropicToolTurnAssistantIndex, omitFoundryBearerCredentialHeaders, prepareClaudeNoPrefillRequestContext, projectAnthropicTools, readAnthropicCacheWriteUsage, readAnthropicFallbackBoundary, readAnthropicPromptUsageSnapshot, readAnthropicUsageTokenCount, readLastAnthropicIterationUsage, reconcileAnthropicToolChoice, requiresClaudeAdaptiveThinking, requiresClaudeDefaultSampling, requiresClaudeMandatoryAdaptiveThinking, resolveAnthropicFallbackServingModelCost, resolveClaudeFable5ModelIdentity, resolveClaudeModelIdentity, resolveClaudeMythos5ModelIdentity, resolveClaudeNativeThinkingLevelMap, resolveClaudeOpus5ModelIdentity, resolveClaudeSonnet5ModelIdentity, resolveModelBoundThinkingReplayMode, resolveOriginalAnthropicToolName, streamAnthropic, streamSimpleAnthropic, supportsClaudeAdaptiveThinking, supportsClaudeNativeMaxEffort, supportsClaudeNativeXhighEffort, usesClaudeFable5MessagesContract, usesClaudeStreamingRefusalContract, usesFoundryBearerAuth };
210
+ export { ANTHROPIC_CLAUDE_CODE_BILLING_SYSTEM_BLOCK, ANTHROPIC_CLAUDE_CODE_VERSION, ANTHROPIC_OMITTED_REASONING_TEXT, ANTHROPIC_SERVER_SIDE_FALLBACKS, ANTHROPIC_SERVER_SIDE_FALLBACK_BETA, AnthropicCacheWriteUsage, type AnthropicEffort, AnthropicFallbackBoundary, AnthropicIterationUsageResult, AnthropicIterationUsageSnapshot, type AnthropicOptions, AnthropicProjectedToolChoice, AnthropicPromptUsageSnapshot, type AnthropicThinkingDisplay, AnthropicToolProjection, CLAUDE_OPUS_FALLBACK_MODEL_COST, applyAnthropicFallbackBoundary, applyAnthropicMessageDeltaUsage, applyAnthropicMessageStartUsage, applyAnthropicRefusal, applyClaudeRequestContract, defaultsClaudeAdaptiveThinking, findActiveAnthropicToolTurnAssistantIndex, mapAnthropicStopReason, normalizeAnthropicToolCallId, normalizeAnthropicToolChoice, omitFoundryBearerCredentialHeaders, prepareClaudeNoPrefillRequestContext, projectAnthropicTools, readAnthropicCacheWriteUsage, readAnthropicFallbackBoundary, readAnthropicPromptUsageSnapshot, readAnthropicUsageTokenCount, readLastAnthropicIterationUsage, reconcileAnthropicToolChoice, requiresClaudeAdaptiveThinking, requiresClaudeDefaultSampling, requiresClaudeMandatoryAdaptiveThinking, resolveAnthropicFallbackServingModelCost, resolveAnthropicThinkingEffort, resolveClaudeFable5ModelIdentity, resolveClaudeModelIdentity, resolveClaudeMythos5ModelIdentity, resolveClaudeNativeThinkingLevelMap, resolveClaudeOpus5ModelIdentity, resolveClaudeSonnet5ModelIdentity, resolveModelBoundThinkingReplayMode, resolveOriginalAnthropicToolName, streamAnthropic, streamSimpleAnthropic, supportsClaudeAdaptiveThinking, supportsClaudeNativeMaxEffort, supportsClaudeNativeXhighEffort, toClaudeCodeToolName, usesClaudeFable5MessagesContract, usesClaudeStreamingRefusalContract, usesFoundryBearerAuth };
@@ -1,5 +1,5 @@
1
1
  import { a as requiresClaudeMandatoryAdaptiveThinking, c as resolveClaudeMythos5ModelIdentity, d as resolveClaudeSonnet5ModelIdentity, g as supportsClaudeNativeXhighEffort, h as supportsClaudeNativeMaxEffort, i as requiresClaudeDefaultSampling, l as resolveClaudeNativeThinkingLevelMap, o as resolveClaudeFable5ModelIdentity, p as supportsClaudeAdaptiveThinking, s as resolveClaudeModelIdentity, u as resolveClaudeOpus5ModelIdentity } from "../src-QkygScBs.mjs";
2
- import { a as applyClaudeRequestContract, c as requiresClaudeAdaptiveThinking, d as usesClaudeStreamingRefusalContract, l as resolveModelBoundThinkingReplayMode, o as defaultsClaudeAdaptiveThinking, s as prepareClaudeNoPrefillRequestContext, u as usesClaudeFable5MessagesContract } from "../host-Dog2WQiR.mjs";
3
- import { _ as omitFoundryBearerCredentialHeaders, a as projectAnthropicTools, c as ANTHROPIC_OMITTED_REASONING_TEXT, d as ANTHROPIC_SERVER_SIDE_FALLBACK_BETA, f as CLAUDE_OPUS_FALLBACK_MODEL_COST, g as applyAnthropicRefusal, h as resolveAnthropicFallbackServingModelCost, i as readLastAnthropicIterationUsage, l as findActiveAnthropicToolTurnAssistantIndex, m as readAnthropicFallbackBoundary, n as readAnthropicPromptUsageSnapshot, o as reconcileAnthropicToolChoice, p as applyAnthropicFallbackBoundary, r as readAnthropicUsageTokenCount, s as resolveOriginalAnthropicToolName, t as readAnthropicCacheWriteUsage, u as ANTHROPIC_SERVER_SIDE_FALLBACKS, v as usesFoundryBearerAuth } from "../anthropic-usage-DWU-x8MI.mjs";
4
- import { n as streamAnthropic, r as streamSimpleAnthropic } from "../anthropic-CH4UUnZr.mjs";
5
- export { ANTHROPIC_OMITTED_REASONING_TEXT, ANTHROPIC_SERVER_SIDE_FALLBACKS, ANTHROPIC_SERVER_SIDE_FALLBACK_BETA, CLAUDE_OPUS_FALLBACK_MODEL_COST, applyAnthropicFallbackBoundary, applyAnthropicRefusal, applyClaudeRequestContract, defaultsClaudeAdaptiveThinking, findActiveAnthropicToolTurnAssistantIndex, omitFoundryBearerCredentialHeaders, prepareClaudeNoPrefillRequestContext, projectAnthropicTools, readAnthropicCacheWriteUsage, readAnthropicFallbackBoundary, readAnthropicPromptUsageSnapshot, readAnthropicUsageTokenCount, readLastAnthropicIterationUsage, reconcileAnthropicToolChoice, requiresClaudeAdaptiveThinking, requiresClaudeDefaultSampling, requiresClaudeMandatoryAdaptiveThinking, resolveAnthropicFallbackServingModelCost, resolveClaudeFable5ModelIdentity, resolveClaudeModelIdentity, resolveClaudeMythos5ModelIdentity, resolveClaudeNativeThinkingLevelMap, resolveClaudeOpus5ModelIdentity, resolveClaudeSonnet5ModelIdentity, resolveModelBoundThinkingReplayMode, resolveOriginalAnthropicToolName, streamAnthropic, streamSimpleAnthropic, supportsClaudeAdaptiveThinking, supportsClaudeNativeMaxEffort, supportsClaudeNativeXhighEffort, usesClaudeFable5MessagesContract, usesClaudeStreamingRefusalContract, usesFoundryBearerAuth };
2
+ import { a as ANTHROPIC_CLAUDE_CODE_BILLING_SYSTEM_BLOCK, c as defaultsClaudeAdaptiveThinking, d as requiresClaudeAdaptiveThinking, f as resolveAnthropicThinkingEffort, h as usesClaudeStreamingRefusalContract, l as mapAnthropicStopReason, m as usesClaudeFable5MessagesContract, o as ANTHROPIC_CLAUDE_CODE_VERSION, p as resolveModelBoundThinkingReplayMode, s as applyClaudeRequestContract, u as prepareClaudeNoPrefillRequestContext } from "../host-Bl7Kgddo.mjs";
3
+ import { C as usesFoundryBearerAuth, S as omitFoundryBearerCredentialHeaders, _ as CLAUDE_OPUS_FALLBACK_MODEL_COST, a as readAnthropicUsageTokenCount, b as resolveAnthropicFallbackServingModelCost, c as normalizeAnthropicToolChoice, d as resolveOriginalAnthropicToolName, f as toClaudeCodeToolName, g as ANTHROPIC_SERVER_SIDE_FALLBACK_BETA, h as ANTHROPIC_SERVER_SIDE_FALLBACKS, i as readAnthropicPromptUsageSnapshot, l as projectAnthropicTools, m as findActiveAnthropicToolTurnAssistantIndex, n as applyAnthropicMessageStartUsage, o as readLastAnthropicIterationUsage, p as ANTHROPIC_OMITTED_REASONING_TEXT, r as readAnthropicCacheWriteUsage, s as normalizeAnthropicToolCallId, t as applyAnthropicMessageDeltaUsage, u as reconcileAnthropicToolChoice, v as applyAnthropicFallbackBoundary, x as applyAnthropicRefusal, y as readAnthropicFallbackBoundary } from "../anthropic-usage-Ma4iX6uG.mjs";
4
+ import { n as streamAnthropic, r as streamSimpleAnthropic } from "../anthropic-CE-7SkF6.mjs";
5
+ export { ANTHROPIC_CLAUDE_CODE_BILLING_SYSTEM_BLOCK, ANTHROPIC_CLAUDE_CODE_VERSION, ANTHROPIC_OMITTED_REASONING_TEXT, ANTHROPIC_SERVER_SIDE_FALLBACKS, ANTHROPIC_SERVER_SIDE_FALLBACK_BETA, CLAUDE_OPUS_FALLBACK_MODEL_COST, applyAnthropicFallbackBoundary, applyAnthropicMessageDeltaUsage, applyAnthropicMessageStartUsage, applyAnthropicRefusal, applyClaudeRequestContract, defaultsClaudeAdaptiveThinking, findActiveAnthropicToolTurnAssistantIndex, mapAnthropicStopReason, normalizeAnthropicToolCallId, normalizeAnthropicToolChoice, omitFoundryBearerCredentialHeaders, prepareClaudeNoPrefillRequestContext, projectAnthropicTools, readAnthropicCacheWriteUsage, readAnthropicFallbackBoundary, readAnthropicPromptUsageSnapshot, readAnthropicUsageTokenCount, readLastAnthropicIterationUsage, reconcileAnthropicToolChoice, requiresClaudeAdaptiveThinking, requiresClaudeDefaultSampling, requiresClaudeMandatoryAdaptiveThinking, resolveAnthropicFallbackServingModelCost, resolveAnthropicThinkingEffort, resolveClaudeFable5ModelIdentity, resolveClaudeModelIdentity, resolveClaudeMythos5ModelIdentity, resolveClaudeNativeThinkingLevelMap, resolveClaudeOpus5ModelIdentity, resolveClaudeSonnet5ModelIdentity, resolveModelBoundThinkingReplayMode, resolveOriginalAnthropicToolName, streamAnthropic, streamSimpleAnthropic, supportsClaudeAdaptiveThinking, supportsClaudeNativeMaxEffort, supportsClaudeNativeXhighEffort, toClaudeCodeToolName, usesClaudeFable5MessagesContract, usesClaudeStreamingRefusalContract, usesFoundryBearerAuth };
@@ -1,6 +1,6 @@
1
- import { E as Model, F as SimpleStreamOptions, I as StopReason, R as StreamFunction, X as Usage, u as Context, z as StreamOptions } from "../types-bzp5k29J.mjs";
2
- import { _ as resolveOpenAIReasoningEffortForModel, a as OpenAICompletionsOptions, b as supportsOpenAITemperature, c as projectOpenAITools, d as OpenAIApiReasoningEffort, f as OpenAIReasoningEffort, g as normalizeOpenAIReasoningEffort, h as isOpenAIGpt56Model, l as reconcileOpenAICompletionsToolChoice, m as isOpenAIGpt55Model, o as OpenAICompletionsToolChoice, p as isOpenAIGpt54MiniModel, s as OpenAIToolProjection, u as reconcileOpenAIResponsesToolChoice, v as resolveOpenAISupportedReasoningEfforts, y as supportsOpenAIReasoningEffort } from "../provider-options-D8bB3z9b.mjs";
3
- import { t as ResolvedOpenAICompletionsCompat } from "../openai-completions-compat-DBWjXoMZ.mjs";
1
+ import { E as Model, F as SimpleStreamOptions, I as StopReason, R as StreamFunction, X as Usage, u as Context, z as StreamOptions } from "../types-CH7ReIcU.mjs";
2
+ import { _ as resolveOpenAIReasoningEffortForModel, a as OpenAICompletionsOptions, b as supportsOpenAITemperature, c as projectOpenAITools, d as OpenAIApiReasoningEffort, f as OpenAIReasoningEffort, g as normalizeOpenAIReasoningEffort, h as isOpenAIGpt56Model, l as reconcileOpenAICompletionsToolChoice, m as isOpenAIGpt55Model, o as OpenAICompletionsToolChoice, p as isOpenAIGpt54MiniModel, s as OpenAIToolProjection, u as reconcileOpenAIResponsesToolChoice, v as resolveOpenAISupportedReasoningEfforts, y as supportsOpenAIReasoningEffort } from "../provider-options-C5kYML7i.mjs";
3
+ import { c as ResolvedOpenAICompletionsCompat, o as ResponsesPromptObservation, s as responsesPromptObserver } from "../openai-responses-contracts-BBKBfAqR.mjs";
4
4
  import { n as clampOpenAIPromptCacheKey, t as OPENAI_PROMPT_CACHE_KEY_MAX_LENGTH } from "../openai-prompt-cache-2uo_1OR1.mjs";
5
5
  import OpenAI from "openai";
6
6
  import { TSchema } from "typebox";
@@ -257,4 +257,4 @@ type RuntimeToolInputSchemaProjection = {
257
257
  /** Projects one runtime tool input schema to JSON and reports runtime incompatibilities. */
258
258
  declare function projectRuntimeToolInputSchema(schema: unknown, path?: string): RuntimeToolInputSchemaProjection;
259
259
  //#endregion
260
- export { AZURE_RESPONSES_TEXT_CONTENT_PART_TYPE, AZURE_RESPONSES_TEXT_DELTA_EVENT_TYPE, AzureResponsesTextContentPart, AzureResponsesTextDeltaEvent, 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, OpenAIApiReasoningEffort, type OpenAICompletionsOptions, OpenAICompletionsToolChoice, OpenAIReasoningEffort, OpenAIResponsesOptions, OpenAIStopReasonResult, OpenAIToolProjection, ResponsesMessageSnapshotCollapse, ResponsesTerminalUsagePayload, ResponsesTextContentPartType, ResponsesTextDeltaEventType, ResponsesToolCallIdentity, ResponsesToolCallState, RuntimeToolInputSchemaJson, RuntimeToolInputSchemaProjection, ToolParameterSchemaOptions, ToolSchemaModelCompat, clampOpenAIPromptCacheKey, cleanSchemaForGemini, cleanSchemaForLlamacppGbnf, clearOpenAIToolSchemaCacheForTest, 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, reconcileOpenAICompletionsToolChoice, reconcileOpenAIResponsesToolChoice, resolveAzureDeploymentNameFromMap, resolveOpenAIProjectedToolsStrictToolFlag, resolveOpenAIReasoningEffortForModel, resolveOpenAISupportedReasoningEfforts, resolveResponsesMessageSnapshotCollapse, resolveResponsesTerminalStopReason, resolveUnsupportedToolSchemaKeywords, shouldOmitEmptyArrayItems, streamOpenAICompletions, streamOpenAIResponses, streamSimpleOpenAICompletions, streamSimpleOpenAIResponses, stripUnsupportedSchemaKeywords, supportsOpenAIReasoningEffort, supportsOpenAITemperature };
260
+ export { AZURE_RESPONSES_TEXT_CONTENT_PART_TYPE, AZURE_RESPONSES_TEXT_DELTA_EVENT_TYPE, AzureResponsesTextContentPart, AzureResponsesTextDeltaEvent, 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, OpenAIApiReasoningEffort, type OpenAICompletionsOptions, OpenAICompletionsToolChoice, OpenAIReasoningEffort, OpenAIResponsesOptions, OpenAIStopReasonResult, OpenAIToolProjection, ResponsesMessageSnapshotCollapse, type ResponsesPromptObservation, ResponsesTerminalUsagePayload, ResponsesTextContentPartType, ResponsesTextDeltaEventType, ResponsesToolCallIdentity, ResponsesToolCallState, RuntimeToolInputSchemaJson, RuntimeToolInputSchemaProjection, ToolParameterSchemaOptions, ToolSchemaModelCompat, clampOpenAIPromptCacheKey, cleanSchemaForGemini, cleanSchemaForLlamacppGbnf, clearOpenAIToolSchemaCacheForTest, 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, reconcileOpenAICompletionsToolChoice, reconcileOpenAIResponsesToolChoice, resolveAzureDeploymentNameFromMap, resolveOpenAIProjectedToolsStrictToolFlag, resolveOpenAIReasoningEffortForModel, resolveOpenAISupportedReasoningEfforts, resolveResponsesMessageSnapshotCollapse, resolveResponsesTerminalStopReason, resolveUnsupportedToolSchemaKeywords, responsesPromptObserver, shouldOmitEmptyArrayItems, streamOpenAICompletions, streamOpenAIResponses, streamSimpleOpenAICompletions, streamSimpleOpenAIResponses, stripUnsupportedSchemaKeywords, supportsOpenAIReasoningEffort, supportsOpenAITemperature };
@@ -1,9 +1,9 @@
1
1
  import { n as clampOpenAIPromptCacheKey, t as OPENAI_PROMPT_CACHE_KEY_MAX_LENGTH } from "../openai-prompt-cache-mZTCdRPo.mjs";
2
- import { n as reconcileOpenAICompletionsToolChoice, r as reconcileOpenAIResponsesToolChoice, t as projectOpenAITools } from "../openai-tool-projection-OhX64DoP.mjs";
3
- import { t as projectRuntimeToolInputSchema } from "../tool-schema-json-projection-BwNu3nDi.mjs";
4
- import { n as mapOpenAIStopReason, r as convertMessages } from "../openai-reasoning-compat-YgeLncHw.mjs";
5
- import { $ as normalizeOpenAIStrictCompatSchema, J as isStrictOpenAIJsonSchemaCompatible, K as clearOpenAIToolSchemaCacheForTest, Q as findOpenAIStrictSchemaViolations, X as normalizeStrictOpenAIJsonSchema, Y as normalizeOpenAIStrictToolParameters, Z as resolveOpenAIProjectedToolsStrictToolFlag, _ as resolveResponsesMessageSnapshotCollapse, _t as supportsOpenAITemperature, a as resolveResponsesTerminalStopReason, at as LLAMACPP_GBNF_MAX_REPETITION_THRESHOLD, c as readResponsesToolCallItemIdentity, ct as GEMINI_UNSUPPORTED_SCHEMA_KEYWORDS, d as OPENAI_RESPONSES_OUTPUT_TEXT_CONTENT_PART_TYPE, dt as isOpenAIGpt55Model, et as extractToolSchemaModelCompat, f as OPENAI_RESPONSES_OUTPUT_TEXT_DELTA_EVENT_TYPE, ft as isOpenAIGpt56Model, g as isResponsesTextDeltaEventType, gt as supportsOpenAIReasoningEffort, h as isResponsesTextContentPartType, ht as resolveOpenAISupportedReasoningEfforts, i as readResponsesReasoningTokens, it as stripUnsupportedSchemaKeywords, l as AZURE_RESPONSES_TEXT_CONTENT_PART_TYPE, lt as cleanSchemaForGemini, m as isAzureResponsesTextDeltaEventType, mt as resolveOpenAIReasoningEffortForModel, nt as resolveUnsupportedToolSchemaKeywords, ot as cleanSchemaForLlamacppGbnf, p as isAzureResponsesTextDeltaEvent, pt as normalizeOpenAIReasoningEffort, q as findOpenAIStrictToolProjectionDiagnostics, r as mapResponsesTerminalUsage, rt as shouldOmitEmptyArrayItems, s as createResponsesToolCallTracker, st as findLlamacppGbnfSchemaViolations, tt as normalizeToolParameterSchema, u as AZURE_RESPONSES_TEXT_DELTA_EVENT_TYPE, ut as isOpenAIGpt54MiniModel } from "../openai-responses-stream-internal-Cw5txaGW.mjs";
2
+ import { t as projectRuntimeToolInputSchema } from "../tool-schema-json-projection-B1b-XCn5.mjs";
3
+ import { a as convertMessages, n as mapOpenAIStopReason } from "../openai-reasoning-compat-DKebnIBL.mjs";
4
+ import { $ as shouldOmitEmptyArrayItems, B as responsesPromptObserver, G as normalizeOpenAIStrictToolParameters, H as clearOpenAIToolSchemaCacheForTest, J as findOpenAIStrictSchemaViolations, K as normalizeStrictOpenAIJsonSchema, Q as resolveUnsupportedToolSchemaKeywords, U as findOpenAIStrictToolProjectionDiagnostics, W as isStrictOpenAIJsonSchemaCompatible, X as extractToolSchemaModelCompat, Y as normalizeOpenAIStrictCompatSchema, Z as normalizeToolParameterSchema, _ as resolveResponsesMessageSnapshotCollapse, a as resolveResponsesTerminalStopReason, at as cleanSchemaForGemini, c as readResponsesToolCallItemIdentity, ct as isOpenAIGpt56Model, d as OPENAI_RESPONSES_OUTPUT_TEXT_CONTENT_PART_TYPE, dt as resolveOpenAISupportedReasoningEfforts, et as stripUnsupportedSchemaKeywords, f as OPENAI_RESPONSES_OUTPUT_TEXT_DELTA_EVENT_TYPE, ft as supportsOpenAIReasoningEffort, g as isResponsesTextDeltaEventType, h as isResponsesTextContentPartType, i as readResponsesReasoningTokens, it as GEMINI_UNSUPPORTED_SCHEMA_KEYWORDS, l as AZURE_RESPONSES_TEXT_CONTENT_PART_TYPE, lt as normalizeOpenAIReasoningEffort, m as isAzureResponsesTextDeltaEventType, nt as cleanSchemaForLlamacppGbnf, ot as isOpenAIGpt54MiniModel, p as isAzureResponsesTextDeltaEvent, pt as supportsOpenAITemperature, q as resolveOpenAIProjectedToolsStrictToolFlag, r as mapResponsesTerminalUsage, rt as findLlamacppGbnfSchemaViolations, s as createResponsesToolCallTracker, st as isOpenAIGpt55Model, tt as LLAMACPP_GBNF_MAX_REPETITION_THRESHOLD, u as AZURE_RESPONSES_TEXT_DELTA_EVENT_TYPE, ut as resolveOpenAIReasoningEffortForModel } from "../openai-responses-stream-internal-Bl8YyVtF.mjs";
5
+ import { d as reconcileOpenAIResponsesToolChoice, l as projectOpenAITools, u as reconcileOpenAICompletionsToolChoice } from "../openai-transport-shared-Cipt7egQ.mjs";
6
6
  import { i as resolveAzureDeploymentNameFromMap, n as isTraditionalAzureOpenAIHost, r as parseAzureDeploymentNameMap, t as isOpenAICompatibleAzureResponsesBaseUrl } from "../azure-openai-responses-client-compat-C7K7QfUE.mjs";
7
- import { n as streamOpenAICompletions, r as streamSimpleOpenAICompletions } from "../openai-completions-DsOxhOD1.mjs";
8
- import { n as streamOpenAIResponses, r as streamSimpleOpenAIResponses } from "../openai-responses-BT7A3sLu.mjs";
9
- 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, clearOpenAIToolSchemaCacheForTest, 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, reconcileOpenAICompletionsToolChoice, reconcileOpenAIResponsesToolChoice, resolveAzureDeploymentNameFromMap, resolveOpenAIProjectedToolsStrictToolFlag, resolveOpenAIReasoningEffortForModel, resolveOpenAISupportedReasoningEfforts, resolveResponsesMessageSnapshotCollapse, resolveResponsesTerminalStopReason, resolveUnsupportedToolSchemaKeywords, shouldOmitEmptyArrayItems, streamOpenAICompletions, streamOpenAIResponses, streamSimpleOpenAICompletions, streamSimpleOpenAIResponses, stripUnsupportedSchemaKeywords, supportsOpenAIReasoningEffort, supportsOpenAITemperature };
7
+ import { n as streamOpenAICompletions, r as streamSimpleOpenAICompletions } from "../openai-completions-BaIpl93j.mjs";
8
+ import { n as streamOpenAIResponses, r as streamSimpleOpenAIResponses } from "../openai-responses-Bdx3V_Yu.mjs";
9
+ 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, clearOpenAIToolSchemaCacheForTest, 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, reconcileOpenAICompletionsToolChoice, reconcileOpenAIResponsesToolChoice, resolveAzureDeploymentNameFromMap, resolveOpenAIProjectedToolsStrictToolFlag, resolveOpenAIReasoningEffortForModel, resolveOpenAISupportedReasoningEfforts, resolveResponsesMessageSnapshotCollapse, resolveResponsesTerminalStopReason, resolveUnsupportedToolSchemaKeywords, responsesPromptObserver, shouldOmitEmptyArrayItems, streamOpenAICompletions, streamOpenAIResponses, streamSimpleOpenAICompletions, streamSimpleOpenAIResponses, stripUnsupportedSchemaKeywords, supportsOpenAIReasoningEffort, supportsOpenAITemperature };
@@ -1,5 +1,5 @@
1
- import { D as ModelThinkingLevel, E as Model, F as SimpleStreamOptions, P as ProviderStreamOptions, X as Usage, i as AssistantMessage, n as Api, o as AssistantMessageEventStreamContract, u as Context, z as StreamOptions } from "../types-bzp5k29J.mjs";
2
- import { a as RegisteredApiProvider, t as ApiProvider } from "../api-registry-DlMgPR39.mjs";
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-CH7ReIcU.mjs";
2
+ import { a as RegisteredApiProvider, t as ApiProvider } from "../api-registry-EpJoVwM1.mjs";
3
3
  import { t as sanitizeSurrogates } from "../sanitize-unicode-BZiVbGwK.mjs";
4
4
  import { a as createFirstStreamEventTimeoutError, c as withFirstStreamEventTimeout, i as createFirstStreamEventAbortController, n as FirstStreamEventInternalOptions, o as getFirstStreamEventTimeoutHandler, r as FirstStreamEventTimeoutContext, s as getFirstStreamEventTimeoutMs, t as FirstStreamEventAbortController } from "../stream-first-event-timeout-DvDeSucC.mjs";
5
5
 
@@ -1,14 +1,14 @@
1
1
  import { n as getEnvApiKey, t as findEnvKeys } from "../env-api-keys-DrgeBuva.mjs";
2
2
  import { n as createApiRegistry, t as createLlmRuntime } from "../stream-CREqxHgU.mjs";
3
+ import { a as modelsAreEqual, i as getSupportedThinkingLevels, n as calculateCost, r as clampThinkingLevel, t as applyProviderReportedUsageCost } from "../model-utils-Dau5dlgm.mjs";
3
4
  import { t as sanitizeSurrogates } from "../sanitize-unicode-DT5o51ur.mjs";
4
- import { c as calculateCost, d as modelsAreEqual, l as clampThinkingLevel, s as applyProviderReportedUsageCost, u as getSupportedThinkingLevels } from "../number-coercion-DvG7SNMg.mjs";
5
5
  import { t as createDeferredEventBuffer } from "../deferred-event-buffer-DAvyP7qA.mjs";
6
6
  import { n as parseStreamingJson, r as repairJson, t as parseJsonWithRepair } from "../json-parse-BvXNt1-7.mjs";
7
7
  import { n as onLlmRequestActivity, t as notifyLlmRequestActivity } from "../llm-request-activity-BjtkplhG.mjs";
8
8
  import { t as createReasoningTagTextPartitioner } from "../reasoning-tag-text-partitioner-CGDyLWUR.mjs";
9
- import { a as withFirstStreamEventTimeout, i as getFirstStreamEventTimeoutMs, n as createFirstStreamEventTimeoutError, r as getFirstStreamEventTimeoutHandler, t as createFirstStreamEventAbortController } from "../stream-first-event-timeout-BBys9hSb.mjs";
10
- import { t as shortHash } from "../hash-CHgqbJmD.mjs";
9
+ import { a as withFirstStreamEventTimeout, i as getFirstStreamEventTimeoutMs, n as createFirstStreamEventTimeoutError, r as getFirstStreamEventTimeoutHandler, t as createFirstStreamEventAbortController } from "../stream-first-event-timeout-BIBomOGq.mjs";
11
10
  import { t as headersToRecord } from "../headers-B_e4-1J0.mjs";
11
+ import { t as shortHash } from "../hash-CHgqbJmD.mjs";
12
12
  import { i as registerSessionResourceCleanup, n as resolveOpenAICodexAccountId, r as cleanupSessionResources, t as decodeOpenAICodexJwtPayload } from "../openai-chatgpt-jwt-DhAAzLkj.mjs";
13
13
  import { t as createSseByteGuard } from "../streaming-byte-guard-BrbkbwUu.mjs";
14
14
  //#region packages/ai/src/internal/default-runtime.ts
@@ -1,4 +1,4 @@
1
- import { E as Model, F as SimpleStreamOptions, H as ThinkingBudgets, T as Message, W as ThinkingLevel, i as AssistantMessage, n as Api, z as StreamOptions } from "../types-bzp5k29J.mjs";
1
+ import { E as Model, F as SimpleStreamOptions, H as ThinkingBudgets, T as Message, W as ThinkingLevel, i as AssistantMessage, n as Api, z as StreamOptions } from "../types-CH7ReIcU.mjs";
2
2
  import { t as sanitizeSurrogates } from "../sanitize-unicode-BZiVbGwK.mjs";
3
3
  import { n as normalizeStructuredPromptSection, r as sortPromptCacheToolsByName, t as normalizePromptCapabilityIds } from "../prompt-cache-stability-Cwcjv_fx.mjs";
4
4
 
@@ -1,7 +1,6 @@
1
- import { i as transformMessages } from "../host-Dog2WQiR.mjs";
1
+ import { i as transformMessages } from "../host-Bl7Kgddo.mjs";
2
2
  import { t as sanitizeSurrogates } from "../sanitize-unicode-DT5o51ur.mjs";
3
- import { a as isImageWithMediaPayload, c as ensureSystemPromptCacheBoundary, d as stripSystemPromptCacheBoundary, f as normalizePromptCapabilityIds, i as hasMediaPayload, l as prependSystemPromptAdditionAfterCacheBoundary, m as sortPromptCacheToolsByName, n as extractToolResultBlockText, p as normalizeStructuredPromptSection, r as extractToolResultText, s as SYSTEM_PROMPT_CACHE_BOUNDARY, t as describeToolResultMediaPlaceholder, u as splitSystemPromptCacheBoundary } from "../tool-result-text-CTpIRbYd.mjs";
4
- import { i as clampReasoning, n as buildBaseOptions, r as clampMaxTokensToModel, t as adjustMaxTokensForThinking } from "../simple-options-9lhRrN73.mjs";
5
- import "../transform-messages-C8mBqZxF.mjs";
3
+ import { _ as normalizeStructuredPromptSection, a as isImageWithMediaPayload, c as buildBaseOptions, d as SYSTEM_PROMPT_CACHE_BOUNDARY, f as ensureSystemPromptCacheBoundary, g as normalizePromptCapabilityIds, h as stripSystemPromptCacheBoundary, i as hasMediaPayload, l as clampMaxTokensToModel, m as splitSystemPromptCacheBoundary, n as extractToolResultBlockText, p as prependSystemPromptAdditionAfterCacheBoundary, r as extractToolResultText, s as adjustMaxTokensForThinking, t as describeToolResultMediaPlaceholder, u as clampReasoning, v as sortPromptCacheToolsByName } from "../tool-result-text-Dvkp2Dus.mjs";
4
+ import "../transform-messages-DfjpNXNQ.mjs";
6
5
  import { t as inspectTlsCertificateError } from "../tls-certificate-errors-DXSpluKI.mjs";
7
6
  export { SYSTEM_PROMPT_CACHE_BOUNDARY, adjustMaxTokensForThinking, buildBaseOptions, clampMaxTokensToModel, clampReasoning, describeToolResultMediaPlaceholder, ensureSystemPromptCacheBoundary, extractToolResultBlockText, extractToolResultText, hasMediaPayload, inspectTlsCertificateError, isImageWithMediaPayload, normalizePromptCapabilityIds, normalizeStructuredPromptSection, prependSystemPromptAdditionAfterCacheBoundary, sanitizeSurrogates, sortPromptCacheToolsByName, splitSystemPromptCacheBoundary, stripSystemPromptCacheBoundary, transformMessages };
@@ -1,14 +1,13 @@
1
1
  import { n as getEnvApiKey } from "./env-api-keys-DrgeBuva.mjs";
2
- import { t as AssistantMessageEventStream } from "./event-stream-D8n2uFee.mjs";
3
- import { i as transformMessages, n as getAiTransportHost } from "./host-Dog2WQiR.mjs";
2
+ import { t as AssistantMessageEventStream } from "./event-stream-CEV9t6da.mjs";
3
+ import { b as isRecord, i as transformMessages, n as getAiTransportHost } from "./host-Bl7Kgddo.mjs";
4
+ import { n as calculateCost, r as clampThinkingLevel } from "./model-utils-Dau5dlgm.mjs";
4
5
  import { t as sanitizeSurrogates } from "./sanitize-unicode-DT5o51ur.mjs";
5
- import { a as isImageWithMediaPayload, d as stripSystemPromptCacheBoundary, o as truncateUtf16Safe, r as extractToolResultText, t as describeToolResultMediaPlaceholder } from "./tool-result-text-CTpIRbYd.mjs";
6
- import { c as calculateCost, l as clampThinkingLevel } from "./number-coercion-DvG7SNMg.mjs";
6
+ import { a as isImageWithMediaPayload, c as buildBaseOptions, h as stripSystemPromptCacheBoundary, l as clampMaxTokensToModel, o as truncateUtf16Safe, r as extractToolResultText, t as describeToolResultMediaPlaceholder } from "./tool-result-text-Dvkp2Dus.mjs";
7
7
  import { n as parseStreamingJson } from "./json-parse-BvXNt1-7.mjs";
8
- import { d as transportAbortError } from "./transport-stream-shared-D81p90xq.mjs";
8
+ import { d as transportAbortError } from "./transport-stream-shared-CPNv7A3r.mjs";
9
9
  import { t as shortHash } from "./hash-CHgqbJmD.mjs";
10
- import { n as buildBaseOptions, r as clampMaxTokensToModel } from "./simple-options-9lhRrN73.mjs";
11
- import "./transform-messages-C8mBqZxF.mjs";
10
+ import "./transform-messages-DfjpNXNQ.mjs";
12
11
  import { t as createSseByteGuard } from "./streaming-byte-guard-BrbkbwUu.mjs";
13
12
  import { randomUUID } from "node:crypto";
14
13
  import { HTTPClient, Mistral } from "@mistralai/mistralai";
@@ -97,7 +96,7 @@ const streamMistral = (model, context, options) => {
97
96
  });
98
97
  stream.end();
99
98
  } catch (error) {
100
- for (const block of output.content) delete block.partialArgs;
99
+ output.content = output.content.filter((block) => block.type !== "toolCall");
101
100
  output.stopReason = options?.signal?.aborted ? "aborted" : "error";
102
101
  output.errorMessage = formatMistralError(error);
103
102
  stream.push({
@@ -243,6 +242,7 @@ function readMistralCachedPromptTokens(usage, promptTokens) {
243
242
  }
244
243
  async function consumeChatStream(model, output, stream, mistralStream) {
245
244
  let currentBlock = null;
245
+ let terminalFinishReason;
246
246
  const blocks = output.content;
247
247
  const blockIndex = () => blocks.length - 1;
248
248
  const toolBlockIdentities = /* @__PURE__ */ new Map();
@@ -337,7 +337,10 @@ async function consumeChatStream(model, output, stream, mistralStream) {
337
337
  }
338
338
  const choice = chunk.choices[0];
339
339
  if (!choice) continue;
340
- if (choice.finishReason) output.stopReason = mapChatStopReason(choice.finishReason);
340
+ if (choice.finishReason) {
341
+ terminalFinishReason = choice.finishReason;
342
+ output.stopReason = mapChatStopReason(choice.finishReason);
343
+ }
341
344
  const delta = choice.delta;
342
345
  if (delta.content !== null && delta.content !== void 0) {
343
346
  const contentItems = typeof delta.content === "string" ? [delta.content] : delta.content;
@@ -484,6 +487,19 @@ async function consumeChatStream(model, output, stream, mistralStream) {
484
487
  }
485
488
  }
486
489
  finishCurrentBlock(currentBlock);
490
+ if (!terminalFinishReason || output.stopReason !== "toolUse") {
491
+ blocks.splice(0, blocks.length, ...blocks.filter((block) => block.type !== "toolCall"));
492
+ if (!terminalFinishReason) throw new Error("Mistral stream ended without a terminal finish reason");
493
+ return;
494
+ }
495
+ try {
496
+ for (const index of toolBlockIdentities.keys()) {
497
+ const rawArguments = blocks[index].partialArgs ?? "";
498
+ if (!isRecord(JSON.parse(rawArguments))) throw new Error("Mistral tool-call arguments must be a JSON object");
499
+ }
500
+ } catch {
501
+ throw new Error("Mistral completed tool call has invalid JSON arguments");
502
+ }
487
503
  for (const index of toolBlockIdentities.keys()) {
488
504
  const block = output.content.at(index);
489
505
  if (block?.type !== "toolCall") continue;
@@ -0,0 +1,64 @@
1
+ import { a as requiresClaudeMandatoryAdaptiveThinking, l as resolveClaudeNativeThinkingLevelMap } from "./src-QkygScBs.mjs";
2
+ //#region packages/ai/src/model-utils.ts
3
+ /** Calculates and stores model cost fields from token usage and per-million pricing. */
4
+ function calculateCost(model, usage) {
5
+ const cacheWrite1h = Math.min(usage.cacheWrite, Math.max(0, usage.cacheWrite1h ?? 0));
6
+ const cacheWrite5m = usage.cacheWrite - cacheWrite1h;
7
+ usage.cost.input = model.cost.input / 1e6 * usage.input;
8
+ usage.cost.output = model.cost.output / 1e6 * usage.output;
9
+ usage.cost.cacheRead = model.cost.cacheRead / 1e6 * usage.cacheRead;
10
+ usage.cost.cacheWrite = (model.cost.cacheWrite * cacheWrite5m + model.cost.input * 2 * cacheWrite1h) / 1e6;
11
+ usage.cost.total = usage.cost.input + usage.cost.output + usage.cost.cacheRead + usage.cost.cacheWrite;
12
+ return usage.cost;
13
+ }
14
+ /** Replaces the catalog estimate when the provider reports an authoritative billed total. */
15
+ function applyProviderReportedUsageCost(usage, reportedCost) {
16
+ if (typeof reportedCost !== "number" || !Number.isFinite(reportedCost) || reportedCost < 0) return;
17
+ usage.cost.total = reportedCost;
18
+ usage.cost.totalOrigin = "provider-billed";
19
+ }
20
+ const EXTENDED_THINKING_LEVELS = [
21
+ "off",
22
+ "minimal",
23
+ "low",
24
+ "medium",
25
+ "high",
26
+ "xhigh",
27
+ "max"
28
+ ];
29
+ function resolveThinkingLevelMap(model) {
30
+ return model.api === "anthropic-messages" ? resolveClaudeNativeThinkingLevelMap(model) ?? model.thinkingLevelMap : model.thinkingLevelMap;
31
+ }
32
+ /** Returns thinking levels exposed by a reasoning-capable model. */
33
+ function getSupportedThinkingLevels(model) {
34
+ const mandatoryAdaptiveContract = model.api === "anthropic-messages" && requiresClaudeMandatoryAdaptiveThinking(model);
35
+ if (!model.reasoning && !mandatoryAdaptiveContract) return ["off"];
36
+ const thinkingLevelMap = resolveThinkingLevelMap(model);
37
+ return EXTENDED_THINKING_LEVELS.filter((level) => {
38
+ const mapped = thinkingLevelMap?.[level];
39
+ if (mapped === null) return false;
40
+ if (level === "xhigh" || level === "max") return mapped !== void 0;
41
+ return true;
42
+ });
43
+ }
44
+ /** Clamps a requested thinking level to the closest supported level for a model. */
45
+ function clampThinkingLevel(model, level) {
46
+ const availableLevels = getSupportedThinkingLevels(model);
47
+ if (availableLevels.includes(level)) return level;
48
+ const requestedIndex = EXTENDED_THINKING_LEVELS.indexOf(level);
49
+ if (requestedIndex === -1) return availableLevels[0] ?? "off";
50
+ const thinkingLevelMap = resolveThinkingLevelMap(model);
51
+ if ((level === "xhigh" || level === "max") && thinkingLevelMap?.[level] === null) {
52
+ for (const candidate of EXTENDED_THINKING_LEVELS.slice(0, requestedIndex).toReversed()) if (availableLevels.includes(candidate)) return candidate;
53
+ }
54
+ for (const candidate of EXTENDED_THINKING_LEVELS.slice(requestedIndex)) if (availableLevels.includes(candidate)) return candidate;
55
+ for (const candidate of EXTENDED_THINKING_LEVELS.slice(0, requestedIndex).toReversed()) if (availableLevels.includes(candidate)) return candidate;
56
+ return availableLevels[0] ?? "off";
57
+ }
58
+ /** Compares model identity by provider and id. */
59
+ function modelsAreEqual(a, b) {
60
+ if (!a || !b) return false;
61
+ return a.id === b.id && a.provider === b.provider;
62
+ }
63
+ //#endregion
64
+ export { modelsAreEqual as a, getSupportedThinkingLevels as i, calculateCost as n, clampThinkingLevel as r, applyProviderReportedUsageCost as t };
@@ -0,0 +1,66 @@
1
+ //#region packages/normalization-core/src/number-coercion.ts
2
+ /** Returns a number only when the input is already finite. */
3
+ function asFiniteNumber(value) {
4
+ return typeof value === "number" && Number.isFinite(value) ? value : void 0;
5
+ }
6
+ /** Returns a finite number only when it satisfies the supplied inclusive/exclusive bounds. */
7
+ function asFiniteNumberInRange(value, range) {
8
+ const number = asFiniteNumber(value);
9
+ if (number === void 0) return;
10
+ if (range.min !== void 0) {
11
+ if (range.minExclusive ? number <= range.min : number < range.min) return;
12
+ }
13
+ if (range.max !== void 0) {
14
+ if (range.maxExclusive ? number >= range.max : number > range.max) return;
15
+ }
16
+ return number;
17
+ }
18
+ function normalizeNumericString(value) {
19
+ const trimmed = value.trim();
20
+ return trimmed ? trimmed : void 0;
21
+ }
22
+ /** Parses only safe integer numbers or base-10 integer strings. */
23
+ function parseStrictInteger(value) {
24
+ if (typeof value === "number") return Number.isSafeInteger(value) ? value : void 0;
25
+ if (typeof value !== "string") return;
26
+ const normalized = normalizeNumericString(value);
27
+ if (!normalized || !/^[+-]?\d+$/.test(normalized)) return;
28
+ const parsed = Number(normalized);
29
+ return Number.isSafeInteger(parsed) ? parsed : void 0;
30
+ }
31
+ /** Parses only finite decimal/scientific string tokens, rejecting partial numbers. */
32
+ function parseStrictFiniteNumber(value) {
33
+ if (typeof value === "number") return Number.isFinite(value) ? value : void 0;
34
+ if (typeof value !== "string") return;
35
+ const normalized = normalizeNumericString(value);
36
+ if (!normalized || !/^[+-]?(?:(?:\d+\.?\d*)|(?:\.\d+))(?:e[+-]?\d+)?$/i.test(normalized)) return;
37
+ const parsed = Number(normalized);
38
+ return Number.isFinite(parsed) ? parsed : void 0;
39
+ }
40
+ /** Conservative upper bound for Node timer delays. */
41
+ const MAX_TIMER_TIMEOUT_MS = 2147e6;
42
+ /** Clamps finite millisecond values into the Node-safe timer range. */
43
+ function clampTimerTimeoutMs(valueMs, minMs = 1) {
44
+ const value = asFiniteNumber(valueMs);
45
+ if (value === void 0) return;
46
+ return Math.min(Math.max(Math.floor(value), Math.max(1, Math.floor(minMs))), MAX_TIMER_TIMEOUT_MS);
47
+ }
48
+ /** Resolves arbitrary timeout input with fallback and minimum timer bounds. */
49
+ function resolveTimerTimeoutMs(valueMs, fallbackMs, minMs = 1) {
50
+ const value = asFiniteNumber(valueMs) ?? asFiniteNumber(fallbackMs);
51
+ const min = Math.max(0, Math.floor(minMs));
52
+ if (value === void 0) return min;
53
+ return Math.min(Math.max(Math.floor(value), min), MAX_TIMER_TIMEOUT_MS);
54
+ }
55
+ /** Parses strict positive integer values from numbers or strings. */
56
+ function parseStrictPositiveInteger(value) {
57
+ const parsed = parseStrictInteger(value);
58
+ return parsed !== void 0 && parsed > 0 ? parsed : void 0;
59
+ }
60
+ /** Parses strict non-negative integer values from numbers or strings. */
61
+ function parseStrictNonNegativeInteger(value) {
62
+ const parsed = parseStrictInteger(value);
63
+ return parsed !== void 0 && parsed >= 0 ? parsed : void 0;
64
+ }
65
+ //#endregion
66
+ export { parseStrictPositiveInteger as a, parseStrictNonNegativeInteger as i, clampTimerTimeoutMs as n, resolveTimerTimeoutMs as o, parseStrictFiniteNumber as r, asFiniteNumberInRange as t };