@openclaw/ai 2026.10.5 → 2026.10.10-beta.2

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 (119) hide show
  1. package/README.md +11 -0
  2. package/dist/{anthropic-DIIiiz99.mjs → anthropic-D6spfBri.mjs} +16 -18
  3. package/dist/{anthropic-payload-policy-DGblkHL5.d.mts → anthropic-payload-policy-Cr8xjazC.d.mts} +6 -3
  4. package/dist/{anthropic-stream-reducer-DfMVFm-r.mjs → anthropic-stream-reducer-CzPXOaLM.mjs} +55 -227
  5. package/dist/anthropic-tool-projection-BdAS3rtJ.mjs +165 -0
  6. package/dist/anthropic-tool-projection-DKH-aEWU.d.mts +51 -0
  7. package/dist/{api-registry-BhXXYdRA.d.mts → api-registry-gDt0faai.d.mts} +2 -2
  8. package/dist/{assistant-output-BuhRpLeD.mjs → assistant-output-6iFA1nbC.mjs} +2 -2
  9. package/dist/{azure-openai-responses-DGQnXRMs.mjs → azure-openai-responses-0TqHwnlD.mjs} +8 -8
  10. package/dist/{cloudflare-5qSGvIUH.mjs → cloudflare-Dttf8jKq.mjs} +1 -1
  11. package/dist/{credential-redaction-BHxruEH6.d.mts → credential-redaction-XvsPf7Yi.d.mts} +1 -0
  12. package/dist/{diagnostics-tQasYct1.mjs → diagnostics-Cv7cW3pS.mjs} +3 -3
  13. package/dist/diagnostics.d.mts +6 -6
  14. package/dist/diagnostics.mjs +2 -2
  15. package/dist/{env-api-keys-CrxwdylR.mjs → env-api-keys-Xd8dm_aV.mjs} +10 -34
  16. package/dist/event-stream-CDpFza-M.d.mts +1 -0
  17. package/dist/{event-stream-BcqWLo_u.d.mts → event-stream-CzpE1g_o.d.mts} +1 -1
  18. package/dist/event-stream.d.mts +2 -2
  19. package/dist/{github-copilot-request-facts-DEE6gcB9.mjs → github-copilot-request-facts-F-EmvkpW.mjs} +1 -1
  20. package/dist/{google-interactions-zIz70M2e.mjs → google-interactions-DVQ7AaSF.mjs} +29 -50
  21. package/dist/{google-messages-CNbUJK5E.mjs → google-messages-DfpHVTaD.mjs} +15 -5
  22. package/dist/{google-provider-stream-Cn0XF1MG.mjs → google-provider-stream-DJ8ANfsS.mjs} +6 -6
  23. package/dist/{google-shared-BPnWP4tT.mjs → google-shared-VTcCJLW3.mjs} +21 -29
  24. package/dist/{google-vertex-XQ7OQtaM.mjs → google-vertex-Bkfizj7M.mjs} +3 -3
  25. package/dist/{google-BlbTC1Xp.mjs → google-zWpkDSeN.mjs} +4 -4
  26. package/dist/{host-Bf3NjYNj.mjs → host-B2gk-d1H.mjs} +5 -11
  27. package/dist/{host-CTDz7LXD.d.mts → host-jJOffdlW.d.mts} +4 -6
  28. package/dist/{host-policy-BzZluO6_.mjs → host-policy-mpqGhbeM.mjs} +1 -1
  29. package/dist/{index-BYDvopUB.d.mts → index-DSprYWaz.d.mts} +7 -5
  30. package/dist/index.d.mts +7 -7
  31. package/dist/index.mjs +6 -6
  32. package/dist/internal/anthropic.d.mts +7 -53
  33. package/dist/internal/anthropic.mjs +6 -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 +3 -3
  38. package/dist/internal/openai-responses-payload-policy.mjs +3 -3
  39. package/dist/internal/openai.d.mts +17 -26
  40. package/dist/internal/openai.mjs +10 -10
  41. package/dist/internal/retry-after.d.mts +1 -1
  42. package/dist/internal/retry-after.mjs +80 -55
  43. package/dist/internal/runtime.d.mts +9 -31
  44. package/dist/internal/runtime.mjs +10 -116
  45. package/dist/internal/shared.d.mts +9 -7
  46. package/dist/internal/shared.mjs +8 -6
  47. package/dist/internal/tool-schema.d.mts +83 -5
  48. package/dist/internal/tool-schema.mjs +4 -3
  49. package/dist/{mistral-dCDCR5ur.mjs → mistral-CATJrwne.mjs} +32 -35
  50. package/dist/model-request-body-BD5vy4rP.d.mts +17 -0
  51. package/dist/{number-coercion-C3hztWoY.mjs → number-coercion-37gmNkuA.mjs} +1 -1
  52. package/dist/{openai-chatgpt-responses-D8-q7cgy.mjs → openai-chatgpt-responses-CtdnpWwe.mjs} +95 -63
  53. package/dist/{openai-completions-CMN24pza.mjs → openai-completions-B6sET3oI.mjs} +10 -8
  54. package/dist/{openai-completions-compat-i-nLZxFy.d.mts → openai-completions-compat-1gsjP-KO.d.mts} +6 -3
  55. package/dist/{openai-completions-compat-CYX18uDk.mjs → openai-completions-compat-CFhQ3UVU.mjs} +7 -2
  56. package/dist/{openai-completions-transport-DuXQOxrH.mjs → openai-completions-transport-DviPEqw3.mjs} +369 -237
  57. package/dist/{openai-prompt-cache-r93BJhjm.mjs → openai-prompt-cache-DJ_P143P.mjs} +1 -1
  58. package/dist/{openai-prompt-cache-DIPMrMFy.d.mts → openai-prompt-cache-DgjD-UL5.d.mts} +2 -2
  59. package/dist/{openai-responses-BMxoJdTC.mjs → openai-responses-BXsJK-mD.mjs} +13 -15
  60. package/dist/{openai-responses-compaction-replay-B2FE4Nw8.d.mts → openai-responses-compaction-replay-Cvnl_nCq.d.mts} +5 -5
  61. package/dist/{openai-responses-contracts-DlKMMTxK.mjs → openai-responses-contracts-Bx-16mnf.mjs} +45 -6
  62. package/dist/{openai-responses-contracts-DKqMJ1Ct.d.mts → openai-responses-contracts-CQ4_AWjL.d.mts} +20 -8
  63. package/dist/{openai-responses-endpoint-CinGh4VZ.mjs → openai-responses-endpoint-D4v-eeYy.mjs} +55 -22
  64. package/dist/{openai-responses-payload-policy-C7GsA1y0.d.mts → openai-responses-payload-policy-BzM52TTH.d.mts} +9 -3
  65. package/dist/openai-responses-request-lifecycle-CTdAb2v1.mjs +246 -0
  66. package/dist/{openai-responses-shared-afo9-s16.mjs → openai-responses-shared-Bv_1NtH9.mjs} +284 -173
  67. package/dist/{openai-responses-terminal-usage-BygjiAdi.d.mts → openai-responses-terminal-usage-CpVjkqn-.d.mts} +2 -2
  68. package/dist/{openai-tool-schema-DDPXsvJP.mjs → openai-tool-schema-Buv0GXFb.mjs} +170 -237
  69. package/dist/overflow-DJHXTNBQ.mjs +117 -0
  70. package/dist/{positive-integer-CqWjqSi9.mjs → positive-integer-Bb4Evc7L.mjs} +1 -1
  71. package/dist/prompt-cache-stability-D_MeCQFI.mjs +32 -0
  72. package/dist/{provider-error-xumb1V3F.d.mts → provider-error-CnaWYTRY.d.mts} +1 -0
  73. package/dist/{provider-error-CF9GWCs2.mjs → provider-error-qtZD2inE.mjs} +75 -13
  74. package/dist/{provider-options-CVrXZBtA.d.mts → provider-options-DeYeaflL.d.mts} +52 -6
  75. package/dist/{transport-utils-34BQoXq3.mjs → provider-replay-context-J6CfU3m1.mjs} +28 -5
  76. package/dist/{provider-transport-turn-state-BYrELw8H.mjs → provider-transport-turn-state-Jxppzuc2.mjs} +5 -5
  77. package/dist/{provider-types-CHtRx0dI.d.mts → provider-types-ODq57rG_.d.mts} +3 -3
  78. package/dist/provider-types.d.mts +6 -6
  79. package/dist/providers.d.mts +2 -2
  80. package/dist/providers.mjs +11 -11
  81. package/dist/{reasoning-tag-text-partitioner-CpOy9-IQ.mjs → reasoning-tag-text-partitioner-DzlRubwU.mjs} +134 -47
  82. package/dist/{required-api-key-CFJvcFy_.mjs → required-api-key-D088S4Cd.mjs} +1 -1
  83. package/dist/{retry-after-CdCURCVg.d.mts → retry-after-sw-XX8aC.d.mts} +1 -1
  84. package/dist/sanitize-unicode-CRGuMONI.mjs +8 -0
  85. package/dist/sanitize-unicode-ZqVLLEKC.d.mts +27 -0
  86. package/dist/{session-resources-D1wgDQ8C.mjs → session-resources-vKvGIE3J.mjs} +1 -10
  87. package/dist/{simple-options-BAu4B54D.mjs → simple-options-BYgC6kse.mjs} +68 -79
  88. package/dist/{src-C44MKrW5.mjs → src-CyA0zJnt.mjs} +6 -2
  89. package/dist/{stream-Dd8DwRFL.mjs → stream-DLBirT0e.mjs} +8 -47
  90. package/dist/{stream-first-event-timeout-Dc42hKv6.mjs → stream-first-event-timeout-D_TfJHRJ.mjs} +1 -1
  91. package/dist/{string-coerce-CtgOVOSv.mjs → string-coerce-Cj8sqWHx.mjs} +26 -1
  92. package/dist/tool-schema-json-projection-B0hHDV7N.mjs +492 -0
  93. package/dist/{transport-stream-shared-BmpzDtdQ.d.mts → transport-stream-shared-8ru8eX4s.d.mts} +5 -5
  94. package/dist/{transport-stream-shared-CWGOuLcA.mjs → transport-stream-shared-CzQlAzJH.mjs} +27 -75
  95. package/dist/transports.d.mts +33 -28
  96. package/dist/transports.mjs +42 -48
  97. package/dist/{types-CQc6JNG4.mjs → types-BXd0kI8-.mjs} +1 -1
  98. package/dist/types-CBJthzJX.d.mts +1 -0
  99. package/dist/{types-Bd2T86VJ.d.mts → types-CVYzKrMl.d.mts} +20 -3
  100. package/dist/types.d.mts +6 -6
  101. package/dist/types.mjs +4 -4
  102. package/dist/{validation-ZX_sPVV0.mjs → validation-9FSkE8T-.mjs} +22 -3
  103. package/dist/{validation-DdGB1yy3.d.mts → validation-BQ5u20Ru.d.mts} +1 -1
  104. package/dist/validation.d.mts +1 -1
  105. package/dist/validation.mjs +1 -1
  106. package/package.json +3 -3
  107. package/dist/assistant-text-phase-mvdMcrY-.mjs +0 -50
  108. package/dist/event-stream-6UNs-AhN.d.mts +0 -1
  109. package/dist/expect-lbe3Hgrh.mjs +0 -8
  110. package/dist/json-schema-Bp07Qui3.mjs +0 -22
  111. package/dist/openai-responses-request-lifecycle-NSIJo9jY.mjs +0 -67
  112. package/dist/openai-tool-projection-793cE3QX.d.mts +0 -37
  113. package/dist/openai-tool-schema-a5ysBBga.d.mts +0 -32
  114. package/dist/rolldown-runtime-BhDjJH2R.mjs +0 -15
  115. package/dist/sanitize-unicode-CjDG6jJx.d.mts +0 -5
  116. package/dist/string-normalization-I3ux50s9.mjs +0 -28
  117. package/dist/text-signature-CUXnvk_c.mjs +0 -34
  118. package/dist/tool-schema-json-projection-B8sG1I9v.mjs +0 -180
  119. package/dist/types-Kdfw_04V.d.mts +0 -1
@@ -1,4 +1,4 @@
1
- import { n as isNativeOpenAIEndpoint } from "./openai-completions-compat-CYX18uDk.mjs";
1
+ import { n as isNativeOpenAIEndpoint } from "./openai-completions-compat-CFhQ3UVU.mjs";
2
2
  //#region packages/normalization-core/src/code-points.ts
3
3
  /** Truncates to a nonnegative code-point budget; grapheme clusters may be split. */
4
4
  function truncateCodePoints(text, maxCodePoints) {
@@ -1,5 +1,5 @@
1
- import { N as OpenAICompletionsCompat, k as Model, l as CacheRetention } from "./types-Bd2T86VJ.mjs";
2
- import "./types-Kdfw_04V.mjs";
1
+ import { N as OpenAICompletionsCompat, k as Model, l as CacheRetention } from "./types-CVYzKrMl.mjs";
2
+ import "./types-CBJthzJX.mjs";
3
3
  //#region packages/ai/src/providers/openai-prompt-cache.d.ts
4
4
  /** Selects documented lifetime fields shared by Responses and Chat Completions. */
5
5
  declare function resolveOpenAIPromptCacheParams(model: Pick<Model, "id" | "provider" | "baseUrl">, cacheRetention: CacheRetention, compat: Required<Pick<OpenAICompletionsCompat, "supportsPromptCacheKey" | "supportsLongCacheRetention">>): {
@@ -1,14 +1,14 @@
1
- import { t as __exportAll } from "./rolldown-runtime-BhDjJH2R.mjs";
1
+ import { n as __exportAll } from "./reasoning-tag-text-partitioner-DzlRubwU.mjs";
2
2
  import { t as AssistantMessageEventStream } from "./event-stream-X2gmsUWv.mjs";
3
- import { n as clampOpenAIPromptCacheKey, r as resolveOpenAIPromptCacheParams } from "./openai-prompt-cache-r93BJhjm.mjs";
4
- import { i as resolveOpenAICompletionsCompat } from "./openai-completions-compat-CYX18uDk.mjs";
5
- import { i as resolveCacheRetention, r as buildCopilotDynamicHeaders } from "./cloudflare-5qSGvIUH.mjs";
6
- import { n as buildBaseOptions } from "./simple-options-BAu4B54D.mjs";
7
- import { F as convertProviderResponsesMessages, _t as resolveOpenAISimpleReasoningEffort, n as applyResponsesServiceTierPricing, r as runResponsesStreamLifecycle, t as applyCommonResponsesParams } from "./openai-responses-shared-afo9-s16.mjs";
8
- import { n as getEnvApiKey } from "./env-api-keys-CrxwdylR.mjs";
9
- import { t as createAssistantOutput } from "./assistant-output-BuhRpLeD.mjs";
10
- import { i as createOpenAIProviderClient, n as resolveProviderSimpleCompletionHeaders } from "./provider-transport-turn-state-BYrELw8H.mjs";
11
- import { t as requireApiKey } from "./required-api-key-CFJvcFy_.mjs";
3
+ import { n as clampOpenAIPromptCacheKey, r as resolveOpenAIPromptCacheParams } from "./openai-prompt-cache-DJ_P143P.mjs";
4
+ import { i as resolveOpenAICompletionsCompat } from "./openai-completions-compat-CFhQ3UVU.mjs";
5
+ import { i as resolveCacheRetention, r as buildCopilotDynamicHeaders } from "./cloudflare-Dttf8jKq.mjs";
6
+ import { n as buildBaseOptions } from "./simple-options-BYgC6kse.mjs";
7
+ import { n as getEnvApiKey } from "./env-api-keys-Xd8dm_aV.mjs";
8
+ import { t as createAssistantOutput } from "./assistant-output-6iFA1nbC.mjs";
9
+ import { F as convertProviderResponsesMessages, n as applyResponsesServiceTierPricing, r as runResponsesStreamLifecycle, t as applyCommonResponsesParams, vt as resolveOpenAISimpleReasoningEffort } from "./openai-responses-shared-Bv_1NtH9.mjs";
10
+ import { i as createOpenAIProviderClient, n as resolveProviderSimpleCompletionHeaders } from "./provider-transport-turn-state-Jxppzuc2.mjs";
11
+ import { t as requireApiKey } from "./required-api-key-D088S4Cd.mjs";
12
12
  //#region packages/ai/src/providers/openai-responses.ts
13
13
  var openai_responses_exports = /* @__PURE__ */ __exportAll({
14
14
  streamOpenAIResponses: () => streamOpenAIResponses,
@@ -30,9 +30,7 @@ const streamOpenAIResponses = (model, context, options) => {
30
30
  output,
31
31
  options,
32
32
  createClient: () => {
33
- const apiKey = options?.apiKey || getEnvApiKey(model.provider) || "";
34
- const cacheSessionId = resolveCacheRetention(options?.cacheRetention) === "none" ? void 0 : options?.sessionId;
35
- return createClient(model, context, apiKey, resolveProviderSimpleCompletionHeaders(model, options), cacheSessionId);
33
+ return createClient(model, context, options?.apiKey || getEnvApiKey(model.provider) || "", options, resolveCacheRetention(options?.cacheRetention) === "none" ? void 0 : options?.sessionId);
36
34
  },
37
35
  buildParams: (_requestModel, replayMode) => buildParams(model, context, options, replayMode),
38
36
  processStreamOptions: {
@@ -53,7 +51,7 @@ const streamSimpleOpenAIResponses = (model, context, options) => {
53
51
  replayResponsesItemIds: replayOptions?.replayResponsesItemIds
54
52
  });
55
53
  };
56
- function createClient(model, context, apiKey, optionsHeaders, sessionId) {
54
+ function createClient(model, context, apiKey, options, sessionId) {
57
55
  if (!apiKey) throw new Error(`No API key for provider: ${model.provider}`);
58
56
  const compat = getCompat(model);
59
57
  const headers = { ...model.headers };
@@ -62,7 +60,7 @@ function createClient(model, context, apiKey, optionsHeaders, sessionId) {
62
60
  if (compat.sendSessionIdHeader) headers.session_id = sessionId;
63
61
  headers["x-client-request-id"] = sessionId;
64
62
  }
65
- return createOpenAIProviderClient(model, apiKey, headers, optionsHeaders);
63
+ return createOpenAIProviderClient(model, apiKey, headers, resolveProviderSimpleCompletionHeaders(model, options), options?.onResponse);
66
64
  }
67
65
  function buildParams(model, context, options, replayMode = "checkpoint") {
68
66
  const messages = convertProviderResponsesMessages(model, context, OPENAI_TOOL_CALL_PROVIDERS, {
@@ -1,10 +1,10 @@
1
- import "./index-BYDvopUB.mjs";
2
- import { a as AssistantMessage, k as Model } from "./types-Bd2T86VJ.mjs";
3
- import "./provider-options-CVrXZBtA.mjs";
4
- import { i as ReplayableResponseCompactionItem, l as OpenAIResponsesCompactionOutput, r as OpenAIResponsesReasoningReplayMetadata } from "./openai-responses-contracts-DKqMJ1Ct.mjs";
1
+ import "./index-DSprYWaz.mjs";
2
+ import { a as AssistantMessage, k as Model } from "./types-CVYzKrMl.mjs";
3
+ import "./provider-options-DeYeaflL.mjs";
4
+ import { i as ReplayableResponseCompactionItem, r as OpenAIResponsesReasoningReplayMetadata, u as OpenAIResponsesCompactionOutput } from "./openai-responses-contracts-CQ4_AWjL.mjs";
5
5
  import "openai/resources/responses/responses.js";
6
6
  //#region packages/ai/src/transports/openai-responses-compaction-replay.d.ts
7
- declare function captureOpenAIResponsesCompaction(output: Pick<AssistantMessage, "providerReplay">, item: ReplayableResponseCompactionItem, boundary: number | "retained-users", model: Model, captureMetadata?: OpenAIResponsesReasoningReplayMetadata, compactedOutput?: OpenAIResponsesCompactionOutput): void;
7
+ declare function captureOpenAIResponsesCompaction(output: Pick<AssistantMessage, "providerReplay">, item: ReplayableResponseCompactionItem, boundary: number | "retained-users", model: Model, captureMetadata?: OpenAIResponsesReasoningReplayMetadata, compactedOutput?: OpenAIResponsesCompactionOutput, outputTokens?: number): void;
8
8
  declare class CompactionReplayRefreshRequiredError extends Error {
9
9
  constructor();
10
10
  }
@@ -1,7 +1,6 @@
1
- import { i as PROVIDER_POST_DISPATCH_AMBIGUITY_ERROR_CODE } from "./types-CQc6JNG4.mjs";
1
+ import { i as PROVIDER_POST_DISPATCH_AMBIGUITY_ERROR_CODE } from "./types-BXd0kI8-.mjs";
2
2
  import { i as asOptionalRecord, o as isRecord } from "./record-coerce-CNDovvft.mjs";
3
- import { n as normalizeLowercaseStringOrEmpty } from "./string-coerce-CtgOVOSv.mjs";
4
- import { n as normalizeUniqueTrimmedStringList } from "./string-normalization-I3ux50s9.mjs";
3
+ import { o as normalizeOptionalString, r as normalizeLowercaseStringOrEmpty } from "./string-coerce-Cj8sqWHx.mjs";
5
4
  //#region packages/llm-core/src/model-data.ts
6
5
  const MODEL_DATA_APIS = [
7
6
  "openai-completions",
@@ -35,6 +34,13 @@ const MODEL_DATA_THINKING_LEVELS = [
35
34
  "xhigh",
36
35
  "max"
37
36
  ];
37
+ //#endregion
38
+ //#region packages/model-catalog-core/src/model-catalog-types.ts
39
+ const OPENAI_ULTRAFAST_CONTEXT_TOKENS = 26e4;
40
+ /** Prompt capacity for models served through a context-limited processing tier. */
41
+ function resolveModelServiceTierContextTokens(provider, serviceTier) {
42
+ return provider === "openai" && serviceTier === "ultrafast" ? OPENAI_ULTRAFAST_CONTEXT_TOKENS : void 0;
43
+ }
38
44
  [...MODEL_DATA_APIS];
39
45
  [...MODEL_DATA_THINKING_FORMATS];
40
46
  const MODEL_CATALOG_THINKING_LEVELS = [...MODEL_DATA_THINKING_LEVELS];
@@ -62,6 +68,32 @@ function listMappedModelThinkingLevels(model) {
62
68
  return MODEL_CATALOG_THINKING_LEVELS.filter((level) => mapped.has(level));
63
69
  }
64
70
  //#endregion
71
+ //#region packages/normalization-core/src/string-normalization.ts
72
+ /** Coerces entries to strings, trims them, and drops empty results. */
73
+ function normalizeStringEntries(list) {
74
+ return (list ?? []).map((entry) => String(entry).trim()).filter(Boolean);
75
+ }
76
+ /** Returns first-seen unique values while preserving insertion order. */
77
+ function uniqueValues(values) {
78
+ return [...new Set(values)];
79
+ }
80
+ /** Returns first-seen unique strings while preserving insertion order. */
81
+ function uniqueStrings(values) {
82
+ return uniqueValues(values);
83
+ }
84
+ /** Normalizes array-backed string lists and rejects non-array input as empty. */
85
+ function normalizeTrimmedStringList(value) {
86
+ if (!Array.isArray(value)) return [];
87
+ return value.flatMap((entry) => {
88
+ const normalized = normalizeOptionalString(entry);
89
+ return normalized ? [normalized] : [];
90
+ });
91
+ }
92
+ /** Normalizes an array-backed string list and removes duplicates. */
93
+ function normalizeUniqueTrimmedStringList(value) {
94
+ return uniqueStrings(normalizeTrimmedStringList(value));
95
+ }
96
+ //#endregion
65
97
  //#region packages/ai/src/providers/openai-reasoning-effort.ts
66
98
  /**
67
99
  * OpenAI-compatible reasoning-effort normalization. Different GPT families
@@ -262,6 +294,7 @@ const AZURE_RESPONSES_FIRST_EVENT_TIMEOUT_MS = 3e4;
262
294
  const RESPONSE_FAILED_NO_DETAILS_MESSAGE = "Unknown error (no error details in response)";
263
295
  const OPENAI_RESPONSES_REASONING_REPLAY_META_KEY = "__openclaw_replay";
264
296
  const OPENAI_RESPONSES_REASONING_REPLAY_BLOCK_META_KEY = "openclawReasoningReplay";
297
+ const RESPONSES_RETAINED_USER = Symbol("responsesRetainedUser");
265
298
  const OPENAI_RESPONSES_COMPACTION_REPLAY_TYPE = "openai-responses-compaction";
266
299
  const OPENAI_RESPONSES_RETAINED_COMPACTION_REPLAY_TYPE = "openai-responses-retained-compaction";
267
300
  const OPENAI_RESPONSES_APIS = /* @__PURE__ */ new Set([
@@ -351,13 +384,19 @@ const responsesServiceTierObserver = {
351
384
  rejected: true
352
385
  });
353
386
  },
354
- observe(options, requestedTier, responseTier) {
387
+ observe(options, requestedTier, responseTier, response) {
355
388
  const observer = options && responsesServiceTierObserver.get(options);
356
389
  if (observer && typeof requestedTier === "string" && /^[a-z0-9_-]{1,64}$/i.test(requestedTier) && typeof responseTier === "string" && /^[a-z0-9_-]{1,64}$/i.test(responseTier)) observer({
357
390
  requestedTier,
358
- responseTier
391
+ responseTier,
392
+ ...response && {
393
+ responseId: response.id,
394
+ responseModel: response.model,
395
+ inputTokens: response.usage?.input_tokens,
396
+ cachedTokens: response.usage?.input_tokens_details?.cached_tokens
397
+ }
359
398
  });
360
399
  }
361
400
  };
362
401
  //#endregion
363
- export { MODEL_CATALOG_THINKING_LEVELS as A, normalizeOpenAIReasoningEffort as C, resolveOpenAISupportedReasoningEfforts as D, resolveOpenAIReasoningEffortMapping as E, resolveOpenAIThinkingApi as M, supportsOpenAIReasoningEffort as O, isOpenAIGpt6Model as S, resolveOpenAIReasoningEffortForModel as T, isResponsesServiceTierRejection as _, OPENAI_RESPONSES_COMPACTION_REPLAY_TYPE as a, isOpenAIGpt55Model as b, OPENAI_RESPONSES_RETAINED_COMPACTION_REPLAY_TYPE as c, OpenAIResponsesWebSocketSafeRetryError as d, RESPONSE_FAILED_NO_DETAILS_MESSAGE as f, responsesServiceTierObserver as g, responsesPromptObserver as h, OPENAI_RESPONSES_APIS as i, listMappedModelThinkingLevels as j, supportsOpenAITemperature as k, OpenAIResponsesWebSocketPostDispatchError as l, parseOpenAIResponsesWebSocketServerError as m, DEFAULT_AZURE_OPENAI_API_VERSION as n, OPENAI_RESPONSES_REASONING_REPLAY_BLOCK_META_KEY as o, isPreviousResponseRejection as p, OPENAI_CODEX_RESPONSES_DEFAULT_INSTRUCTIONS as r, OPENAI_RESPONSES_REASONING_REPLAY_META_KEY as s, AZURE_RESPONSES_FIRST_EVENT_TIMEOUT_MS as t, OpenAIResponsesWebSocketPreDispatchError as u, nextResponsesServiceTier as v, resolveOpenAIModelReasoningEfforts as w, isOpenAIGpt56Model as x, isOpenAIGpt54MiniModel as y };
402
+ export { supportsOpenAITemperature as A, isOpenAIGpt6Model as C, resolveOpenAIReasoningEffortMapping as D, resolveOpenAIReasoningEffortForModel as E, listMappedModelThinkingLevels as F, resolveModelServiceTierContextTokens as I, resolveOpenAIThinkingApi as L, uniqueStrings as M, uniqueValues as N, resolveOpenAISupportedReasoningEfforts as O, MODEL_CATALOG_THINKING_LEVELS as P, isOpenAIGpt56Model as S, resolveOpenAIModelReasoningEfforts as T, responsesServiceTierObserver as _, OPENAI_RESPONSES_COMPACTION_REPLAY_TYPE as a, isOpenAIGpt54MiniModel as b, OPENAI_RESPONSES_RETAINED_COMPACTION_REPLAY_TYPE as c, OpenAIResponsesWebSocketSafeRetryError as d, RESPONSES_RETAINED_USER as f, responsesPromptObserver as g, parseOpenAIResponsesWebSocketServerError as h, OPENAI_RESPONSES_APIS as i, normalizeStringEntries as j, supportsOpenAIReasoningEffort as k, OpenAIResponsesWebSocketPostDispatchError as l, isPreviousResponseRejection as m, DEFAULT_AZURE_OPENAI_API_VERSION as n, OPENAI_RESPONSES_REASONING_REPLAY_BLOCK_META_KEY as o, RESPONSE_FAILED_NO_DETAILS_MESSAGE as p, OPENAI_CODEX_RESPONSES_DEFAULT_INSTRUCTIONS as r, OPENAI_RESPONSES_REASONING_REPLAY_META_KEY as s, AZURE_RESPONSES_FIRST_EVENT_TIMEOUT_MS as t, OpenAIResponsesWebSocketPreDispatchError as u, isResponsesServiceTierRejection as v, normalizeOpenAIReasoningEffort as w, isOpenAIGpt55Model as x, nextResponsesServiceTier as y };
@@ -1,13 +1,13 @@
1
- import "./index-BYDvopUB.mjs";
2
- import { M as ModelThinkingLevel, k as Model, n as Api } from "./types-Bd2T86VJ.mjs";
3
- import { a as BaseOpenAIStreamOptions, f as OpenAIReasoningEffort } from "./provider-options-CVrXZBtA.mjs";
4
- import "./types-Kdfw_04V.mjs";
5
- import { ResponseCompactionItem, ResponseCreateParamsStreaming, ResponseInputItem } from "openai/resources/responses/responses.js";
1
+ import "./index-DSprYWaz.mjs";
2
+ import { M as ModelThinkingLevel, k as Model, n as Api } from "./types-CVYzKrMl.mjs";
3
+ import { a as BaseOpenAIStreamOptions, y as OpenAIReasoningEffort } from "./provider-options-DeYeaflL.mjs";
4
+ import "./types-CBJthzJX.mjs";
5
+ import { Response, ResponseCompactionItem, ResponseCreateParamsStreaming, ResponseInputItem, ResponseOutputMessage, ResponseReasoningItem } from "openai/resources/responses/responses.js";
6
6
  //#region packages/ai/src/providers/openai-request-reasoning.d.ts
7
7
  type OpenAIRequestReasoningEffort = ModelThinkingLevel | "none";
8
8
  //#endregion
9
9
  //#region packages/ai/src/transports/openai-responses-compaction-window.d.ts
10
- type OpenAIResponsesCompactionOutput = Array<ResponseInputItem.Message | ReplayableResponseCompactionItem>;
10
+ type OpenAIResponsesCompactionOutput = Array<ResponseInputItem.Message | ReplayableResponseOutputMessage | ReplayableResponseCompactionItem>;
11
11
  /** Read the saved canonical window only when it still matches its opaque checkpoint. */
12
12
  declare function readOpenAIResponsesCompactionWindow(replay: {
13
13
  data: string;
@@ -16,7 +16,11 @@ declare function readOpenAIResponsesCompactionWindow(replay: {
16
16
  }, model?: Model): OpenAIResponsesCompactionOutput | undefined;
17
17
  //#endregion
18
18
  //#region packages/ai/src/transports/openai-responses-contracts.d.ts
19
+ declare const OPENAI_RESPONSES_REASONING_REPLAY_META_KEY = "__openclaw_replay";
19
20
  declare const OPENAI_RESPONSES_APIS: ReadonlySet<Api>;
21
+ type ReplayableResponseOutputMessage = Omit<ResponseOutputMessage, "id"> & {
22
+ id?: string;
23
+ };
20
24
  type ReplayableResponseCompactionItem = Omit<ResponseCompactionItem, "id"> & {
21
25
  id?: string;
22
26
  };
@@ -30,6 +34,10 @@ type OpenAIResponsesReasoningReplayMetadata = {
30
34
  sessionHash?: string;
31
35
  authProfileHash?: string;
32
36
  };
37
+ type ReplayableResponseReasoningItem = Omit<ResponseReasoningItem, "id"> & {
38
+ id?: string;
39
+ [OPENAI_RESPONSES_REASONING_REPLAY_META_KEY]?: OpenAIResponsesReasoningReplayMetadata;
40
+ };
33
41
  type OpenAIResponsesOptions = BaseOpenAIStreamOptions & {
34
42
  reasoning?: OpenAIRequestReasoningEffort;
35
43
  reasoningEffort?: OpenAIReasoningEffort;
@@ -56,6 +64,10 @@ type ResponsesServiceTierObservation = {
56
64
  requestedTier: string;
57
65
  responseTier: string;
58
66
  rejected?: false;
67
+ responseId?: string;
68
+ responseModel?: string;
69
+ inputTokens?: number;
70
+ cachedTokens?: number;
59
71
  } | {
60
72
  requestedTier: string;
61
73
  rejected: true;
@@ -66,7 +78,7 @@ declare const responsesServiceTierObserver: {
66
78
  get(options: object): ResponsesServiceTierObserver | undefined;
67
79
  copy(source: object | undefined, target: object): void;
68
80
  reject(options: object | undefined, requestedTier: string): void;
69
- observe(options: object | undefined, requestedTier: unknown, responseTier: unknown): void;
81
+ observe(options: object | undefined, requestedTier: unknown, responseTier: unknown, response?: Pick<Response, "id" | "model" | "usage">): void;
70
82
  };
71
83
  //#endregion
72
- export { ResponsesPromptObservation as a, responsesServiceTierObserver as c, OpenAIRequestReasoningEffort as d, ReplayableResponseCompactionItem as i, OpenAIResponsesCompactionOutput as l, OpenAIResponsesOptions as n, ResponsesServiceTierObservation as o, OpenAIResponsesReasoningReplayMetadata as r, responsesPromptObserver as s, OPENAI_RESPONSES_APIS as t, readOpenAIResponsesCompactionWindow as u };
84
+ export { ReplayableResponseReasoningItem as a, responsesPromptObserver as c, readOpenAIResponsesCompactionWindow as d, OpenAIRequestReasoningEffort as f, ReplayableResponseCompactionItem as i, responsesServiceTierObserver as l, OpenAIResponsesOptions as n, ResponsesPromptObservation as o, OpenAIResponsesReasoningReplayMetadata as r, ResponsesServiceTierObservation as s, OPENAI_RESPONSES_APIS as t, OpenAIResponsesCompactionOutput as u };
@@ -1,8 +1,8 @@
1
1
  import { o as isRecord } from "./record-coerce-CNDovvft.mjs";
2
- import { c as readStringValue, i as normalizeOptionalLowercaseString, n as normalizeLowercaseStringOrEmpty } from "./string-coerce-CtgOVOSv.mjs";
3
- import { O as supportsOpenAIReasoningEffort, i as OPENAI_RESPONSES_APIS } from "./openai-responses-contracts-DlKMMTxK.mjs";
2
+ import { a as normalizeOptionalLowercaseString, l as readStringValue, n as normalizeFastMode, r as normalizeLowercaseStringOrEmpty } from "./string-coerce-Cj8sqWHx.mjs";
3
+ import { I as resolveModelServiceTierContextTokens, i as OPENAI_RESPONSES_APIS, k as supportsOpenAIReasoningEffort } from "./openai-responses-contracts-Bx-16mnf.mjs";
4
4
  import { t as canonicalizeBase64 } from "./base64-C8CdcsjU.mjs";
5
- import { t as parsePositiveInteger } from "./positive-integer-CqWjqSi9.mjs";
5
+ import { t as parsePositiveInteger } from "./positive-integer-Bb4Evc7L.mjs";
6
6
  import { n as createSseByteGuard } from "./streaming-byte-guard-DBXr1XYn.mjs";
7
7
  //#region packages/model-catalog-core/src/provider-id.ts
8
8
  function normalizeProviderId(provider) {
@@ -83,24 +83,38 @@ function resolveOpenAIResponsesCompactThreshold(model) {
83
83
  if (effectiveBudget) return Math.max(1e3, Math.floor(effectiveBudget * .7));
84
84
  return 8e4;
85
85
  }
86
+ function normalizeOpenAIServiceTier(value) {
87
+ const normalized = normalizeOptionalLowercaseString(value);
88
+ return normalized === "auto" || normalized === "default" || normalized === "flex" || normalized === "priority" || normalized === "ultrafast" ? normalized : void 0;
89
+ }
90
+ function resolveOpenAIRequestedServiceTier(extraParams, serviceTiers) {
91
+ const explicitTier = normalizeOpenAIServiceTier(extraParams?.serviceTier ?? extraParams?.service_tier);
92
+ const rawFastMode = extraParams?.fastMode ?? extraParams?.fast_mode;
93
+ const fastMode = normalizeFastMode(typeof rawFastMode === "function" ? rawFastMode() : rawFastMode);
94
+ return fastMode === void 0 || fastMode === "auto" ? explicitTier : fastMode === "ultrafast" && (!serviceTiers || serviceTiers.includes("ultrafast")) ? "ultrafast" : fastMode ? "priority" : explicitTier ? "default" : void 0;
95
+ }
96
+ /** Resolve the same speed-override-before-default-tier precedence used at request egress. */
97
+ function resolveOpenAIResponsesRequestContextTokens(model, extraParams, serviceTiers) {
98
+ return resolveOpenAIResponsesPayloadCapabilities(model).allowsOpenAIServiceTier ? resolveModelServiceTierContextTokens(normalizeOptionalLowercaseString(model.provider), resolveOpenAIRequestedServiceTier(extraParams, serviceTiers)) : void 0;
99
+ }
86
100
  /** Resolve the server-compaction gate and effective threshold for a Responses route. */
87
101
  function resolveOpenAIResponsesServerCompactionPlan(model, extraParams) {
88
102
  const provider = normalizeOptionalLowercaseString(model.provider);
89
- const allowsResponsesStore = resolveOpenAIResponsesPayloadCapabilities(model).allowsResponsesStore;
103
+ const capabilities = resolveOpenAIResponsesPayloadCapabilities(model);
90
104
  const configured = extraParams?.responsesServerCompaction;
91
- const enabled = configured !== false && allowsResponsesStore && (configured === true || provider === "openai");
105
+ const enabled = configured !== false && capabilities.allowsResponsesStore && (configured === true || provider === "openai");
92
106
  return {
93
107
  enabled,
94
- threshold: enabled ? parsePositiveInteger(extraParams?.responsesCompactThreshold) ?? resolveOpenAIResponsesCompactThreshold(model) : void 0
108
+ threshold: enabled ? Math.min(parsePositiveInteger(extraParams?.responsesCompactThreshold) ?? resolveOpenAIResponsesCompactThreshold(model), (capabilities.allowsOpenAIServiceTier ? resolveModelServiceTierContextTokens(provider, resolveOpenAIRequestedServiceTier(extraParams)) : void 0) ?? Infinity) : void 0
95
109
  };
96
110
  }
97
- /** Resolve the Responses compact-endpoint gate for one route and compaction purpose. */
98
- function resolveOpenAIResponsesCompactEndpointPlan(model, extraParams, purpose = "manual") {
111
+ /** Resolve the Responses compact-endpoint gate for one route. */
112
+ function resolveOpenAIResponsesCompactEndpointPlan(model, extraParams, _purpose) {
99
113
  const configured = extraParams?.responsesCompactEndpoint;
100
114
  const provider = typeof model.provider === "string" ? normalizeProviderId(model.provider) : "";
101
115
  const api = normalizeOptionalLowercaseString(model.api);
102
116
  const endpointClass = resolveOpenAIResponsesEndpointClass(model.baseUrl);
103
- const enabledByDefault = (provider === "xai" || provider === "x-ai") && endpointClass === "xai-native" || purpose === "budget" && provider === "openai" && api === "openai-responses" && endpointClass === "openai-public";
117
+ const enabledByDefault = (provider === "xai" || provider === "x-ai") && endpointClass === "xai-native" || provider === "openai" && api === "openai-responses" && endpointClass === "openai-public";
104
118
  return { enabled: isOpenAIResponsesApi(api) && configured !== false && (configured === true || enabledByDefault) };
105
119
  }
106
120
  function stripDisabledOpenAIReasoningPayload(payloadObj) {
@@ -268,6 +282,7 @@ function isInputContent(value) {
268
282
  if (breakpoint !== void 0 && (!isRecord(breakpoint) || breakpoint.mode !== "explicit")) return false;
269
283
  switch (value.type) {
270
284
  case "input_text": return typeof value.text === "string";
285
+ case "output_text": return typeof value.text === "string" && Array.isArray(value.annotations);
271
286
  case "input_image": return typeof value.detail === "string" && [
272
287
  "auto",
273
288
  "low",
@@ -288,32 +303,50 @@ function isInputContent(value) {
288
303
  }
289
304
  /** Validate without projecting: accepted provider fields must survive replay unchanged. */
290
305
  function isOpenAIResponsesCompactionOutput(value, model) {
291
- if (!Array.isArray(value) || value.length === 0 || !isBoundedJson(value)) return false;
306
+ return getOpenAIResponsesCompactionOutputError(value, model) === void 0;
307
+ }
308
+ /** Return a safe rule failure, never provider content or encrypted checkpoint bytes. */
309
+ function getOpenAIResponsesCompactionOutputError(value, model) {
310
+ if (!Array.isArray(value) || value.length === 0) return "output must be a nonempty array";
311
+ if (!isBoundedJson(value)) return "output must contain finite JSON values nested at most 64 levels";
292
312
  const item = value.at(-1);
293
- if (!(isRecord(item) && item.type === "compaction" && typeof item.encrypted_content === "string" && item.encrypted_content.length > 0 && isOptionalCompactionString(item.id) && isOptionalCompactionString(item.created_by) && value.slice(0, -1).every((message) => isRecord(message) && message.type === "message" && typeof message.role === "string" && [
294
- "user",
295
- "developer",
296
- "system"
297
- ].includes(message.role) && isOptionalCompactionString(message.id) && (message.status === void 0 || typeof message.status === "string" && [
298
- "in_progress",
299
- "completed",
300
- "incomplete"
301
- ].includes(message.status)) && Array.isArray(message.content) && message.content.every(isInputContent)))) return false;
313
+ if (!isRecord(item) || item.type !== "compaction") return "output must end with a compaction item";
314
+ if (typeof item.encrypted_content !== "string" || item.encrypted_content.length === 0) return "trailing compaction item must have nonempty encrypted_content";
315
+ if (!isOptionalCompactionString(item.id) || !isOptionalCompactionString(item.created_by)) return "trailing compaction item metadata must be strings";
316
+ for (let index = 0; index < value.length - 1; index += 1) {
317
+ const message = value[index];
318
+ if (isRecord(message) && message.type === "compaction") return "output must contain exactly one compaction item";
319
+ if (!isRecord(message) || message.type !== "message" || typeof message.role !== "string" || ![
320
+ "user",
321
+ "developer",
322
+ "system",
323
+ "assistant"
324
+ ].includes(message.role)) return `output item ${index} must be a user, developer, system, or assistant message`;
325
+ if (!isOptionalCompactionString(message.id) || message.status !== void 0 && (typeof message.status !== "string" || ![
326
+ "in_progress",
327
+ "completed",
328
+ "incomplete"
329
+ ].includes(message.status))) return `output message ${index} has invalid metadata`;
330
+ if (!Array.isArray(message.content) || !message.content.every(isInputContent)) return `output message ${index} has unsupported content`;
331
+ }
302
332
  const payload = sanitizeResponsesImagePayload({ input: value });
303
333
  if (model) applyOpenAIResponsesPayloadPolicy(payload, resolveOpenAIResponsesPayloadPolicy(model));
304
- return JSON.stringify(payload.input) === JSON.stringify(value);
334
+ if (JSON.stringify(payload.input) !== JSON.stringify(value)) return "output would be rewritten by the Responses payload policy";
305
335
  }
306
336
  /** Read the saved canonical window only when it still matches its opaque checkpoint. */
307
337
  function readOpenAIResponsesCompactionWindow(replay, model) {
308
338
  const window = replay.compactedWindow;
309
339
  if (!isRecord(window) || window.state !== "ready" || typeof window.output !== "string") return;
340
+ if (window.outputTokens !== void 0 && (!Number.isSafeInteger(window.outputTokens) || typeof window.outputTokens !== "number" || window.outputTokens < 0)) return;
310
341
  if (Buffer.byteLength(window.output, "utf8") + Buffer.byteLength(replay.data, "utf8") > COMPACTION_WINDOW_MAX_BYTES) return;
311
342
  try {
312
343
  if (Buffer.byteLength(JSON.stringify(replay), "utf8") > COMPACTION_WINDOW_MAX_BYTES) return;
313
344
  const output = JSON.parse(window.output);
314
345
  if (!isOpenAIResponsesCompactionOutput(output, model)) return;
315
346
  const item = output.at(-1);
316
- return item?.type === "compaction" && item.encrypted_content === replay.data && item.id === replay.id ? output : void 0;
347
+ if (item?.type !== "compaction" || item.encrypted_content !== replay.data || item.id !== replay.id) return;
348
+ for (const message of output) if (message.type === "message" && message.role === "assistant") delete message.id;
349
+ return output;
317
350
  } catch {
318
351
  return;
319
352
  }
@@ -364,4 +397,4 @@ function supportsNativeOpenAIResponsesEndpoint(params) {
364
397
  return params.provider.trim().toLowerCase() === "openai" && params.api === "openai-responses" && isOfficialOpenAIResponsesBaseUrl(params.baseUrl);
365
398
  }
366
399
  //#endregion
367
- export { readOpenAIResponsesCompactionWindow as a, resolveOpenAIResponsesCompactEndpointPlan as c, isOpenAIResponsesCompactionOutput as i, resolveOpenAIResponsesPayloadPolicy as l, supportsNativeOpenAIResponsesEndpoint as n, sanitizeResponsesImagePayload as o, createBoundedOpenAIResponsesCompactionFetch as r, applyOpenAIResponsesPayloadPolicy as s, isOfficialOpenAIResponsesBaseUrl as t, resolveOpenAIResponsesServerCompactionPlan as u };
400
+ export { isOpenAIResponsesCompactionOutput as a, applyOpenAIResponsesPayloadPolicy as c, resolveOpenAIResponsesPayloadPolicy as d, resolveOpenAIResponsesRequestContextTokens as f, getOpenAIResponsesCompactionOutputError as i, normalizeOpenAIServiceTier as l, supportsNativeOpenAIResponsesEndpoint as n, readOpenAIResponsesCompactionWindow as o, resolveOpenAIResponsesServerCompactionPlan as p, createBoundedOpenAIResponsesCompactionFetch as r, sanitizeResponsesImagePayload as s, isOfficialOpenAIResponsesBaseUrl as t, resolveOpenAIResponsesCompactEndpointPlan as u };
@@ -27,13 +27,19 @@ type OpenAIResponsesPayloadPolicy = {
27
27
  useServerCompaction: boolean;
28
28
  usesInstructionsField: boolean;
29
29
  };
30
+ type OpenAIServiceTier = "auto" | "default" | "flex" | "priority" | "ultrafast";
31
+ declare function normalizeOpenAIServiceTier(value: unknown): OpenAIServiceTier | undefined;
32
+ /** Resolve the same speed-override-before-default-tier precedence used at request egress. */
33
+ declare function resolveOpenAIResponsesRequestContextTokens(model: OpenAIResponsesPayloadModel, extraParams?: Record<string, unknown>, serviceTiers?: readonly string[]): number | undefined;
30
34
  /** Resolve the server-compaction gate and effective threshold for a Responses route. */
31
35
  declare function resolveOpenAIResponsesServerCompactionPlan(model: OpenAIResponsesPayloadModel, extraParams?: Record<string, unknown>): {
32
36
  enabled: boolean;
33
37
  threshold: number | undefined;
34
38
  };
35
- /** Resolve the Responses compact-endpoint gate for one route and compaction purpose. */
36
- declare function resolveOpenAIResponsesCompactEndpointPlan(model: OpenAIResponsesPayloadModel, extraParams?: Record<string, unknown>, purpose?: "manual" | "budget"): {
39
+ /** Resolve the Responses compact-endpoint gate for one route. */
40
+ declare function resolveOpenAIResponsesCompactEndpointPlan(model: OpenAIResponsesPayloadModel, extraParams?: Record<string, unknown>,
41
+ /** @deprecated The policy no longer depends on purpose. */
42
+ _purpose?: "manual" | "budget"): {
37
43
  enabled: boolean;
38
44
  };
39
45
  /** Resolve payload mutation policy for one OpenAI Responses-style model endpoint. */
@@ -41,4 +47,4 @@ declare function resolveOpenAIResponsesPayloadPolicy(model: OpenAIResponsesPaylo
41
47
  /** Mutate a Responses request payload according to the resolved endpoint policy. */
42
48
  declare function applyOpenAIResponsesPayloadPolicy(payloadObj: Record<string, unknown>, policy: OpenAIResponsesPayloadPolicy): void;
43
49
  //#endregion
44
- export { resolveOpenAIResponsesServerCompactionPlan as i, resolveOpenAIResponsesCompactEndpointPlan as n, resolveOpenAIResponsesPayloadPolicy as r, applyOpenAIResponsesPayloadPolicy as t };
50
+ export { resolveOpenAIResponsesPayloadPolicy as a, resolveOpenAIResponsesCompactEndpointPlan as i, applyOpenAIResponsesPayloadPolicy as n, resolveOpenAIResponsesRequestContextTokens as o, normalizeOpenAIServiceTier as r, resolveOpenAIResponsesServerCompactionPlan as s, OpenAIServiceTier as t };