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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/dist/{anthropic-B6dLpq5L.mjs → anthropic-B8KwTtlb.mjs} +37 -27
  2. package/dist/{anthropic-SrGtwsJu.d.mts → anthropic-BECQCNdF.d.mts} +0 -2
  3. package/dist/{anthropic-JsNA5KCu.mjs → anthropic-BQXQudmA.mjs} +0 -1
  4. package/dist/{anthropic-compaction-replay-8lJNKXOE.mjs → anthropic-compaction-replay-4Zx7-aCr.mjs} +14 -15
  5. package/dist/{anthropic-payload-policy-CiEuQS72.d.mts → anthropic-payload-policy-CSx7MoKH.d.mts} +2 -1
  6. package/dist/{api-registry-k3zTz0cV.d.mts → api-registry-DFxSnFqG.d.mts} +1 -1
  7. package/dist/{azure-openai-responses-mxIOtUnn.mjs → azure-openai-responses-Aa4mVcYG.mjs} +3 -3
  8. package/dist/diagnostics.mjs +1 -1
  9. package/dist/event-stream-BVVgDSdq.d.mts +1 -0
  10. package/dist/{event-stream-BP6AWT8j.d.mts → event-stream-D91-ohD_.d.mts} +1 -1
  11. package/dist/event-stream.d.mts +1 -1
  12. package/dist/{google-shared-B0Qr9OR7.mjs → google-shared-M1dl64nz.mjs} +12 -5
  13. package/dist/{google-vertex-Bhc3TjDl.mjs → google-vertex-DCJHM_a5.mjs} +3 -3
  14. package/dist/{google-C7h2QzDX.mjs → google-yDRnipeq.mjs} +3 -3
  15. package/dist/headers-B_e4-1J0.mjs +9 -0
  16. package/dist/{host-DTqNc7ad.mjs → host-DF_yxOsA.mjs} +40 -29
  17. package/dist/{host-vWgMMhiJ.d.mts → host-DJq_FGcz.d.mts} +6 -6
  18. package/dist/index.d.mts +7 -7
  19. package/dist/index.mjs +2 -2
  20. package/dist/internal/anthropic.d.mts +11 -5
  21. package/dist/internal/anthropic.mjs +4 -4
  22. package/dist/internal/openai-responses-payload-policy.d.mts +2 -2
  23. package/dist/internal/openai-responses-payload-policy.mjs +2 -2
  24. package/dist/internal/openai.d.mts +5 -5
  25. package/dist/internal/openai.mjs +9 -8
  26. package/dist/internal/runtime.d.mts +4 -2
  27. package/dist/internal/runtime.mjs +4 -3
  28. package/dist/internal/shared.d.mts +17 -3
  29. package/dist/internal/shared.mjs +4 -4
  30. package/dist/{headers-DdOQtGuU.mjs → llm-request-activity-BjtkplhG.mjs} +1 -9
  31. package/dist/{mistral-CEWoQI_g.mjs → mistral-D6hRXI7A.mjs} +47 -33
  32. package/dist/{openai-chatgpt-responses-CrPmqERt.mjs → openai-chatgpt-responses-C339VIfT.mjs} +23 -15
  33. package/dist/{openai-completions-BPnt4Sml.mjs → openai-completions-D88orSJ9.mjs} +71 -35
  34. package/dist/{openai-completions-compat-Dt3dcawL.d.mts → openai-completions-compat-B0KTleXp.d.mts} +2 -2
  35. package/dist/{openai-responses-DhIKtOup.mjs → openai-responses-BXEcr-Tp.mjs} +4 -4
  36. package/dist/{openai-responses-contracts-XpZJxrRG.d.mts → openai-responses-contracts-CD75pQ0m.d.mts} +2 -2
  37. package/dist/{openai-responses-contracts-CyfIkQi5.mjs → openai-responses-contracts-DvILoqBk.mjs} +3 -9
  38. package/dist/{openai-responses-payload-policy-BDxV-W0c.mjs → openai-responses-payload-policy-BDo8CQsx.mjs} +4 -2
  39. package/dist/{openai-responses-payload-policy-BSs371VM.d.mts → openai-responses-payload-policy-CNGFT9zr.d.mts} +1 -0
  40. package/dist/{openai-responses-prompt-observer-internal-DgNTYnRY.mjs → openai-responses-prompt-observer-internal-BG-1AsBI.mjs} +2 -3
  41. package/dist/{openai-responses-shared-DXIt3iY5.mjs → openai-responses-shared-Cvt5MgEm.mjs} +81 -136
  42. package/dist/{openai-stop-reason-BkFkqqK0.mjs → openai-stop-reason-9OONKyAm.mjs} +47 -31
  43. package/dist/{openai-tool-projection-CY04OcvQ.mjs → openai-tool-projection-CHGLt03m.mjs} +94 -6
  44. package/dist/{provider-error-BUwEnjXq.mjs → provider-error-C8mBRJDl.mjs} +19 -24
  45. package/dist/provider-options-AvldWZt8.mjs +21 -0
  46. package/dist/{provider-options-B96RdNpH.d.mts → provider-options-Cc5ZQ6Aa.d.mts} +12 -2
  47. package/dist/provider-transcript-transform--gtf0ZbR.mjs +32 -0
  48. package/dist/provider-types.d.mts +5 -5
  49. package/dist/providers.d.mts +1 -1
  50. package/dist/providers.mjs +9 -9
  51. package/dist/{reasoning-tag-text-partitioner-rnPwX2pg.mjs → reasoning-tag-text-partitioner-5ygO2rZc.mjs} +3 -0
  52. package/dist/{sanitize-unicode-BYqrYtC_.mjs → sanitize-unicode-BP7HLLZn.mjs} +1 -1
  53. package/dist/simple-options-oqsXB6U3.mjs +450 -0
  54. package/dist/{tool-schema-json-projection-q5d7QX5c.mjs → tool-schema-json-projection-FEr-jOoZ.mjs} +16 -7
  55. package/dist/{transport-utils-DJqkxbhC.mjs → transport-utils-Bv0FHkd0.mjs} +1 -1
  56. package/dist/transports.d.mts +77 -44
  57. package/dist/transports.mjs +207 -167
  58. package/dist/{types-BHNrPS1l.d.mts → types-DTAP49HF.d.mts} +17 -2
  59. package/dist/types.d.mts +5 -5
  60. package/dist/types.mjs +1 -1
  61. package/dist/{validation-DT9SrFn3.d.mts → validation-DYNNrU9u.d.mts} +1 -1
  62. package/dist/validation.d.mts +1 -1
  63. package/package.json +1 -1
  64. package/dist/provider-transcript-transform-ePx-Bbfr.mjs +0 -155
  65. package/dist/simple-options-D58D5Kvw.mjs +0 -117
@@ -276,9 +276,24 @@ interface UserMessage {
276
276
  runtimeContextCarrier?: boolean;
277
277
  }
278
278
  /** Assistant turn, including provider identity and final stop state. */
279
+ type AssistantDeliveryTtsFacts = {
280
+ tagged: true;
281
+ text?: string;
282
+ directives?: Array<{
283
+ provider?: string;
284
+ values: Record<string, string>;
285
+ }>;
286
+ };
279
287
  interface AssistantMessage {
280
288
  role: "assistant";
281
289
  content: (TextContent | ThinkingContent | ToolCall)[];
290
+ openclawDelivery?: {
291
+ audioAsVoice?: true;
292
+ replyToCurrent?: true;
293
+ replyToId?: string; /** Provider text phase is unresolved until the assistant turn reaches terminal state. */
294
+ textPhaseRequiresTerminal?: true; /** Parsed once at the assistant write boundary; delivery resolves policy from these facts. */
295
+ tts?: AssistantDeliveryTtsFacts;
296
+ };
282
297
  api: Api;
283
298
  provider: Provider;
284
299
  model: string;
@@ -590,7 +605,7 @@ interface Model<TApi extends Api = Api> {
590
605
  cacheRead: number;
591
606
  cacheWrite: number;
592
607
  };
593
- contextWindow: number;
608
+ contextWindow?: number;
594
609
  /**
595
610
  * Optional effective runtime cap used for compaction/session budgeting.
596
611
  * Keeps provider/native contextWindow metadata intact while allowing a
@@ -625,4 +640,4 @@ type StreamFn = (model: Model, context: Context, options?: SimpleStreamOptions)
625
640
  type CompleteSimpleFn = (model: Model, context: Pick<Context, "systemPrompt" | "messages">, options?: SimpleStreamOptions) => Promise<AssistantMessage>;
626
641
  type ValidateToolArgumentsFn = (tool: Tool, toolCall: ToolCall) => unknown;
627
642
  //#endregion
628
- export { Usage as $, OpenRouterRouting as A, StreamFn as B, KnownImagesProvider as C, ModelThinkingLevel as D, Model as E, ProviderReplayState as F, ThinkingBudgets as G, StreamOptions as H, ProviderResponse as I, ThinkingLevelMap as J, ThinkingContent as K, ProviderStreamOptions as L, PROVIDER_POST_DISPATCH_AMBIGUITY_ERROR_CODE as M, Provider as N, OpenAICompletionsCompat as O, ProviderImagesOptions as P, Transport as Q, SimpleStreamOptions as R, KnownImagesApi as S, Message as T, TextContent as U, StreamFunction as V, TextSignatureV1 as W, ToolCall as X, Tool as Y, ToolResultMessage as Z, ImagesOptions as _, AssistantMessageEvent as a, ImagesStopReason as b, CacheRetention as c, ImageContent as d, UserMessage as et, ImagesApi as f, ImagesModel as g, ImagesInputContent as h, AssistantMessage as i, PROVIDER_FAILURE_WITH_OUTPUT_ERROR_CODE as j, OpenAIResponsesCompat as k, CompleteSimpleFn as l, ImagesFunction as m, Api as n, VercelGatewayRouting as nt, AssistantMessageEventStreamContract as o, ImagesContext as p, ThinkingLevel as q, AssistantImages as r, AssistantMessageEventStreamLike as s, AnthropicMessagesCompat as t, ValidateToolArgumentsFn as tt, Context as u, ImagesOutputContent as v, MaybePromise as w, KnownApi as x, ImagesProvider as y, StopReason as z };
643
+ export { Transport as $, OpenAIResponsesCompat as A, StopReason as B, KnownImagesApi as C, Model as D, Message as E, ProviderImagesOptions as F, TextSignatureV1 as G, StreamFunction as H, ProviderReplayState as I, ThinkingLevel as J, ThinkingBudgets as K, ProviderResponse as L, PROVIDER_FAILURE_WITH_OUTPUT_ERROR_CODE as M, PROVIDER_POST_DISPATCH_AMBIGUITY_ERROR_CODE as N, ModelThinkingLevel as O, Provider as P, ToolResultMessage as Q, ProviderStreamOptions as R, KnownApi as S, MaybePromise as T, StreamOptions as U, StreamFn as V, TextContent as W, Tool as X, ThinkingLevelMap as Y, ToolCall as Z, ImagesModel as _, AssistantMessage as a, ImagesProvider as b, AssistantMessageEventStreamLike as c, Context as d, Usage as et, ImageContent as f, ImagesInputContent as g, ImagesFunction as h, AssistantImages as i, OpenRouterRouting as j, OpenAICompletionsCompat as k, CacheRetention as l, ImagesContext as m, Api as n, ValidateToolArgumentsFn as nt, AssistantMessageEvent as o, ImagesApi as p, ThinkingContent as q, AssistantDeliveryTtsFacts as r, VercelGatewayRouting as rt, AssistantMessageEventStreamContract as s, AnthropicMessagesCompat as t, UserMessage as tt, CompleteSimpleFn as u, ImagesOptions as v, KnownImagesProvider as w, ImagesStopReason as x, ImagesOutputContent as y, SimpleStreamOptions as z };
package/dist/types.d.mts CHANGED
@@ -1,6 +1,6 @@
1
- import { a as requiresClaudeMandatoryAdaptiveThinking, c as resolveClaudeMythos5ModelIdentity, d as resolveClaudeSonnet5ModelIdentity, f as supportsClaude1MContext, g as supportsClaudeNativeXhighEffort, h as supportsClaudeNativeMaxEffort, i as requiresClaudeDefaultSampling, l as resolveClaudeNativeThinkingLevelMap, m as supportsClaudeFastMode, n as CLAUDE_OPUS_5_THINKING_PROFILE, o as resolveClaudeFable5ModelIdentity, p as supportsClaudeAdaptiveThinking, r as CLAUDE_SONNET_5_THINKING_PROFILE, s as resolveClaudeModelIdentity, t as CLAUDE_FABLE_5_THINKING_PROFILE, u as resolveClaudeOpus5ModelIdentity } from "./anthropic-SrGtwsJu.mjs";
1
+ import { a as requiresClaudeMandatoryAdaptiveThinking, c as resolveClaudeMythos5ModelIdentity, d as resolveClaudeSonnet5ModelIdentity, f as supportsClaude1MContext, g as supportsClaudeNativeXhighEffort, h as supportsClaudeNativeMaxEffort, i as requiresClaudeDefaultSampling, l as resolveClaudeNativeThinkingLevelMap, m as supportsClaudeFastMode, n as CLAUDE_OPUS_5_THINKING_PROFILE, o as resolveClaudeFable5ModelIdentity, p as supportsClaudeAdaptiveThinking, r as CLAUDE_SONNET_5_THINKING_PROFILE, s as resolveClaudeModelIdentity, t as CLAUDE_FABLE_5_THINKING_PROFILE, u as resolveClaudeOpus5ModelIdentity } from "./anthropic-BECQCNdF.mjs";
2
2
  import { a as extractDiagnosticError, i as createAssistantMessageDiagnostic, n as DiagnosticErrorInfo, o as formatThrownValue, r as appendAssistantMessageDiagnostic, t as AssistantMessageDiagnostic } from "./diagnostics-BaTA9eVl.mjs";
3
- import { $ as Usage, A as OpenRouterRouting, B as StreamFn, C as KnownImagesProvider, D as ModelThinkingLevel, E as Model, F as ProviderReplayState, G as ThinkingBudgets, H as StreamOptions, I as ProviderResponse, J as ThinkingLevelMap, K as ThinkingContent, L as ProviderStreamOptions, M as PROVIDER_POST_DISPATCH_AMBIGUITY_ERROR_CODE, N as Provider, O as OpenAICompletionsCompat, P as ProviderImagesOptions, Q as Transport, R as SimpleStreamOptions, S as KnownImagesApi, T as Message, U as TextContent, V as StreamFunction, W as TextSignatureV1, X as ToolCall, Y as Tool, Z as ToolResultMessage, _ as ImagesOptions, a as AssistantMessageEvent, b as ImagesStopReason, c as CacheRetention, d as ImageContent, et as UserMessage, f as ImagesApi, g as ImagesModel, h as ImagesInputContent, i as AssistantMessage, j as PROVIDER_FAILURE_WITH_OUTPUT_ERROR_CODE, k as OpenAIResponsesCompat, l as CompleteSimpleFn, m as ImagesFunction, n as Api, nt as VercelGatewayRouting, o as AssistantMessageEventStreamContract, p as ImagesContext, q as ThinkingLevel, r as AssistantImages, s as AssistantMessageEventStreamLike, t as AnthropicMessagesCompat, tt as ValidateToolArgumentsFn, u as Context, v as ImagesOutputContent, w as MaybePromise, x as KnownApi, y as ImagesProvider, z as StopReason } from "./types-BHNrPS1l.mjs";
4
- import { n as EventStream, r as createAssistantMessageEventStream, t as AssistantMessageEventStream } from "./event-stream-BP6AWT8j.mjs";
5
- import { n as validateToolCall, t as validateToolArguments } from "./validation-DT9SrFn3.mjs";
6
- export { AnthropicMessagesCompat, Api, AssistantImages, AssistantMessage, AssistantMessageDiagnostic, AssistantMessageEvent, AssistantMessageEventStream, AssistantMessageEventStreamContract, AssistantMessageEventStreamLike, CLAUDE_FABLE_5_THINKING_PROFILE, CLAUDE_OPUS_5_THINKING_PROFILE, CLAUDE_SONNET_5_THINKING_PROFILE, CacheRetention, CompleteSimpleFn, Context, DiagnosticErrorInfo, EventStream, ImageContent, ImagesApi, ImagesContext, ImagesFunction, ImagesInputContent, ImagesModel, ImagesOptions, ImagesOutputContent, ImagesProvider, ImagesStopReason, KnownApi, KnownImagesApi, KnownImagesProvider, MaybePromise, Message, Model, ModelThinkingLevel, OpenAICompletionsCompat, OpenAIResponsesCompat, OpenRouterRouting, PROVIDER_FAILURE_WITH_OUTPUT_ERROR_CODE, PROVIDER_POST_DISPATCH_AMBIGUITY_ERROR_CODE, Provider, ProviderImagesOptions, ProviderReplayState, ProviderResponse, ProviderStreamOptions, SimpleStreamOptions, StopReason, StreamFn, StreamFunction, StreamOptions, TextContent, TextSignatureV1, ThinkingBudgets, ThinkingContent, ThinkingLevel, ThinkingLevelMap, Tool, ToolCall, ToolResultMessage, Transport, Usage, UserMessage, ValidateToolArgumentsFn, VercelGatewayRouting, appendAssistantMessageDiagnostic, createAssistantMessageDiagnostic, createAssistantMessageEventStream, extractDiagnosticError, formatThrownValue, requiresClaudeDefaultSampling, requiresClaudeMandatoryAdaptiveThinking, resolveClaudeFable5ModelIdentity, resolveClaudeModelIdentity, resolveClaudeMythos5ModelIdentity, resolveClaudeNativeThinkingLevelMap, resolveClaudeOpus5ModelIdentity, resolveClaudeSonnet5ModelIdentity, supportsClaude1MContext, supportsClaudeAdaptiveThinking, supportsClaudeFastMode, supportsClaudeNativeMaxEffort, supportsClaudeNativeXhighEffort, validateToolArguments, validateToolCall };
3
+ import { $ as Transport, A as OpenAIResponsesCompat, B as StopReason, C as KnownImagesApi, D as Model, E as Message, F as ProviderImagesOptions, G as TextSignatureV1, H as StreamFunction, I as ProviderReplayState, J as ThinkingLevel, K as ThinkingBudgets, L as ProviderResponse, M as PROVIDER_FAILURE_WITH_OUTPUT_ERROR_CODE, N as PROVIDER_POST_DISPATCH_AMBIGUITY_ERROR_CODE, O as ModelThinkingLevel, P as Provider, Q as ToolResultMessage, R as ProviderStreamOptions, S as KnownApi, T as MaybePromise, U as StreamOptions, V as StreamFn, W as TextContent, X as Tool, Y as ThinkingLevelMap, Z as ToolCall, _ as ImagesModel, a as AssistantMessage, b as ImagesProvider, c as AssistantMessageEventStreamLike, d as Context, et as Usage, f as ImageContent, g as ImagesInputContent, h as ImagesFunction, i as AssistantImages, j as OpenRouterRouting, k as OpenAICompletionsCompat, l as CacheRetention, m as ImagesContext, n as Api, nt as ValidateToolArgumentsFn, o as AssistantMessageEvent, p as ImagesApi, q as ThinkingContent, r as AssistantDeliveryTtsFacts, rt as VercelGatewayRouting, s as AssistantMessageEventStreamContract, t as AnthropicMessagesCompat, tt as UserMessage, u as CompleteSimpleFn, v as ImagesOptions, w as KnownImagesProvider, x as ImagesStopReason, y as ImagesOutputContent, z as SimpleStreamOptions } from "./types-DTAP49HF.mjs";
4
+ import { n as EventStream, r as createAssistantMessageEventStream, t as AssistantMessageEventStream } from "./event-stream-D91-ohD_.mjs";
5
+ import { n as validateToolCall, t as validateToolArguments } from "./validation-DYNNrU9u.mjs";
6
+ export { AnthropicMessagesCompat, Api, AssistantDeliveryTtsFacts, AssistantImages, AssistantMessage, AssistantMessageDiagnostic, AssistantMessageEvent, AssistantMessageEventStream, AssistantMessageEventStreamContract, AssistantMessageEventStreamLike, CLAUDE_FABLE_5_THINKING_PROFILE, CLAUDE_OPUS_5_THINKING_PROFILE, CLAUDE_SONNET_5_THINKING_PROFILE, CacheRetention, CompleteSimpleFn, Context, DiagnosticErrorInfo, EventStream, ImageContent, ImagesApi, ImagesContext, ImagesFunction, ImagesInputContent, ImagesModel, ImagesOptions, ImagesOutputContent, ImagesProvider, ImagesStopReason, KnownApi, KnownImagesApi, KnownImagesProvider, MaybePromise, Message, Model, ModelThinkingLevel, OpenAICompletionsCompat, OpenAIResponsesCompat, OpenRouterRouting, PROVIDER_FAILURE_WITH_OUTPUT_ERROR_CODE, PROVIDER_POST_DISPATCH_AMBIGUITY_ERROR_CODE, Provider, ProviderImagesOptions, ProviderReplayState, ProviderResponse, ProviderStreamOptions, SimpleStreamOptions, StopReason, StreamFn, StreamFunction, StreamOptions, TextContent, TextSignatureV1, ThinkingBudgets, ThinkingContent, ThinkingLevel, ThinkingLevelMap, Tool, ToolCall, ToolResultMessage, Transport, Usage, UserMessage, ValidateToolArgumentsFn, VercelGatewayRouting, appendAssistantMessageDiagnostic, createAssistantMessageDiagnostic, createAssistantMessageEventStream, extractDiagnosticError, formatThrownValue, requiresClaudeDefaultSampling, requiresClaudeMandatoryAdaptiveThinking, resolveClaudeFable5ModelIdentity, resolveClaudeModelIdentity, resolveClaudeMythos5ModelIdentity, resolveClaudeNativeThinkingLevelMap, resolveClaudeOpus5ModelIdentity, resolveClaudeSonnet5ModelIdentity, supportsClaude1MContext, supportsClaudeAdaptiveThinking, supportsClaudeFastMode, supportsClaudeNativeMaxEffort, supportsClaudeNativeXhighEffort, validateToolArguments, validateToolCall };
package/dist/types.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { a as requiresClaudeMandatoryAdaptiveThinking, c as resolveClaudeMythos5ModelIdentity, d as resolveClaudeSonnet5ModelIdentity, f as supportsClaude1MContext, g as supportsClaudeNativeXhighEffort, h as supportsClaudeNativeMaxEffort, i as requiresClaudeDefaultSampling, l as resolveClaudeNativeThinkingLevelMap, m as supportsClaudeFastMode, n as CLAUDE_OPUS_5_THINKING_PROFILE, o as resolveClaudeFable5ModelIdentity, p as supportsClaudeAdaptiveThinking, r as CLAUDE_SONNET_5_THINKING_PROFILE, s as resolveClaudeModelIdentity, t as CLAUDE_FABLE_5_THINKING_PROFILE, u as resolveClaudeOpus5ModelIdentity } from "./anthropic-JsNA5KCu.mjs";
1
+ import { a as requiresClaudeMandatoryAdaptiveThinking, c as resolveClaudeMythos5ModelIdentity, d as resolveClaudeSonnet5ModelIdentity, f as supportsClaude1MContext, g as supportsClaudeNativeXhighEffort, h as supportsClaudeNativeMaxEffort, i as requiresClaudeDefaultSampling, l as resolveClaudeNativeThinkingLevelMap, m as supportsClaudeFastMode, n as CLAUDE_OPUS_5_THINKING_PROFILE, o as resolveClaudeFable5ModelIdentity, p as supportsClaudeAdaptiveThinking, r as CLAUDE_SONNET_5_THINKING_PROFILE, s as resolveClaudeModelIdentity, t as CLAUDE_FABLE_5_THINKING_PROFILE, u as resolveClaudeOpus5ModelIdentity } from "./anthropic-BQXQudmA.mjs";
2
2
  import { n as PROVIDER_POST_DISPATCH_AMBIGUITY_ERROR_CODE, t as PROVIDER_FAILURE_WITH_OUTPUT_ERROR_CODE } from "./types-BDdaOVi2.mjs";
3
3
  import { i as formatThrownValue, n as createAssistantMessageDiagnostic, r as extractDiagnosticError, t as appendAssistantMessageDiagnostic } from "./diagnostics-COpOtRwq.mjs";
4
4
  import { n as EventStream, r as createAssistantMessageEventStream, t as AssistantMessageEventStream } from "./event-stream-uSMZJ3FA.mjs";
@@ -1,4 +1,4 @@
1
- import { X as ToolCall, Y as Tool } from "./types-BHNrPS1l.mjs";
1
+ import { X as Tool, Z as ToolCall } from "./types-DTAP49HF.mjs";
2
2
 
3
3
  //#region packages/llm-core/src/validation.d.ts
4
4
  /** Finds the target tool and validates/coerces a model-emitted tool call. */
@@ -1,2 +1,2 @@
1
- import { n as validateToolCall, t as validateToolArguments } from "./validation-DT9SrFn3.mjs";
1
+ import { n as validateToolCall, t as validateToolArguments } from "./validation-DYNNrU9u.mjs";
2
2
  export { validateToolArguments, validateToolCall };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openclaw/ai",
3
- "version": "2026.8.1-beta.2",
3
+ "version": "2026.8.1-beta.3",
4
4
  "description": "Reusable model provider adapters and streaming runtime from OpenClaw",
5
5
  "keywords": [
6
6
  "ai",
@@ -1,155 +0,0 @@
1
- import { r as createAssistantMessageEventStream } from "./event-stream-uSMZJ3FA.mjs";
2
- import { t as sanitizeSurrogates } from "./sanitize-unicode-BYqrYtC_.mjs";
3
- import { i as transformMessages } from "./host-DTqNc7ad.mjs";
4
- import { i as asOptionalRecord, t as asNonArrayRecord } from "./record-coerce-DdXsgUd_.mjs";
5
- import { n as projectProviderError } from "./provider-error-BUwEnjXq.mjs";
6
- //#region packages/ai/src/transports/transport-stream-shared.ts
7
- const EMPTY_TOOL_RESULT_TEXT = "(no output)";
8
- function sanitizeTransportPayloadText(text) {
9
- if (typeof text !== "string") return "";
10
- return sanitizeSurrogates(text);
11
- }
12
- function sanitizeNonEmptyTransportPayloadText(text, fallback = EMPTY_TOOL_RESULT_TEXT) {
13
- const sanitized = sanitizeTransportPayloadText(text);
14
- return sanitized.trim().length > 0 ? sanitized : fallback;
15
- }
16
- function coerceTransportToolCallArguments(argumentsValue) {
17
- const argumentsRecord = asOptionalRecord(argumentsValue);
18
- if (argumentsRecord) return argumentsRecord;
19
- if (typeof argumentsValue === "string") try {
20
- return asNonArrayRecord(JSON.parse(argumentsValue));
21
- } catch {}
22
- return {};
23
- }
24
- function mergeTransportHeaders(...headerSources) {
25
- const merged = {};
26
- for (const headers of headerSources) if (headers) Object.assign(merged, headers);
27
- return Object.keys(merged).length > 0 ? merged : void 0;
28
- }
29
- function mergeTransportMetadata(payload, metadata) {
30
- if (!metadata || Object.keys(metadata).length === 0) return payload;
31
- const existingMetadata = asOptionalRecord(payload.metadata);
32
- return {
33
- ...payload,
34
- metadata: {
35
- ...existingMetadata,
36
- ...metadata
37
- }
38
- };
39
- }
40
- function createEmptyTransportUsage() {
41
- return {
42
- input: 0,
43
- output: 0,
44
- cacheRead: 0,
45
- cacheWrite: 0,
46
- totalTokens: 0,
47
- cost: {
48
- input: 0,
49
- output: 0,
50
- cacheRead: 0,
51
- cacheWrite: 0,
52
- total: 0
53
- }
54
- };
55
- }
56
- function createWritableTransportEventStream() {
57
- const eventStream = createAssistantMessageEventStream();
58
- return {
59
- eventStream,
60
- stream: eventStream
61
- };
62
- }
63
- /**
64
- * Abort error to surface for an aborted `signal`.
65
- *
66
- * Rethrows the caller's abort reason only when it carries a `code`, so that code
67
- * survives into `errorCode` on the persisted assistant message and consumers can
68
- * recognize an abort's origin without matching error text. A default
69
- * `abort()` reason is an uncoded DOMException that carries nothing the synthetic
70
- * error does not, so it keeps the "Request was aborted" text every transport
71
- * already emits rather than churning it.
72
- */
73
- function transportAbortError(signal) {
74
- const reason = signal?.reason;
75
- return reason instanceof Error && typeof reason.code === "string" ? reason : /* @__PURE__ */ new Error("Request was aborted");
76
- }
77
- /** Run a provider-response hook before start/body consumption inside the first-event deadline. */
78
- function withProviderResponseHook(params) {
79
- return { async *[Symbol.asyncIterator]() {
80
- let onAbort;
81
- try {
82
- if (params.signal.aborted) throw transportAbortError(params.signal);
83
- if (params.hook) await Promise.race([Promise.resolve().then(params.hook), new Promise((_resolve, reject) => {
84
- onAbort = () => reject(transportAbortError(params.signal));
85
- params.signal.addEventListener("abort", onAbort, { once: true });
86
- })]);
87
- } catch (error) {
88
- params.abort(error instanceof Error ? error : new Error(String(error)));
89
- throw error;
90
- } finally {
91
- if (onAbort) params.signal.removeEventListener("abort", onAbort);
92
- }
93
- if (params.signal.aborted) throw transportAbortError(params.signal);
94
- params.onReady?.();
95
- if (params.stream) yield* params.stream;
96
- } };
97
- }
98
- function finalizeTransportStream(params) {
99
- const { stream, output, signal } = params;
100
- if (signal?.aborted) throw transportAbortError(signal);
101
- if (output.stopReason === "aborted" || output.stopReason === "error") throw new Error(output.errorMessage ?? "An unknown error occurred");
102
- stream.push({
103
- type: "done",
104
- reason: output.stopReason,
105
- message: output
106
- });
107
- stream.end();
108
- }
109
- /** @deprecated Use projectProviderError. v2026.7.2-beta.5 compatibility; remove after 2026.10. */
110
- function assignTransportErrorDetails(output, error, signal) {
111
- Object.assign(output, projectProviderError(error, signal));
112
- }
113
- function failTransportStream(params) {
114
- const { stream, output, signal, error, cleanup } = params;
115
- cleanup?.();
116
- assignTransportErrorDetails(output, error, signal);
117
- stream.push({
118
- type: "error",
119
- reason: output.stopReason,
120
- error: output
121
- });
122
- stream.end();
123
- }
124
- //#endregion
125
- //#region packages/ai/src/provider-transcript-transform.ts
126
- const IMAGE_OMISSION = "(image omitted: model does not support images)";
127
- const VIDEO_OMISSION = "(video omitted: provider does not support video input)";
128
- function projectUserMediaForTransport(content, supportsImages, supportsVideo) {
129
- const result = [];
130
- for (const block of content) {
131
- if (block.type === "text" || block.type === "image" && supportsImages || block.type === "video" && supportsVideo) {
132
- result.push(block);
133
- continue;
134
- }
135
- const text = block.type === "video" ? VIDEO_OMISSION : IMAGE_OMISSION;
136
- const previous = result.at(-1);
137
- if (block.data.trim() && !(previous?.type === "text" && previous.text === text)) result.push({
138
- type: "text",
139
- text
140
- });
141
- }
142
- return result;
143
- }
144
- function transformProviderMessages(messages, model, normalizeToolCallId) {
145
- const target = {
146
- ...model,
147
- input: model.input.filter((type) => type !== "video")
148
- };
149
- return transformMessages(messages.map((message) => {
150
- if (message.role !== "user" || !Array.isArray(message.content)) return message;
151
- return Object.assign({}, message, { content: projectUserMediaForTransport(message.content, model.input.includes("image"), model.api === "openai-completions" && model.input.includes("video")) });
152
- }), target, normalizeToolCallId);
153
- }
154
- //#endregion
155
- export { createWritableTransportEventStream as a, mergeTransportHeaders as c, sanitizeTransportPayloadText as d, transportAbortError as f, createEmptyTransportUsage as i, mergeTransportMetadata as l, assignTransportErrorDetails as n, failTransportStream as o, withProviderResponseHook as p, coerceTransportToolCallArguments as r, finalizeTransportStream as s, transformProviderMessages as t, sanitizeNonEmptyTransportPayloadText as u };
@@ -1,117 +0,0 @@
1
- import { n as normalizeLowercaseStringOrEmpty } from "./string-coerce-fsri9iCu.mjs";
2
- import { t as sanitizeSurrogates } from "./sanitize-unicode-BYqrYtC_.mjs";
3
- //#region packages/ai/src/utils/prompt-cache-stability.ts
4
- /**
5
- * Prompt-cache normalization helpers. They keep generated prompt sections
6
- * deterministic across platform newlines, trailing whitespace, and input
7
- * ordering.
8
- */
9
- /** Canonicalizes provider tool order without relying on host locale settings. */
10
- function sortPromptCacheToolsByName(tools) {
11
- const compareText = (left, right) => {
12
- const leftText = left ?? "";
13
- const rightText = right ?? "";
14
- return leftText < rightText ? -1 : leftText > rightText ? 1 : 0;
15
- };
16
- return tools.toSorted((left, right) => compareText(left.wireName ?? left.name, right.wireName ?? right.name) || compareText(left.description, right.description));
17
- }
18
- /** Normalize structured prompt text before hashing or snapshot comparison. */
19
- function normalizeStructuredPromptSection(text) {
20
- return sanitizeSurrogates(text).replace(/\r\n?/g, "\n").replace(/[ \t]+$/gm, "").trim();
21
- }
22
- /** Normalize, de-dupe, and sort capability ids for stable prompt payloads. */
23
- function normalizePromptCapabilityIds(capabilities) {
24
- const seen = /* @__PURE__ */ new Set();
25
- const normalized = [];
26
- for (const capability of capabilities) {
27
- const value = normalizeLowercaseStringOrEmpty(normalizeStructuredPromptSection(capability));
28
- if (!value || seen.has(value)) continue;
29
- seen.add(value);
30
- normalized.push(value);
31
- }
32
- return normalized.toSorted((left, right) => left.localeCompare(right));
33
- }
34
- //#endregion
35
- //#region packages/ai/src/utils/system-prompt-cache-boundary.ts
36
- /**
37
- * System prompt cache-boundary helpers.
38
- *
39
- * Keeps stable prompt prefixes separate from dynamic runtime additions for provider prompt caching.
40
- */
41
- const SYSTEM_PROMPT_CACHE_BOUNDARY = "\n<!-- OPENCLAW_CACHE_BOUNDARY -->\n";
42
- function stripSystemPromptCacheBoundary(text) {
43
- return text.replaceAll(SYSTEM_PROMPT_CACHE_BOUNDARY, "\n");
44
- }
45
- function ensureSystemPromptCacheBoundary(systemPrompt) {
46
- if (systemPrompt.trim().length === 0) return systemPrompt;
47
- return systemPrompt.includes("\n<!-- OPENCLAW_CACHE_BOUNDARY -->\n") ? systemPrompt : `${systemPrompt}${SYSTEM_PROMPT_CACHE_BOUNDARY}`;
48
- }
49
- function splitSystemPromptCacheBoundary(text) {
50
- const boundaryIndex = text.indexOf(SYSTEM_PROMPT_CACHE_BOUNDARY);
51
- if (boundaryIndex === -1) return;
52
- return {
53
- stablePrefix: text.slice(0, boundaryIndex).trimEnd(),
54
- dynamicSuffix: text.slice(boundaryIndex + 34).trimStart()
55
- };
56
- }
57
- function prependSystemPromptAdditionAfterCacheBoundary(params) {
58
- const systemPromptAddition = typeof params.systemPromptAddition === "string" ? normalizeStructuredPromptSection(params.systemPromptAddition) : "";
59
- if (!systemPromptAddition) return params.systemPrompt;
60
- if (params.systemPrompt.trim().length === 0) return systemPromptAddition;
61
- const split = splitSystemPromptCacheBoundary(params.systemPrompt);
62
- if (!split) return `${systemPromptAddition}\n\n${params.systemPrompt}`;
63
- const dynamicSuffix = split.dynamicSuffix ? normalizeStructuredPromptSection(split.dynamicSuffix) : "";
64
- if (!dynamicSuffix) return `${split.stablePrefix}${SYSTEM_PROMPT_CACHE_BOUNDARY}${systemPromptAddition}`;
65
- return `${split.stablePrefix}${SYSTEM_PROMPT_CACHE_BOUNDARY}${systemPromptAddition}\n\n${dynamicSuffix}`;
66
- }
67
- //#endregion
68
- //#region packages/ai/src/providers/simple-options.ts
69
- function buildBaseOptions(model, options, apiKey) {
70
- const firstEventOptions = options;
71
- return {
72
- temperature: options?.temperature,
73
- maxTokens: options?.maxTokens,
74
- stop: options?.stop,
75
- signal: options?.signal,
76
- apiKey: apiKey || options?.apiKey,
77
- transport: options?.transport,
78
- cacheRetention: options?.cacheRetention,
79
- sessionId: options?.sessionId,
80
- promptCacheKey: options?.promptCacheKey,
81
- headers: options?.headers,
82
- onPayload: options?.onPayload,
83
- onResponse: options?.onResponse,
84
- timeoutMs: options?.timeoutMs,
85
- firstEventTimeoutMs: firstEventOptions?.firstEventTimeoutMs,
86
- onFirstEventTimeout: firstEventOptions?.onFirstEventTimeout,
87
- maxRetries: options?.maxRetries,
88
- maxRetryDelayMs: options?.maxRetryDelayMs,
89
- metadata: options?.metadata
90
- };
91
- }
92
- function clampMaxTokensToModel(model, requestedMaxTokens) {
93
- return requestedMaxTokens === void 0 ? void 0 : Math.max(1, Math.min(requestedMaxTokens, model.maxTokens));
94
- }
95
- function clampReasoning(effort) {
96
- return effort === "xhigh" ? "high" : effort;
97
- }
98
- function adjustMaxTokensForThinking(baseMaxTokens, modelMaxTokens, reasoningLevel, customBudgets) {
99
- const budgets = {
100
- minimal: 1024,
101
- low: 2048,
102
- medium: 8192,
103
- high: 16384,
104
- max: 32768,
105
- ...customBudgets
106
- };
107
- const minOutputTokens = 1024;
108
- let thinkingBudget = budgets[clampReasoning(reasoningLevel)];
109
- const maxTokens = baseMaxTokens === void 0 ? modelMaxTokens : Math.min(baseMaxTokens + thinkingBudget, modelMaxTokens);
110
- if (maxTokens <= thinkingBudget) thinkingBudget = Math.max(0, maxTokens - minOutputTokens);
111
- return {
112
- maxTokens,
113
- thinkingBudget
114
- };
115
- }
116
- //#endregion
117
- export { SYSTEM_PROMPT_CACHE_BOUNDARY as a, splitSystemPromptCacheBoundary as c, normalizeStructuredPromptSection as d, sortPromptCacheToolsByName as f, clampReasoning as i, stripSystemPromptCacheBoundary as l, buildBaseOptions as n, ensureSystemPromptCacheBoundary as o, clampMaxTokensToModel as r, prependSystemPromptAdditionAfterCacheBoundary as s, adjustMaxTokensForThinking as t, normalizePromptCapabilityIds as u };