@openclaw/ai 2026.10.2 → 2026.10.5-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 (108) hide show
  1. package/README.md +6 -0
  2. package/dist/{anthropic-C4qygbtf.mjs → anthropic-BalhAzs-.mjs} +33 -63
  3. package/dist/{anthropic-payload-policy-DD7vzpxE.d.mts → anthropic-payload-policy-DGblkHL5.d.mts} +19 -19
  4. package/dist/{anthropic-stream-reducer-CWyWE21W.mjs → anthropic-stream-reducer-DkKeXXx4.mjs} +215 -297
  5. package/dist/{api-registry-B3rC2qu3.d.mts → api-registry-BhXXYdRA.d.mts} +2 -2
  6. package/dist/assistant-message-events-CHMJgbhs.mjs +18 -0
  7. package/dist/{assistant-output-D5762GPH.mjs → assistant-output-BuhRpLeD.mjs} +2 -2
  8. package/dist/{assistant-text-phase-DVZOxbuR.mjs → assistant-text-phase-Bn1hbvK9.mjs} +7 -6
  9. package/dist/{azure-openai-responses-DO-Fv8ha.mjs → azure-openai-responses-DfT9Ndd8.mjs} +8 -9
  10. package/dist/{credential-redaction-BKv49aiv.d.mts → credential-redaction-BHxruEH6.d.mts} +3 -1
  11. package/dist/{diagnostics-Caj-4RBA.mjs → diagnostics-tQasYct1.mjs} +10 -3
  12. package/dist/diagnostics.d.mts +7 -7
  13. package/dist/diagnostics.mjs +3 -3
  14. package/dist/{env-api-keys-CyX4VKGO.mjs → env-api-keys-CrxwdylR.mjs} +24 -35
  15. package/dist/event-stream-6UNs-AhN.d.mts +1 -0
  16. package/dist/{event-stream-DrRM_90c.d.mts → event-stream-BcqWLo_u.d.mts} +1 -1
  17. package/dist/{event-stream-C5AbCAaZ.mjs → event-stream-X2gmsUWv.mjs} +5 -8
  18. package/dist/event-stream.d.mts +2 -2
  19. package/dist/event-stream.mjs +1 -1
  20. package/dist/{google-interactions-DNXzPPwQ.mjs → google-interactions-9SSqsJg9.mjs} +52 -84
  21. package/dist/{google-messages-l7wgIF5I.mjs → google-messages-DsB7fmoQ.mjs} +26 -35
  22. package/dist/google-provider-stream-CcEI2-MC.mjs +58 -0
  23. package/dist/google-sYI2wnY6.mjs +20 -0
  24. package/dist/{google-shared-V8jogVPq.mjs → google-shared-zGR0QUyS.mjs} +6 -15
  25. package/dist/google-vertex-Dw_abY1w.mjs +40 -0
  26. package/dist/{host-u3o8XiAp.mjs → host-Bf3NjYNj.mjs} +3 -2
  27. package/dist/{host-DiPhRjrc.d.mts → host-CTDz7LXD.d.mts} +6 -3
  28. package/dist/{host-policy-BwhNNGQR.mjs → host-policy-BzZluO6_.mjs} +1 -1
  29. package/dist/{index-D27wAoOr.d.mts → index-BYDvopUB.d.mts} +8 -7
  30. package/dist/index.d.mts +7 -7
  31. package/dist/index.mjs +7 -6
  32. package/dist/internal/anthropic.d.mts +5 -5
  33. package/dist/internal/anthropic.mjs +4 -4
  34. package/dist/internal/openai-completions-compat.d.mts +1 -1
  35. package/dist/internal/openai-completions-compat.mjs +1 -1
  36. package/dist/internal/openai-responses-payload-policy.d.mts +2 -2
  37. package/dist/internal/openai-responses-payload-policy.mjs +2 -3
  38. package/dist/internal/openai.d.mts +9 -9
  39. package/dist/internal/openai.mjs +9 -11
  40. package/dist/internal/runtime.d.mts +31 -13
  41. package/dist/internal/runtime.mjs +10 -13
  42. package/dist/internal/shared.d.mts +5 -5
  43. package/dist/internal/shared.mjs +6 -7
  44. package/dist/internal/tool-schema.mjs +2 -2
  45. package/dist/{llm-request-activity-D8f_oxHj.mjs → llm-request-activity-CfMuh5cC.mjs} +2 -2
  46. package/dist/{mistral-cnoBDSIg.mjs → mistral-dCDCR5ur.mjs} +71 -146
  47. package/dist/{model-transport-url-C5f59L3Y.d.mts → model-transport-url-BrsjjdjR.d.mts} +5 -1
  48. package/dist/{number-coercion-V8-BhME4.mjs → number-coercion-C3hztWoY.mjs} +5 -4
  49. package/dist/{openai-chatgpt-responses-CHdn8YJ_.mjs → openai-chatgpt-responses-V4iP0dv5.mjs} +118 -194
  50. package/dist/{openai-completions-BZfHIaZ7.mjs → openai-completions-BY-kr5IS.mjs} +7 -6
  51. package/dist/{openai-completions-compat-GMN8A0fm.mjs → openai-completions-compat-CYX18uDk.mjs} +10 -6
  52. package/dist/{openai-completions-compat-BgPg1BRs.d.mts → openai-completions-compat-i-nLZxFy.d.mts} +10 -11
  53. package/dist/{openai-completions-transport-CuoQfnKV.mjs → openai-completions-transport-v38m71Oq.mjs} +1449 -294
  54. package/dist/{openai-prompt-cache-CFviG_D4.d.mts → openai-prompt-cache-DIPMrMFy.d.mts} +2 -2
  55. package/dist/{openai-prompt-cache-BK6E2g4Q.mjs → openai-prompt-cache-r93BJhjm.mjs} +1 -1
  56. package/dist/{openai-responses-BhAZFsL9.mjs → openai-responses-D5oiAUOG.mjs} +9 -10
  57. package/dist/{openai-responses-compaction-replay-BBNo098-.d.mts → openai-responses-compaction-replay-B2FE4Nw8.d.mts} +4 -4
  58. package/dist/{openai-responses-contracts-D5yVZBp-.d.mts → openai-responses-contracts-DKqMJ1Ct.d.mts} +9 -4
  59. package/dist/{openai-responses-contracts-BKu8O7l4.mjs → openai-responses-contracts-DlKMMTxK.mjs} +26 -6
  60. package/dist/{openai-responses-compaction-window-tA4QkU0o.mjs → openai-responses-endpoint-CinGh4VZ.mjs} +17 -7
  61. package/dist/{openai-responses-payload-policy-s1apQlZZ.d.mts → openai-responses-payload-policy-C7GsA1y0.d.mts} +2 -4
  62. package/dist/{openai-responses-prompt-observer-internal-CefUzh8M.mjs → openai-responses-request-lifecycle-NSIJo9jY.mjs} +39 -4
  63. package/dist/{openai-responses-shared-CKNmC3vC.mjs → openai-responses-shared-D-aDYAkJ.mjs} +1037 -328
  64. package/dist/{openai-responses-terminal-usage-CempLedn.d.mts → openai-responses-terminal-usage-BygjiAdi.d.mts} +2 -2
  65. package/dist/{openai-tool-schema-BIrI0mrA.mjs → openai-tool-schema-DDPXsvJP.mjs} +220 -400
  66. package/dist/{positive-integer-CwLi8LUL.mjs → positive-integer-CqWjqSi9.mjs} +1 -1
  67. package/dist/{provider-error-DQBE1bUQ.mjs → provider-error-CF9GWCs2.mjs} +5 -3
  68. package/dist/{provider-options-CkieKvNJ.d.mts → provider-options-CVrXZBtA.d.mts} +6 -10
  69. package/dist/{provider-transport-turn-state-BX6TfCyW.mjs → provider-transport-turn-state-BOpxgm-J.mjs} +2 -2
  70. package/dist/{provider-types-v3bmqsfg.d.mts → provider-types-CHtRx0dI.d.mts} +3 -3
  71. package/dist/provider-types.d.mts +6 -6
  72. package/dist/providers.d.mts +2 -2
  73. package/dist/providers.mjs +12 -12
  74. package/dist/{reasoning-tag-text-partitioner-Ju9VpUGl.mjs → reasoning-tag-text-partitioner-CpOy9-IQ.mjs} +374 -235
  75. package/dist/{required-api-key-D4kn3252.mjs → required-api-key-CFJvcFy_.mjs} +1 -1
  76. package/dist/{simple-options-7QuSKriJ.mjs → simple-options-BAu4B54D.mjs} +9 -11
  77. package/dist/{src-VWy9E7DZ.mjs → src-C44MKrW5.mjs} +20 -9
  78. package/dist/{stream-DFaRxi2D.mjs → stream-Dd8DwRFL.mjs} +12 -21
  79. package/dist/{stream-first-event-timeout-D9ZmL_s9.mjs → stream-first-event-timeout-Dc42hKv6.mjs} +8 -21
  80. package/dist/{streaming-byte-guard-CC-HMn_u.mjs → streaming-byte-guard-DBXr1XYn.mjs} +16 -1
  81. package/dist/{string-normalization-PN10hf6d.mjs → string-normalization-I3ux50s9.mjs} +1 -1
  82. package/dist/{text-signature-D_vRrx-z.mjs → text-signature-Drb4Erb8.mjs} +32 -5
  83. package/dist/{tool-schema-json-projection-Ct8SeBeJ.mjs → tool-schema-json-projection-B8sG1I9v.mjs} +29 -23
  84. package/dist/{transport-stream-shared-DW-7-qLR.d.mts → transport-stream-shared-BmpzDtdQ.d.mts} +4 -4
  85. package/dist/{transport-stream-shared-CCR7hSW0.mjs → transport-stream-shared-CWGOuLcA.mjs} +8 -16
  86. package/dist/transports.d.mts +34 -23
  87. package/dist/transports.mjs +76 -1235
  88. package/dist/{types-DvzmWW8J.d.mts → types-Bd2T86VJ.d.mts} +5 -23
  89. package/dist/types-Kdfw_04V.d.mts +1 -0
  90. package/dist/types.d.mts +6 -6
  91. package/dist/types.mjs +5 -4
  92. package/dist/{validation-B3lQt_VE.d.mts → validation-DdGB1yy3.d.mts} +1 -1
  93. package/dist/{validation-DbqlIfDn.mjs → validation-ZX_sPVV0.mjs} +3 -9
  94. package/dist/validation.d.mts +1 -1
  95. package/dist/validation.mjs +1 -1
  96. package/package.json +4 -9
  97. package/dist/env-api-keys-BR0MUYYD.d.mts +0 -17
  98. package/dist/event-stream-DqDQWqiy.d.mts +0 -1
  99. package/dist/google-B2g_Xn4d.mjs +0 -54
  100. package/dist/google-vertex-_khoip47.mjs +0 -88
  101. package/dist/internal/env-api-keys.d.mts +0 -2
  102. package/dist/internal/env-api-keys.mjs +0 -2
  103. package/dist/openai-responses-endpoint-TV0y50fb.mjs +0 -11
  104. package/dist/openai-responses-request-lifecycle-Fsag-IGZ.mjs +0 -36
  105. package/dist/openai-transport-params-D7JMUPjf.mjs +0 -735
  106. package/dist/openai-web-search-tools-Cfu0uLyN.mjs +0 -14
  107. package/dist/provider-replay-context-CO_Eplnc.mjs +0 -25
  108. package/dist/types-UlNana-2.d.mts +0 -1
@@ -119,14 +119,11 @@ interface ThinkingBudgets {
119
119
  type CacheRetention = "none" | "short" | "long";
120
120
  /** Streaming transport preference for providers that support multiple transports. */
121
121
  type Transport = "sse" | "websocket" | "websocket-cached" | "auto";
122
- /** Helper for hooks that may be synchronous or asynchronous. */
123
122
  type MaybePromise<T> = T | Promise<T>;
124
- /** Minimal HTTP response metadata surfaced through provider hooks. */
125
123
  interface ProviderResponse {
126
124
  status: number;
127
125
  headers: Record<string, string>;
128
126
  }
129
- /** Request options shared by text streaming providers. */
130
127
  interface StreamOptions {
131
128
  temperature?: number;
132
129
  maxTokens?: number;
@@ -225,7 +222,6 @@ interface StreamOptions {
225
222
  metadata?: Record<string, unknown>;
226
223
  }
227
224
  type ProviderStreamOptions = StreamOptions & Record<string, unknown>;
228
- /** Request options shared by image-generation providers. */
229
225
  interface ImagesOptions {
230
226
  signal?: AbortSignal;
231
227
  apiKey?: string;
@@ -234,9 +230,6 @@ interface ImagesOptions {
234
230
  * Return undefined to keep the payload unchanged.
235
231
  */
236
232
  onPayload?: (payload: unknown, model: ImagesModel) => MaybePromise<unknown>;
237
- /**
238
- * Optional callback invoked after an HTTP response is received.
239
- */
240
233
  onResponse?: (response: ProviderResponse, model: ImagesModel) => void | Promise<void>;
241
234
  /**
242
235
  * Optional custom HTTP headers to include in API requests.
@@ -281,13 +274,11 @@ interface TextSignatureV1 {
281
274
  id: string;
282
275
  phase?: "commentary" | "final_answer";
283
276
  }
284
- /** Plain assistant/user text content block. */
285
277
  interface TextContent {
286
278
  type: "text";
287
279
  text: string;
288
280
  textSignature?: string;
289
281
  }
290
- /** Provider reasoning/thinking content block, including opaque replay signatures. */
291
282
  interface ThinkingContent {
292
283
  type: "thinking";
293
284
  thinking: string;
@@ -328,7 +319,6 @@ interface ToolCall {
328
319
  thoughtSignature?: string;
329
320
  executionMode?: "sequential" | "parallel";
330
321
  }
331
- /** Normalized token and cost accounting for a provider response. */
332
322
  interface Usage {
333
323
  input: number;
334
324
  output: number;
@@ -374,7 +364,6 @@ type ModelCostConfig = ModelCostRates & {
374
364
  type RawModelCostConfig = ModelCostRates & {
375
365
  tieredPricing?: RawPricingTier[];
376
366
  };
377
- /** Normalized assistant stop reasons across text providers. */
378
367
  type StopReason = "stop" | "length" | "toolUse" | "error" | "aborted";
379
368
  /** Stable error codes for provider outcomes that cannot be replayed safely. */
380
369
  declare const PROVIDER_POST_DISPATCH_AMBIGUITY_ERROR_CODE = "PROVIDER_POST_DISPATCH_AMBIGUITY";
@@ -382,7 +371,6 @@ declare const PROVIDER_FAILURE_WITH_OUTPUT_ERROR_CODE = "PROVIDER_FAILURE_WITH_O
382
371
  /** Pre-dispatch argument rejection; callers still enforce output and effect guards. */
383
372
  declare const MALFORMED_TOOL_CALL_ARGUMENTS_ERROR_CODE = "malformed_tool_call_arguments";
384
373
  declare const DEFAULT_MISSING_TOOL_RESULT_TEXT = "Tool call interrupted before a result was recorded; its outcome is unknown. Retry only if the operation is read-only or idempotent. If it may have had side effects, verify the current state first instead of repeating it.";
385
- /** User turn in a text-model conversation. */
386
374
  interface UserMessage {
387
375
  role: "user";
388
376
  content: string | (TextContent | ImageContent)[];
@@ -447,7 +435,6 @@ declare function isRuntimeContextMessage(message: {
447
435
  declare function readRuntimeContextMetadata(message: RuntimeContextMessage): NonNullable<UserMessage["runtimeContext"]>;
448
436
  /** Updates canonical retention and its shipped compatibility projection together. */
449
437
  declare function setRuntimeContextRetention(message: RuntimeContextMessage, retained: boolean | undefined): void;
450
- /** Assistant turn, including provider identity and final stop state. */
451
438
  type AssistantDeliveryTtsFacts = {
452
439
  tagged: true;
453
440
  text?: string;
@@ -488,7 +475,6 @@ interface AssistantMessage {
488
475
  errorBody?: string;
489
476
  timestamp: number;
490
477
  }
491
- /** Tool result turn that answers a prior assistant tool call. */
492
478
  interface ToolResultMessage<TDetails = unknown> {
493
479
  role: "toolResult";
494
480
  toolCallId: string;
@@ -498,19 +484,13 @@ interface ToolResultMessage<TDetails = unknown> {
498
484
  isError: boolean;
499
485
  timestamp: number;
500
486
  }
501
- /** Any text-model conversation message supported by LLM core. */
502
487
  type Message = UserMessage | AssistantMessage | ToolResultMessage;
503
- /** Image request input content accepted by image providers. */
504
488
  type ImagesInputContent = TextContent | ImageContent;
505
- /** Image response output content returned by image providers. */
506
489
  type ImagesOutputContent = TextContent | ImageContent;
507
- /** Image-generation request context. */
508
490
  interface ImagesContext {
509
491
  input: ImagesInputContent[];
510
492
  }
511
- /** Normalized image-generation stop reasons. */
512
493
  type ImagesStopReason = "stop" | "error" | "aborted";
513
- /** Final image-generation response shape. */
514
494
  interface AssistantImages {
515
495
  api: ImagesApi;
516
496
  provider: ImagesProvider;
@@ -522,13 +502,16 @@ interface AssistantImages {
522
502
  errorMessage?: string;
523
503
  timestamp: number;
524
504
  }
525
- /** Provider tool declaration with a TypeBox/JSON-schema parameter object. */
526
505
  interface Tool<TParameters extends TSchema = TSchema> {
527
506
  name: string;
528
507
  description: string;
529
508
  parameters: TParameters;
509
+ /**
510
+ * `false` keeps calls synchronous where the provider can keep generating after a call
511
+ * (OpenAI async tools): the response pauses until earlier results are delivered.
512
+ */
513
+ async?: false;
530
514
  }
531
- /** Text-model request context shared by provider adapters. */
532
515
  interface Context {
533
516
  systemPrompt?: string;
534
517
  messages: Message[];
@@ -603,7 +586,6 @@ type AssistantMessageEvent = {
603
586
  error: AssistantMessage;
604
587
  };
605
588
  interface AssistantMessageEventStreamContract extends AsyncIterable<AssistantMessageEvent> {
606
- /** Queue one stream event for consumers. */
607
589
  push(event: AssistantMessageEvent): void;
608
590
  /** Complete the stream and optionally resolve the final message. */
609
591
  end(result?: AssistantMessage): void;
@@ -0,0 +1 @@
1
+ import "./index-BYDvopUB.mjs";
package/dist/types.d.mts CHANGED
@@ -1,6 +1,6 @@
1
- import { A as supportsClaudeNativeMaxEffort, C as resolveClaudeOpus5ModelIdentity, D as supportsClaudeAdaptiveThinking, E as supportsClaude1MContext, M as supportsClaudeServerCompaction, O as supportsClaudeFastMode, S as resolveClaudeOpus55ModelIdentity, T as resolveClaudeSonnet5ModelIdentity, _ as resolveClaudeFable5ModelIdentity, a as ProviderRefusalReview, b as resolveClaudeMythos5ModelIdentity, c as CLAUDE_HAIKU_55_THINKING_PROFILE, d as CLAUDE_SONNET_55_THINKING_PROFILE, f as CLAUDE_SONNET_5_THINKING_PROFILE, g as requiresClaudeMandatoryAdaptiveThinking, h as requiresClaudeDefaultSampling, i as normalizeResolvedPricing, j as supportsClaudeNativeXhighEffort, k as supportsClaudeInHistorySystemMessages, l as CLAUDE_OPUS_55_THINKING_PROFILE, m as requiresClaudeBetweenToolsThinking, n as calculateUsageCost, o as readProviderRefusalReview, p as bindsClaudeThinkingPrefix, r as normalizeModelCostConfig, s as CLAUDE_FABLE_5_THINKING_PROFILE, u as CLAUDE_OPUS_5_THINKING_PROFILE, v as resolveClaudeHaiku55ModelIdentity, w as resolveClaudeSonnet55ModelIdentity, x as resolveClaudeNativeThinkingLevelMap, y as resolveClaudeModelIdentity } from "./index-D27wAoOr.mjs";
2
- import { $ as StopReason, A as ModelCostConfig, At as extractDiagnosticError, B as ProviderImagesOptions, C as KnownApi, Ct as readRuntimeContextMetadata, D as MaybePromise, Dt as DiagnosticErrorInfo, E as MALFORMED_TOOL_CALL_ARGUMENTS_ERROR_CODE, Et as AssistantMessageDiagnostic, F as OpenRouterRouting, G as RUNTIME_CONTEXT_CUSTOM_TYPE, H as ProviderResponse, I as PROVIDER_FAILURE_WITH_OUTPUT_ERROR_CODE, J as RUNTIME_CONTEXT_HEADER, K as RUNTIME_CONTEXT_END_MARKER, L as PROVIDER_POST_DISPATCH_AMBIGUITY_ERROR_CODE, M as ModelThinkingLevel, Mt as isProviderRefusalAssistantError, N as OpenAICompletionsCompat, O as Message, Ot as appendAssistantMessageDiagnostic, P as OpenAIResponsesCompat, Q as SimpleStreamOptions, R as PricingTier, S as ImagesStopReason, St as labelRuntimeContextText, T as KnownImagesProvider, Tt as setRuntimeContextRetention, U as ProviderStreamOptions, V as ProviderReplayState, W as RUNTIME_CONTEXT_BEGIN_MARKER, X as RawPricingTier, Y as RawModelCostConfig, Z as RuntimeContextMessage, _ as ImagesInputContent, _t as escapeRuntimeContextFooter, a as AssistantMessage, at as ThinkingBudgets, b as ImagesOutputContent, bt as isRuntimeContextMessage, c as AssistantMessageEventStreamLike, ct as ThinkingLevelMap, d as Context, dt as ToolResultMessage, et as StreamFn, f as DEFAULT_MISSING_TOOL_RESULT_TEXT, ft as Transport, g as ImagesFunction, gt as VercelGatewayRouting, h as ImagesContext, ht as ValidateToolArgumentsFn, i as AssistantImages, it as TextSignatureV1, j as ModelCostRates, jt as formatThrownValue, k as Model, kt as createAssistantMessageDiagnostic, l as CacheRetention, lt as Tool, m as ImagesApi, mt as UserMessage, n as Api, nt as StreamOptions, o as AssistantMessageEvent, ot as ThinkingContent, p as ImageContent, pt as Usage, q as RUNTIME_CONTEXT_FOOTER, r as AssistantDeliveryTtsFacts, rt as TextContent, s as AssistantMessageEventStreamContract, st as ThinkingLevel, t as AnthropicMessagesCompat, tt as StreamFunction, u as CompleteSimpleFn, ut as ToolCall, v as ImagesModel, vt as hasLegacyRuntimeContextEnvelope, w as KnownImagesApi, wt as runtimeContextContentToText, x as ImagesProvider, xt as labelRuntimeContextContent, y as ImagesOptions, yt as hasRuntimeContextMarker, z as Provider } from "./types-DvzmWW8J.mjs";
3
- import { n as EventStream, r as createAssistantMessageEventStream, t as AssistantMessageEventStream } from "./event-stream-DrRM_90c.mjs";
4
- import { n as validateToolCall, t as validateToolArguments } from "./validation-B3lQt_VE.mjs";
5
- import "./types-UlNana-2.mjs";
6
- export { AnthropicMessagesCompat, Api, AssistantDeliveryTtsFacts, AssistantImages, AssistantMessage, AssistantMessageDiagnostic, AssistantMessageEvent, AssistantMessageEventStream, AssistantMessageEventStreamContract, AssistantMessageEventStreamLike, CLAUDE_FABLE_5_THINKING_PROFILE, CLAUDE_HAIKU_55_THINKING_PROFILE, CLAUDE_OPUS_55_THINKING_PROFILE, CLAUDE_OPUS_5_THINKING_PROFILE, CLAUDE_SONNET_55_THINKING_PROFILE, CLAUDE_SONNET_5_THINKING_PROFILE, CacheRetention, CompleteSimpleFn, Context, DEFAULT_MISSING_TOOL_RESULT_TEXT, DiagnosticErrorInfo, EventStream, ImageContent, ImagesApi, ImagesContext, ImagesFunction, ImagesInputContent, ImagesModel, ImagesOptions, ImagesOutputContent, ImagesProvider, ImagesStopReason, KnownApi, KnownImagesApi, KnownImagesProvider, MALFORMED_TOOL_CALL_ARGUMENTS_ERROR_CODE, MaybePromise, Message, Model, ModelCostConfig, ModelCostRates, ModelThinkingLevel, OpenAICompletionsCompat, OpenAIResponsesCompat, OpenRouterRouting, PROVIDER_FAILURE_WITH_OUTPUT_ERROR_CODE, PROVIDER_POST_DISPATCH_AMBIGUITY_ERROR_CODE, PricingTier, Provider, ProviderImagesOptions, type ProviderRefusalReview, ProviderReplayState, ProviderResponse, ProviderStreamOptions, RUNTIME_CONTEXT_BEGIN_MARKER, RUNTIME_CONTEXT_CUSTOM_TYPE, RUNTIME_CONTEXT_END_MARKER, RUNTIME_CONTEXT_FOOTER, RUNTIME_CONTEXT_HEADER, RawModelCostConfig, RawPricingTier, RuntimeContextMessage, SimpleStreamOptions, StopReason, StreamFn, StreamFunction, StreamOptions, TextContent, TextSignatureV1, ThinkingBudgets, ThinkingContent, ThinkingLevel, ThinkingLevelMap, Tool, ToolCall, ToolResultMessage, Transport, Usage, UserMessage, ValidateToolArgumentsFn, VercelGatewayRouting, appendAssistantMessageDiagnostic, bindsClaudeThinkingPrefix, calculateUsageCost, createAssistantMessageDiagnostic, createAssistantMessageEventStream, escapeRuntimeContextFooter, extractDiagnosticError, formatThrownValue, hasLegacyRuntimeContextEnvelope, hasRuntimeContextMarker, isProviderRefusalAssistantError, isRuntimeContextMessage, labelRuntimeContextContent, labelRuntimeContextText, normalizeModelCostConfig, normalizeResolvedPricing, readProviderRefusalReview, readRuntimeContextMetadata, requiresClaudeBetweenToolsThinking, requiresClaudeDefaultSampling, requiresClaudeMandatoryAdaptiveThinking, resolveClaudeFable5ModelIdentity, resolveClaudeHaiku55ModelIdentity, resolveClaudeModelIdentity, resolveClaudeMythos5ModelIdentity, resolveClaudeNativeThinkingLevelMap, resolveClaudeOpus55ModelIdentity, resolveClaudeOpus5ModelIdentity, resolveClaudeSonnet55ModelIdentity, resolveClaudeSonnet5ModelIdentity, runtimeContextContentToText, setRuntimeContextRetention, supportsClaude1MContext, supportsClaudeAdaptiveThinking, supportsClaudeFastMode, supportsClaudeInHistorySystemMessages, supportsClaudeNativeMaxEffort, supportsClaudeNativeXhighEffort, supportsClaudeServerCompaction, validateToolArguments, validateToolCall };
1
+ import { A as supportsClaudeInHistorySystemMessages, C as resolveClaudeOpus55ModelIdentity, D as supportsClaude1MContext, E as resolveClaudeSonnet5ModelIdentity, M as supportsClaudeNativeXhighEffort, O as supportsClaudeAdaptiveThinking, S as resolveClaudeNativeThinkingLevelMap, T as resolveClaudeSonnet55ModelIdentity, _ as requiresClaudeMandatoryAdaptiveThinking, a as normalizeResolvedPricing, b as resolveClaudeModelIdentity, c as CLAUDE_FABLE_5_THINKING_PROFILE, d as CLAUDE_OPUS_5_THINKING_PROFILE, f as CLAUDE_SONNET_55_THINKING_PROFILE, g as requiresClaudeDefaultSampling, h as requiresClaudeBetweenToolsThinking, i as normalizeModelCostConfig, j as supportsClaudeNativeMaxEffort, k as supportsClaudeFastMode, l as CLAUDE_HAIKU_55_THINKING_PROFILE, m as bindsClaudeThinkingPrefix, n as appendTextDeltaToAssistantMessage, o as ProviderRefusalReview, p as CLAUDE_SONNET_5_THINKING_PROFILE, r as calculateUsageCost, s as readProviderRefusalReview, u as CLAUDE_OPUS_55_THINKING_PROFILE, v as resolveClaudeFable5ModelIdentity, w as resolveClaudeOpus5ModelIdentity, x as resolveClaudeMythos5ModelIdentity, y as resolveClaudeHaiku55ModelIdentity } from "./index-BYDvopUB.mjs";
2
+ import { $ as StopReason, A as ModelCostConfig, At as extractDiagnosticError, B as ProviderImagesOptions, C as KnownApi, Ct as readRuntimeContextMetadata, D as MaybePromise, Dt as DiagnosticErrorInfo, E as MALFORMED_TOOL_CALL_ARGUMENTS_ERROR_CODE, Et as AssistantMessageDiagnostic, F as OpenRouterRouting, G as RUNTIME_CONTEXT_CUSTOM_TYPE, H as ProviderResponse, I as PROVIDER_FAILURE_WITH_OUTPUT_ERROR_CODE, J as RUNTIME_CONTEXT_HEADER, K as RUNTIME_CONTEXT_END_MARKER, L as PROVIDER_POST_DISPATCH_AMBIGUITY_ERROR_CODE, M as ModelThinkingLevel, Mt as isProviderRefusalAssistantError, N as OpenAICompletionsCompat, O as Message, Ot as appendAssistantMessageDiagnostic, P as OpenAIResponsesCompat, Q as SimpleStreamOptions, R as PricingTier, S as ImagesStopReason, St as labelRuntimeContextText, T as KnownImagesProvider, Tt as setRuntimeContextRetention, U as ProviderStreamOptions, V as ProviderReplayState, W as RUNTIME_CONTEXT_BEGIN_MARKER, X as RawPricingTier, Y as RawModelCostConfig, Z as RuntimeContextMessage, _ as ImagesInputContent, _t as escapeRuntimeContextFooter, a as AssistantMessage, at as ThinkingBudgets, b as ImagesOutputContent, bt as isRuntimeContextMessage, c as AssistantMessageEventStreamLike, ct as ThinkingLevelMap, d as Context, dt as ToolResultMessage, et as StreamFn, f as DEFAULT_MISSING_TOOL_RESULT_TEXT, ft as Transport, g as ImagesFunction, gt as VercelGatewayRouting, h as ImagesContext, ht as ValidateToolArgumentsFn, i as AssistantImages, it as TextSignatureV1, j as ModelCostRates, jt as formatThrownValue, k as Model, kt as createAssistantMessageDiagnostic, l as CacheRetention, lt as Tool, m as ImagesApi, mt as UserMessage, n as Api, nt as StreamOptions, o as AssistantMessageEvent, ot as ThinkingContent, p as ImageContent, pt as Usage, q as RUNTIME_CONTEXT_FOOTER, r as AssistantDeliveryTtsFacts, rt as TextContent, s as AssistantMessageEventStreamContract, st as ThinkingLevel, t as AnthropicMessagesCompat, tt as StreamFunction, u as CompleteSimpleFn, ut as ToolCall, v as ImagesModel, vt as hasLegacyRuntimeContextEnvelope, w as KnownImagesApi, wt as runtimeContextContentToText, x as ImagesProvider, xt as labelRuntimeContextContent, y as ImagesOptions, yt as hasRuntimeContextMarker, z as Provider } from "./types-Bd2T86VJ.mjs";
3
+ import { n as EventStream, r as createAssistantMessageEventStream, t as AssistantMessageEventStream } from "./event-stream-BcqWLo_u.mjs";
4
+ import { n as validateToolCall, t as validateToolArguments } from "./validation-DdGB1yy3.mjs";
5
+ import "./types-Kdfw_04V.mjs";
6
+ export { AnthropicMessagesCompat, Api, AssistantDeliveryTtsFacts, AssistantImages, AssistantMessage, AssistantMessageDiagnostic, AssistantMessageEvent, AssistantMessageEventStream, AssistantMessageEventStreamContract, AssistantMessageEventStreamLike, CLAUDE_FABLE_5_THINKING_PROFILE, CLAUDE_HAIKU_55_THINKING_PROFILE, CLAUDE_OPUS_55_THINKING_PROFILE, CLAUDE_OPUS_5_THINKING_PROFILE, CLAUDE_SONNET_55_THINKING_PROFILE, CLAUDE_SONNET_5_THINKING_PROFILE, CacheRetention, CompleteSimpleFn, Context, DEFAULT_MISSING_TOOL_RESULT_TEXT, DiagnosticErrorInfo, EventStream, ImageContent, ImagesApi, ImagesContext, ImagesFunction, ImagesInputContent, ImagesModel, ImagesOptions, ImagesOutputContent, ImagesProvider, ImagesStopReason, KnownApi, KnownImagesApi, KnownImagesProvider, MALFORMED_TOOL_CALL_ARGUMENTS_ERROR_CODE, MaybePromise, Message, Model, ModelCostConfig, ModelCostRates, ModelThinkingLevel, OpenAICompletionsCompat, OpenAIResponsesCompat, OpenRouterRouting, PROVIDER_FAILURE_WITH_OUTPUT_ERROR_CODE, PROVIDER_POST_DISPATCH_AMBIGUITY_ERROR_CODE, PricingTier, Provider, ProviderImagesOptions, type ProviderRefusalReview, ProviderReplayState, ProviderResponse, ProviderStreamOptions, RUNTIME_CONTEXT_BEGIN_MARKER, RUNTIME_CONTEXT_CUSTOM_TYPE, RUNTIME_CONTEXT_END_MARKER, RUNTIME_CONTEXT_FOOTER, RUNTIME_CONTEXT_HEADER, RawModelCostConfig, RawPricingTier, RuntimeContextMessage, SimpleStreamOptions, StopReason, StreamFn, StreamFunction, StreamOptions, TextContent, TextSignatureV1, ThinkingBudgets, ThinkingContent, ThinkingLevel, ThinkingLevelMap, Tool, ToolCall, ToolResultMessage, Transport, Usage, UserMessage, ValidateToolArgumentsFn, VercelGatewayRouting, appendAssistantMessageDiagnostic, appendTextDeltaToAssistantMessage, bindsClaudeThinkingPrefix, calculateUsageCost, createAssistantMessageDiagnostic, createAssistantMessageEventStream, escapeRuntimeContextFooter, extractDiagnosticError, formatThrownValue, hasLegacyRuntimeContextEnvelope, hasRuntimeContextMarker, isProviderRefusalAssistantError, isRuntimeContextMessage, labelRuntimeContextContent, labelRuntimeContextText, normalizeModelCostConfig, normalizeResolvedPricing, readProviderRefusalReview, readRuntimeContextMetadata, requiresClaudeBetweenToolsThinking, requiresClaudeDefaultSampling, requiresClaudeMandatoryAdaptiveThinking, resolveClaudeFable5ModelIdentity, resolveClaudeHaiku55ModelIdentity, resolveClaudeModelIdentity, resolveClaudeMythos5ModelIdentity, resolveClaudeNativeThinkingLevelMap, resolveClaudeOpus55ModelIdentity, resolveClaudeOpus5ModelIdentity, resolveClaudeSonnet55ModelIdentity, resolveClaudeSonnet5ModelIdentity, runtimeContextContentToText, setRuntimeContextRetention, supportsClaude1MContext, supportsClaudeAdaptiveThinking, supportsClaudeFastMode, supportsClaudeInHistorySystemMessages, supportsClaudeNativeMaxEffort, supportsClaudeNativeXhighEffort, validateToolArguments, validateToolCall };
package/dist/types.mjs CHANGED
@@ -1,6 +1,7 @@
1
- import { C as supportsClaude1MContext, D as supportsClaudeNativeMaxEffort, E as supportsClaudeInHistorySystemMessages, O as supportsClaudeNativeXhighEffort, S as resolveClaudeSonnet5ModelIdentity, T as supportsClaudeFastMode, _ as resolveClaudeMythos5ModelIdentity, a as CLAUDE_HAIKU_55_THINKING_PROFILE, b as resolveClaudeOpus5ModelIdentity, c as CLAUDE_SONNET_55_THINKING_PROFILE, d as requiresClaudeBetweenToolsThinking, f as requiresClaudeDefaultSampling, g as resolveClaudeModelIdentity, h as resolveClaudeHaiku55ModelIdentity, i as CLAUDE_FABLE_5_THINKING_PROFILE, k as supportsClaudeServerCompaction, l as CLAUDE_SONNET_5_THINKING_PROFILE, m as resolveClaudeFable5ModelIdentity, n as normalizeModelCostConfig, o as CLAUDE_OPUS_55_THINKING_PROFILE, p as requiresClaudeMandatoryAdaptiveThinking, r as normalizeResolvedPricing, s as CLAUDE_OPUS_5_THINKING_PROFILE, t as calculateUsageCost, u as bindsClaudeThinkingPrefix, v as resolveClaudeNativeThinkingLevelMap, w as supportsClaudeAdaptiveThinking, x as resolveClaudeSonnet55ModelIdentity, y as resolveClaudeOpus55ModelIdentity } from "./src-VWy9E7DZ.mjs";
1
+ import { C as supportsClaude1MContext, D as supportsClaudeNativeMaxEffort, E as supportsClaudeInHistorySystemMessages, O as supportsClaudeNativeXhighEffort, S as resolveClaudeSonnet5ModelIdentity, T as supportsClaudeFastMode, _ as resolveClaudeMythos5ModelIdentity, a as CLAUDE_HAIKU_55_THINKING_PROFILE, b as resolveClaudeOpus5ModelIdentity, c as CLAUDE_SONNET_55_THINKING_PROFILE, d as requiresClaudeBetweenToolsThinking, f as requiresClaudeDefaultSampling, g as resolveClaudeModelIdentity, h as resolveClaudeHaiku55ModelIdentity, i as CLAUDE_FABLE_5_THINKING_PROFILE, l as CLAUDE_SONNET_5_THINKING_PROFILE, m as resolveClaudeFable5ModelIdentity, n as normalizeModelCostConfig, o as CLAUDE_OPUS_55_THINKING_PROFILE, p as requiresClaudeMandatoryAdaptiveThinking, r as normalizeResolvedPricing, s as CLAUDE_OPUS_5_THINKING_PROFILE, t as calculateUsageCost, u as bindsClaudeThinkingPrefix, v as resolveClaudeNativeThinkingLevelMap, w as supportsClaudeAdaptiveThinking, x as resolveClaudeSonnet55ModelIdentity, y as resolveClaudeOpus55ModelIdentity } from "./src-C44MKrW5.mjs";
2
2
  import { _ as runtimeContextContentToText, a as RUNTIME_CONTEXT_BEGIN_MARKER, c as RUNTIME_CONTEXT_FOOTER, d as hasLegacyRuntimeContextEnvelope, f as hasRuntimeContextMarker, g as readRuntimeContextMetadata, h as labelRuntimeContextText, i as PROVIDER_POST_DISPATCH_AMBIGUITY_ERROR_CODE, l as RUNTIME_CONTEXT_HEADER, m as labelRuntimeContextContent, n as MALFORMED_TOOL_CALL_ARGUMENTS_ERROR_CODE, o as RUNTIME_CONTEXT_CUSTOM_TYPE, p as isRuntimeContextMessage, r as PROVIDER_FAILURE_WITH_OUTPUT_ERROR_CODE, s as RUNTIME_CONTEXT_END_MARKER, t as DEFAULT_MISSING_TOOL_RESULT_TEXT, u as escapeRuntimeContextFooter, v as setRuntimeContextRetention } from "./types-CQc6JNG4.mjs";
3
+ import { t as appendTextDeltaToAssistantMessage } from "./assistant-message-events-CHMJgbhs.mjs";
3
4
  import { a as isProviderRefusalAssistantError, i as formatThrownValue, n as createAssistantMessageDiagnostic, o as readProviderRefusalReview, r as extractDiagnosticError, t as appendAssistantMessageDiagnostic } from "./diagnostics-DzrF1h4J.mjs";
4
- import { a as createAssistantMessageEventStream, n as EventStream, t as AssistantMessageEventStream } from "./event-stream-C5AbCAaZ.mjs";
5
- import { n as validateToolCall, t as validateToolArguments } from "./validation-DbqlIfDn.mjs";
6
- export { AssistantMessageEventStream, CLAUDE_FABLE_5_THINKING_PROFILE, CLAUDE_HAIKU_55_THINKING_PROFILE, CLAUDE_OPUS_55_THINKING_PROFILE, CLAUDE_OPUS_5_THINKING_PROFILE, CLAUDE_SONNET_55_THINKING_PROFILE, CLAUDE_SONNET_5_THINKING_PROFILE, DEFAULT_MISSING_TOOL_RESULT_TEXT, EventStream, MALFORMED_TOOL_CALL_ARGUMENTS_ERROR_CODE, PROVIDER_FAILURE_WITH_OUTPUT_ERROR_CODE, PROVIDER_POST_DISPATCH_AMBIGUITY_ERROR_CODE, RUNTIME_CONTEXT_BEGIN_MARKER, RUNTIME_CONTEXT_CUSTOM_TYPE, RUNTIME_CONTEXT_END_MARKER, RUNTIME_CONTEXT_FOOTER, RUNTIME_CONTEXT_HEADER, appendAssistantMessageDiagnostic, bindsClaudeThinkingPrefix, calculateUsageCost, createAssistantMessageDiagnostic, createAssistantMessageEventStream, escapeRuntimeContextFooter, extractDiagnosticError, formatThrownValue, hasLegacyRuntimeContextEnvelope, hasRuntimeContextMarker, isProviderRefusalAssistantError, isRuntimeContextMessage, labelRuntimeContextContent, labelRuntimeContextText, normalizeModelCostConfig, normalizeResolvedPricing, readProviderRefusalReview, readRuntimeContextMetadata, requiresClaudeBetweenToolsThinking, requiresClaudeDefaultSampling, requiresClaudeMandatoryAdaptiveThinking, resolveClaudeFable5ModelIdentity, resolveClaudeHaiku55ModelIdentity, resolveClaudeModelIdentity, resolveClaudeMythos5ModelIdentity, resolveClaudeNativeThinkingLevelMap, resolveClaudeOpus55ModelIdentity, resolveClaudeOpus5ModelIdentity, resolveClaudeSonnet55ModelIdentity, resolveClaudeSonnet5ModelIdentity, runtimeContextContentToText, setRuntimeContextRetention, supportsClaude1MContext, supportsClaudeAdaptiveThinking, supportsClaudeFastMode, supportsClaudeInHistorySystemMessages, supportsClaudeNativeMaxEffort, supportsClaudeNativeXhighEffort, supportsClaudeServerCompaction, validateToolArguments, validateToolCall };
5
+ import { a as createAssistantMessageEventStream, n as EventStream, t as AssistantMessageEventStream } from "./event-stream-X2gmsUWv.mjs";
6
+ import { n as validateToolCall, t as validateToolArguments } from "./validation-ZX_sPVV0.mjs";
7
+ export { AssistantMessageEventStream, CLAUDE_FABLE_5_THINKING_PROFILE, CLAUDE_HAIKU_55_THINKING_PROFILE, CLAUDE_OPUS_55_THINKING_PROFILE, CLAUDE_OPUS_5_THINKING_PROFILE, CLAUDE_SONNET_55_THINKING_PROFILE, CLAUDE_SONNET_5_THINKING_PROFILE, DEFAULT_MISSING_TOOL_RESULT_TEXT, EventStream, MALFORMED_TOOL_CALL_ARGUMENTS_ERROR_CODE, PROVIDER_FAILURE_WITH_OUTPUT_ERROR_CODE, PROVIDER_POST_DISPATCH_AMBIGUITY_ERROR_CODE, RUNTIME_CONTEXT_BEGIN_MARKER, RUNTIME_CONTEXT_CUSTOM_TYPE, RUNTIME_CONTEXT_END_MARKER, RUNTIME_CONTEXT_FOOTER, RUNTIME_CONTEXT_HEADER, appendAssistantMessageDiagnostic, appendTextDeltaToAssistantMessage, bindsClaudeThinkingPrefix, calculateUsageCost, createAssistantMessageDiagnostic, createAssistantMessageEventStream, escapeRuntimeContextFooter, extractDiagnosticError, formatThrownValue, hasLegacyRuntimeContextEnvelope, hasRuntimeContextMarker, isProviderRefusalAssistantError, isRuntimeContextMessage, labelRuntimeContextContent, labelRuntimeContextText, normalizeModelCostConfig, normalizeResolvedPricing, readProviderRefusalReview, readRuntimeContextMetadata, requiresClaudeBetweenToolsThinking, requiresClaudeDefaultSampling, requiresClaudeMandatoryAdaptiveThinking, resolveClaudeFable5ModelIdentity, resolveClaudeHaiku55ModelIdentity, resolveClaudeModelIdentity, resolveClaudeMythos5ModelIdentity, resolveClaudeNativeThinkingLevelMap, resolveClaudeOpus55ModelIdentity, resolveClaudeOpus5ModelIdentity, resolveClaudeSonnet55ModelIdentity, resolveClaudeSonnet5ModelIdentity, runtimeContextContentToText, setRuntimeContextRetention, supportsClaude1MContext, supportsClaudeAdaptiveThinking, supportsClaudeFastMode, supportsClaudeInHistorySystemMessages, supportsClaudeNativeMaxEffort, supportsClaudeNativeXhighEffort, validateToolArguments, validateToolCall };
@@ -1,4 +1,4 @@
1
- import { lt as Tool, ut as ToolCall } from "./types-DvzmWW8J.mjs";
1
+ import { lt as Tool, ut as ToolCall } from "./types-Bd2T86VJ.mjs";
2
2
  //#region packages/llm-core/src/validation.d.ts
3
3
  /** Finds the target tool and validates/coerces a model-emitted tool call. */
4
4
  declare function validateToolCall(tools: Tool[], toolCall: ToolCall): unknown;
@@ -1,5 +1,5 @@
1
1
  import { t as parseLocalSchemaRefPointer } from "./json-schema-Bp07Qui3.mjs";
2
- import { a as parseStrictFiniteNumber } from "./number-coercion-V8-BhME4.mjs";
2
+ import { o as parseStrictFiniteNumber } from "./number-coercion-C3hztWoY.mjs";
3
3
  import { Pointer } from "typebox/schema";
4
4
  import { Compile } from "typebox/compile";
5
5
  //#region packages/llm-core/src/validation.ts
@@ -116,12 +116,7 @@ function applySchemaArrayCoercion(value, schema, root) {
116
116
  }
117
117
  }
118
118
  function coerceWithUnionSchema(value, schemas, root, refs) {
119
- if (value === null) {
120
- for (const schema of schemas) if (getSchemaTypes(schema, root).includes("null")) {
121
- const validator = getSubSchemaValidator(schema, root);
122
- if (!validator || validator.Check(value)) return value;
123
- }
124
- }
119
+ for (const schema of schemas) if (getSubSchemaValidator(schema, root)?.Check(value)) return value;
125
120
  for (const schema of schemas) {
126
121
  const types = getSchemaTypes(schema, root);
127
122
  if (value !== null && types.length === 1 && types[0] === "null") continue;
@@ -141,8 +136,7 @@ function coerceWithJsonSchema(value, schema, contextRoot, refs) {
141
136
  nextValue = coerceWithJsonSchema(nextValue, target, root, nextRefs);
142
137
  }
143
138
  if (Array.isArray(schema.allOf)) for (const nested of schema.allOf) nextValue = coerceWithJsonSchema(nextValue, nested, root, refs);
144
- if (Array.isArray(schema.anyOf)) nextValue = coerceWithUnionSchema(nextValue, schema.anyOf, root, refs);
145
- if (Array.isArray(schema.oneOf)) nextValue = coerceWithUnionSchema(nextValue, schema.oneOf, root, refs);
139
+ for (const keyword of ["anyOf", "oneOf"]) if (Array.isArray(schema[keyword])) nextValue = coerceWithUnionSchema(nextValue, schema[keyword], root, refs);
146
140
  const schemaTypes = getSchemaTypes(schema, root);
147
141
  const matchesUnionMember = schemaTypes.length > 1 && schemaTypes.some((schemaType) => matchesJsonType(nextValue, schemaType));
148
142
  if (schemaTypes.length > 0 && !matchesUnionMember) for (const schemaType of schemaTypes) {
@@ -1,2 +1,2 @@
1
- import { n as validateToolCall, t as validateToolArguments } from "./validation-B3lQt_VE.mjs";
1
+ import { n as validateToolCall, t as validateToolArguments } from "./validation-DdGB1yy3.mjs";
2
2
  export { validateToolArguments, validateToolCall };
@@ -1,2 +1,2 @@
1
- import { n as validateToolCall, t as validateToolArguments } from "./validation-DbqlIfDn.mjs";
1
+ import { n as validateToolCall, t as validateToolArguments } from "./validation-ZX_sPVV0.mjs";
2
2
  export { validateToolArguments, validateToolCall };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openclaw/ai",
3
- "version": "2026.10.2",
3
+ "version": "2026.10.5-beta.2",
4
4
  "description": "Reusable model provider adapters and streaming runtime from OpenClaw",
5
5
  "keywords": [
6
6
  "ai",
@@ -101,11 +101,6 @@
101
101
  "import": "./dist/internal/retry-after.mjs",
102
102
  "default": "./dist/internal/retry-after.mjs"
103
103
  },
104
- "./internal/env-api-keys": {
105
- "types": "./dist/internal/env-api-keys.d.mts",
106
- "import": "./dist/internal/env-api-keys.mjs",
107
- "default": "./dist/internal/env-api-keys.mjs"
108
- },
109
104
  "./internal/runtime": {
110
105
  "types": "./dist/internal/runtime.d.mts",
111
106
  "import": "./dist/internal/runtime.mjs",
@@ -123,10 +118,10 @@
123
118
  }
124
119
  },
125
120
  "dependencies": {
126
- "@anthropic-ai/sdk": "0.128.0",
127
- "@google/genai": "2.24.0",
121
+ "@anthropic-ai/sdk": "0.131.0",
122
+ "@google/genai": "2.27.0",
128
123
  "@mistralai/mistralai": "2.7.0",
129
- "openai": "7.23.0",
124
+ "openai": "7.27.0",
130
125
  "partial-json": "0.1.7",
131
126
  "typebox": "1.3.34"
132
127
  },
@@ -1,17 +0,0 @@
1
- //#region packages/ai/src/env-api-keys.d.ts
2
- /**
3
- * Find configured environment variables that can provide an API key for a provider.
4
- *
5
- * This only reports actual API key variables. It intentionally excludes ambient
6
- * credential sources such as AWS profiles, AWS IAM credentials, and Google
7
- * Application Default Credentials.
8
- */
9
- declare function findEnvKeys(provider: string): string[] | undefined;
10
- /**
11
- * Get API key for provider from known environment variables, e.g. OPENAI_API_KEY.
12
- *
13
- * Will not return API keys for providers that require OAuth tokens.
14
- */
15
- declare function getEnvApiKey(provider: string): string | undefined;
16
- //#endregion
17
- export { getEnvApiKey as n, findEnvKeys as t };
@@ -1 +0,0 @@
1
- import "./event-stream-DrRM_90c.mjs";
@@ -1,54 +0,0 @@
1
- import { t as AssistantMessageEventStream } from "./event-stream-C5AbCAaZ.mjs";
2
- import { a as resolveAiTransportHeaderSentinels, r as getAiTransportHost } from "./host-u3o8XiAp.mjs";
3
- import { n as buildManagedModelFetch } from "./host-policy-BwhNNGQR.mjs";
4
- import { f as mergeTransportHeaders } from "./transport-stream-shared-CCR7hSW0.mjs";
5
- import { n as buildBaseOptions } from "./simple-options-7QuSKriJ.mjs";
6
- import { n as getEnvApiKey } from "./env-api-keys-CyX4VKGO.mjs";
7
- import { t as createAssistantOutput } from "./assistant-output-D5762GPH.mjs";
8
- import { n as resolveOpencodeSessionHeaders } from "./session-affinity-DA4WHv1h.mjs";
9
- import { t as requireApiKey } from "./required-api-key-D4kn3252.mjs";
10
- import { i as runGoogleGenerateContentLifecycle, r as buildGoogleSimpleThinking, t as buildGoogleGenerateContentParams } from "./google-shared-V8jogVPq.mjs";
11
- import { GoogleGenAI } from "@google/genai";
12
- //#region packages/ai/src/providers/google.ts
13
- let toolCallCounter = 0;
14
- const streamGoogle = (model, context, options) => {
15
- const stream = new AssistantMessageEventStream();
16
- const output = createAssistantOutput(model, "google-generative-ai");
17
- runGoogleGenerateContentLifecycle({
18
- stream,
19
- model,
20
- output,
21
- options,
22
- createClient: () => {
23
- return createClient(model, options?.apiKey || getEnvApiKey(model.provider) || "", resolveOpencodeSessionHeaders(model, options));
24
- },
25
- buildParams: () => buildGoogleGenerateContentParams(model, context, options),
26
- nextToolCallId: (name) => `${name}_${Date.now()}_${++toolCallCounter}`
27
- });
28
- return stream;
29
- };
30
- const streamSimpleGoogle = (model, context, options) => {
31
- const apiKey = requireApiKey(model.provider, options?.apiKey);
32
- const base = buildBaseOptions(model, options, apiKey);
33
- return streamGoogle(model, context, {
34
- ...base,
35
- thinking: buildGoogleSimpleThinking(model, options)
36
- });
37
- };
38
- function createClient(model, apiKey, optionsHeaders) {
39
- const httpOptions = {};
40
- const fetcher = buildManagedModelFetch(model);
41
- if (fetcher) httpOptions.fetch = fetcher;
42
- if (model.baseUrl) {
43
- httpOptions.baseUrl = model.baseUrl;
44
- httpOptions.apiVersion = "";
45
- }
46
- if (model.headers || optionsHeaders) httpOptions.headers = resolveAiTransportHeaderSentinels(mergeTransportHeaders(model.headers, optionsHeaders));
47
- const resolvedApiKey = apiKey ? getAiTransportHost().resolveSecretSentinel(apiKey) : void 0;
48
- return new GoogleGenAI({
49
- apiKey: resolvedApiKey,
50
- httpOptions: Object.keys(httpOptions).length > 0 ? httpOptions : void 0
51
- });
52
- }
53
- //#endregion
54
- export { streamGoogle, streamSimpleGoogle };
@@ -1,88 +0,0 @@
1
- import { t as AssistantMessageEventStream } from "./event-stream-C5AbCAaZ.mjs";
2
- import { a as normalizeOptionalString } from "./string-coerce-CtgOVOSv.mjs";
3
- import { a as resolveAiTransportHeaderSentinels, r as getAiTransportHost } from "./host-u3o8XiAp.mjs";
4
- import { n as buildManagedModelFetch } from "./host-policy-BwhNNGQR.mjs";
5
- import { n as buildBaseOptions } from "./simple-options-7QuSKriJ.mjs";
6
- import { t as createAssistantOutput } from "./assistant-output-D5762GPH.mjs";
7
- import { i as runGoogleGenerateContentLifecycle, r as buildGoogleSimpleThinking, t as buildGoogleGenerateContentParams } from "./google-shared-V8jogVPq.mjs";
8
- import { GoogleGenAI, ResourceScope } from "@google/genai";
9
- //#region packages/ai/src/providers/google-vertex.ts
10
- const API_VERSION = "v1";
11
- const GCP_VERTEX_CREDENTIALS_MARKER = "gcp-vertex-credentials";
12
- let toolCallCounter = 0;
13
- const streamGoogleVertex = (model, context, options) => {
14
- const stream = new AssistantMessageEventStream();
15
- const output = createAssistantOutput(model, "google-vertex");
16
- runGoogleGenerateContentLifecycle({
17
- stream,
18
- model,
19
- output,
20
- options,
21
- createClient: () => createClient(model, options),
22
- buildParams: () => buildGoogleGenerateContentParams(model, context, options),
23
- nextToolCallId: (name) => `${name}_${Date.now()}_${++toolCallCounter}`
24
- });
25
- return stream;
26
- };
27
- const streamSimpleGoogleVertex = (model, context, options) => {
28
- const base = buildBaseOptions(model, options, void 0);
29
- return streamGoogleVertex(model, context, {
30
- ...base,
31
- thinking: buildGoogleSimpleThinking(model, options)
32
- });
33
- };
34
- function createClient(model, options) {
35
- const apiKey = resolveApiKey(options);
36
- const credentials = apiKey ? { apiKey: getAiTransportHost().resolveSecretSentinel(apiKey) } : {
37
- project: resolveProject(options),
38
- location: resolveLocation(options)
39
- };
40
- return new GoogleGenAI({
41
- vertexai: true,
42
- ...credentials,
43
- apiVersion: API_VERSION,
44
- httpOptions: buildHttpOptions(model, options?.headers)
45
- });
46
- }
47
- function buildHttpOptions(model, optionsHeaders) {
48
- const httpOptions = {};
49
- const fetcher = buildManagedModelFetch(model);
50
- if (fetcher) httpOptions.fetch = fetcher;
51
- const baseUrl = resolveCustomBaseUrl(model.baseUrl);
52
- if (baseUrl) {
53
- httpOptions.baseUrl = baseUrl;
54
- httpOptions.baseUrlResourceScope = ResourceScope.COLLECTION;
55
- if (baseUrlIncludesApiVersion(baseUrl)) httpOptions.apiVersion = "";
56
- }
57
- if (model.headers || optionsHeaders) httpOptions.headers = resolveAiTransportHeaderSentinels({
58
- ...model.headers,
59
- ...optionsHeaders
60
- });
61
- return Object.keys(httpOptions).length > 0 ? httpOptions : void 0;
62
- }
63
- function resolveCustomBaseUrl(baseUrl) {
64
- const trimmed = baseUrl.trim();
65
- if (!trimmed || trimmed.includes("{location}")) return;
66
- return trimmed;
67
- }
68
- function baseUrlIncludesApiVersion(baseUrl) {
69
- const url = URL.parse(baseUrl);
70
- return url ? url.pathname.split("/").some((part) => /^v\d+(?:beta\d*)?$/.test(part)) : /(?:^|\/)v\d+(?:beta\d*)?(?:\/|$)/.test(baseUrl);
71
- }
72
- function resolveApiKey(options) {
73
- const apiKey = options?.apiKey?.trim() || process.env.GOOGLE_CLOUD_API_KEY?.trim();
74
- if (!apiKey || apiKey === GCP_VERTEX_CREDENTIALS_MARKER || /^<[^>]+>$/.test(apiKey)) return;
75
- return apiKey;
76
- }
77
- function resolveProject(options) {
78
- const project = normalizeOptionalString(options?.project) || normalizeOptionalString(process.env.GOOGLE_CLOUD_PROJECT) || normalizeOptionalString(process.env.GCLOUD_PROJECT);
79
- if (!project) throw new Error("Vertex AI requires a project ID. Set GOOGLE_CLOUD_PROJECT/GCLOUD_PROJECT or pass project in options.");
80
- return project;
81
- }
82
- function resolveLocation(options) {
83
- const location = normalizeOptionalString(options?.location) || normalizeOptionalString(process.env.GOOGLE_CLOUD_LOCATION);
84
- if (!location) throw new Error("Vertex AI requires a location. Set GOOGLE_CLOUD_LOCATION or pass location in options.");
85
- return location;
86
- }
87
- //#endregion
88
- export { streamGoogleVertex, streamSimpleGoogleVertex };
@@ -1,2 +0,0 @@
1
- import { n as getEnvApiKey, t as findEnvKeys } from "../env-api-keys-BR0MUYYD.mjs";
2
- export { findEnvKeys, getEnvApiKey };
@@ -1,2 +0,0 @@
1
- import { n as getEnvApiKey, t as findEnvKeys } from "../env-api-keys-CyX4VKGO.mjs";
2
- export { findEnvKeys, getEnvApiKey };
@@ -1,11 +0,0 @@
1
- //#region packages/ai/src/transports/openai-responses-endpoint.ts
2
- function isOfficialOpenAIResponsesBaseUrl(baseUrl) {
3
- if (!baseUrl) return false;
4
- const url = URL.parse(baseUrl);
5
- return url !== null && url.origin === "https://api.openai.com" && url.username === "" && url.password === "" && url.search === "" && url.hash === "" && url.pathname.replace(/\/+$/, "") === "/v1";
6
- }
7
- function supportsNativeOpenAIResponsesEndpoint(params) {
8
- return params.provider.trim().toLowerCase() === "openai" && params.api === "openai-responses" && isOfficialOpenAIResponsesBaseUrl(params.baseUrl);
9
- }
10
- //#endregion
11
- export { supportsNativeOpenAIResponsesEndpoint as n, isOfficialOpenAIResponsesBaseUrl as t };
@@ -1,36 +0,0 @@
1
- import { o as isRecord } from "./record-coerce-CNDovvft.mjs";
2
- //#region packages/ai/src/transports/openai-responses-request-lifecycle.ts
3
- const lifecycleKey = Symbol("openclaw.responsesRequestLifecycle");
4
- /** Private transport carrier: serialized options cannot mint host authority. */
5
- const responsesRequestLifecycle = {
6
- set(options, lifecycle) {
7
- Object.defineProperty(options, lifecycleKey, {
8
- value: lifecycle,
9
- enumerable: true
10
- });
11
- },
12
- get(options) {
13
- if (!options) return;
14
- return Reflect.get(options, lifecycleKey);
15
- }
16
- };
17
- /** A transport receipt must settle before model output can authorize later work. */
18
- function withResponsesRequestAcceptance(events, lifecycle, signal) {
19
- if (!lifecycle) return events;
20
- return { async *[Symbol.asyncIterator]() {
21
- for await (const event of events) {
22
- if (isRecord(event) && event.type === "response.created") {
23
- const response = isRecord(event.response) ? event.response : void 0;
24
- if (typeof response?.id !== "string" || !response.id.trim()) throw new Error("Provider continuation response has no identity");
25
- signal?.throwIfAborted();
26
- lifecycle.assertCurrent();
27
- await lifecycle.accepted(response.id, signal);
28
- signal?.throwIfAborted();
29
- lifecycle.assertCurrent();
30
- }
31
- yield event;
32
- }
33
- } };
34
- }
35
- //#endregion
36
- export { withResponsesRequestAcceptance as n, responsesRequestLifecycle as t };