@openclaw/ai 2026.8.1-beta.2 → 2026.8.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 (87) hide show
  1. package/dist/{anthropic-B6dLpq5L.mjs → anthropic-Djj7L1rx.mjs} +49 -39
  2. package/dist/{anthropic-compaction-replay-8lJNKXOE.mjs → anthropic-compaction-replay-CY4tkD4V.mjs} +42 -44
  3. package/dist/{anthropic-payload-policy-CiEuQS72.d.mts → anthropic-payload-policy-i_5_inWe.d.mts} +4 -2
  4. package/dist/{api-registry-k3zTz0cV.d.mts → api-registry-C9-wZd_W.d.mts} +2 -1
  5. package/dist/{azure-openai-responses-mxIOtUnn.mjs → azure-openai-responses-Bj3czHNa.mjs} +4 -4
  6. package/dist/{number-coercion-H9qHik3g.mjs → base64-CEFBpSkN.mjs} +73 -1
  7. package/dist/diagnostics.d.mts +2 -3
  8. package/dist/diagnostics.mjs +1 -1
  9. package/dist/{env-api-keys-DrgeBuva.mjs → env-api-keys-bktO00EJ.mjs} +2 -15
  10. package/dist/event-stream-C988TSLe.d.mts +1 -0
  11. package/dist/{event-stream-BP6AWT8j.d.mts → event-stream-UhnxHuqt.d.mts} +1 -2
  12. package/dist/event-stream.d.mts +2 -1
  13. package/dist/{google-C7h2QzDX.mjs → google-0Ca6TYbw.mjs} +4 -4
  14. package/dist/{google-shared-B0Qr9OR7.mjs → google-shared-DVfL9COU.mjs} +22 -8
  15. package/dist/{google-vertex-Bhc3TjDl.mjs → google-vertex-5dAMxprN.mjs} +4 -4
  16. package/dist/{host-DTqNc7ad.mjs → host-D51fmkH6.mjs} +40 -33
  17. package/dist/{host-vWgMMhiJ.d.mts → host-DoPJJ1KD.d.mts} +7 -7
  18. package/dist/index-N3zr6__t.d.mts +105 -0
  19. package/dist/index.d.mts +9 -10
  20. package/dist/index.mjs +2 -3
  21. package/dist/internal/anthropic.d.mts +57 -49
  22. package/dist/internal/anthropic.mjs +5 -5
  23. package/dist/internal/openai-responses-payload-policy.d.mts +3 -3
  24. package/dist/internal/openai-responses-payload-policy.mjs +2 -3
  25. package/dist/internal/openai.d.mts +65 -63
  26. package/dist/internal/openai.mjs +10 -8
  27. package/dist/internal/retry-after.d.mts +2 -3
  28. package/dist/internal/runtime.d.mts +53 -40
  29. package/dist/internal/runtime.mjs +10 -9
  30. package/dist/internal/shared.d.mts +37 -23
  31. package/dist/internal/shared.mjs +4 -4
  32. package/dist/{json-parse-CDnesDM_.mjs → json-parse-BuAJEbdW.mjs} +18 -2
  33. package/dist/{headers-DdOQtGuU.mjs → llm-request-activity-BjtkplhG.mjs} +1 -9
  34. package/dist/{mistral-CEWoQI_g.mjs → mistral-BCnrI-kV.mjs} +64 -53
  35. package/dist/{openai-chatgpt-responses-CrPmqERt.mjs → openai-chatgpt-responses-CGBGWSqr.mjs} +45 -20
  36. package/dist/{openai-completions-BPnt4Sml.mjs → openai-completions-BaTuwID7.mjs} +63 -258
  37. package/dist/{openai-completions-compat-Dt3dcawL.d.mts → openai-completions-compat-DB7FFq7k.d.mts} +3 -3
  38. package/dist/openai-completions-stream-Bpns6uNc.mjs +1622 -0
  39. package/dist/{openai-responses-DhIKtOup.mjs → openai-responses-1GBcQujk.mjs} +8 -6
  40. package/dist/openai-responses-compaction-window-DwydGZI8.mjs +686 -0
  41. package/dist/{openai-responses-contracts-XpZJxrRG.d.mts → openai-responses-contracts-DgaR3t5T.d.mts} +14 -5
  42. package/dist/{openai-responses-payload-policy-BSs371VM.d.mts → openai-responses-payload-policy-rLRPsSmB.d.mts} +2 -0
  43. package/dist/{openai-responses-prompt-observer-internal-DgNTYnRY.mjs → openai-responses-prompt-observer-internal-_nhGTn2b.mjs} +3 -3
  44. package/dist/{openai-responses-shared-DXIt3iY5.mjs → openai-responses-shared-zPmKnhF5.mjs} +345 -1553
  45. package/dist/openai-stop-reason-Drnn_6Qj.mjs +28 -0
  46. package/dist/openai-tool-schema-Dgl4H2MU.mjs +1695 -0
  47. package/dist/{provider-error-BUwEnjXq.mjs → provider-error-jZP5NMTZ.mjs} +3 -82
  48. package/dist/{provider-options-B96RdNpH.d.mts → provider-options-HvA_slFa.d.mts} +23 -4
  49. package/dist/provider-transcript-transform-C01bQ5a3.mjs +32 -0
  50. package/dist/provider-types.d.mts +18 -17
  51. package/dist/providers.d.mts +5 -6
  52. package/dist/providers.mjs +9 -9
  53. package/dist/{reasoning-tag-text-partitioner-rnPwX2pg.mjs → reasoning-tag-text-partitioner-CwzKb0bA.mjs} +4 -1
  54. package/dist/rolldown-runtime-BhDjJH2R.mjs +15 -0
  55. package/dist/{sanitize-unicode-BYqrYtC_.mjs → sanitize-unicode-DCkltN94.mjs} +1 -2
  56. package/dist/{simple-options-D58D5Kvw.mjs → simple-options-DKx86yX9.mjs} +42 -4
  57. package/dist/{anthropic-JsNA5KCu.mjs → src-Bu3FiFAG.mjs} +1 -1
  58. package/dist/{stream-first-event-timeout-MK28puvq.mjs → stream-first-event-timeout-DcNjoFQE.mjs} +1 -1
  59. package/dist/{streaming-byte-guard-BrbkbwUu.mjs → streaming-byte-guard-CC-HMn_u.mjs} +5 -6
  60. package/dist/string-normalization--fwJ4S2q.mjs +16 -0
  61. package/dist/{tool-schema-json-projection-q5d7QX5c.mjs → tool-schema-json-projection-qvTEs5Am.mjs} +17 -8
  62. package/dist/transport-stream-shared-CT5ycdzn.mjs +342 -0
  63. package/dist/transport-stream-shared-NjwWNaRY.d.mts +138 -0
  64. package/dist/{transport-utils-DJqkxbhC.mjs → transport-utils-BHx9z8Cl.mjs} +9 -9
  65. package/dist/transports.d.mts +140 -169
  66. package/dist/transports.mjs +269 -1262
  67. package/dist/types-DtGu2d3C.d.mts +1 -0
  68. package/dist/{types-BHNrPS1l.d.mts → types-h38Azne1.d.mts} +53 -17
  69. package/dist/types.d.mts +6 -5
  70. package/dist/types.mjs +1 -2
  71. package/dist/utf16-slice-qz3nsy87.mjs +84 -0
  72. package/dist/{validation-DT9SrFn3.d.mts → validation-C68lP2uy.d.mts} +1 -2
  73. package/dist/validation.d.mts +1 -1
  74. package/package.json +6 -6
  75. package/dist/anthropic-SrGtwsJu.d.mts +0 -100
  76. package/dist/index-BVVgDSdq.d.mts +0 -1
  77. package/dist/openai-responses-contracts-CyfIkQi5.mjs +0 -253
  78. package/dist/openai-responses-payload-policy-BDxV-W0c.mjs +0 -206
  79. package/dist/openai-stop-reason-BkFkqqK0.mjs +0 -563
  80. package/dist/openai-tool-projection-CY04OcvQ.mjs +0 -338
  81. package/dist/provider-transcript-transform-ePx-Bbfr.mjs +0 -155
  82. package/dist/record-coerce-DdXsgUd_.mjs +0 -23
  83. package/dist/src-D2H6yKkH.mjs +0 -2
  84. package/dist/stream-first-event-timeout-DvDeSucC.d.mts +0 -29
  85. package/dist/string-coerce-fsri9iCu.mjs +0 -34
  86. package/dist/types-BVVgDSdq.d.mts +0 -1
  87. package/dist/utf16-slice-CvGodqok.mjs +0 -29
@@ -1,10 +1,12 @@
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";
2
1
  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";
2
+ import { a as codeModeToolSurfaceObserver, o as reasoningTagTextPolicy } from "../simple-options-DKx86yX9.mjs";
3
+ import { t as projectRuntimeToolInputSchema } from "../tool-schema-json-projection-qvTEs5Am.mjs";
4
+ import { g as convertMessages } from "../openai-completions-stream-Bpns6uNc.mjs";
5
+ import { A as isAzureResponsesTextDeltaEvent, D as AZURE_RESPONSES_TEXT_DELTA_EVENT_TYPE, E as AZURE_RESPONSES_TEXT_CONTENT_PART_TYPE, M as isResponsesTextContentPartType, N as isResponsesTextDeltaEventType, O as OPENAI_RESPONSES_OUTPUT_TEXT_CONTENT_PART_TYPE, P as resolveResponsesMessageSnapshotCollapse, T as readResponsesToolCallItemIdentity, d as resolveResponsesTerminalStopReason, j as isAzureResponsesTextDeltaEventType, k as OPENAI_RESPONSES_OUTPUT_TEXT_DELTA_EVENT_TYPE, l as mapResponsesTerminalUsage, u as readResponsesReasoningTokens, w as createResponsesToolCallTracker } from "../openai-responses-shared-zPmKnhF5.mjs";
6
+ import { _ as cleanSchemaForGemini, a as resolveOpenAIProjectedToolsStrictToolFlag, b as reconcileOpenAIResponsesToolChoice, c as extractToolSchemaModelCompat, d as shouldOmitEmptyArrayItems, f as stripUnsupportedSchemaKeywords, g as GEMINI_UNSUPPORTED_SCHEMA_KEYWORDS, h as findLlamacppGbnfSchemaViolations, i as normalizeStrictOpenAIJsonSchema, l as normalizeToolParameterSchema, m as cleanSchemaForLlamacppGbnf, n as isStrictOpenAIJsonSchemaCompatible, o as findOpenAIStrictSchemaViolations, p as LLAMACPP_GBNF_MAX_REPETITION_THRESHOLD, r as normalizeOpenAIStrictToolParameters, s as normalizeOpenAIStrictCompatSchema, t as findOpenAIStrictToolProjectionDiagnostics, u as resolveUnsupportedToolSchemaKeywords, v as projectOpenAITools, y as reconcileOpenAICompletionsToolChoice } from "../openai-tool-schema-Dgl4H2MU.mjs";
7
+ import { A as supportsOpenAITemperature, C as isOpenAIGpt54MiniModel, D as resolveOpenAIReasoningEffortForModel, E as normalizeOpenAIReasoningEffort, O as resolveOpenAISupportedReasoningEfforts, S as responsesPromptObserver, T as isOpenAIGpt56Model, k as supportsOpenAIReasoningEffort, w as isOpenAIGpt55Model } from "../openai-responses-compaction-window-DwydGZI8.mjs";
8
+ import { t as mapOpenAIStopReason } from "../openai-stop-reason-Drnn_6Qj.mjs";
7
9
  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 };
10
+ import { n as streamOpenAICompletions, r as streamSimpleOpenAICompletions } from "../openai-completions-BaTuwID7.mjs";
11
+ import { n as streamOpenAIResponses, r as streamSimpleOpenAIResponses } from "../openai-responses-1GBcQujk.mjs";
12
+ export { AZURE_RESPONSES_TEXT_CONTENT_PART_TYPE, AZURE_RESPONSES_TEXT_DELTA_EVENT_TYPE, GEMINI_UNSUPPORTED_SCHEMA_KEYWORDS, LLAMACPP_GBNF_MAX_REPETITION_THRESHOLD, OPENAI_PROMPT_CACHE_KEY_MAX_LENGTH, OPENAI_RESPONSES_OUTPUT_TEXT_CONTENT_PART_TYPE, OPENAI_RESPONSES_OUTPUT_TEXT_DELTA_EVENT_TYPE, clampOpenAIPromptCacheKey, cleanSchemaForGemini, cleanSchemaForLlamacppGbnf, codeModeToolSurfaceObserver, convertMessages, createResponsesToolCallTracker, extractToolSchemaModelCompat, findLlamacppGbnfSchemaViolations, findOpenAIStrictSchemaViolations, findOpenAIStrictToolProjectionDiagnostics, isAzureResponsesTextDeltaEvent, isAzureResponsesTextDeltaEventType, isOpenAICompatibleAzureResponsesBaseUrl, isOpenAIGpt54MiniModel, isOpenAIGpt55Model, isOpenAIGpt56Model, isResponsesTextContentPartType, isResponsesTextDeltaEventType, isStrictOpenAIJsonSchemaCompatible, isTraditionalAzureOpenAIHost, mapOpenAIStopReason, mapResponsesTerminalUsage, normalizeOpenAIReasoningEffort, normalizeOpenAIStrictCompatSchema, normalizeOpenAIStrictToolParameters, normalizeStrictOpenAIJsonSchema, normalizeToolParameterSchema, parseAzureDeploymentNameMap, projectOpenAITools, projectRuntimeToolInputSchema, readResponsesReasoningTokens, readResponsesToolCallItemIdentity, reasoningTagTextPolicy, reconcileOpenAICompletionsToolChoice, reconcileOpenAIResponsesToolChoice, resolveAzureDeploymentNameFromMap, resolveOpenAIProjectedToolsStrictToolFlag, resolveOpenAIReasoningEffortForModel, resolveOpenAISupportedReasoningEfforts, resolveResponsesMessageSnapshotCollapse, resolveResponsesTerminalStopReason, resolveUnsupportedToolSchemaKeywords, responsesPromptObserver, shouldOmitEmptyArrayItems, streamOpenAICompletions, streamOpenAIResponses, streamSimpleOpenAICompletions, streamSimpleOpenAIResponses, stripUnsupportedSchemaKeywords, supportsOpenAIReasoningEffort, supportsOpenAITemperature };
@@ -1,5 +1,4 @@
1
1
  //#region packages/ai/src/internal/retry-after.d.ts
2
2
  /** Parses the three HTTP-date forms accepted for Retry-After without Date.parse normalization. */
3
- declare function parseRetryAfterHttpDateMs(value: string, nowMs?: number): number | undefined;
4
- //#endregion
5
- export { parseRetryAfterHttpDateMs };
3
+ export declare function parseRetryAfterHttpDateMs(value: string, nowMs?: number): number | undefined;
4
+ //#endregion
@@ -1,17 +1,18 @@
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 "../index-N3zr6__t.mjs";
2
+ 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-h38Azne1.mjs";
3
+ import { a as RegisteredApiProvider, t as ApiProvider } from "../api-registry-C9-wZd_W.mjs";
4
+ import "../types-DtGu2d3C.mjs";
3
5
  import { t as sanitizeSurrogates } from "../sanitize-unicode-BZiVbGwK.mjs";
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
-
6
+ import { C as FirstStreamEventInternalOptions, D as getFirstStreamEventTimeoutHandler, E as createFirstStreamEventTimeoutError, O as getFirstStreamEventTimeoutMs, S as FirstStreamEventAbortController, T as createFirstStreamEventAbortController, g as parseTerminalToolCallArguments, k as withFirstStreamEventTimeout, w as FirstStreamEventTimeoutContext } from "../transport-stream-shared-NjwWNaRY.mjs";
6
7
  //#region packages/ai/src/internal/default-runtime.d.ts
7
- declare const defaultApiRegistry: {
8
+ export declare const defaultApiRegistry: {
8
9
  registerApiProvider: <TApi extends Api, TOptions extends StreamOptions>(provider: ApiProvider<TApi, TOptions>, sourceId?: string) => void;
9
10
  getApiProvider: (api: Api) => RegisteredApiProvider | undefined;
10
11
  getApiProviders: () => RegisteredApiProvider[];
11
12
  unregisterApiProviders: (sourceId: string) => void;
12
13
  clearApiProviders: () => void;
13
14
  };
14
- declare const defaultLlmRuntime: {
15
+ export declare const defaultLlmRuntime: {
15
16
  registry: {
16
17
  registerApiProvider: <TApi extends Api, TOptions extends StreamOptions>(provider: ApiProvider<TApi, TOptions>, sourceId?: string) => void;
17
18
  getApiProvider: (api: Api) => RegisteredApiProvider | undefined;
@@ -24,9 +25,9 @@ declare const defaultLlmRuntime: {
24
25
  streamSimple: <TApi extends Api>(model: Model<TApi>, context: Context, options?: SimpleStreamOptions) => AssistantMessageEventStreamContract;
25
26
  completeSimple: <TApi extends Api>(model: Model<TApi>, context: Context, options?: SimpleStreamOptions) => Promise<AssistantMessage>;
26
27
  };
27
- declare const getApiProvider: (api: Api) => RegisteredApiProvider | undefined, getApiProviders: () => RegisteredApiProvider[];
28
- declare function clearApiProviders(): void;
29
- declare const stream: <TApi extends Api>(model: Model<TApi>, context: Context, options?: ProviderStreamOptions) => AssistantMessageEventStreamContract, complete: <TApi extends Api>(model: Model<TApi>, context: Context, options?: ProviderStreamOptions) => Promise<AssistantMessage>, streamSimple: <TApi extends Api>(model: Model<TApi>, context: Context, options?: SimpleStreamOptions) => AssistantMessageEventStreamContract, completeSimple: <TApi extends Api>(model: Model<TApi>, context: Context, options?: SimpleStreamOptions) => Promise<AssistantMessage>;
28
+ export declare const getApiProvider: (api: Api) => RegisteredApiProvider | undefined, getApiProviders: () => RegisteredApiProvider[];
29
+ export declare function clearApiProviders(): void;
30
+ export declare const stream: <TApi extends Api>(model: Model<TApi>, context: Context, options?: ProviderStreamOptions) => AssistantMessageEventStreamContract, complete: <TApi extends Api>(model: Model<TApi>, context: Context, options?: ProviderStreamOptions) => Promise<AssistantMessage>, streamSimple: <TApi extends Api>(model: Model<TApi>, context: Context, options?: SimpleStreamOptions) => AssistantMessageEventStreamContract, completeSimple: <TApi extends Api>(model: Model<TApi>, context: Context, options?: SimpleStreamOptions) => Promise<AssistantMessage>;
30
31
  //#endregion
31
32
  //#region packages/ai/src/env-api-keys.d.ts
32
33
  /**
@@ -36,39 +37,39 @@ declare const stream: <TApi extends Api>(model: Model<TApi>, context: Context, o
36
37
  * credential sources such as AWS profiles, AWS IAM credentials, and Google
37
38
  * Application Default Credentials.
38
39
  */
39
- declare function findEnvKeys(provider: string): string[] | undefined;
40
+ export declare function findEnvKeys(provider: string): string[] | undefined;
40
41
  /**
41
42
  * Get API key for provider from known environment variables, e.g. OPENAI_API_KEY.
42
43
  *
43
44
  * Will not return API keys for providers that require OAuth tokens.
44
45
  */
45
- declare function getEnvApiKey(provider: string): string | undefined;
46
+ export declare function getEnvApiKey(provider: string): string | undefined;
46
47
  //#endregion
47
48
  //#region packages/ai/src/model-utils.d.ts
48
49
  /** Calculates and stores model cost fields from token usage and per-million pricing. */
49
- declare function calculateCost<TApi extends Api>(model: Model<TApi>, usage: Usage): Usage["cost"];
50
+ export declare function calculateCost<TApi extends Api>(model: Model<TApi>, usage: Usage): Usage["cost"];
50
51
  /** Replaces the catalog estimate when the provider reports an authoritative billed total. */
51
- declare function applyProviderReportedUsageCost(usage: Usage, reportedCost: unknown): void;
52
+ export declare function applyProviderReportedUsageCost(usage: Usage, reportedCost: unknown): void;
52
53
  /** Returns thinking levels exposed by a reasoning-capable model. */
53
- declare function getSupportedThinkingLevels<TApi extends Api>(model: Model<TApi>): ModelThinkingLevel[];
54
+ export declare function getSupportedThinkingLevels<TApi extends Api>(model: Model<TApi>): ModelThinkingLevel[];
54
55
  /** Clamps a requested thinking level to the closest supported level for a model. */
55
- declare function clampThinkingLevel<TApi extends Api>(model: Model<TApi>, level: ModelThinkingLevel): ModelThinkingLevel;
56
+ export declare function clampThinkingLevel<TApi extends Api>(model: Model<TApi>, level: ModelThinkingLevel): ModelThinkingLevel;
56
57
  /** Compares model identity by provider and id. */
57
- declare function modelsAreEqual<TApi extends Api>(a: Model<TApi> | null | undefined, b: Model<TApi> | null | undefined): boolean;
58
+ export declare function modelsAreEqual<TApi extends Api>(a: Model<TApi> | null | undefined, b: Model<TApi> | null | undefined): boolean;
58
59
  //#endregion
59
60
  //#region packages/ai/src/session-resources.d.ts
60
61
  /** Cleanup callback for resources tied to an LLM session or all sessions. */
61
- type SessionResourceCleanup = (sessionId?: string) => void;
62
+ export type SessionResourceCleanup = (sessionId?: string) => void;
62
63
  /** Registers a session-resource cleanup hook and returns an unregister function. */
63
- declare function registerSessionResourceCleanup(cleanup: SessionResourceCleanup): () => void;
64
+ export declare function registerSessionResourceCleanup(cleanup: SessionResourceCleanup): () => void;
64
65
  /** Runs all registered cleanup hooks, aggregating failures after every hook has run. */
65
- declare function cleanupSessionResources(sessionId?: string): void;
66
+ export declare function cleanupSessionResources(sessionId?: string): void;
66
67
  //#endregion
67
68
  //#region packages/ai/src/utils/deferred-event-buffer.d.ts
68
69
  type EventSink<T> = {
69
70
  push(event: T): void;
70
71
  };
71
- declare function createDeferredEventBuffer<T>(sink: EventSink<T>, onBufferedEvent?: () => void): {
72
+ export declare function createDeferredEventBuffer<T>(sink: EventSink<T>, onBufferedEvent?: () => void): {
72
73
  push(event: T): void;
73
74
  flush(): void;
74
75
  discard(): void;
@@ -76,11 +77,11 @@ declare function createDeferredEventBuffer<T>(sink: EventSink<T>, onBufferedEven
76
77
  //#endregion
77
78
  //#region packages/ai/src/utils/hash.d.ts
78
79
  /** Fast deterministic hash to shorten long strings */
79
- declare function shortHash(str: string): string;
80
+ export declare function shortHash(str: string): string;
80
81
  //#endregion
81
82
  //#region packages/ai/src/utils/headers.d.ts
82
83
  /** Converts a Headers object to a plain record for provider request handling. */
83
- declare function headersToRecord(headers: Headers): Record<string, string>;
84
+ export declare function headersToRecord(headers: Headers): Record<string, string>;
84
85
  //#endregion
85
86
  //#region packages/ai/src/utils/json-parse.d.ts
86
87
  /**
@@ -88,8 +89,8 @@ declare function headersToRecord(headers: Headers): Record<string, string>;
88
89
  * - escaping raw control characters inside strings
89
90
  * - doubling backslashes before invalid escape characters
90
91
  */
91
- declare function repairJson(json: string): string;
92
- declare function parseJsonWithRepair(json: string): unknown;
92
+ export declare function repairJson(json: string): string;
93
+ export declare function parseJsonWithRepair(json: string): unknown;
93
94
  /**
94
95
  * Attempts to parse potentially incomplete JSON during streaming.
95
96
  * Always returns a valid object, even if the JSON is incomplete.
@@ -97,26 +98,36 @@ declare function parseJsonWithRepair(json: string): unknown;
97
98
  * @param partialJson The partial JSON string from streaming
98
99
  * @returns Parsed object or empty object if parsing fails
99
100
  */
100
- declare function parseStreamingJson(partialJson: string | undefined): Record<string, unknown>;
101
+ export declare function parseStreamingJson(partialJson: string | undefined): Record<string, unknown>;
102
+ /** Returns true when the streamed argument buffer crossed its next preview checkpoint. */
103
+ export type ToolArgumentPreviewSchedule = (accumulatedChars: number) => boolean;
104
+ /**
105
+ * Streamed tool-call arguments are preview-only; the terminal parse re-reads
106
+ * the full buffer authoritatively at content_block_stop. Reparsing every delta
107
+ * scans an ever-growing buffer and makes assembly quadratic in the argument
108
+ * size, so refresh previews on a geometric length schedule instead — bounded
109
+ * staleness, linear total parse work.
110
+ */
111
+ export declare function createToolArgumentPreviewSchedule(): ToolArgumentPreviewSchedule;
101
112
  //#endregion
102
113
  //#region packages/ai/src/utils/llm-request-activity.d.ts
103
- declare function notifyLlmRequestActivity(signal: AbortSignal | undefined): void;
104
- declare function onLlmRequestActivity(signal: AbortSignal, listener: () => void): () => void;
114
+ export declare function notifyLlmRequestActivity(signal: AbortSignal | undefined): void;
115
+ export declare function onLlmRequestActivity(signal: AbortSignal, listener: () => void): () => void;
105
116
  //#endregion
106
117
  //#region packages/ai/src/utils/oauth/openai-chatgpt-jwt.d.ts
107
118
  declare const OPENAI_CODEX_AUTH_CLAIM = "https://api.openai.com/auth";
108
- type OpenAICodexJwtPayload = {
119
+ export type OpenAICodexJwtPayload = {
109
120
  [OPENAI_CODEX_AUTH_CLAIM]?: {
110
121
  chatgpt_account_id?: unknown;
111
122
  };
112
123
  [key: string]: unknown;
113
124
  };
114
- declare function decodeOpenAICodexJwtPayload(token: string): OpenAICodexJwtPayload | null;
115
- declare function resolveOpenAICodexAccountId(token: string): string | null;
125
+ export declare function decodeOpenAICodexJwtPayload(token: string): OpenAICodexJwtPayload | null;
126
+ export declare function resolveOpenAICodexAccountId(token: string): string | null;
116
127
  //#endregion
117
128
  //#region packages/ai/src/utils/overflow.d.ts
118
129
  /** Detects DS4-style raw token-count context overflow errors. */
119
- declare function isConfiguredContextSizeOverflowError(errorMessage: string): boolean;
130
+ export declare function isConfiguredContextSizeOverflowError(errorMessage: string): boolean;
120
131
  declare const CONTEXT_OVERFLOW_PATTERN_SCOPES: {
121
132
  readonly "assistant-error": RegExp[];
122
133
  readonly "failover-explicit": RegExp[];
@@ -126,9 +137,9 @@ declare const CONTEXT_OVERFLOW_PATTERN_SCOPES: {
126
137
  readonly "tpm-rate-limit-hint": readonly [RegExp];
127
138
  readonly "rate-limit-hint": readonly [RegExp];
128
139
  };
129
- type ContextOverflowMessageScope = keyof typeof CONTEXT_OVERFLOW_PATTERN_SCOPES;
140
+ export type ContextOverflowMessageScope = keyof typeof CONTEXT_OVERFLOW_PATTERN_SCOPES;
130
141
  /** Match one canonical context-overflow wording scope without applying caller policy. */
131
- declare function matchesContextOverflowMessage(errorMessage: string, scope: ContextOverflowMessageScope): boolean;
142
+ export declare function matchesContextOverflowMessage(errorMessage: string, scope: ContextOverflowMessageScope): boolean;
132
143
  /**
133
144
  * Check if an assistant message represents a context overflow error.
134
145
  *
@@ -180,7 +191,7 @@ declare function matchesContextOverflowMessage(errorMessage: string, scope: Cont
180
191
  * @param contextWindow - Optional context window size for detecting silent overflow (z.ai)
181
192
  * @returns true if the message indicates a context overflow
182
193
  */
183
- declare function isContextOverflow(message: AssistantMessage, contextWindow?: number): boolean;
194
+ export declare function isContextOverflow(message: AssistantMessage, contextWindow?: number): boolean;
184
195
  //#endregion
185
196
  //#region packages/markdown-core/src/reasoning-tag-parser.d.ts
186
197
  type ReasoningTagTextDelta = {
@@ -198,10 +209,12 @@ interface ReasoningTagTextPartitioner {
198
209
  pushVisible(chunk: string): ReasoningTagTextDelta[];
199
210
  flush(): ReasoningTagTextDelta[];
200
211
  hasPending(): boolean;
212
+ /** Whether more input can change buffered Markdown or reasoning-tag ownership. */
213
+ hasPendingSyntax(): boolean;
201
214
  isInsideReasoning(): boolean;
202
215
  }
203
216
  /** Creates a block-incremental parser that emits only Markdown-stable text. */
204
- declare function createReasoningTagTextPartitioner(): ReasoningTagTextPartitioner;
217
+ export declare function createReasoningTagTextPartitioner(): ReasoningTagTextPartitioner;
205
218
  //#endregion
206
219
  //#region packages/ai/src/utils/streaming-byte-guard.d.ts
207
220
  /**
@@ -216,21 +229,21 @@ declare function createReasoningTagTextPartitioner(): ReasoningTagTextPartitione
216
229
  * Internal helper for now. If extensions need it, promote to a plugin-SDK
217
230
  * subpath in a separate, dedicated PR with full SDK metadata sync.
218
231
  */
219
- type SseStreamOverflow = {
232
+ export type SseStreamOverflow = {
220
233
  size: number;
221
234
  maxBytes: number;
222
235
  };
223
- type ReadSseStreamWithLimitOptions = {
236
+ export type ReadSseStreamWithLimitOptions = {
224
237
  maxBytes: number;
225
238
  onOverflow?: (params: SseStreamOverflow) => Error;
226
239
  };
227
- type SseByteGuard = {
240
+ export type SseByteGuard = {
228
241
  read(): Promise<ReadableStreamReadResult<Uint8Array>>;
229
242
  cancel(reason?: unknown): Promise<void>;
230
243
  totalBytes(): number;
231
244
  overflowed(): boolean;
232
245
  cancelled(): boolean;
233
246
  };
234
- declare function createSseByteGuard(reader: ReadableStreamDefaultReader<Uint8Array>, opts: ReadSseStreamWithLimitOptions): SseByteGuard;
247
+ export declare function createSseByteGuard(reader: ReadableStreamDefaultReader<Uint8Array>, opts: ReadSseStreamWithLimitOptions): SseByteGuard;
235
248
  //#endregion
236
- export { ContextOverflowMessageScope, FirstStreamEventAbortController, FirstStreamEventInternalOptions, FirstStreamEventTimeoutContext, OpenAICodexJwtPayload, ReadSseStreamWithLimitOptions, type ReasoningTagTextDelta, type ReasoningTagTextPartitioner, SessionResourceCleanup, SseByteGuard, SseStreamOverflow, applyProviderReportedUsageCost, calculateCost, clampThinkingLevel, cleanupSessionResources, clearApiProviders, complete, completeSimple, createDeferredEventBuffer, createFirstStreamEventAbortController, createFirstStreamEventTimeoutError, createReasoningTagTextPartitioner, createSseByteGuard, decodeOpenAICodexJwtPayload, defaultApiRegistry, defaultLlmRuntime, findEnvKeys, getApiProvider, getApiProviders, getEnvApiKey, getFirstStreamEventTimeoutHandler, getFirstStreamEventTimeoutMs, getSupportedThinkingLevels, headersToRecord, isConfiguredContextSizeOverflowError, isContextOverflow, matchesContextOverflowMessage, modelsAreEqual, notifyLlmRequestActivity, onLlmRequestActivity, parseJsonWithRepair, parseStreamingJson, registerSessionResourceCleanup, repairJson, resolveOpenAICodexAccountId, sanitizeSurrogates, shortHash, stream, streamSimple, withFirstStreamEventTimeout };
249
+ export { FirstStreamEventAbortController, FirstStreamEventInternalOptions, FirstStreamEventTimeoutContext, type ReasoningTagTextDelta, type ReasoningTagTextPartitioner, createFirstStreamEventAbortController, createFirstStreamEventTimeoutError, getFirstStreamEventTimeoutHandler, getFirstStreamEventTimeoutMs, parseTerminalToolCallArguments, sanitizeSurrogates, withFirstStreamEventTimeout };
@@ -1,15 +1,16 @@
1
- import { n as getEnvApiKey, t as findEnvKeys } from "../env-api-keys-DrgeBuva.mjs";
2
1
  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";
2
+ import { a as getSupportedThinkingLevels, i as clampThinkingLevel, n as applyProviderReportedUsageCost, o as modelsAreEqual, r as calculateCost, t as sanitizeSurrogates } from "../sanitize-unicode-DCkltN94.mjs";
3
+ import { n as getEnvApiKey, t as findEnvKeys } from "../env-api-keys-bktO00EJ.mjs";
4
+ import { C as headersToRecord, m as parseTerminalToolCallArguments } from "../transport-stream-shared-CT5ycdzn.mjs";
4
5
  import { t as createDeferredEventBuffer } from "../deferred-event-buffer-DAvyP7qA.mjs";
5
- 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";
6
+ import { i as repairJson, n as parseJsonWithRepair, r as parseStreamingJson, t as createToolArgumentPreviewSchedule } from "../json-parse-BuAJEbdW.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
- 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";
9
+ import { a as withFirstStreamEventTimeout, i as getFirstStreamEventTimeoutMs, n as createFirstStreamEventTimeoutError, r as getFirstStreamEventTimeoutHandler, t as createFirstStreamEventAbortController } from "../stream-first-event-timeout-DcNjoFQE.mjs";
10
+ import { t as createReasoningTagTextPartitioner } from "../reasoning-tag-text-partitioner-CwzKb0bA.mjs";
11
+ import { t as createSseByteGuard } from "../streaming-byte-guard-CC-HMn_u.mjs";
10
12
  import { n as registerSessionResourceCleanup, t as cleanupSessionResources } from "../session-resources-CkR4WWy1.mjs";
11
13
  import { n as resolveOpenAICodexAccountId, t as decodeOpenAICodexJwtPayload } from "../openai-chatgpt-jwt-KWcgd0d_.mjs";
12
- import { t as createSseByteGuard } from "../streaming-byte-guard-BrbkbwUu.mjs";
13
14
  //#region packages/ai/src/internal/default-runtime.ts
14
15
  const DEFAULT_RUNTIME_KEY = Symbol.for("openclaw.ai.defaultRuntime");
15
16
  function resolveDefaultRuntime() {
@@ -87,7 +88,7 @@ const CONTEXT_OVERFLOW_PATTERN_SCOPES = {
87
88
  /exceed context limit/i,
88
89
  /exceeds the model'?s maximum context/i,
89
90
  /max_tokens[\s\S]*exceed[\s\S]*context/i,
90
- /input length[\s\S]*exceed[\s\S]*context/i,
91
+ /input(?: length[\s\S]*exceed[\s\S]*context| \([\d,]+\s*tokens?\) is longer than (?:the )?model'?s context length)/i,
91
92
  /413[\s\S]*too large/i,
92
93
  /context_window_exceeded/i,
93
94
  /input length [\d,]+\s+tokens? exceeds the model limit/i,
@@ -197,4 +198,4 @@ function isContextOverflow(message, contextWindow) {
197
198
  return false;
198
199
  }
199
200
  //#endregion
200
- export { applyProviderReportedUsageCost, calculateCost, clampThinkingLevel, cleanupSessionResources, clearApiProviders, complete, completeSimple, createDeferredEventBuffer, createFirstStreamEventAbortController, createFirstStreamEventTimeoutError, createReasoningTagTextPartitioner, createSseByteGuard, decodeOpenAICodexJwtPayload, defaultApiRegistry, defaultLlmRuntime, findEnvKeys, getApiProvider, getApiProviders, getEnvApiKey, getFirstStreamEventTimeoutHandler, getFirstStreamEventTimeoutMs, getSupportedThinkingLevels, headersToRecord, isConfiguredContextSizeOverflowError, isContextOverflow, matchesContextOverflowMessage, modelsAreEqual, notifyLlmRequestActivity, onLlmRequestActivity, parseJsonWithRepair, parseStreamingJson, registerSessionResourceCleanup, repairJson, resolveOpenAICodexAccountId, sanitizeSurrogates, shortHash, stream, streamSimple, withFirstStreamEventTimeout };
201
+ export { applyProviderReportedUsageCost, calculateCost, clampThinkingLevel, cleanupSessionResources, clearApiProviders, complete, completeSimple, createDeferredEventBuffer, createFirstStreamEventAbortController, createFirstStreamEventTimeoutError, createReasoningTagTextPartitioner, createSseByteGuard, createToolArgumentPreviewSchedule, decodeOpenAICodexJwtPayload, defaultApiRegistry, defaultLlmRuntime, findEnvKeys, getApiProvider, getApiProviders, getEnvApiKey, getFirstStreamEventTimeoutHandler, getFirstStreamEventTimeoutMs, getSupportedThinkingLevels, headersToRecord, isConfiguredContextSizeOverflowError, isContextOverflow, matchesContextOverflowMessage, modelsAreEqual, notifyLlmRequestActivity, onLlmRequestActivity, parseJsonWithRepair, parseStreamingJson, parseTerminalToolCallArguments, registerSessionResourceCleanup, repairJson, resolveOpenAICodexAccountId, sanitizeSurrogates, shortHash, stream, streamSimple, withFirstStreamEventTimeout };
@@ -1,60 +1,74 @@
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-h38Azne1.mjs";
2
+ import "../types-DtGu2d3C.mjs";
2
3
  import { t as sanitizeSurrogates } from "../sanitize-unicode-BZiVbGwK.mjs";
3
4
  import { n as normalizeStructuredPromptSection, r as sortPromptCacheToolsByName, t as normalizePromptCapabilityIds } from "../prompt-cache-stability-Cwcjv_fx.mjs";
4
-
5
5
  //#region packages/ai/src/providers/simple-options.d.ts
6
6
  type FirstEventStreamOptions = {
7
7
  firstEventTimeoutMs?: number;
8
8
  onFirstEventTimeout?: (reason: Error) => void;
9
9
  };
10
- declare function buildBaseOptions(model: Model, options?: SimpleStreamOptions, apiKey?: string): StreamOptions & FirstEventStreamOptions;
11
- declare function clampMaxTokensToModel(model: Model, requestedMaxTokens: number): number;
12
- declare function clampMaxTokensToModel(model: Model, requestedMaxTokens: number | undefined): number | undefined;
13
- declare function clampReasoning(effort: ThinkingLevel): Exclude<ThinkingLevel, "xhigh">;
14
- declare function clampReasoning(effort: ThinkingLevel | undefined): Exclude<ThinkingLevel, "xhigh"> | undefined;
15
- declare function adjustMaxTokensForThinking(baseMaxTokens: number | undefined, modelMaxTokens: number, reasoningLevel: ThinkingLevel, customBudgets?: ThinkingBudgets): {
10
+ export declare function buildBaseOptions(model: Model, options?: SimpleStreamOptions, apiKey?: string): StreamOptions & FirstEventStreamOptions;
11
+ export declare function clampMaxTokensToModel(model: Model, requestedMaxTokens: number): number;
12
+ export declare function clampMaxTokensToModel(model: Model, requestedMaxTokens: number | undefined): number | undefined;
13
+ export declare function clampReasoning(effort: ThinkingLevel): Exclude<ThinkingLevel, "xhigh">;
14
+ export declare function clampReasoning(effort: ThinkingLevel | undefined): Exclude<ThinkingLevel, "xhigh"> | undefined;
15
+ export declare function adjustMaxTokensForThinking(baseMaxTokens: number | undefined, modelMaxTokens: number, reasoningLevel: ThinkingLevel, customBudgets?: ThinkingBudgets): {
16
16
  maxTokens: number;
17
17
  thinkingBudget: number;
18
18
  };
19
19
  //#endregion
20
20
  //#region packages/ai/src/providers/tool-result-text.d.ts
21
21
  /** Media metadata alone is not an attachment; provider emitters need inline bytes. */
22
- declare function hasMediaPayload(block: unknown): block is Record<string, unknown> & {
22
+ export declare function hasMediaPayload(block: unknown): block is Record<string, unknown> & {
23
23
  data: string;
24
24
  };
25
25
  /** Image metadata alone is not an attachment; provider emitters need inline bytes. */
26
- declare function isImageWithMediaPayload<T>(block: T): block is T & {
26
+ export declare function isImageWithMediaPayload<T>(block: T): block is T & {
27
27
  type: "image";
28
28
  data: string;
29
29
  };
30
- declare function describeToolResultMediaPlaceholder(blocks: readonly unknown[]): string | undefined;
31
- declare function extractToolResultBlockText(block: unknown): string | undefined;
32
- declare function extractToolResultText(blocks: readonly unknown[]): string;
30
+ export declare function describeToolResultMediaPlaceholder(blocks: readonly unknown[]): string | undefined;
31
+ export declare function extractToolResultBlockText(block: unknown): string | undefined;
32
+ export 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
+ export declare function describeUnsupportedToolResultMedia(blocks: readonly unknown[], support: ToolResultMediaSupport): string | undefined;
41
+ export 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
- declare function transformMessages<TApi extends Api>(messages: Message[], model: Model<TApi>, normalizeToolCallId?: (id: string, model: Model<TApi>, source: AssistantMessage) => string): Message[];
49
+ export declare function transformMessages<TApi extends Api>(messages: Message[], model: Model<TApi>, normalizeToolCallId?: (id: string, model: Model<TApi>, source: AssistantMessage) => string): Message[];
36
50
  //#endregion
37
51
  //#region packages/ai/src/utils/system-prompt-cache-boundary.d.ts
38
- declare const SYSTEM_PROMPT_CACHE_BOUNDARY = "\n<!-- OPENCLAW_CACHE_BOUNDARY -->\n";
39
- declare function stripSystemPromptCacheBoundary(text: string): string;
40
- declare function ensureSystemPromptCacheBoundary(systemPrompt: string): string;
41
- declare function splitSystemPromptCacheBoundary(text: string): {
52
+ export declare const SYSTEM_PROMPT_CACHE_BOUNDARY = "\n<!-- OPENCLAW_CACHE_BOUNDARY -->\n";
53
+ export declare function stripSystemPromptCacheBoundary(text: string): string;
54
+ export declare function ensureSystemPromptCacheBoundary(systemPrompt: string): string;
55
+ export declare function splitSystemPromptCacheBoundary(text: string): {
42
56
  stablePrefix: string;
43
57
  dynamicSuffix: string;
44
58
  } | undefined;
45
- declare function prependSystemPromptAdditionAfterCacheBoundary(params: {
59
+ export declare function prependSystemPromptAdditionAfterCacheBoundary(params: {
46
60
  systemPrompt: string;
47
61
  systemPromptAddition?: string;
48
62
  }): string;
49
63
  //#endregion
50
64
  //#region packages/ai/src/utils/tls-certificate-errors.d.ts
51
- type TlsCertificateErrorKind = "certificate_invalid" | "hostname_mismatch";
52
- type TlsCertificateErrorDetails = {
65
+ export type TlsCertificateErrorKind = "certificate_invalid" | "hostname_mismatch";
66
+ export type TlsCertificateErrorDetails = {
53
67
  kind: TlsCertificateErrorKind;
54
68
  code?: string;
55
69
  message: string;
56
70
  };
57
71
  /** Classify deterministic Node/OpenSSL certificate validation failures. */
58
- declare function inspectTlsCertificateError(error: unknown): TlsCertificateErrorDetails | null;
72
+ export 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 { normalizePromptCapabilityIds, normalizeStructuredPromptSection, sanitizeSurrogates, sortPromptCacheToolsByName };
@@ -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-DCkltN94.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-D51fmkH6.mjs";
3
+ import { c as ensureSystemPromptCacheBoundary, d as stripSystemPromptCacheBoundary, f as normalizePromptCapabilityIds, i as clampReasoning, l as prependSystemPromptAdditionAfterCacheBoundary, m as sortPromptCacheToolsByName, n as buildBaseOptions, p as normalizeStructuredPromptSection, r as clampMaxTokensToModel, s as SYSTEM_PROMPT_CACHE_BOUNDARY, t as adjustMaxTokensForThinking, u as splitSystemPromptCacheBoundary } from "../simple-options-DKx86yX9.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 };
@@ -1,4 +1,4 @@
1
- import { t as asNonArrayRecord } from "./record-coerce-DdXsgUd_.mjs";
1
+ import { n as asNonArrayRecord } from "./utf16-slice-qz3nsy87.mjs";
2
2
  import { parse } from "partial-json";
3
3
  //#region packages/ai/src/utils/json-parse.ts
4
4
  const VALID_JSON_ESCAPES = /* @__PURE__ */ new Set([
@@ -126,5 +126,21 @@ function parseStreamingJson(partialJson) {
126
126
  }
127
127
  }
128
128
  }
129
+ const TOOL_ARGUMENT_PREVIEW_FIRST_CHECKPOINT_CHARS = 512;
130
+ /**
131
+ * Streamed tool-call arguments are preview-only; the terminal parse re-reads
132
+ * the full buffer authoritatively at content_block_stop. Reparsing every delta
133
+ * scans an ever-growing buffer and makes assembly quadratic in the argument
134
+ * size, so refresh previews on a geometric length schedule instead — bounded
135
+ * staleness, linear total parse work.
136
+ */
137
+ function createToolArgumentPreviewSchedule() {
138
+ let nextCheckpointChars = TOOL_ARGUMENT_PREVIEW_FIRST_CHECKPOINT_CHARS;
139
+ return (accumulatedChars) => {
140
+ if (accumulatedChars < nextCheckpointChars) return false;
141
+ nextCheckpointChars = accumulatedChars * 2;
142
+ return true;
143
+ };
144
+ }
129
145
  //#endregion
130
- export { parseStreamingJson as n, repairJson as r, parseJsonWithRepair as t };
146
+ export { repairJson as i, parseJsonWithRepair as n, parseStreamingJson as r, createToolArgumentPreviewSchedule as t };
@@ -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 };