@openclaw/ai 2026.9.7 → 2026.10.1-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (115) hide show
  1. package/README.md +4 -1
  2. package/dist/{anthropic-Cw2pgccz.mjs → anthropic-CZv6XFER.mjs} +52 -147
  3. package/dist/{anthropic-payload-policy-NIPVYXPq.d.mts → anthropic-payload-policy-BhCcgNdm.d.mts} +7 -4
  4. package/dist/{anthropic-stream-reducer-D9MCkl8Z.mjs → anthropic-stream-reducer-BQ1tjd7x.mjs} +369 -233
  5. package/dist/{api-registry-D-nbmSqr.d.mts → api-registry-DpU0Rj-I.d.mts} +4 -4
  6. package/dist/{provider-transcript-transform-JbFbHV8h.mjs → assistant-output-OLm-Oln0.mjs} +17 -17
  7. package/dist/{assistant-text-phase-C20rxWwP.mjs → assistant-text-phase-Bl1aDCB7.mjs} +2 -8
  8. package/dist/{azure-openai-responses-BwT3-X8P.mjs → azure-openai-responses-DH7bd3QT.mjs} +12 -17
  9. package/dist/{azure-openai-responses-client-compat-C7K7QfUE.mjs → azure-openai-responses-client-compat-D0dvJMbZ.mjs} +3 -10
  10. package/dist/{base64-C1PsYcRQ.mjs → base64-C8CdcsjU.mjs} +3 -45
  11. package/dist/cloudflare-5qSGvIUH.mjs +39 -0
  12. package/dist/{diagnostics-CJaB6g8J.mjs → diagnostics-Caj-4RBA.mjs} +19 -37
  13. package/dist/diagnostics.d.mts +4 -4
  14. package/dist/diagnostics.mjs +2 -2
  15. package/dist/{event-stream-vd9UnCAU.mjs → event-stream-C5AbCAaZ.mjs} +29 -1
  16. package/dist/event-stream-DqDQWqiy.d.mts +1 -0
  17. package/dist/{event-stream-DOPFYVqs.d.mts → event-stream-DrRM_90c.d.mts} +1 -1
  18. package/dist/event-stream.d.mts +2 -2
  19. package/dist/event-stream.mjs +1 -1
  20. package/dist/{github-copilot-request-facts-BTEBMeOv.mjs → github-copilot-request-facts-DEE6gcB9.mjs} +3 -1
  21. package/dist/{google-BfapkS_K.mjs → google-1WLOtb8w.mjs} +12 -9
  22. package/dist/{google-interactions-DW3iXzjc.mjs → google-interactions-wrnE6MLw.mjs} +39 -49
  23. package/dist/{google-messages-CtjVtVot.mjs → google-messages-BwPPycw6.mjs} +11 -17
  24. package/dist/{google-shared-Y2YfotEu.mjs → google-shared-Eql1OMPU.mjs} +5 -6
  25. package/dist/{google-vertex-Dov4kBWu.mjs → google-vertex-0LrlRoO3.mjs} +11 -11
  26. package/dist/{host-rxlNaBwm.d.mts → host-BinBeGcQ.d.mts} +12 -4
  27. package/dist/{host-CHi3X87F.mjs → host-DCW52iHe.mjs} +57 -9
  28. package/dist/{host-policy-BOAwRg_M.mjs → host-policy-B3jc4Rpn.mjs} +9 -2
  29. package/dist/{index-D6KsSE74.d.mts → index-a8e_oKnu.d.mts} +7 -5
  30. package/dist/index.d.mts +23 -7
  31. package/dist/index.mjs +7 -7
  32. package/dist/internal/anthropic.d.mts +6 -6
  33. package/dist/internal/anthropic.mjs +5 -5
  34. package/dist/internal/google-model-family.mjs +1 -1
  35. package/dist/internal/openai-completions-compat.d.mts +1 -1
  36. package/dist/internal/openai-completions-compat.mjs +1 -1
  37. package/dist/internal/openai-responses-payload-policy.d.mts +1 -1
  38. package/dist/internal/openai-responses-payload-policy.mjs +2 -2
  39. package/dist/internal/openai.d.mts +14 -10
  40. package/dist/internal/openai.mjs +12 -12
  41. package/dist/internal/runtime.d.mts +18 -9
  42. package/dist/internal/runtime.mjs +9 -9
  43. package/dist/internal/shared.d.mts +6 -4
  44. package/dist/internal/shared.mjs +6 -6
  45. package/dist/internal/tool-schema.mjs +1 -1
  46. package/dist/json-schema-Bp07Qui3.mjs +22 -0
  47. package/dist/{llm-request-activity-BjtkplhG.mjs → llm-request-activity-D8f_oxHj.mjs} +1 -2
  48. package/dist/{mistral-RS6mboC-.mjs → mistral-DSt4vQAO.mjs} +18 -29
  49. package/dist/number-coercion-V8-BhME4.mjs +47 -0
  50. package/dist/{openai-chatgpt-responses-CYbidtrn.mjs → openai-chatgpt-responses-BC2x0Oqx.mjs} +215 -164
  51. package/dist/openai-completions-DNyHnXKg.mjs +25 -0
  52. package/dist/{openai-completions-compat-qJjmqQ71.d.mts → openai-completions-compat-BYdYpXhU.d.mts} +3 -3
  53. package/dist/{openai-completions-compat-BOVWBZDn.mjs → openai-completions-compat-BdmlhD4u.mjs} +30 -23
  54. package/dist/{openai-completions-stream-CDCuw3DP.mjs → openai-completions-transport-DWM2mQDB.mjs} +389 -76
  55. package/dist/{openai-prompt-cache-CouErLh7.d.mts → openai-prompt-cache-45-AH_xv.d.mts} +2 -2
  56. package/dist/{openai-prompt-cache-D2V7MqR7.mjs → openai-prompt-cache-I8YQTzf8.mjs} +1 -1
  57. package/dist/{openai-responses-compaction-replay-DiYn-gFM.d.mts → openai-responses-compaction-replay-BClApUIf.d.mts} +4 -4
  58. package/dist/{openai-responses-compaction-window-UNK1GDpy.mjs → openai-responses-compaction-window-m878aVpU.mjs} +25 -83
  59. package/dist/{openai-reasoning-effort-ConhwkeX.mjs → openai-responses-contracts-BKu8O7l4.mjs} +106 -7
  60. package/dist/{openai-responses-contracts-D1iZ0njF.d.mts → openai-responses-contracts-Br5IIw_h.d.mts} +16 -5
  61. package/dist/openai-responses-prompt-observer-internal-CCg7B6l4.mjs +32 -0
  62. package/dist/{openai-responses-shared-DL4ulQn7.mjs → openai-responses-shared-C7oVyjED.mjs} +297 -312
  63. package/dist/{openai-responses-terminal-usage-BE7lf7nW.d.mts → openai-responses-terminal-usage-DgImcyJu.d.mts} +2 -2
  64. package/dist/{openai-responses-CKCBEc2W.mjs → openai-responses-uZ5oWSp7.mjs} +12 -21
  65. package/dist/{openai-tool-schema-vsl-cE-n.mjs → openai-tool-schema-DYNePiF8.mjs} +66 -36
  66. package/dist/{openai-transport-params-BwlpzX-2.mjs → openai-transport-params-JFsnIyto.mjs} +25 -30
  67. package/dist/openai-web-search-tools-Cfu0uLyN.mjs +14 -0
  68. package/dist/{positive-integer-CjN5OJbH.mjs → positive-integer-CwLi8LUL.mjs} +1 -1
  69. package/dist/{provider-error-CwT_j2v0.mjs → provider-error-DQBE1bUQ.mjs} +17 -28
  70. package/dist/{provider-options-Df7ov0K1.d.mts → provider-options-D5ABCV_l.d.mts} +2 -2
  71. package/dist/{provider-replay-context-DsyI5jOP.mjs → provider-replay-context-C7Bmi84a.mjs} +6 -2
  72. package/dist/{provider-transport-turn-state-BheUi_hl.mjs → provider-transport-turn-state-_M2kLdUE.mjs} +25 -3
  73. package/dist/{provider-types-d4XnoZMd.d.mts → provider-types-F8Mqc9Ma.d.mts} +3 -3
  74. package/dist/provider-types.d.mts +6 -6
  75. package/dist/providers.d.mts +2 -2
  76. package/dist/providers.mjs +14 -26
  77. package/dist/{reasoning-tag-text-partitioner-B6FIIBt6.mjs → reasoning-tag-text-partitioner-Ju9VpUGl.mjs} +23 -37
  78. package/dist/required-api-key-D4kn3252.mjs +9 -0
  79. package/dist/sanitize-unicode-CjDG6jJx.d.mts +5 -0
  80. package/dist/{session-affinity-Bcunsn4I.mjs → session-affinity-DA4WHv1h.mjs} +2 -6
  81. package/dist/session-resources-D1wgDQ8C.mjs +40 -0
  82. package/dist/{simple-options-CGAkCwtM.mjs → simple-options-BkKTXxhp.mjs} +7 -11
  83. package/dist/{src-H4aXcFuX.mjs → src-B0NIt2UK.mjs} +7 -4
  84. package/dist/stream-DSdzKsDK.mjs +275 -0
  85. package/dist/{stream-first-event-timeout-B9o0S4SZ.mjs → stream-first-event-timeout-D9ZmL_s9.mjs} +3 -3
  86. package/dist/{string-coerce-fsri9iCu.mjs → string-coerce-CtgOVOSv.mjs} +5 -1
  87. package/dist/{string-normalization-J9ZiLfGO.mjs → string-normalization-PN10hf6d.mjs} +1 -1
  88. package/dist/{transport-utils-C-4bf2Ok.mjs → text-signature-MLwfi6fq.mjs} +18 -18
  89. package/dist/{transport-stream-shared-yYhXa4kX.d.mts → transport-stream-shared-BcAKh2XH.d.mts} +6 -19
  90. package/dist/{transport-stream-shared-Dh5qKJ8e.mjs → transport-stream-shared-CxXXz_Dd.mjs} +171 -56
  91. package/dist/transports.d.mts +22 -23
  92. package/dist/transports.mjs +251 -495
  93. package/dist/types-BuiEBM3u.d.mts +1 -0
  94. package/dist/types-CQc6JNG4.mjs +69 -0
  95. package/dist/{types-CLLR3eB4.d.mts → types-DvzmWW8J.d.mts} +58 -6
  96. package/dist/types.d.mts +6 -6
  97. package/dist/types.mjs +5 -5
  98. package/dist/usage-CJH5D6Ea.mjs +19 -0
  99. package/dist/{validation-Cat2wQsc.d.mts → validation-B3lQt_VE.d.mts} +1 -1
  100. package/dist/{validation-BFZc40Ig.mjs → validation-DbqlIfDn.mjs} +15 -30
  101. package/dist/validation.d.mts +1 -1
  102. package/dist/validation.mjs +1 -1
  103. package/package.json +4 -4
  104. package/dist/cache-retention-0x979a5V.mjs +0 -12
  105. package/dist/event-stream-CMQfX_yr.d.mts +0 -1
  106. package/dist/github-copilot-headers-B37TB3rB.mjs +0 -30
  107. package/dist/openai-completions-D14ihPYk.mjs +0 -188
  108. package/dist/openai-provider-client-CwfsGBbA.mjs +0 -24
  109. package/dist/openai-responses-contracts-CLxnqS9p.mjs +0 -81
  110. package/dist/openai-responses-prompt-observer-internal-iAqLb4tk.mjs +0 -198
  111. package/dist/sanitize-unicode-BZiVbGwK.d.mts +0 -24
  112. package/dist/session-resources-CkR4WWy1.mjs +0 -21
  113. package/dist/stream-DDsCBgd-.mjs +0 -68
  114. package/dist/types-CB-_vNyI.d.mts +0 -1
  115. package/dist/types-LFWwv0cF.mjs +0 -8
@@ -1,7 +1,8 @@
1
- import { n as getAiTransportHost } from "./host-CHi3X87F.mjs";
2
- import { o as truncateUtf16Safe } from "./provider-error-CwT_j2v0.mjs";
1
+ import { r as getAiTransportHost } from "./host-DCW52iHe.mjs";
2
+ import { o as truncateUtf16Safe } from "./provider-error-DQBE1bUQ.mjs";
3
3
  import "./internal/retry-after.mjs";
4
- import "./positive-integer-CjN5OJbH.mjs";
4
+ import { N as raceWithTimeout } from "./transport-stream-shared-CxXXz_Dd.mjs";
5
+ import "./positive-integer-CwLi8LUL.mjs";
5
6
  //#region packages/normalization-core/src/response-bytes.ts
6
7
  async function consumeResponseBytes(options) {
7
8
  let size = 0;
@@ -30,7 +31,7 @@ async function consumeResponseBytes(options) {
30
31
  const MALFORMED_STREAMING_FRAGMENT_ERROR_MESSAGE = "OpenClaw transport error: malformed_streaming_fragment";
31
32
  const NON_LATIN_RE = /[\u2E80-\u9FFF\uA000-\uA4FF\uAC00-\uD7AF\uF900-\uFAFF\uFF01-\uFF60\uFFE0-\uFFE6\u{20000}-\u{2FA1F}]/gu;
32
33
  const CJK_SURROGATE_HIGH_RE = /[\uD840-\uD87E][\uDC00-\uDFFF]/g;
33
- function redactSensitiveText(text, _options) {
34
+ function redactSensitiveText(text) {
34
35
  return getAiTransportHost().redactToolPayloadText(text);
35
36
  }
36
37
  function resolveModelHeaderSentinels(model) {
@@ -48,11 +49,6 @@ function resolveModelHeaderSentinels(model) {
48
49
  headers
49
50
  } : model;
50
51
  }
51
- function createAbortError(message, options) {
52
- const error = new Error(message, options);
53
- error.name = "AbortError";
54
- return error;
55
- }
56
52
  function estimateStringChars(text) {
57
53
  if (!text) return 0;
58
54
  const nonLatinCount = (text.match(NON_LATIN_RE) ?? []).length;
@@ -65,14 +61,9 @@ function isCodeModeModelVisibleToolName(name, visibleToolNames) {
65
61
  return visibleToolNames.has(name);
66
62
  }
67
63
  async function readChunkWithIdleTimeout(reader, timeoutMs, onIdleTimeout) {
68
- let timer;
69
- try {
70
- return await Promise.race([reader.read(), new Promise((_resolve, reject) => {
71
- timer = setTimeout(() => reject(onIdleTimeout?.({ chunkTimeoutMs: timeoutMs }) ?? /* @__PURE__ */ new Error("Read timed out")), timeoutMs);
72
- })]);
73
- } finally {
74
- if (timer) clearTimeout(timer);
75
- }
64
+ return await raceWithTimeout(reader.read(), timeoutMs, () => {
65
+ throw onIdleTimeout?.({ chunkTimeoutMs: timeoutMs }) ?? /* @__PURE__ */ new Error("Read timed out");
66
+ });
76
67
  }
77
68
  async function readResponseTextSnippet(response, options) {
78
69
  const maxBytes = options?.maxBytes ?? 8192;
@@ -114,4 +105,13 @@ async function readResponseTextSnippet(response, options) {
114
105
  return truncated ? `${collapsed}…` : collapsed;
115
106
  }
116
107
  //#endregion
117
- export { readResponseTextSnippet as a, supportsModelTools as c, isCodeModeModelVisibleToolName as i, createAbortError as n, redactSensitiveText as o, estimateStringChars as r, resolveModelHeaderSentinels as s, MALFORMED_STREAMING_FRAGMENT_ERROR_MESSAGE as t };
108
+ //#region packages/ai/src/utils/text-signature.ts
109
+ function encodeTextSignatureV1(id, phase) {
110
+ return JSON.stringify({
111
+ v: 1,
112
+ id,
113
+ ...phase ? { phase } : {}
114
+ });
115
+ }
116
+ //#endregion
117
+ export { readResponseTextSnippet as a, supportsModelTools as c, isCodeModeModelVisibleToolName as i, MALFORMED_STREAMING_FRAGMENT_ERROR_MESSAGE as n, redactSensitiveText as o, estimateStringChars as r, resolveModelHeaderSentinels as s, encodeTextSignatureV1 as t };
@@ -1,24 +1,11 @@
1
- import "./index-D6KsSE74.mjs";
2
- import { O as Model, V as ProviderResponse, Y as StreamOptions, a as AssistantMessage, ot as Usage } from "./types-CLLR3eB4.mjs";
3
- import { r as createAssistantMessageEventStream, t as AssistantMessageEventStream } from "./event-stream-DOPFYVqs.mjs";
4
- import "./event-stream-CMQfX_yr.mjs";
1
+ import "./index-a8e_oKnu.mjs";
2
+ import { H as ProviderResponse, a as AssistantMessage, k as Model, nt as StreamOptions, pt as Usage } from "./types-DvzmWW8J.mjs";
3
+ import { r as createAssistantMessageEventStream, t as AssistantMessageEventStream } from "./event-stream-DrRM_90c.mjs";
4
+ import "./event-stream-DqDQWqiy.mjs";
5
5
  import { t as ProviderErrorProjection } from "./provider-error-xumb1V3F.mjs";
6
6
  //#region packages/ai/src/transports/transport-stream-shared.d.ts
7
- type ContextUsage = NonNullable<Usage["contextUsage"]>;
8
- type TransportUsage = {
9
- input: number;
10
- output: number;
11
- cacheRead: number;
12
- cacheWrite: number;
13
- contextUsage?: ContextUsage;
14
- totalTokens: number;
15
- cost: {
16
- input: number;
17
- output: number;
18
- cacheRead: number;
19
- cacheWrite: number;
20
- total: number;
21
- };
7
+ type TransportUsage = Pick<Usage, "input" | "output" | "cacheRead" | "cacheWrite" | "contextUsage" | "totalTokens"> & {
8
+ cost: Pick<Usage["cost"], "input" | "output" | "cacheRead" | "cacheWrite" | "total">;
22
9
  };
23
10
  type WritableTransportStream = Pick<ReturnType<typeof createAssistantMessageEventStream>, "push" | "end">;
24
11
  declare function sanitizeTransportPayloadText(text: string): string;
@@ -1,36 +1,178 @@
1
1
  import { n as createAssistantMessageDiagnostic, t as appendAssistantMessageDiagnostic } from "./diagnostics-DzrF1h4J.mjs";
2
- import { i as createAssistantMessageEventStream } from "./event-stream-vd9UnCAU.mjs";
2
+ import { a as createAssistantMessageEventStream } from "./event-stream-C5AbCAaZ.mjs";
3
3
  import { i as asOptionalRecord, n as asNullableRecord, t as asNonArrayRecord } from "./record-coerce-CNDovvft.mjs";
4
- import { S as headersToRecord, n as getAiTransportHost } from "./host-CHi3X87F.mjs";
5
- import { i as projectDiagnosticValue, n as projectProviderError } from "./provider-error-CwT_j2v0.mjs";
6
- import { c as isTransientNetworkError } from "./diagnostics-CJaB6g8J.mjs";
4
+ import { E as headersToRecord, r as getAiTransportHost } from "./host-DCW52iHe.mjs";
5
+ import { i as projectDiagnosticValue, n as projectProviderError } from "./provider-error-DQBE1bUQ.mjs";
6
+ import { c as isTransientNetworkError } from "./diagnostics-Caj-4RBA.mjs";
7
+ import { t as createZeroUsage } from "./usage-CJH5D6Ea.mjs";
7
8
  import { parse } from "partial-json";
8
9
  //#region packages/ai/src/utils/sanitize-unicode.ts
9
- /**
10
- * Removes unpaired Unicode surrogate characters from a string.
11
- *
12
- * Unpaired surrogates (high surrogates 0xD800-0xDBFF without matching low surrogates 0xDC00-0xDFFF,
13
- * or vice versa) cause JSON serialization errors in many API providers.
14
- *
15
- * Valid emoji and other characters outside the Basic Multilingual Plane use properly paired
16
- * surrogates and will NOT be affected by this function.
17
- *
18
- * @param text - The text to sanitize
19
- * @returns The sanitized text with unpaired surrogates removed
20
- *
21
- * @example
22
- * // Valid emoji (properly paired surrogates) are preserved
23
- * sanitizeSurrogates("Hello 🙈 World") // => "Hello 🙈 World"
24
- *
25
- * // Unpaired high surrogate is removed
26
- * const unpaired = String.fromCharCode(0xD83D); // high surrogate without low
27
- * sanitizeSurrogates(`Text ${unpaired} here`) // => "Text here"
28
- */
10
+ /** Remove unpaired surrogates rejected by providers; preserve valid Unicode pairs. */
29
11
  function sanitizeSurrogates(text) {
30
12
  if (text.isWellFormed()) return text;
31
13
  return text.replace(/[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?<![\uD800-\uDBFF])[\uDC00-\uDFFF]/g, "");
32
14
  }
33
15
  //#endregion
16
+ //#region packages/retry/src/index.ts
17
+ const MAX_TIMER_TIMEOUT_MS = 2147e6;
18
+ function createAbortError(message, options) {
19
+ const error = new Error(message, options);
20
+ error.name = "AbortError";
21
+ return error;
22
+ }
23
+ function racePromiseWithAbortSignal(operation, signal, createError = (abortedSignal) => createAbortError("Operation aborted", { cause: abortedSignal.reason })) {
24
+ const run = () => {
25
+ try {
26
+ return typeof operation === "function" ? operation() : operation;
27
+ } catch (error) {
28
+ return Promise.reject(error);
29
+ }
30
+ };
31
+ if (!signal) return run();
32
+ const abortError = () => createError(signal);
33
+ if (signal.aborted) {
34
+ const aborted = Promise.reject(abortError());
35
+ return typeof operation === "function" ? aborted : Promise.race([aborted, operation]);
36
+ }
37
+ let onAbort;
38
+ const aborted = new Promise((_, reject) => {
39
+ onAbort = () => reject(abortError());
40
+ signal.addEventListener("abort", onAbort, { once: true });
41
+ if (signal.aborted) onAbort();
42
+ });
43
+ return Promise.race([run(), aborted]).finally(() => {
44
+ signal.removeEventListener("abort", onAbort);
45
+ });
46
+ }
47
+ /** Bounds observation without cancelling work; a factory starts only after the timer is armed. */
48
+ async function raceWithTimeout(operation, timeoutMs, onTimeout, options = {}) {
49
+ let timer;
50
+ try {
51
+ const deadline = new Promise((resolve, reject) => {
52
+ timer = setTimeout(() => {
53
+ try {
54
+ resolve(onTimeout());
55
+ } catch (error) {
56
+ reject(error);
57
+ }
58
+ }, timeoutMs);
59
+ if (options.ref === false) timer.unref?.();
60
+ });
61
+ return await Promise.race([typeof operation === "function" ? operation() : operation, deadline]);
62
+ } finally {
63
+ clearTimeout(timer);
64
+ }
65
+ }
66
+ const DEFAULT_RETRY_CONFIG = {
67
+ attempts: 3,
68
+ minDelayMs: 300,
69
+ maxDelayMs: 3e4,
70
+ jitter: 0
71
+ };
72
+ const defaultSleep = async (ms) => {
73
+ let remainingMs = ms;
74
+ do {
75
+ const delayMs = Math.min(remainingMs, MAX_TIMER_TIMEOUT_MS);
76
+ await new Promise((resolve) => {
77
+ setTimeout(resolve, delayMs);
78
+ });
79
+ remainingMs -= delayMs;
80
+ } while (remainingMs > 0);
81
+ };
82
+ function clampNumber(value, fallback, min, max) {
83
+ if (typeof value !== "number" || !Number.isFinite(value)) return fallback;
84
+ return Math.min(Math.max(value, min ?? Number.NEGATIVE_INFINITY), max ?? Number.POSITIVE_INFINITY);
85
+ }
86
+ function resolveAttemptCount(value, fallback) {
87
+ return Math.max(1, Math.round(clampNumber(value, fallback)));
88
+ }
89
+ function resolveRetryDelayMs(value) {
90
+ return Math.min(Math.max(Math.round(value === Number.POSITIVE_INFINITY ? MAX_TIMER_TIMEOUT_MS : Number.isFinite(value) ? value : 0), 0), MAX_TIMER_TIMEOUT_MS);
91
+ }
92
+ function resolveJitterConfig(value, fallback) {
93
+ if (value === "full") return "full";
94
+ return typeof value === "number" && Number.isFinite(value) ? Math.min(Math.max(value, 0), 1) : fallback;
95
+ }
96
+ function resolveRetryConfig(defaults = DEFAULT_RETRY_CONFIG, overrides) {
97
+ const attempts = resolveAttemptCount(overrides?.attempts, defaults.attempts);
98
+ const minDelayMs = resolveRetryDelayMs(clampNumber(overrides?.minDelayMs, defaults.minDelayMs, 0));
99
+ return {
100
+ attempts,
101
+ minDelayMs,
102
+ maxDelayMs: Math.max(minDelayMs, resolveRetryDelayMs(clampNumber(overrides?.maxDelayMs, defaults.maxDelayMs, 0))),
103
+ jitter: resolveJitterConfig(overrides?.jitter, defaults.jitter)
104
+ };
105
+ }
106
+ function applyJitter(delayMs, jitter, mode, random) {
107
+ if (jitter === "full") {
108
+ if (mode === "symmetric") return Math.max(0, Math.round(delayMs * (.5 + random() * .5)));
109
+ return Math.max(0, Math.ceil(delayMs * (1 + random())));
110
+ }
111
+ if (jitter <= 0) return mode === "positive" ? Math.ceil(delayMs) : delayMs;
112
+ const fraction = random();
113
+ const raw = delayMs * (1 + (mode === "positive" ? fraction * jitter : (fraction * 2 - 1) * jitter));
114
+ return Math.max(0, mode === "positive" ? Math.ceil(raw) : Math.round(raw));
115
+ }
116
+ function toRetryError(value, fallbackMessage = "Non-Error thrown") {
117
+ if (value instanceof Error) return value;
118
+ if (typeof value === "string") return new Error(value);
119
+ const error = new Error(fallbackMessage, { cause: value });
120
+ if (typeof value === "object" && value !== null || typeof value === "function") Object.assign(error, value);
121
+ return error;
122
+ }
123
+ function createRetryRunner(runtime = {}) {
124
+ const runtimeSleep = runtime.sleep ?? defaultSleep;
125
+ const runtimeRandom = runtime.random ?? Math.random;
126
+ const createFailure = runtime.createFailure ?? ((errors) => toRetryError(errors.at(-1) ?? /* @__PURE__ */ new Error("Retry failed")));
127
+ return async function retryAsync(fn, attemptsOrOptions = 3, initialDelayMs = 300) {
128
+ const attemptErrors = [];
129
+ const numeric = typeof attemptsOrOptions === "number";
130
+ const options = typeof attemptsOrOptions === "number" ? { attempts: attemptsOrOptions } : attemptsOrOptions;
131
+ const resolved = resolveRetryConfig(DEFAULT_RETRY_CONFIG, options);
132
+ const maxAttempts = resolved.attempts;
133
+ const minDelayMs = resolved.minDelayMs;
134
+ const maxDelayMs = resolved.maxDelayMs > 0 ? resolved.maxDelayMs : Number.POSITIVE_INFINITY;
135
+ const retryAfterMaxDelayMs = options.retryAfterMaxDelayMs === void 0 ? maxDelayMs : Math.max(minDelayMs, resolveRetryDelayMs(clampNumber(options.retryAfterMaxDelayMs, maxDelayMs, 0)));
136
+ const random = options.random ?? runtimeRandom;
137
+ const sleep = options.sleep ?? runtimeSleep;
138
+ const shouldRetry = options.shouldRetry ?? (() => true);
139
+ for (let attempt = 1; attempt <= maxAttempts; attempt += 1) try {
140
+ return await fn();
141
+ } catch (err) {
142
+ attemptErrors.push(err);
143
+ if (attempt >= maxAttempts || !shouldRetry(err, attempt)) break;
144
+ if (numeric) {
145
+ await runtimeSleep(resolveRetryDelayMs(initialDelayMs * 2 ** (attempt - 1)));
146
+ continue;
147
+ }
148
+ const context = {
149
+ attempt,
150
+ maxAttempts,
151
+ err,
152
+ label: options.label
153
+ };
154
+ const retryAfterMs = options.retryAfterMs?.(err);
155
+ const hasRetryAfter = typeof retryAfterMs === "number" && Number.isFinite(retryAfterMs);
156
+ const configuredDelay = typeof options.delayMs === "function" ? options.delayMs(context) : options.delayMs;
157
+ const resolvedConfiguredDelay = configuredDelay === void 0 ? void 0 : resolveRetryDelayMs(configuredDelay);
158
+ const baseDelay = hasRetryAfter ? Math.max(retryAfterMs, minDelayMs) : resolvedConfiguredDelay === void 0 ? minDelayMs * 2 ** (attempt - 1) : Math.max(resolvedConfiguredDelay, minDelayMs);
159
+ const delayCap = hasRetryAfter ? retryAfterMaxDelayMs : maxDelayMs;
160
+ let delay = Math.min(baseDelay, delayCap);
161
+ const canHonorRetryAfter = hasRetryAfter && (retryAfterMs ?? 0) <= delayCap;
162
+ const wantsPositiveDraw = resolved.jitter === "full" ? !hasRetryAfter || canHonorRetryAfter : canHonorRetryAfter;
163
+ delay = applyJitter(delay, resolved.jitter, wantsPositiveDraw ? "positive" : "symmetric", random);
164
+ delay = Math.min(Math.max(delay, minDelayMs), delayCap);
165
+ await options.onRetry?.({
166
+ ...context,
167
+ delayMs: delay
168
+ });
169
+ if (delay > 0) await sleep(delay);
170
+ }
171
+ throw createFailure(attemptErrors);
172
+ };
173
+ }
174
+ createRetryRunner();
175
+ //#endregion
34
176
  //#region packages/ai/src/utils/hash.ts
35
177
  /** Fast deterministic hash to shorten long strings */
36
178
  function shortHash(str) {
@@ -222,9 +364,7 @@ function parseJsonNumberToken(input, start) {
222
364
  }
223
365
  function isUnsafeIntegerLiteral(token) {
224
366
  const digits = token[0] === "-" ? token.slice(1) : token;
225
- if (digits.length < MAX_SAFE_INTEGER_ABS_STR.length) return false;
226
- if (digits.length > MAX_SAFE_INTEGER_ABS_STR.length) return true;
227
- return digits > MAX_SAFE_INTEGER_ABS_STR;
367
+ return digits.length > MAX_SAFE_INTEGER_ABS_STR.length || digits.length === MAX_SAFE_INTEGER_ABS_STR.length && digits > MAX_SAFE_INTEGER_ABS_STR;
228
368
  }
229
369
  /** Quotes integer literals above Number.MAX_SAFE_INTEGER before JSON.parse. */
230
370
  function quoteUnsafeIntegerLiterals(input) {
@@ -364,20 +504,7 @@ function mergeTransportHeaders(...headerSources) {
364
504
  return Object.keys(merged).length > 0 ? merged : void 0;
365
505
  }
366
506
  function createEmptyTransportUsage() {
367
- return {
368
- input: 0,
369
- output: 0,
370
- cacheRead: 0,
371
- cacheWrite: 0,
372
- totalTokens: 0,
373
- cost: {
374
- input: 0,
375
- output: 0,
376
- cacheRead: 0,
377
- cacheWrite: 0,
378
- total: 0
379
- }
380
- };
507
+ return createZeroUsage();
381
508
  }
382
509
  function createWritableTransportEventStream() {
383
510
  const eventStream = createAssistantMessageEventStream();
@@ -465,20 +592,8 @@ async function awaitProviderLifecycleCallback(callback, signal) {
465
592
  if (!callback) return;
466
593
  const callbackPromise = Promise.resolve().then(callback);
467
594
  getAiTransportHost().observePendingProviderWork?.(callbackPromise);
468
- if (!signal) {
469
- await callbackPromise;
470
- return;
471
- }
472
- let onAbort;
473
- try {
474
- await Promise.race([callbackPromise, new Promise((_resolve, reject) => {
475
- onAbort = () => reject(transportAbortError(signal));
476
- signal.addEventListener("abort", onAbort, { once: true });
477
- })]);
478
- } finally {
479
- if (onAbort) signal.removeEventListener("abort", onAbort);
480
- }
481
- if (signal.aborted) throw transportAbortError(signal);
595
+ await racePromiseWithAbortSignal(callbackPromise, signal, transportAbortError);
596
+ if (signal?.aborted) throw transportAbortError(signal);
482
597
  }
483
598
  function startProviderStreamCancellation(cancelStream, error) {
484
599
  const reason = error instanceof Error ? error : new Error(String(error));
@@ -590,4 +705,4 @@ function failTransportStream(params) {
590
705
  stream.end();
591
706
  }
592
707
  //#endregion
593
- export { shortHash as A, parseJsonObjectPreservingUnsafeIntegers as C, parseJsonWithRepair as D, createToolArgumentPreviewSchedule as E, parseStreamingJson as O, withProviderResponseHook as S, quoteUnsafeIntegerLiterals as T, sanitizeNonEmptyTransportPayloadText as _, createEmptyTransportUsage as a, transportAbortError as b, failTransportStream as c, iterateModelStream as d, mergeTransportHeaders as f, parseTerminalToolCallArguments as g, notifyProviderStreamOpened as h, copyProviderAcceptanceObserver as i, sanitizeSurrogates as j, repairJson as k, finalizeTerminalToolCallArguments as l, notifyProviderHttpResponse as m, assignTransportErrorDetails as n, createModelStreamCooperativeScheduler as o, notifyProviderHttpMetadata as p, coerceTransportToolCallArguments as r, createWritableTransportEventStream as s, IncompleteToolCallError as t, finalizeTransportStream as u, sanitizeTransportPayloadText as v, parseJsonPreservingUnsafeIntegers as w, withProviderAcceptanceObserver as x, throwIfModelStreamAborted as y };
708
+ export { shortHash as A, parseJsonObjectPreservingUnsafeIntegers as C, parseJsonWithRepair as D, createToolArgumentPreviewSchedule as E, racePromiseWithAbortSignal as M, raceWithTimeout as N, parseStreamingJson as O, sanitizeSurrogates as P, withProviderResponseHook as S, quoteUnsafeIntegerLiterals as T, sanitizeNonEmptyTransportPayloadText as _, createEmptyTransportUsage as a, transportAbortError as b, failTransportStream as c, iterateModelStream as d, mergeTransportHeaders as f, parseTerminalToolCallArguments as g, notifyProviderStreamOpened as h, copyProviderAcceptanceObserver as i, createAbortError as j, repairJson as k, finalizeTerminalToolCallArguments as l, notifyProviderHttpResponse as m, assignTransportErrorDetails as n, createModelStreamCooperativeScheduler as o, notifyProviderHttpMetadata as p, coerceTransportToolCallArguments as r, createWritableTransportEventStream as s, IncompleteToolCallError as t, finalizeTransportStream as u, sanitizeTransportPayloadText as v, parseJsonPreservingUnsafeIntegers as w, withProviderAcceptanceObserver as x, throwIfModelStreamAborted as y };
@@ -1,19 +1,19 @@
1
- import "./index-D6KsSE74.mjs";
2
- import { $ as ThinkingContent, B as ProviderReplayState, K as StopReason, M as OpenAICompletionsCompat, O as Model, X as TextContent, Y as StreamOptions, _t as ModelDataThinkingFormat, a as AssistantMessage, d as Context, l as CacheRetention, n as Api, nt as Tool, ot as Usage, q as StreamFn, rt as ToolCall } from "./types-CLLR3eB4.mjs";
3
- import { n as ApiRegistry } from "./api-registry-D-nbmSqr.mjs";
4
- import { o as AiProviderStreamHookContext } from "./host-rxlNaBwm.mjs";
5
- import { a as BaseOpenAIStreamOptions, c as OpenAIResponsesCompactionRejection, o as CodeModeToolSurfaceObservation, s as OpenAICompletionsOptions } from "./provider-options-Df7ov0K1.mjs";
1
+ import "./index-a8e_oKnu.mjs";
2
+ import { $ as StopReason, N as OpenAICompletionsCompat, Nt as ModelDataThinkingFormat, V as ProviderReplayState, a as AssistantMessage, d as Context, et as StreamFn, k as Model, l as CacheRetention, lt as Tool, n as Api, nt as StreamOptions, ot as ThinkingContent, pt as Usage, rt as TextContent, ut as ToolCall } from "./types-DvzmWW8J.mjs";
3
+ import { n as ApiRegistry } from "./api-registry-DpU0Rj-I.mjs";
4
+ import { o as AiProviderStreamHookContext } from "./host-BinBeGcQ.mjs";
5
+ import { a as BaseOpenAIStreamOptions, c as OpenAIResponsesCompactionRejection, o as CodeModeToolSurfaceObservation, s as OpenAICompletionsOptions } from "./provider-options-D5ABCV_l.mjs";
6
6
  import { n as OpenAIToolProjection } from "./openai-tool-projection-793cE3QX.mjs";
7
- import "./types-CB-_vNyI.mjs";
8
- import { a as buildAnthropicSystemBlocks, c as logAnthropicContextEdits, d as resolveAnthropicPayloadPolicy, f as resolveAnthropicRequestBetaHeader, i as applyAnthropicRequestCacheControl, l as resolveAnthropicCacheOptions, n as applyAnthropicEphemeralCacheControlMarkers, o as isAnthropicServerToolClearingEnabled, p as resolveAnthropicServerCompactionPlan, r as applyAnthropicPayloadPolicyToParams, s as isDirectAnthropicModel, t as applyAnthropicContextManagementToRequest, u as resolveAnthropicEphemeralCacheControl } from "./anthropic-payload-policy-NIPVYXPq.mjs";
9
- import { a as resolveOpenAICompletionsCompat, i as isOpenAICodexResponsesModel, n as detectOpenAICompletionsCompat, o as resolveOpenAIPromptCacheKeySupport, r as isNativeOpenAIEndpoint, s as usesNativeOpenAICodexResponsesBackend, t as ResolvedOpenAICompletionsCompat } from "./openai-completions-compat-qJjmqQ71.mjs";
10
- import { n as OpenAIResponsesOptions, r as OpenAIResponsesReasoningReplayMetadata, s as OpenAIResponsesCompactionOutput } from "./openai-responses-contracts-D1iZ0njF.mjs";
7
+ import "./types-BuiEBM3u.mjs";
8
+ import { a as buildAnthropicSystemBlocks, c as logAnthropicContextEdits, d as resolveAnthropicPayloadPolicy, f as resolveAnthropicRequestBetaHeader, i as applyAnthropicRequestCacheControl, l as resolveAnthropicCacheOptions, m as supportsAnthropicServerSideFallback, n as applyAnthropicEphemeralCacheControlMarkers, o as isAnthropicServerToolClearingEnabled, p as resolveAnthropicServerCompactionPlan, r as applyAnthropicPayloadPolicyToParams, s as isDirectAnthropicModel, t as applyAnthropicContextManagementToRequest, u as resolveAnthropicEphemeralCacheControl } from "./anthropic-payload-policy-BhCcgNdm.mjs";
9
+ import { a as resolveOpenAICompletionsCompat, i as isOpenAICodexResponsesModel, n as detectOpenAICompletionsCompat, o as resolveOpenAIPromptCacheKeySupport, r as isNativeOpenAIEndpoint, s as usesNativeOpenAICodexResponsesBackend, t as ResolvedOpenAICompletionsCompat } from "./openai-completions-compat-BYdYpXhU.mjs";
10
+ import { l as OpenAIResponsesCompactionOutput, n as OpenAIResponsesOptions, r as OpenAIResponsesReasoningReplayMetadata } from "./openai-responses-contracts-Br5IIw_h.mjs";
11
11
  import { i as resolveOpenAIResponsesServerCompactionPlan, n as resolveOpenAIResponsesCompactEndpointPlan, r as resolveOpenAIResponsesPayloadPolicy, t as applyOpenAIResponsesPayloadPolicy } from "./openai-responses-payload-policy-C7GsA1y0.mjs";
12
- import { n as captureOpenAIResponsesCompaction, t as CompactionReplayRefreshRequiredError } from "./openai-responses-compaction-replay-DiYn-gFM.mjs";
13
- import { C as withProviderAcceptanceObserver, S as transportAbortError, _ as notifyProviderStreamOpened, a as coerceTransportToolCallArguments, b as sanitizeTransportPayloadText, c as createModelStreamCooperativeScheduler, d as finalizeTerminalToolCallArguments, f as finalizeTransportStream, g as notifyProviderHttpResponse, h as notifyProviderHttpMetadata, i as assignTransportErrorDetails, l as createWritableTransportEventStream, m as mergeTransportHeaders, n as ProviderAcceptance, o as copyProviderAcceptanceObserver, p as iterateModelStream, r as WritableTransportStream, s as createEmptyTransportUsage, t as IncompleteToolCallError, u as failTransportStream, v as parseTerminalToolCallArguments, w as withProviderResponseHook, x as throwIfModelStreamAborted, y as sanitizeNonEmptyTransportPayloadText } from "./transport-stream-shared-yYhXa4kX.mjs";
12
+ import { n as captureOpenAIResponsesCompaction, t as CompactionReplayRefreshRequiredError } from "./openai-responses-compaction-replay-BClApUIf.mjs";
13
+ import { C as withProviderAcceptanceObserver, S as transportAbortError, _ as notifyProviderStreamOpened, a as coerceTransportToolCallArguments, b as sanitizeTransportPayloadText, c as createModelStreamCooperativeScheduler, d as finalizeTerminalToolCallArguments, f as finalizeTransportStream, g as notifyProviderHttpResponse, h as notifyProviderHttpMetadata, i as assignTransportErrorDetails, l as createWritableTransportEventStream, m as mergeTransportHeaders, n as ProviderAcceptance, o as copyProviderAcceptanceObserver, p as iterateModelStream, r as WritableTransportStream, s as createEmptyTransportUsage, t as IncompleteToolCallError, u as failTransportStream, v as parseTerminalToolCallArguments, w as withProviderResponseHook, x as throwIfModelStreamAborted, y as sanitizeNonEmptyTransportPayloadText } from "./transport-stream-shared-BcAKh2XH.mjs";
14
14
  import { r as sortPromptCacheToolsByName } from "./prompt-cache-stability-Cwcjv_fx.mjs";
15
15
  import { r as normalizeOpenAIStrictToolParameters } from "./openai-tool-schema-a5ysBBga.mjs";
16
- import { d as VideoContent, i as ProviderContext, s as ProviderModel } from "./provider-types-d4XnoZMd.mjs";
16
+ import { d as VideoContent, i as ProviderContext, s as ProviderModel } from "./provider-types-F8Mqc9Ma.mjs";
17
17
  import { a as resolveModelSseDebugMode, i as resolveModelPayloadDebugMode, n as formatModelTransportDebugUrl, r as emitModelTransportDebug, t as formatModelTransportDebugBaseUrl } from "./model-transport-url-C5f59L3Y.mjs";
18
18
  import OpenAI from "openai";
19
19
  import { Part } from "@google/genai";
@@ -273,11 +273,11 @@ export declare function getCompat(model: OpenAIModeModel): {
273
273
  supportsJsonSchemaResponseFormat: boolean;
274
274
  supportsPromptCacheKey: boolean;
275
275
  supportsLongCacheRetention: boolean;
276
+ cacheControlFormat?: OpenAICompletionsCompat["cacheControlFormat"];
276
277
  sessionAffinity: "none" | "openai" | "openrouter";
277
278
  visibleReasoningDetailTypes: string[];
278
279
  requiresNonEmptyUserOrAssistantMessage: boolean;
279
280
  configuredSupportsLongCacheRetention?: boolean;
280
- cacheControlFormat: "anthropic" | undefined;
281
281
  reasoningEffortMap: Record<string, string>;
282
282
  openRouterRouting: Record<string, unknown>;
283
283
  vercelGatewayRouting: Record<string, unknown>;
@@ -285,6 +285,12 @@ export declare function getCompat(model: OpenAIModeModel): {
285
285
  strictMessageKeys: boolean;
286
286
  };
287
287
  //#endregion
288
+ //#region packages/ai/src/transports/provider-compaction-checkpoint.d.ts
289
+ /** Whether provider replay state is a prefix-bound server compaction checkpoint. */
290
+ export declare function isCompactionReplayCheckpoint(replay: unknown): replay is ProviderReplayState;
291
+ /** Strip prefix-bound checkpoints after local history rewrites. */
292
+ export declare function stripCompactionReplayCheckpoint(message: AssistantMessage): AssistantMessage;
293
+ //#endregion
288
294
  //#region packages/ai/src/transports/provider-compaction-replay.d.ts
289
295
  type ReplayIdentity = {
290
296
  sessionId?: string;
@@ -315,15 +321,11 @@ export declare function resolveCompactionReplayPressure<T extends ReplayMessage>
315
321
  prefixTokens: number;
316
322
  measuredTokens?: number;
317
323
  } | undefined;
318
- /** Whether provider replay state is a prefix-bound server compaction checkpoint. */
319
- export declare function isCompactionReplayCheckpoint(replay: unknown): replay is ProviderReplayState;
320
- /** Strip prefix-bound checkpoints after local history rewrites. */
321
- export declare function stripCompactionReplayCheckpoint(message: AssistantMessage): AssistantMessage;
322
324
  /** Strip prefix-bound checkpoint state from an in-place message rewrite. */
323
325
  export declare function stripCompactionReplayCheckpointInPlace(message: {
324
326
  providerReplay?: unknown;
325
327
  }): void;
326
- /** Reindex a prefix-bound checkpoint after known content removals. */
328
+ /** Preserve the covered prefix and reindex checkpoints after known content removals. */
327
329
  export declare function replaceCompactionReplayOwnerContent(message: AssistantMessage, content: AssistantMessage["content"]): AssistantMessage;
328
330
  //#endregion
329
331
  //#region packages/ai/src/transports/provider-transport-stream.d.ts
@@ -333,15 +335,12 @@ type ProviderTransportStreamContext = {
333
335
  workspaceDir?: string;
334
336
  env?: NodeJS.ProcessEnv;
335
337
  };
338
+ declare function createSupportedTransportStreamFn(model: Model, ctx?: ProviderTransportStreamContext): StreamFn | undefined;
336
339
  /** Maps public model APIs to the internal transport API id used by simple runtime dispatch. */
337
340
  export declare function resolveTransportAwareSimpleApi(api: Api): Api | undefined;
338
341
  /** Creates a managed transport stream only when request overrides require it. */
339
342
  export declare function createTransportAwareStreamFnForModel(model: Model, ctx?: ProviderTransportStreamContext): StreamFn | undefined;
340
- /** Creates a managed OpenClaw transport stream for explicit fallback/runtime callers. */
341
- export declare function createOpenClawTransportStreamFnForModel(model: Model, ctx?: ProviderTransportStreamContext): StreamFn | undefined;
342
- export declare function createBoundaryAwareStreamFnForModel(model: Model, ctx?: ProviderTransportStreamContext): StreamFn | undefined;
343
343
  export declare function prepareTransportAwareSimpleModel<TApi extends Api>(model: Model<TApi>, ctx?: ProviderTransportStreamContext): Model;
344
- export declare function buildTransportAwareSimpleStreamFn(model: Model, ctx?: ProviderTransportStreamContext): StreamFn | undefined;
345
344
  //#endregion
346
345
  //#region packages/ai/src/transports/responses-image-payload-sanitizer.d.ts
347
346
  /** Sanitize inline image fields inside a Responses API payload. */
@@ -432,4 +431,4 @@ export declare function convertGoogleTools(tools: Tool[]): {
432
431
  functionDeclarations: Record<string, unknown>[];
433
432
  }[] | undefined;
434
433
  //#endregion
435
- export { CompactionReplayRefreshRequiredError, type GoogleStreamChunk, IncompleteToolCallError, type OpenAICompletionsOptions, type OpenAIResponsesCompactionRejection, ProviderAcceptance, ResolvedOpenAICompletionsCompat, WritableTransportStream, applyAnthropicContextManagementToRequest, applyAnthropicEphemeralCacheControlMarkers, applyAnthropicPayloadPolicyToParams, applyAnthropicRequestCacheControl, applyOpenAIResponsesPayloadPolicy, assignTransportErrorDetails, buildAnthropicSystemBlocks, captureOpenAIResponsesCompaction, coerceTransportToolCallArguments, copyProviderAcceptanceObserver, createEmptyTransportUsage, createModelStreamCooperativeScheduler, createWritableTransportEventStream, detectOpenAICompletionsCompat, emitModelTransportDebug, failTransportStream, finalizeTerminalToolCallArguments, finalizeTransportStream, formatModelTransportDebugBaseUrl, formatModelTransportDebugUrl, isAnthropicServerToolClearingEnabled, isDirectAnthropicModel, isNativeOpenAIEndpoint, isOpenAICodexResponsesModel, iterateModelStream, logAnthropicContextEdits, mergeTransportHeaders, notifyProviderHttpMetadata, notifyProviderHttpResponse, notifyProviderStreamOpened, parseTerminalToolCallArguments, resolveAnthropicCacheOptions, resolveAnthropicEphemeralCacheControl, resolveAnthropicPayloadPolicy, resolveAnthropicRequestBetaHeader, resolveAnthropicServerCompactionPlan, resolveModelPayloadDebugMode, resolveModelSseDebugMode, resolveOpenAICompletionsCompat, resolveOpenAIPromptCacheKeySupport, resolveOpenAIResponsesCompactEndpointPlan, resolveOpenAIResponsesPayloadPolicy, resolveOpenAIResponsesServerCompactionPlan, sanitizeNonEmptyTransportPayloadText, sanitizeTransportPayloadText, sortPromptCacheToolsByName as sortTransportToolsByName, throwIfModelStreamAborted, transportAbortError, usesNativeOpenAICodexResponsesBackend, withProviderAcceptanceObserver, withProviderResponseHook };
434
+ export { CompactionReplayRefreshRequiredError, type GoogleStreamChunk, IncompleteToolCallError, type OpenAICompletionsOptions, type OpenAIResponsesCompactionRejection, ProviderAcceptance, ResolvedOpenAICompletionsCompat, WritableTransportStream, applyAnthropicContextManagementToRequest, applyAnthropicEphemeralCacheControlMarkers, applyAnthropicPayloadPolicyToParams, applyAnthropicRequestCacheControl, applyOpenAIResponsesPayloadPolicy, assignTransportErrorDetails, buildAnthropicSystemBlocks, createTransportAwareStreamFnForModel as buildTransportAwareSimpleStreamFn, captureOpenAIResponsesCompaction, coerceTransportToolCallArguments, copyProviderAcceptanceObserver, createSupportedTransportStreamFn as createBoundaryAwareStreamFnForModel, createSupportedTransportStreamFn as createOpenClawTransportStreamFnForModel, createEmptyTransportUsage, createModelStreamCooperativeScheduler, createWritableTransportEventStream, detectOpenAICompletionsCompat, emitModelTransportDebug, failTransportStream, finalizeTerminalToolCallArguments, finalizeTransportStream, formatModelTransportDebugBaseUrl, formatModelTransportDebugUrl, isAnthropicServerToolClearingEnabled, isDirectAnthropicModel, isNativeOpenAIEndpoint, isOpenAICodexResponsesModel, iterateModelStream, logAnthropicContextEdits, mergeTransportHeaders, notifyProviderHttpMetadata, notifyProviderHttpResponse, notifyProviderStreamOpened, parseTerminalToolCallArguments, resolveAnthropicCacheOptions, resolveAnthropicEphemeralCacheControl, resolveAnthropicPayloadPolicy, resolveAnthropicRequestBetaHeader, resolveAnthropicServerCompactionPlan, resolveModelPayloadDebugMode, resolveModelSseDebugMode, resolveOpenAICompletionsCompat, resolveOpenAIPromptCacheKeySupport, resolveOpenAIResponsesCompactEndpointPlan, resolveOpenAIResponsesPayloadPolicy, resolveOpenAIResponsesServerCompactionPlan, sanitizeNonEmptyTransportPayloadText, sanitizeTransportPayloadText, sortPromptCacheToolsByName as sortTransportToolsByName, supportsAnthropicServerSideFallback, throwIfModelStreamAborted, transportAbortError, usesNativeOpenAICodexResponsesBackend, withProviderAcceptanceObserver, withProviderResponseHook };