@openclaw/ai 2026.8.1-beta.2 → 2026.8.1-beta.3

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 (65) hide show
  1. package/dist/{anthropic-B6dLpq5L.mjs → anthropic-B8KwTtlb.mjs} +37 -27
  2. package/dist/{anthropic-SrGtwsJu.d.mts → anthropic-BECQCNdF.d.mts} +0 -2
  3. package/dist/{anthropic-JsNA5KCu.mjs → anthropic-BQXQudmA.mjs} +0 -1
  4. package/dist/{anthropic-compaction-replay-8lJNKXOE.mjs → anthropic-compaction-replay-4Zx7-aCr.mjs} +14 -15
  5. package/dist/{anthropic-payload-policy-CiEuQS72.d.mts → anthropic-payload-policy-CSx7MoKH.d.mts} +2 -1
  6. package/dist/{api-registry-k3zTz0cV.d.mts → api-registry-DFxSnFqG.d.mts} +1 -1
  7. package/dist/{azure-openai-responses-mxIOtUnn.mjs → azure-openai-responses-Aa4mVcYG.mjs} +3 -3
  8. package/dist/diagnostics.mjs +1 -1
  9. package/dist/event-stream-BVVgDSdq.d.mts +1 -0
  10. package/dist/{event-stream-BP6AWT8j.d.mts → event-stream-D91-ohD_.d.mts} +1 -1
  11. package/dist/event-stream.d.mts +1 -1
  12. package/dist/{google-shared-B0Qr9OR7.mjs → google-shared-M1dl64nz.mjs} +12 -5
  13. package/dist/{google-vertex-Bhc3TjDl.mjs → google-vertex-DCJHM_a5.mjs} +3 -3
  14. package/dist/{google-C7h2QzDX.mjs → google-yDRnipeq.mjs} +3 -3
  15. package/dist/headers-B_e4-1J0.mjs +9 -0
  16. package/dist/{host-DTqNc7ad.mjs → host-DF_yxOsA.mjs} +40 -29
  17. package/dist/{host-vWgMMhiJ.d.mts → host-DJq_FGcz.d.mts} +6 -6
  18. package/dist/index.d.mts +7 -7
  19. package/dist/index.mjs +2 -2
  20. package/dist/internal/anthropic.d.mts +11 -5
  21. package/dist/internal/anthropic.mjs +4 -4
  22. package/dist/internal/openai-responses-payload-policy.d.mts +2 -2
  23. package/dist/internal/openai-responses-payload-policy.mjs +2 -2
  24. package/dist/internal/openai.d.mts +5 -5
  25. package/dist/internal/openai.mjs +9 -8
  26. package/dist/internal/runtime.d.mts +4 -2
  27. package/dist/internal/runtime.mjs +4 -3
  28. package/dist/internal/shared.d.mts +17 -3
  29. package/dist/internal/shared.mjs +4 -4
  30. package/dist/{headers-DdOQtGuU.mjs → llm-request-activity-BjtkplhG.mjs} +1 -9
  31. package/dist/{mistral-CEWoQI_g.mjs → mistral-D6hRXI7A.mjs} +47 -33
  32. package/dist/{openai-chatgpt-responses-CrPmqERt.mjs → openai-chatgpt-responses-C339VIfT.mjs} +23 -15
  33. package/dist/{openai-completions-BPnt4Sml.mjs → openai-completions-D88orSJ9.mjs} +71 -35
  34. package/dist/{openai-completions-compat-Dt3dcawL.d.mts → openai-completions-compat-B0KTleXp.d.mts} +2 -2
  35. package/dist/{openai-responses-DhIKtOup.mjs → openai-responses-BXEcr-Tp.mjs} +4 -4
  36. package/dist/{openai-responses-contracts-XpZJxrRG.d.mts → openai-responses-contracts-CD75pQ0m.d.mts} +2 -2
  37. package/dist/{openai-responses-contracts-CyfIkQi5.mjs → openai-responses-contracts-DvILoqBk.mjs} +3 -9
  38. package/dist/{openai-responses-payload-policy-BDxV-W0c.mjs → openai-responses-payload-policy-BDo8CQsx.mjs} +4 -2
  39. package/dist/{openai-responses-payload-policy-BSs371VM.d.mts → openai-responses-payload-policy-CNGFT9zr.d.mts} +1 -0
  40. package/dist/{openai-responses-prompt-observer-internal-DgNTYnRY.mjs → openai-responses-prompt-observer-internal-BG-1AsBI.mjs} +2 -3
  41. package/dist/{openai-responses-shared-DXIt3iY5.mjs → openai-responses-shared-Cvt5MgEm.mjs} +81 -136
  42. package/dist/{openai-stop-reason-BkFkqqK0.mjs → openai-stop-reason-9OONKyAm.mjs} +47 -31
  43. package/dist/{openai-tool-projection-CY04OcvQ.mjs → openai-tool-projection-CHGLt03m.mjs} +94 -6
  44. package/dist/{provider-error-BUwEnjXq.mjs → provider-error-C8mBRJDl.mjs} +19 -24
  45. package/dist/provider-options-AvldWZt8.mjs +21 -0
  46. package/dist/{provider-options-B96RdNpH.d.mts → provider-options-Cc5ZQ6Aa.d.mts} +12 -2
  47. package/dist/provider-transcript-transform--gtf0ZbR.mjs +32 -0
  48. package/dist/provider-types.d.mts +5 -5
  49. package/dist/providers.d.mts +1 -1
  50. package/dist/providers.mjs +9 -9
  51. package/dist/{reasoning-tag-text-partitioner-rnPwX2pg.mjs → reasoning-tag-text-partitioner-5ygO2rZc.mjs} +3 -0
  52. package/dist/{sanitize-unicode-BYqrYtC_.mjs → sanitize-unicode-BP7HLLZn.mjs} +1 -1
  53. package/dist/simple-options-oqsXB6U3.mjs +450 -0
  54. package/dist/{tool-schema-json-projection-q5d7QX5c.mjs → tool-schema-json-projection-FEr-jOoZ.mjs} +16 -7
  55. package/dist/{transport-utils-DJqkxbhC.mjs → transport-utils-Bv0FHkd0.mjs} +1 -1
  56. package/dist/transports.d.mts +77 -44
  57. package/dist/transports.mjs +207 -167
  58. package/dist/{types-BHNrPS1l.d.mts → types-DTAP49HF.d.mts} +17 -2
  59. package/dist/types.d.mts +5 -5
  60. package/dist/types.mjs +1 -1
  61. package/dist/{validation-DT9SrFn3.d.mts → validation-DYNNrU9u.d.mts} +1 -1
  62. package/dist/validation.d.mts +1 -1
  63. package/package.json +1 -1
  64. package/dist/provider-transcript-transform-ePx-Bbfr.mjs +0 -155
  65. package/dist/simple-options-D58D5Kvw.mjs +0 -117
@@ -1,8 +1,8 @@
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";
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-BECQCNdF.mjs";
2
2
  import { t as AssistantMessageDiagnostic } from "../diagnostics-BaTA9eVl.mjs";
3
- import { $ as Usage, E as Model, R as SimpleStreamOptions, V as StreamFunction, u as Context, z as StopReason } from "../types-BHNrPS1l.mjs";
4
- import { n as AnthropicOptions, r as AnthropicThinkingDisplay, t as AnthropicEffort } from "../provider-options-B96RdNpH.mjs";
5
- import { o as resolveAnthropicServerCompactionPlan } from "../anthropic-payload-policy-CiEuQS72.mjs";
3
+ import { B as StopReason, D as Model, H as StreamFunction, d as Context, et as Usage, z as SimpleStreamOptions } from "../types-DTAP49HF.mjs";
4
+ import { n as AnthropicOptions, r as AnthropicThinkingDisplay, t as AnthropicEffort } from "../provider-options-Cc5ZQ6Aa.mjs";
5
+ import { o as resolveAnthropicServerCompactionPlan } from "../anthropic-payload-policy-CSx7MoKH.mjs";
6
6
 
7
7
  //#region packages/ai/src/providers/anthropic.d.ts
8
8
  type AnthropicCompactionOptions = AnthropicOptions & {
@@ -64,7 +64,13 @@ declare function resolveAnthropicThinkingEffort(model: Model<"anthropic-messages
64
64
  declare function mapAnthropicStopReason(reason: string | undefined): StopReason;
65
65
  /** Remove unsupported assistant prefills while preserving completed tool-use turns. */
66
66
  declare function prepareClaudeNoPrefillRequestContext(model: Model, context: Context): Context;
67
- declare function applyClaudeRequestContract(params: Record<string, unknown>, model: {
67
+ type ClaudeSamplingRequestParams = {
68
+ temperature?: unknown;
69
+ top_p?: unknown;
70
+ top_k?: unknown;
71
+ service_tier?: unknown;
72
+ };
73
+ declare function applyClaudeRequestContract(params: ClaudeSamplingRequestParams, model: {
68
74
  id?: string;
69
75
  params?: Record<string, unknown>;
70
76
  api?: string;
@@ -1,5 +1,5 @@
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-JsNA5KCu.mjs";
2
- import { _ as resolveAnthropicThinkingEffort, b as usesClaudeStreamingRefusalContract, d as ANTHROPIC_CLAUDE_CODE_VERSION, f as applyClaudeRequestContract, g as requiresClaudeAdaptiveThinking, h as prepareClaudeNoPrefillRequestContext, m as mapAnthropicStopReason, p as defaultsClaudeAdaptiveThinking, u as ANTHROPIC_CLAUDE_CODE_BILLING_SYSTEM_BLOCK, v as resolveModelBoundThinkingReplayMode, y as usesClaudeFable5MessagesContract } from "../host-DTqNc7ad.mjs";
3
- import { C as readAnthropicFallbackBoundary, D as usesFoundryBearerAuth, E as omitFoundryBearerCredentialHeaders, I as resolveAnthropicServerCompactionPlan, S as applyAnthropicFallbackBoundary, T as applyAnthropicRefusal, _ as ANTHROPIC_OMITTED_REASONING_TEXT, a as applyAnthropicMessageDeltaUsage, b as ANTHROPIC_SERVER_SIDE_FALLBACK_BETA, c as readAnthropicPromptUsageSnapshot, d as normalizeAnthropicToolCallId, f as normalizeAnthropicToolChoice, g as toClaudeCodeToolName, h as resolveOriginalAnthropicToolName, l as readAnthropicUsageTokenCount, m as reconcileAnthropicToolChoice, o as applyAnthropicMessageStartUsage, p as projectAnthropicTools, s as readAnthropicCacheWriteUsage, u as readLastAnthropicIterationUsage, v as findActiveAnthropicToolTurnAssistantIndex, w as resolveAnthropicFallbackServingModelCost, x as CLAUDE_OPUS_FALLBACK_MODEL_COST, y as ANTHROPIC_SERVER_SIDE_FALLBACKS } from "../anthropic-compaction-replay-8lJNKXOE.mjs";
4
- import { n as streamAnthropic, r as streamSimpleAnthropic } from "../anthropic-B6dLpq5L.mjs";
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-BQXQudmA.mjs";
2
+ import { S as usesClaudeStreamingRefusalContract, _ as prepareClaudeNoPrefillRequestContext, b as resolveModelBoundThinkingReplayMode, f as ANTHROPIC_CLAUDE_CODE_BILLING_SYSTEM_BLOCK, g as mapAnthropicStopReason, h as defaultsClaudeAdaptiveThinking, m as applyClaudeRequestContract, p as ANTHROPIC_CLAUDE_CODE_VERSION, v as requiresClaudeAdaptiveThinking, x as usesClaudeFable5MessagesContract, y as resolveAnthropicThinkingEffort } from "../host-DF_yxOsA.mjs";
3
+ import { C as readAnthropicFallbackBoundary, D as usesFoundryBearerAuth, E as omitFoundryBearerCredentialHeaders, I as resolveAnthropicServerCompactionPlan, S as applyAnthropicFallbackBoundary, T as applyAnthropicRefusal, _ as ANTHROPIC_OMITTED_REASONING_TEXT, a as applyAnthropicMessageDeltaUsage, b as ANTHROPIC_SERVER_SIDE_FALLBACK_BETA, c as readAnthropicPromptUsageSnapshot, d as normalizeAnthropicToolCallId, f as normalizeAnthropicToolChoice, g as toClaudeCodeToolName, h as resolveOriginalAnthropicToolName, l as readAnthropicUsageTokenCount, m as reconcileAnthropicToolChoice, o as applyAnthropicMessageStartUsage, p as projectAnthropicTools, s as readAnthropicCacheWriteUsage, u as readLastAnthropicIterationUsage, v as findActiveAnthropicToolTurnAssistantIndex, w as resolveAnthropicFallbackServingModelCost, x as CLAUDE_OPUS_FALLBACK_MODEL_COST, y as ANTHROPIC_SERVER_SIDE_FALLBACKS } from "../anthropic-compaction-replay-4Zx7-aCr.mjs";
4
+ import { n as streamAnthropic, r as streamSimpleAnthropic } from "../anthropic-B8KwTtlb.mjs";
5
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, resolveAnthropicServerCompactionPlan, resolveAnthropicThinkingEffort, resolveClaudeFable5ModelIdentity, resolveClaudeModelIdentity, resolveClaudeMythos5ModelIdentity, resolveClaudeNativeThinkingLevelMap, resolveClaudeOpus5ModelIdentity, resolveClaudeSonnet5ModelIdentity, resolveModelBoundThinkingReplayMode, resolveOriginalAnthropicToolName, streamAnthropic, streamSimpleAnthropic, supportsClaudeAdaptiveThinking, supportsClaudeNativeMaxEffort, supportsClaudeNativeXhighEffort, toClaudeCodeToolName, usesClaudeFable5MessagesContract, usesClaudeStreamingRefusalContract, usesFoundryBearerAuth };
@@ -1,3 +1,3 @@
1
- import { t as OPENAI_RESPONSES_APIS } from "../openai-responses-contracts-XpZJxrRG.mjs";
2
- import { i as resolveOpenAIResponsesServerCompactionPlan } from "../openai-responses-payload-policy-BSs371VM.mjs";
1
+ import { t as OPENAI_RESPONSES_APIS } from "../openai-responses-contracts-CD75pQ0m.mjs";
2
+ import { i as resolveOpenAIResponsesServerCompactionPlan } from "../openai-responses-payload-policy-CNGFT9zr.mjs";
3
3
  export { OPENAI_RESPONSES_APIS, resolveOpenAIResponsesServerCompactionPlan };
@@ -1,3 +1,3 @@
1
- import { i as OPENAI_RESPONSES_APIS } from "../openai-responses-contracts-CyfIkQi5.mjs";
2
- import { i as resolveOpenAIResponsesServerCompactionPlan } from "../openai-responses-payload-policy-BDxV-W0c.mjs";
1
+ import { i as OPENAI_RESPONSES_APIS } from "../openai-responses-contracts-DvILoqBk.mjs";
2
+ import { i as resolveOpenAIResponsesServerCompactionPlan } from "../openai-responses-payload-policy-BDo8CQsx.mjs";
3
3
  export { OPENAI_RESPONSES_APIS, resolveOpenAIResponsesServerCompactionPlan };
@@ -1,7 +1,7 @@
1
- import { $ as Usage, E as Model, R as SimpleStreamOptions, V as StreamFunction, u as Context, z as StopReason } from "../types-BHNrPS1l.mjs";
2
- import { _ as normalizeOpenAIReasoningEffort, a as OpenAICompletionsOptions, b as supportsOpenAIReasoningEffort, c as OpenAIToolProjection, d as reconcileOpenAIResponsesToolChoice, f as OpenAIApiReasoningEffort, g as isOpenAIGpt56Model, h as isOpenAIGpt55Model, i as BaseOpenAIStreamOptions, l as projectOpenAITools, m as isOpenAIGpt54MiniModel, p as OpenAIReasoningEffort, s as OpenAICompletionsToolChoice, u as reconcileOpenAICompletionsToolChoice, v as resolveOpenAIReasoningEffortForModel, x as supportsOpenAITemperature, y as resolveOpenAISupportedReasoningEfforts } from "../provider-options-B96RdNpH.mjs";
3
- import { o as ResponsesPromptObservation, s as responsesPromptObserver } from "../openai-responses-contracts-XpZJxrRG.mjs";
4
- import { t as ResolvedOpenAICompletionsCompat } from "../openai-completions-compat-Dt3dcawL.mjs";
1
+ import { B as StopReason, D as Model, H as StreamFunction, d as Context, et as Usage, z as SimpleStreamOptions } from "../types-DTAP49HF.mjs";
2
+ import { C as supportsOpenAITemperature, S as supportsOpenAIReasoningEffort, _ as isOpenAIGpt55Model, a as CodeModeToolSurfaceObservation, b as resolveOpenAIReasoningEffortForModel, c as codeModeToolSurfaceObserver, d as projectOpenAITools, f as reconcileOpenAICompletionsToolChoice, g as isOpenAIGpt54MiniModel, h as OpenAIReasoningEffort, i as BaseOpenAIStreamOptions, l as OpenAICompletionsToolChoice, m as OpenAIApiReasoningEffort, o as OpenAICompletionsOptions, p as reconcileOpenAIResponsesToolChoice, u as OpenAIToolProjection, v as isOpenAIGpt56Model, x as resolveOpenAISupportedReasoningEfforts, y as normalizeOpenAIReasoningEffort } from "../provider-options-Cc5ZQ6Aa.mjs";
3
+ import { o as ResponsesPromptObservation, s as responsesPromptObserver } from "../openai-responses-contracts-CD75pQ0m.mjs";
4
+ import { t as ResolvedOpenAICompletionsCompat } from "../openai-completions-compat-B0KTleXp.mjs";
5
5
  import { n as clampOpenAIPromptCacheKey, t as OPENAI_PROMPT_CACHE_KEY_MAX_LENGTH } from "../openai-prompt-cache-2uo_1OR1.mjs";
6
6
  import OpenAI from "openai";
7
7
  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, type ResponsesPromptObservation, ResponsesTerminalUsagePayload, ResponsesTextContentPartType, ResponsesTextDeltaEventType, ResponsesToolCallIdentity, ResponsesToolCallState, RuntimeToolInputSchemaJson, RuntimeToolInputSchemaProjection, ToolParameterSchemaOptions, ToolSchemaModelCompat, clampOpenAIPromptCacheKey, cleanSchemaForGemini, cleanSchemaForLlamacppGbnf, 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 };
260
+ export { AZURE_RESPONSES_TEXT_CONTENT_PART_TYPE, AZURE_RESPONSES_TEXT_DELTA_EVENT_TYPE, AzureResponsesTextContentPart, AzureResponsesTextDeltaEvent, type CodeModeToolSurfaceObservation, 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, 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, reconcileOpenAICompletionsToolChoice, reconcileOpenAIResponsesToolChoice, resolveAzureDeploymentNameFromMap, resolveOpenAIProjectedToolsStrictToolFlag, resolveOpenAIReasoningEffortForModel, resolveOpenAISupportedReasoningEfforts, resolveResponsesMessageSnapshotCollapse, resolveResponsesTerminalStopReason, resolveUnsupportedToolSchemaKeywords, responsesPromptObserver, shouldOmitEmptyArrayItems, streamOpenAICompletions, streamOpenAIResponses, streamSimpleOpenAICompletions, streamSimpleOpenAIResponses, stripUnsupportedSchemaKeywords, supportsOpenAIReasoningEffort, supportsOpenAITemperature };
@@ -1,10 +1,11 @@
1
- import { S as supportsOpenAITemperature, _ as isOpenAIGpt56Model, b as resolveOpenAISupportedReasoningEfforts, g as isOpenAIGpt55Model, h as isOpenAIGpt54MiniModel, m as responsesPromptObserver, v as normalizeOpenAIReasoningEffort, x as supportsOpenAIReasoningEffort, y as resolveOpenAIReasoningEffortForModel } from "../openai-responses-contracts-CyfIkQi5.mjs";
1
+ import { S as supportsOpenAITemperature, _ as isOpenAIGpt56Model, b as resolveOpenAISupportedReasoningEfforts, g as isOpenAIGpt55Model, h as isOpenAIGpt54MiniModel, m as responsesPromptObserver, v as normalizeOpenAIReasoningEffort, x as supportsOpenAIReasoningEffort, y as resolveOpenAIReasoningEffortForModel } from "../openai-responses-contracts-DvILoqBk.mjs";
2
2
  import { n as clampOpenAIPromptCacheKey, t as OPENAI_PROMPT_CACHE_KEY_MAX_LENGTH } from "../openai-prompt-cache-mZTCdRPo.mjs";
3
- import { t as projectRuntimeToolInputSchema } from "../tool-schema-json-projection-q5d7QX5c.mjs";
4
- import { r as convertMessages, t as mapOpenAIStopReason } from "../openai-stop-reason-BkFkqqK0.mjs";
5
- import { $ as normalizeOpenAIStrictCompatSchema, A as isAzureResponsesTextDeltaEvent, D as AZURE_RESPONSES_TEXT_DELTA_EVENT_TYPE, E as AZURE_RESPONSES_TEXT_CONTENT_PART_TYPE, J as isStrictOpenAIJsonSchemaCompatible, M as isResponsesTextContentPartType, N as isResponsesTextDeltaEventType, O as OPENAI_RESPONSES_OUTPUT_TEXT_CONTENT_PART_TYPE, P as resolveResponsesMessageSnapshotCollapse, Q as findOpenAIStrictSchemaViolations, T as readResponsesToolCallItemIdentity, X as normalizeStrictOpenAIJsonSchema, Y as normalizeOpenAIStrictToolParameters, Z as resolveOpenAIProjectedToolsStrictToolFlag, at as LLAMACPP_GBNF_MAX_REPETITION_THRESHOLD, ct as GEMINI_UNSUPPORTED_SCHEMA_KEYWORDS, d as resolveResponsesTerminalStopReason, et as extractToolSchemaModelCompat, it as stripUnsupportedSchemaKeywords, j as isAzureResponsesTextDeltaEventType, k as OPENAI_RESPONSES_OUTPUT_TEXT_DELTA_EVENT_TYPE, l as mapResponsesTerminalUsage, lt as cleanSchemaForGemini, nt as resolveUnsupportedToolSchemaKeywords, ot as cleanSchemaForLlamacppGbnf, q as findOpenAIStrictToolProjectionDiagnostics, rt as shouldOmitEmptyArrayItems, st as findLlamacppGbnfSchemaViolations, tt as normalizeToolParameterSchema, u as readResponsesReasoningTokens, w as createResponsesToolCallTracker } from "../openai-responses-shared-DXIt3iY5.mjs";
6
- import { n as reconcileOpenAICompletionsToolChoice, r as reconcileOpenAIResponsesToolChoice, t as projectOpenAITools } from "../openai-tool-projection-CY04OcvQ.mjs";
3
+ import { t as projectRuntimeToolInputSchema } from "../tool-schema-json-projection-FEr-jOoZ.mjs";
4
+ import { r as convertMessages, t as mapOpenAIStopReason } from "../openai-stop-reason-9OONKyAm.mjs";
5
+ import { $ as normalizeOpenAIStrictCompatSchema, A as isAzureResponsesTextDeltaEvent, D as AZURE_RESPONSES_TEXT_DELTA_EVENT_TYPE, E as AZURE_RESPONSES_TEXT_CONTENT_PART_TYPE, J as isStrictOpenAIJsonSchemaCompatible, M as isResponsesTextContentPartType, N as isResponsesTextDeltaEventType, O as OPENAI_RESPONSES_OUTPUT_TEXT_CONTENT_PART_TYPE, P as resolveResponsesMessageSnapshotCollapse, Q as findOpenAIStrictSchemaViolations, T as readResponsesToolCallItemIdentity, X as normalizeStrictOpenAIJsonSchema, Y as normalizeOpenAIStrictToolParameters, Z as resolveOpenAIProjectedToolsStrictToolFlag, at as LLAMACPP_GBNF_MAX_REPETITION_THRESHOLD, ct as GEMINI_UNSUPPORTED_SCHEMA_KEYWORDS, d as resolveResponsesTerminalStopReason, et as extractToolSchemaModelCompat, it as stripUnsupportedSchemaKeywords, j as isAzureResponsesTextDeltaEventType, k as OPENAI_RESPONSES_OUTPUT_TEXT_DELTA_EVENT_TYPE, l as mapResponsesTerminalUsage, lt as cleanSchemaForGemini, nt as resolveUnsupportedToolSchemaKeywords, ot as cleanSchemaForLlamacppGbnf, q as findOpenAIStrictToolProjectionDiagnostics, rt as shouldOmitEmptyArrayItems, st as findLlamacppGbnfSchemaViolations, tt as normalizeToolParameterSchema, u as readResponsesReasoningTokens, w as createResponsesToolCallTracker } from "../openai-responses-shared-Cvt5MgEm.mjs";
6
+ import { t as codeModeToolSurfaceObserver } from "../provider-options-AvldWZt8.mjs";
7
+ import { n as reconcileOpenAICompletionsToolChoice, r as reconcileOpenAIResponsesToolChoice, t as projectOpenAITools } from "../openai-tool-projection-CHGLt03m.mjs";
7
8
  import { i as resolveAzureDeploymentNameFromMap, n as isTraditionalAzureOpenAIHost, r as parseAzureDeploymentNameMap, t as isOpenAICompatibleAzureResponsesBaseUrl } from "../azure-openai-responses-client-compat-C7K7QfUE.mjs";
8
- import { n as streamOpenAICompletions, r as streamSimpleOpenAICompletions } from "../openai-completions-BPnt4Sml.mjs";
9
- import { n as streamOpenAIResponses, r as streamSimpleOpenAIResponses } from "../openai-responses-DhIKtOup.mjs";
10
- 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, 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 };
9
+ import { n as streamOpenAICompletions, r as streamSimpleOpenAICompletions } from "../openai-completions-D88orSJ9.mjs";
10
+ import { n as streamOpenAIResponses, r as streamSimpleOpenAIResponses } from "../openai-responses-BXEcr-Tp.mjs";
11
+ 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, reconcileOpenAICompletionsToolChoice, reconcileOpenAIResponsesToolChoice, resolveAzureDeploymentNameFromMap, resolveOpenAIProjectedToolsStrictToolFlag, resolveOpenAIReasoningEffortForModel, resolveOpenAISupportedReasoningEfforts, resolveResponsesMessageSnapshotCollapse, resolveResponsesTerminalStopReason, resolveUnsupportedToolSchemaKeywords, responsesPromptObserver, shouldOmitEmptyArrayItems, streamOpenAICompletions, streamOpenAIResponses, streamSimpleOpenAICompletions, streamSimpleOpenAIResponses, stripUnsupportedSchemaKeywords, supportsOpenAIReasoningEffort, supportsOpenAITemperature };
@@ -1,5 +1,5 @@
1
- import { $ as Usage, D as ModelThinkingLevel, E as Model, H as StreamOptions, L as ProviderStreamOptions, R as SimpleStreamOptions, i as AssistantMessage, n as Api, o as AssistantMessageEventStreamContract, u as Context } from "../types-BHNrPS1l.mjs";
2
- import { a as RegisteredApiProvider, t as ApiProvider } from "../api-registry-k3zTz0cV.mjs";
1
+ import { D as Model, O as ModelThinkingLevel, R as ProviderStreamOptions, U as StreamOptions, a as AssistantMessage, d as Context, et as Usage, n as Api, s as AssistantMessageEventStreamContract, z as SimpleStreamOptions } from "../types-DTAP49HF.mjs";
2
+ import { a as RegisteredApiProvider, t as ApiProvider } from "../api-registry-DFxSnFqG.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
 
@@ -198,6 +198,8 @@ interface ReasoningTagTextPartitioner {
198
198
  pushVisible(chunk: string): ReasoningTagTextDelta[];
199
199
  flush(): ReasoningTagTextDelta[];
200
200
  hasPending(): boolean;
201
+ /** Whether more input can change buffered Markdown or reasoning-tag ownership. */
202
+ hasPendingSyntax(): boolean;
201
203
  isInsideReasoning(): boolean;
202
204
  }
203
205
  /** Creates a block-incremental parser that emits only Markdown-stable text. */
@@ -1,12 +1,13 @@
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 getSupportedThinkingLevels, i as clampThinkingLevel, n as applyProviderReportedUsageCost, o as modelsAreEqual, r as calculateCost, t as sanitizeSurrogates } from "../sanitize-unicode-BYqrYtC_.mjs";
3
+ import { a as getSupportedThinkingLevels, i as clampThinkingLevel, n as applyProviderReportedUsageCost, o as modelsAreEqual, r as calculateCost, t as sanitizeSurrogates } from "../sanitize-unicode-BP7HLLZn.mjs";
4
+ import { t as headersToRecord } from "../headers-B_e4-1J0.mjs";
4
5
  import { t as createDeferredEventBuffer } from "../deferred-event-buffer-DAvyP7qA.mjs";
5
6
  import { n as parseStreamingJson, r as repairJson, t as parseJsonWithRepair } from "../json-parse-CDnesDM_.mjs";
6
- import { n as notifyLlmRequestActivity, r as onLlmRequestActivity, t as headersToRecord } from "../headers-DdOQtGuU.mjs";
7
+ import { n as onLlmRequestActivity, t as notifyLlmRequestActivity } from "../llm-request-activity-BjtkplhG.mjs";
7
8
  import { t as shortHash } from "../hash-CHgqbJmD.mjs";
8
9
  import { a as withFirstStreamEventTimeout, i as getFirstStreamEventTimeoutMs, n as createFirstStreamEventTimeoutError, r as getFirstStreamEventTimeoutHandler, t as createFirstStreamEventAbortController } from "../stream-first-event-timeout-MK28puvq.mjs";
9
- import { t as createReasoningTagTextPartitioner } from "../reasoning-tag-text-partitioner-rnPwX2pg.mjs";
10
+ import { t as createReasoningTagTextPartitioner } from "../reasoning-tag-text-partitioner-5ygO2rZc.mjs";
10
11
  import { n as registerSessionResourceCleanup, t as cleanupSessionResources } from "../session-resources-CkR4WWy1.mjs";
11
12
  import { n as resolveOpenAICodexAccountId, t as decodeOpenAICodexJwtPayload } from "../openai-chatgpt-jwt-KWcgd0d_.mjs";
12
13
  import { t as createSseByteGuard } from "../streaming-byte-guard-BrbkbwUu.mjs";
@@ -1,4 +1,4 @@
1
- import { E as Model, G as ThinkingBudgets, H as StreamOptions, R as SimpleStreamOptions, T as Message, i as AssistantMessage, n as Api, q as ThinkingLevel } from "../types-BHNrPS1l.mjs";
1
+ import { D as Model, E as Message, J as ThinkingLevel, K as ThinkingBudgets, U as StreamOptions, a as AssistantMessage, n as Api, z as SimpleStreamOptions } from "../types-DTAP49HF.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
 
@@ -29,7 +29,21 @@ declare function isImageWithMediaPayload<T>(block: T): block is T & {
29
29
  };
30
30
  declare function describeToolResultMediaPlaceholder(blocks: readonly unknown[]): string | undefined;
31
31
  declare function extractToolResultBlockText(block: unknown): string | undefined;
32
- declare function extractToolResultText(blocks: readonly unknown[]): string;
32
+ declare function extractToolResultText(blocks: readonly unknown[], options?: {
33
+ includeStructured?: boolean;
34
+ }): string;
35
+ type ToolResultMediaSupport = {
36
+ images: boolean;
37
+ audio: boolean;
38
+ };
39
+ /** Describe media that cannot be represented on the target provider wire. */
40
+ declare function describeUnsupportedToolResultMedia(blocks: readonly unknown[], support: ToolResultMediaSupport): string | undefined;
41
+ declare function formatToolResultText(params: {
42
+ text: string;
43
+ mediaPlaceholder?: string;
44
+ omittedMediaPlaceholder?: string;
45
+ isError: boolean;
46
+ }): string;
33
47
  //#endregion
34
48
  //#region packages/ai/src/transcript-transform.d.ts
35
49
  declare function transformMessages<TApi extends Api>(messages: Message[], model: Model<TApi>, normalizeToolCallId?: (id: string, model: Model<TApi>, source: AssistantMessage) => string): Message[];
@@ -57,4 +71,4 @@ type TlsCertificateErrorDetails = {
57
71
  /** Classify deterministic Node/OpenSSL certificate validation failures. */
58
72
  declare function inspectTlsCertificateError(error: unknown): TlsCertificateErrorDetails | null;
59
73
  //#endregion
60
- export { SYSTEM_PROMPT_CACHE_BOUNDARY, TlsCertificateErrorDetails, TlsCertificateErrorKind, adjustMaxTokensForThinking, buildBaseOptions, clampMaxTokensToModel, clampReasoning, describeToolResultMediaPlaceholder, ensureSystemPromptCacheBoundary, extractToolResultBlockText, extractToolResultText, hasMediaPayload, inspectTlsCertificateError, isImageWithMediaPayload, normalizePromptCapabilityIds, normalizeStructuredPromptSection, prependSystemPromptAdditionAfterCacheBoundary, sanitizeSurrogates, sortPromptCacheToolsByName, splitSystemPromptCacheBoundary, stripSystemPromptCacheBoundary, transformMessages };
74
+ export { SYSTEM_PROMPT_CACHE_BOUNDARY, TlsCertificateErrorDetails, TlsCertificateErrorKind, adjustMaxTokensForThinking, buildBaseOptions, clampMaxTokensToModel, clampReasoning, describeToolResultMediaPlaceholder, describeUnsupportedToolResultMedia, ensureSystemPromptCacheBoundary, extractToolResultBlockText, extractToolResultText, formatToolResultText, hasMediaPayload, inspectTlsCertificateError, isImageWithMediaPayload, normalizePromptCapabilityIds, normalizeStructuredPromptSection, prependSystemPromptAdditionAfterCacheBoundary, sanitizeSurrogates, sortPromptCacheToolsByName, splitSystemPromptCacheBoundary, stripSystemPromptCacheBoundary, transformMessages };
@@ -1,5 +1,5 @@
1
- import { t as sanitizeSurrogates } from "../sanitize-unicode-BYqrYtC_.mjs";
2
- import { a as describeToolResultMediaPlaceholder, c as hasMediaPayload, i as transformMessages, l as isImageWithMediaPayload, o as extractToolResultBlockText, s as extractToolResultText } from "../host-DTqNc7ad.mjs";
3
- import { a as SYSTEM_PROMPT_CACHE_BOUNDARY, c as splitSystemPromptCacheBoundary, d as normalizeStructuredPromptSection, f as sortPromptCacheToolsByName, i as clampReasoning, l as stripSystemPromptCacheBoundary, n as buildBaseOptions, o as ensureSystemPromptCacheBoundary, r as clampMaxTokensToModel, s as prependSystemPromptAdditionAfterCacheBoundary, t as adjustMaxTokensForThinking, u as normalizePromptCapabilityIds } from "../simple-options-D58D5Kvw.mjs";
1
+ import { t as sanitizeSurrogates } from "../sanitize-unicode-BP7HLLZn.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-DF_yxOsA.mjs";
3
+ import { A as splitSystemPromptCacheBoundary, D as SYSTEM_PROMPT_CACHE_BOUNDARY, M as normalizePromptCapabilityIds, N as normalizeStructuredPromptSection, O as ensureSystemPromptCacheBoundary, P as sortPromptCacheToolsByName, i as clampReasoning, j as stripSystemPromptCacheBoundary, k as prependSystemPromptAdditionAfterCacheBoundary, n as buildBaseOptions, r as clampMaxTokensToModel, t as adjustMaxTokensForThinking } from "../simple-options-oqsXB6U3.mjs";
4
4
  import { t as inspectTlsCertificateError } from "../tls-certificate-errors-DXSpluKI.mjs";
5
- export { SYSTEM_PROMPT_CACHE_BOUNDARY, adjustMaxTokensForThinking, buildBaseOptions, clampMaxTokensToModel, clampReasoning, describeToolResultMediaPlaceholder, ensureSystemPromptCacheBoundary, extractToolResultBlockText, extractToolResultText, hasMediaPayload, inspectTlsCertificateError, isImageWithMediaPayload, normalizePromptCapabilityIds, normalizeStructuredPromptSection, prependSystemPromptAdditionAfterCacheBoundary, sanitizeSurrogates, sortPromptCacheToolsByName, splitSystemPromptCacheBoundary, stripSystemPromptCacheBoundary, transformMessages };
5
+ 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 };
@@ -14,12 +14,4 @@ function onLlmRequestActivity(signal, listener) {
14
14
  };
15
15
  }
16
16
  //#endregion
17
- //#region packages/ai/src/utils/headers.ts
18
- /** Converts a Headers object to a plain record for provider request handling. */
19
- function headersToRecord(headers) {
20
- const result = {};
21
- for (const [key, value] of headers.entries()) result[key] = value;
22
- return result;
23
- }
24
- //#endregion
25
- export { notifyLlmRequestActivity as n, onLlmRequestActivity as r, headersToRecord as t };
17
+ export { onLlmRequestActivity as n, notifyLlmRequestActivity as t };
@@ -1,13 +1,12 @@
1
1
  import { n as getEnvApiKey } from "./env-api-keys-DrgeBuva.mjs";
2
2
  import { t as AssistantMessageEventStream } from "./event-stream-uSMZJ3FA.mjs";
3
- import { i as clampThinkingLevel, r as calculateCost, t as sanitizeSurrogates } from "./sanitize-unicode-BYqrYtC_.mjs";
4
- import { a as describeToolResultMediaPlaceholder, l as isImageWithMediaPayload, n as getAiTransportHost, s as extractToolResultText } from "./host-DTqNc7ad.mjs";
5
- import { a as isRecord } from "./record-coerce-DdXsgUd_.mjs";
6
- import { n as projectProviderError } from "./provider-error-BUwEnjXq.mjs";
7
- import { f as sortPromptCacheToolsByName, l as stripSystemPromptCacheBoundary, n as buildBaseOptions, r as clampMaxTokensToModel } from "./simple-options-D58D5Kvw.mjs";
3
+ import { i as clampThinkingLevel, r as calculateCost, t as sanitizeSurrogates } from "./sanitize-unicode-BP7HLLZn.mjs";
4
+ import { a as describeToolResultMediaPlaceholder, c as extractToolResultText, d as isImageWithMediaPayload, l as formatToolResultText, n as getAiTransportHost } from "./host-DF_yxOsA.mjs";
5
+ import { n as projectProviderError } from "./provider-error-C8mBRJDl.mjs";
6
+ import { P as sortPromptCacheToolsByName, d as finalizeTerminalToolCallArguments, g as notifyProviderHttpResponse, j as stripSystemPromptCacheBoundary, n as buildBaseOptions, r as clampMaxTokensToModel, x as transportAbortError } from "./simple-options-oqsXB6U3.mjs";
8
7
  import { n as parseStreamingJson } from "./json-parse-CDnesDM_.mjs";
9
8
  import { t as shortHash } from "./hash-CHgqbJmD.mjs";
10
- import { f as transportAbortError, t as transformProviderMessages } from "./provider-transcript-transform-ePx-Bbfr.mjs";
9
+ import { t as transformProviderMessages } from "./provider-transcript-transform--gtf0ZbR.mjs";
11
10
  import { t as createSseByteGuard } from "./streaming-byte-guard-BrbkbwUu.mjs";
12
11
  import { randomUUID } from "node:crypto";
13
12
  import { HTTPClient, Mistral } from "@mistralai/mistralai";
@@ -63,10 +62,25 @@ const streamMistral = (model, context, options) => {
63
62
  try {
64
63
  const apiKey = options?.apiKey || getEnvApiKey(model.provider);
65
64
  if (!apiKey) throw new Error(`No API key for provider: ${model.provider}`);
65
+ const boundedFetcher = createBoundedMistralFetcher(MISTRAL_STREAM_BODY_MAX_BYTES, getAiTransportHost().buildModelFetch(model) ?? fetch);
66
+ let mistralResponse;
67
+ let reportedResponse;
68
+ const httpClient = new HTTPClient({ fetcher: boundedFetcher });
69
+ httpClient.addHook("response", async (response) => {
70
+ mistralResponse = response;
71
+ if (!response.ok) {
72
+ await notifyProviderHttpResponse({
73
+ options,
74
+ response,
75
+ model
76
+ });
77
+ reportedResponse = response;
78
+ }
79
+ });
66
80
  const mistral = new Mistral({
67
81
  apiKey,
68
82
  serverURL: model.baseUrl,
69
- httpClient: new HTTPClient({ fetcher: createBoundedMistralFetcher(MISTRAL_STREAM_BODY_MAX_BYTES, getAiTransportHost().buildModelFetch(model) ?? fetch) })
83
+ httpClient
70
84
  });
71
85
  const normalizeMistralToolCallId = createMistralToolCallIdNormalizer();
72
86
  let payload = buildChatPayload(model, context, transformProviderMessages(context.messages, model, (id) => normalizeMistralToolCallId(id)), options);
@@ -81,6 +95,12 @@ const streamMistral = (model, context, options) => {
81
95
  headers,
82
96
  signal: options?.signal
83
97
  });
98
+ if (mistralResponse && mistralResponse !== reportedResponse) await notifyProviderHttpResponse({
99
+ options,
100
+ response: mistralResponse,
101
+ model,
102
+ cancelStream: (reason) => mistralStream.cancel(reason)
103
+ });
84
104
  stream.push({
85
105
  type: "start",
86
106
  partial: output
@@ -467,23 +487,20 @@ async function consumeChatStream(model, output, stream, mistralStream) {
467
487
  if (!terminalFinishReason) throw new Error("Mistral stream ended without a terminal finish reason");
468
488
  return;
469
489
  }
470
- try {
471
- for (const index of toolBlockIdentities.keys()) {
472
- const rawArguments = blocks[index].partialArgs ?? "";
473
- if (!isRecord(JSON.parse(rawArguments))) throw new Error("Mistral tool-call arguments must be a JSON object");
474
- }
475
- } catch {
476
- throw new Error("Mistral completed tool call has invalid JSON arguments");
477
- }
478
- for (const index of toolBlockIdentities.keys()) {
479
- const block = output.content.at(index);
480
- if (block?.type !== "toolCall") continue;
481
- const toolBlock = block;
482
- delete toolBlock.partialArgs;
490
+ const completedToolCalls = [...toolBlockIdentities.keys()].flatMap((contentIndex) => {
491
+ const block = blocks[contentIndex];
492
+ return block?.type === "toolCall" ? [{
493
+ block,
494
+ contentIndex
495
+ }] : [];
496
+ });
497
+ finalizeTerminalToolCallArguments(completedToolCalls.map(({ block }) => block), (block) => block.partialArgs ?? "", "Mistral completed tool call has invalid JSON arguments");
498
+ for (const { block, contentIndex } of completedToolCalls) {
499
+ delete block.partialArgs;
483
500
  stream.push({
484
501
  type: "toolcall_end",
485
- contentIndex: index,
486
- toolCall: toolBlock,
502
+ contentIndex,
503
+ toolCall: block,
487
504
  partial: output
488
505
  });
489
506
  }
@@ -592,7 +609,14 @@ function toChatMessages(messages, supportsImages) {
592
609
  continue;
593
610
  }
594
611
  const toolContent = [];
595
- const toolText = buildToolResultText(extractToolResultText(msg.content), describeToolResultMediaPlaceholder(msg.content), msg.content.some(isImageWithMediaPayload), supportsImages, msg.isError);
612
+ const textResult = extractToolResultText(msg.content);
613
+ const mediaPlaceholder = describeToolResultMediaPlaceholder(msg.content);
614
+ const toolText = formatToolResultText({
615
+ text: textResult,
616
+ mediaPlaceholder,
617
+ omittedMediaPlaceholder: msg.content.some(isImageWithMediaPayload) && !supportsImages ? textResult.trim() ? "[tool image omitted: model does not support images]" : mediaPlaceholder === "(see attached media)" ? "(media omitted: model does not support images)" : "(image omitted: model does not support images)" : void 0,
618
+ isError: msg.isError
619
+ });
596
620
  toolContent.push({
597
621
  type: "text",
598
622
  text: toolText
@@ -614,16 +638,6 @@ function toChatMessages(messages, supportsImages) {
614
638
  }
615
639
  return result;
616
640
  }
617
- function buildToolResultText(text, mediaPlaceholder, hasImages, supportsImages, isError) {
618
- const trimmed = text.trim();
619
- const errorPrefix = isError ? "[tool error] " : "";
620
- if (trimmed.length > 0) return `${errorPrefix}${trimmed}${hasImages && !supportsImages ? "\n[tool image omitted: model does not support images]" : ""}`;
621
- if (mediaPlaceholder) {
622
- if (!hasImages || supportsImages) return `${errorPrefix}${mediaPlaceholder}`;
623
- return `${errorPrefix}${mediaPlaceholder === "(see attached media)" ? "(media omitted: model does not support images)" : "(image omitted: model does not support images)"}`;
624
- }
625
- return isError ? "[tool error] (no tool output)" : "(no tool output)";
626
- }
627
641
  function usesReasoningEffort(model) {
628
642
  return model.id === "mistral-small-2603" || model.id === "mistral-small-latest" || model.id === "mistral-medium-3-5";
629
643
  }
@@ -1,19 +1,18 @@
1
1
  import { n as getEnvApiKey } from "./env-api-keys-DrgeBuva.mjs";
2
2
  import { i as formatThrownValue, n as createAssistantMessageDiagnostic, t as appendAssistantMessageDiagnostic } from "./diagnostics-COpOtRwq.mjs";
3
3
  import { t as AssistantMessageEventStream } from "./event-stream-uSMZJ3FA.mjs";
4
- import { n as getAiTransportHost, r as resolveAiTransportHeaderSentinels } from "./host-DTqNc7ad.mjs";
5
- import { n as projectProviderError } from "./provider-error-BUwEnjXq.mjs";
6
- import { n as toErrorObject, t as createResponsesPromptEgressObserver } from "./openai-responses-prompt-observer-internal-DgNTYnRY.mjs";
4
+ import { n as getAiTransportHost, r as resolveAiTransportHeaderSentinels } from "./host-DF_yxOsA.mjs";
5
+ import { n as projectProviderError } from "./provider-error-C8mBRJDl.mjs";
6
+ import { n as toErrorObject, t as createResponsesPromptEgressObserver } from "./openai-responses-prompt-observer-internal-BG-1AsBI.mjs";
7
7
  import { c as resolveTimerTimeoutMs, i as clampTimerTimeoutMs } from "./number-coercion-H9qHik3g.mjs";
8
- import { S as supportsOpenAITemperature, m as responsesPromptObserver } from "./openai-responses-contracts-CyfIkQi5.mjs";
8
+ import { S as supportsOpenAITemperature, m as responsesPromptObserver } from "./openai-responses-contracts-DvILoqBk.mjs";
9
9
  import { n as clampOpenAIPromptCacheKey } from "./openai-prompt-cache-mZTCdRPo.mjs";
10
- import { l as stripSystemPromptCacheBoundary, n as buildBaseOptions } from "./simple-options-D58D5Kvw.mjs";
11
- import { t as headersToRecord } from "./headers-DdOQtGuU.mjs";
12
- import { F as commitResponsesEncryptedContentAttempt, G as suppressOpenAIResponsesCompaction, L as isInvalidEncryptedContentError, U as buildOpenAIResponsesReasoningReplayMetadata, a as resolveResponsesReasoningEffort, c as processResponsesStream, i as createResponsesAssistantOutput, n as applyResponsesServiceTierPricing, p as ResponsesStreamFailure, r as convertResponsesMessages, s as convertResponsesToolPayload, z as resolveNextResponsesEncryptedContentAttempt } from "./openai-responses-shared-DXIt3iY5.mjs";
13
- import { f as transportAbortError, p as withProviderResponseHook } from "./provider-transcript-transform-ePx-Bbfr.mjs";
10
+ import { C as withProviderResponseHook, _ as notifyProviderStreamOpened, j as stripSystemPromptCacheBoundary, n as buildBaseOptions, x as transportAbortError } from "./simple-options-oqsXB6U3.mjs";
11
+ import { t as headersToRecord } from "./headers-B_e4-1J0.mjs";
14
12
  import { parseRetryAfterHttpDateMs } from "./internal/retry-after.mjs";
15
- import { t as MALFORMED_STREAMING_FRAGMENT_ERROR_MESSAGE } from "./transport-utils-DJqkxbhC.mjs";
16
- import { o as createOpenAIResponseHook } from "./openai-tool-projection-CY04OcvQ.mjs";
13
+ import { t as MALFORMED_STREAMING_FRAGMENT_ERROR_MESSAGE } from "./transport-utils-Bv0FHkd0.mjs";
14
+ import { F as commitResponsesEncryptedContentAttempt, G as suppressOpenAIResponsesCompaction, L as isInvalidEncryptedContentError, U as buildOpenAIResponsesReasoningReplayMetadata, a as resolveResponsesReasoningEffort, c as processResponsesStream, i as createResponsesAssistantOutput, n as applyResponsesServiceTierPricing, p as ResponsesStreamFailure, r as convertResponsesMessages, s as convertResponsesToolPayload, z as resolveNextResponsesEncryptedContentAttempt } from "./openai-responses-shared-Cvt5MgEm.mjs";
15
+ import { o as createOpenAIProviderAcceptanceHook, s as createOpenAIResponseHook } from "./openai-tool-projection-CHGLt03m.mjs";
17
16
  import { a as withFirstStreamEventTimeout, i as getFirstStreamEventTimeoutMs, r as getFirstStreamEventTimeoutHandler, t as createFirstStreamEventAbortController } from "./stream-first-event-timeout-MK28puvq.mjs";
18
17
  import { n as registerSessionResourceCleanup } from "./session-resources-CkR4WWy1.mjs";
19
18
  import "./diagnostics.mjs";
@@ -218,8 +217,9 @@ const streamOpenAICodexResponses = (model, context, options) => {
218
217
  websocketRequestSent = false;
219
218
  try {
220
219
  await processWebSocketStream(resolveCodexWebSocketUrl(model.baseUrl), activeAttempt.request, websocketHeaders, output, stream, model, () => {
221
- commitSemanticAttempt(activeAttempt);
222
220
  websocketStarted = true;
221
+ }, () => {
222
+ commitSemanticAttempt(activeAttempt);
223
223
  }, requestOptions, firstEventAbort.abort, observePromptEgress, activeAttempt.kind, () => {
224
224
  websocketRequestSent = true;
225
225
  });
@@ -337,7 +337,7 @@ const streamOpenAICodexResponses = (model, context, options) => {
337
337
  stream: mapCodexEvents(parseOpenAIChatGptResponsesSse(response)),
338
338
  signal: firstEventAbort.signal,
339
339
  abort: firstEventAbort.abort,
340
- hook: createOpenAIResponseHook(options?.onResponse, response, model),
340
+ hook: createOpenAIProviderAcceptanceHook(options, response, model),
341
341
  onReady: () => stream.push({
342
342
  type: "start",
343
343
  partial: output
@@ -872,12 +872,14 @@ function buildCachedWebSocketRequestBody(entry, body) {
872
872
  input: delta
873
873
  };
874
874
  }
875
- async function* startWebSocketOutputOnFirstEvent(events, output, stream, onStart) {
875
+ async function* startWebSocketOutputOnFirstEvent(events, output, stream, onFirstProviderEvent, reportStreamOpened, onStart) {
876
876
  let started = false;
877
877
  for await (const event of events) {
878
878
  if (!started) {
879
879
  started = true;
880
+ onFirstProviderEvent();
880
881
  onStart();
882
+ await reportStreamOpened();
881
883
  stream.push({
882
884
  type: "start",
883
885
  partial: output
@@ -886,7 +888,7 @@ async function* startWebSocketOutputOnFirstEvent(events, output, stream, onStart
886
888
  yield event;
887
889
  }
888
890
  }
889
- async function processWebSocketStream(url, body, headers, output, stream, model, onStart, options, abortFirstEventStream, observePromptEgress, payloadVariant = "initial", onRequestSent) {
891
+ async function processWebSocketStream(url, body, headers, output, stream, model, onFirstProviderEvent, onStart, options, abortFirstEventStream, observePromptEgress, payloadVariant = "initial", onRequestSent) {
890
892
  const { socket, entry, release } = await acquireWebSocket(url, headers, options?.sessionId, options?.signal);
891
893
  let keepConnection = true;
892
894
  const useCachedContext = options?.transport === "websocket-cached" || options?.transport === "auto";
@@ -903,7 +905,13 @@ async function processWebSocketStream(url, body, headers, output, stream, model,
903
905
  ...requestBody
904
906
  }));
905
907
  onRequestSent?.();
906
- await processResponsesStream(startWebSocketOutputOnFirstEvent(mapCodexEvents(parseWebSocket(socket, options?.signal)), output, stream, onStart), output, stream, model, {
908
+ await processResponsesStream(startWebSocketOutputOnFirstEvent(mapCodexEvents(parseWebSocket(socket, options?.signal)), output, stream, onFirstProviderEvent, () => notifyProviderStreamOpened({
909
+ options,
910
+ cancelStream: () => {
911
+ keepConnection = false;
912
+ closeWebSocketSilently(socket);
913
+ }
914
+ }), onStart), output, stream, model, {
907
915
  serviceTier: options?.serviceTier,
908
916
  firstEventTimeoutMs: getFirstStreamEventTimeoutMs(options),
909
917
  abortFirstEventStream,