@openclaw/ai 2026.8.1-beta.1 → 2026.8.1-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.
- package/dist/{anthropic-CE-7SkF6.mjs → anthropic-B6dLpq5L.mjs} +37 -22
- package/dist/{src-QkygScBs.mjs → anthropic-JsNA5KCu.mjs} +0 -1
- package/dist/{anthropic-usage-Ma4iX6uG.mjs → anthropic-compaction-replay-8lJNKXOE.mjs} +225 -102
- package/dist/anthropic-payload-policy-CiEuQS72.d.mts +49 -0
- package/dist/{api-registry-EpJoVwM1.d.mts → api-registry-k3zTz0cV.d.mts} +1 -1
- package/dist/{azure-openai-responses-Cc_kasye.mjs → azure-openai-responses-mxIOtUnn.mjs} +23 -29
- package/dist/diagnostics.d.mts +24 -1
- package/dist/diagnostics.mjs +2 -1
- package/dist/{event-stream-DRmDMRHH.d.mts → event-stream-BP6AWT8j.d.mts} +3 -1
- package/dist/{event-stream-CEV9t6da.mjs → event-stream-uSMZJ3FA.mjs} +16 -3
- package/dist/event-stream.d.mts +1 -1
- package/dist/event-stream.mjs +1 -1
- package/dist/{google-CGQu21aw.mjs → google-C7h2QzDX.mjs} +4 -4
- package/dist/{google-shared-Cq2UKx1l.mjs → google-shared-B0Qr9OR7.mjs} +9 -18
- package/dist/google-thinking-level-C-V3tecN.mjs +9 -0
- package/dist/{google-vertex-CusxWzvE.mjs → google-vertex-Bhc3TjDl.mjs} +5 -4
- package/dist/{llm-request-activity-BjtkplhG.mjs → headers-DdOQtGuU.mjs} +9 -1
- package/dist/{host-Bl7Kgddo.mjs → host-DTqNc7ad.mjs} +227 -168
- package/dist/{host-Dn4_SZI2.d.mts → host-vWgMMhiJ.d.mts} +9 -4
- package/dist/index.d.mts +6 -6
- package/dist/index.mjs +7 -5
- package/dist/internal/anthropic.d.mts +13 -5
- package/dist/internal/anthropic.mjs +5 -5
- package/dist/internal/openai-responses-payload-policy.d.mts +3 -0
- package/dist/internal/openai-responses-payload-policy.mjs +3 -0
- package/dist/internal/openai.d.mts +6 -6
- package/dist/internal/openai.mjs +8 -7
- package/dist/internal/runtime.d.mts +17 -5
- package/dist/internal/runtime.mjs +85 -73
- package/dist/internal/shared.d.mts +1 -6
- package/dist/internal/shared.mjs +3 -4
- package/dist/{json-parse-BvXNt1-7.mjs → json-parse-CDnesDM_.mjs} +4 -6
- package/dist/{mistral-Dx6VzNjf.mjs → mistral-CEWoQI_g.mjs} +26 -45
- package/dist/{number-coercion-1Miyb5MO.mjs → number-coercion-H9qHik3g.mjs} +7 -2
- package/dist/openai-chatgpt-jwt-KWcgd0d_.mjs +19 -0
- package/dist/{openai-chatgpt-responses-SC9m0FSf.mjs → openai-chatgpt-responses-CrPmqERt.mjs} +225 -144
- package/dist/{openai-completions-BaIpl93j.mjs → openai-completions-BPnt4Sml.mjs} +28 -43
- package/dist/openai-completions-compat-Dt3dcawL.d.mts +43 -0
- package/dist/{openai-responses-Bdx3V_Yu.mjs → openai-responses-DhIKtOup.mjs} +17 -24
- package/dist/openai-responses-contracts-CyfIkQi5.mjs +253 -0
- package/dist/openai-responses-contracts-XpZJxrRG.d.mts +68 -0
- package/dist/openai-responses-payload-policy-BDxV-W0c.mjs +206 -0
- package/dist/openai-responses-payload-policy-BSs371VM.d.mts +40 -0
- package/dist/{openai-responses-prompt-observer-internal-DDZPxRfr.mjs → openai-responses-prompt-observer-internal-DgNTYnRY.mjs} +3 -3
- package/dist/{openai-responses-stream-internal-Bl8YyVtF.mjs → openai-responses-shared-DXIt3iY5.mjs} +1211 -908
- package/dist/{openai-reasoning-compat-DKebnIBL.mjs → openai-stop-reason-BkFkqqK0.mjs} +198 -172
- package/dist/{openai-transport-shared-Cipt7egQ.mjs → openai-tool-projection-CY04OcvQ.mjs} +151 -128
- package/dist/provider-error-BUwEnjXq.mjs +429 -0
- package/dist/provider-error-CzNw4BWX.d.mts +12 -0
- package/dist/{provider-options-C5kYML7i.d.mts → provider-options-B96RdNpH.d.mts} +9 -3
- package/dist/provider-transcript-transform-ePx-Bbfr.mjs +155 -0
- package/dist/provider-types.d.mts +31 -0
- package/dist/provider-types.mjs +8 -0
- package/dist/providers.d.mts +1 -1
- package/dist/providers.mjs +17 -19
- package/dist/{reasoning-tag-text-partitioner-CGDyLWUR.mjs → reasoning-tag-text-partitioner-rnPwX2pg.mjs} +14 -8
- package/dist/record-coerce-DdXsgUd_.mjs +23 -0
- package/dist/{model-utils-Dau5dlgm.mjs → sanitize-unicode-BYqrYtC_.mjs} +28 -2
- package/dist/session-resources-CkR4WWy1.mjs +21 -0
- package/dist/simple-options-D58D5Kvw.mjs +117 -0
- package/dist/src-D2H6yKkH.mjs +2 -0
- package/dist/{stream-first-event-timeout-BIBomOGq.mjs → stream-first-event-timeout-MK28puvq.mjs} +2 -2
- package/dist/string-coerce-fsri9iCu.mjs +34 -0
- package/dist/{tool-schema-json-projection-B1b-XCn5.mjs → tool-schema-json-projection-q5d7QX5c.mjs} +5 -7
- package/dist/transport-utils-DJqkxbhC.mjs +138 -0
- package/dist/transports.d.mts +135 -178
- package/dist/transports.mjs +1732 -1294
- package/dist/types-BDdaOVi2.mjs +6 -0
- package/dist/{types-CH7ReIcU.d.mts → types-BHNrPS1l.d.mts} +19 -1
- package/dist/types.d.mts +4 -4
- package/dist/types.mjs +6 -4
- package/dist/utf16-slice-CvGodqok.mjs +29 -0
- package/dist/{validation-DAa_yFOM.mjs → validation-B61OhAio.mjs} +6 -6
- package/dist/{validation-CcPcuEbR.d.mts → validation-DT9SrFn3.d.mts} +1 -1
- package/dist/validation.d.mts +1 -1
- package/dist/validation.mjs +1 -1
- package/package.json +15 -1
- package/dist/headers-B_e4-1J0.mjs +0 -9
- package/dist/openai-chatgpt-jwt-DhAAzLkj.mjs +0 -39
- package/dist/openai-responses-contracts-BBKBfAqR.d.mts +0 -116
- package/dist/openai-responses-shared-CCyMvg7M.mjs +0 -403
- package/dist/provider-error-DI0Ts28U.mjs +0 -47
- package/dist/sanitize-unicode-DT5o51ur.mjs +0 -26
- package/dist/tool-result-text-Dvkp2Dus.mjs +0 -274
- package/dist/transform-messages-DfjpNXNQ.mjs +0 -2
- package/dist/transport-stream-shared-CPNv7A3r.mjs +0 -297
|
@@ -1,39 +1,9 @@
|
|
|
1
|
-
import { a as requiresClaudeMandatoryAdaptiveThinking, c as resolveClaudeMythos5ModelIdentity, d as resolveClaudeSonnet5ModelIdentity, g as supportsClaudeNativeXhighEffort, h as supportsClaudeNativeMaxEffort, i as requiresClaudeDefaultSampling, l as resolveClaudeNativeThinkingLevelMap, o as resolveClaudeFable5ModelIdentity, u as resolveClaudeOpus5ModelIdentity } from "./
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
}
|
|
8
|
-
//#endregion
|
|
9
|
-
//#region packages/normalization-core/src/string-coerce.ts
|
|
10
|
-
/** Reads a value only when it is already a string, preserving whitespace. */
|
|
11
|
-
function readStringValue(value) {
|
|
12
|
-
return typeof value === "string" ? value : void 0;
|
|
13
|
-
}
|
|
14
|
-
/** Trims string input and returns null for non-strings or empty strings. */
|
|
15
|
-
function normalizeNullableString(value) {
|
|
16
|
-
if (typeof value !== "string") return null;
|
|
17
|
-
const trimmed = value.trim();
|
|
18
|
-
return trimmed ? trimmed : null;
|
|
19
|
-
}
|
|
20
|
-
/** Trims string input and returns undefined for non-strings or empty strings. */
|
|
21
|
-
function normalizeOptionalString(value) {
|
|
22
|
-
return normalizeNullableString(value) ?? void 0;
|
|
23
|
-
}
|
|
24
|
-
/** Lowercases a normalized optional string. */
|
|
25
|
-
function normalizeOptionalLowercaseString(value) {
|
|
26
|
-
return normalizeOptionalString(value)?.toLowerCase();
|
|
27
|
-
}
|
|
28
|
-
/** Lowercases a normalized string or returns an empty string when absent. */
|
|
29
|
-
function normalizeLowercaseStringOrEmpty(value) {
|
|
30
|
-
return normalizeOptionalLowercaseString(value) ?? "";
|
|
31
|
-
}
|
|
32
|
-
/** Type guard for strings that remain non-empty after trimming. */
|
|
33
|
-
function hasNonEmptyString(value) {
|
|
34
|
-
return normalizeOptionalString(value) !== void 0;
|
|
35
|
-
}
|
|
36
|
-
//#endregion
|
|
1
|
+
import { a as requiresClaudeMandatoryAdaptiveThinking, c as resolveClaudeMythos5ModelIdentity, d as resolveClaudeSonnet5ModelIdentity, g as supportsClaudeNativeXhighEffort, h as supportsClaudeNativeMaxEffort, i as requiresClaudeDefaultSampling, l as resolveClaudeNativeThinkingLevelMap, o as resolveClaudeFable5ModelIdentity, u as resolveClaudeOpus5ModelIdentity } from "./anthropic-JsNA5KCu.mjs";
|
|
2
|
+
import "./src-D2H6yKkH.mjs";
|
|
3
|
+
import { n as normalizeLowercaseStringOrEmpty } from "./string-coerce-fsri9iCu.mjs";
|
|
4
|
+
import { i as clampThinkingLevel, t as sanitizeSurrogates } from "./sanitize-unicode-BYqrYtC_.mjs";
|
|
5
|
+
import { a as isRecord } from "./record-coerce-DdXsgUd_.mjs";
|
|
6
|
+
import { t as truncateUtf16Safe } from "./utf16-slice-CvGodqok.mjs";
|
|
37
7
|
//#region packages/ai/src/providers/anthropic-model-contract.ts
|
|
38
8
|
const ANTHROPIC_CLAUDE_CODE_VERSION = "2.1.75";
|
|
39
9
|
const ANTHROPIC_CLAUDE_CODE_BILLING_SYSTEM_BLOCK = `x-anthropic-billing-header: cc_version=${ANTHROPIC_CLAUDE_CODE_VERSION}; cc_entrypoint=sdk-cli;`;
|
|
@@ -92,6 +62,7 @@ function mapAnthropicStopReason(reason) {
|
|
|
92
62
|
switch (reason) {
|
|
93
63
|
case "end_turn":
|
|
94
64
|
case "pause_turn":
|
|
65
|
+
case "compaction":
|
|
95
66
|
case "stop_sequence": return "stop";
|
|
96
67
|
case "max_tokens": return "length";
|
|
97
68
|
case "tool_use": return "toolUse";
|
|
@@ -150,160 +121,248 @@ function resolveModelBoundThinkingReplayMode(params) {
|
|
|
150
121
|
return sourceApi === targetApi && sourceIdentity === targetIdentity ? "preserve" : "drop";
|
|
151
122
|
}
|
|
152
123
|
//#endregion
|
|
124
|
+
//#region packages/ai/src/providers/tool-result-text.ts
|
|
125
|
+
const PROVIDER_TOOL_RESULT_MAX_CHARS = 8e3;
|
|
126
|
+
const IMAGE_TOOL_RESULT_TYPES = /* @__PURE__ */ new Set([
|
|
127
|
+
"image",
|
|
128
|
+
"image_url",
|
|
129
|
+
"input_image"
|
|
130
|
+
]);
|
|
131
|
+
const AUDIO_TOOL_RESULT_TYPES = /* @__PURE__ */ new Set([
|
|
132
|
+
"audio",
|
|
133
|
+
"input_audio",
|
|
134
|
+
"output_audio"
|
|
135
|
+
]);
|
|
136
|
+
const MEDIA_ONLY_TOOL_RESULT_TYPES = /* @__PURE__ */ new Set([...IMAGE_TOOL_RESULT_TYPES, ...AUDIO_TOOL_RESULT_TYPES]);
|
|
137
|
+
const INLINE_DATA_URI_PATTERN = /(^|[^A-Za-z0-9_])data:([a-z][a-z0-9.+-]*\/[a-z0-9.+-]+(?:;[a-z0-9.+-]+=[^,;"'\s]+|;base64)*,[^\s"'<>)]+)/gi;
|
|
138
|
+
const MIME_KEY_CANDIDATES = [
|
|
139
|
+
"mimeType",
|
|
140
|
+
"mime_type",
|
|
141
|
+
"mediaType",
|
|
142
|
+
"media_type",
|
|
143
|
+
"contentType",
|
|
144
|
+
"content_type"
|
|
145
|
+
];
|
|
146
|
+
const TEXTUAL_MIME_PATTERN = /^(?:text\/|application\/(?:json|ld\+json|x-ndjson|xml|javascript|x-www-form-urlencoded)|[^/]+\/[^+]+\+(?:json|xml)$)/i;
|
|
147
|
+
const OPAQUE_OR_BINARY_FIELD_RE = /^(?:blob|buffer|bytes|encrypted_content|encrypted_stdout)$/i;
|
|
148
|
+
function readMimeType(value) {
|
|
149
|
+
if (!isRecord(value)) return;
|
|
150
|
+
for (const key of MIME_KEY_CANDIDATES) {
|
|
151
|
+
const mimeType = value[key];
|
|
152
|
+
if (typeof mimeType === "string" && mimeType.trim().length > 0) return mimeType;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
function isBinaryMimeType(mimeType) {
|
|
156
|
+
const normalized = mimeType.split(";", 1)[0]?.trim().toLowerCase();
|
|
157
|
+
return normalized ? !TEXTUAL_MIME_PATTERN.test(normalized) : false;
|
|
158
|
+
}
|
|
159
|
+
function describeOmittedValue(value, label) {
|
|
160
|
+
const length = typeof value === "string" ? value.length : JSON.stringify(value)?.length;
|
|
161
|
+
return length ? `[${label} omitted: ${length} chars]` : `[${label} omitted]`;
|
|
162
|
+
}
|
|
163
|
+
function redactInlineDataUris(value) {
|
|
164
|
+
return value.replace(INLINE_DATA_URI_PATTERN, (_match, prefix, uri) => `${prefix}[inline data URI: ${uri.length} chars]`);
|
|
165
|
+
}
|
|
166
|
+
function redactStructuredTextValue(value) {
|
|
167
|
+
const host = getAiTransportHost();
|
|
168
|
+
const redacted = host.redactToolPayloadText(value);
|
|
169
|
+
const trimmed = redacted.trim();
|
|
170
|
+
if (!trimmed.startsWith("{") && !trimmed.startsWith("[")) return redacted;
|
|
171
|
+
try {
|
|
172
|
+
const redactedWrapper = host.redactSecrets({ structuredTextValue: JSON.parse(redacted) });
|
|
173
|
+
return JSON.stringify(redactedWrapper.structuredTextValue);
|
|
174
|
+
} catch {
|
|
175
|
+
return redacted;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
function stringifyStructuredBlock(block) {
|
|
179
|
+
const seen = /* @__PURE__ */ new WeakSet();
|
|
180
|
+
try {
|
|
181
|
+
const redactedBlock = getAiTransportHost().redactSecrets({ structuredToolResult: block }).structuredToolResult;
|
|
182
|
+
const serialized = JSON.stringify(redactedBlock, function structuredToolResultReplacer(key, value) {
|
|
183
|
+
if (OPAQUE_OR_BINARY_FIELD_RE.test(key)) return `[omitted ${key}]`;
|
|
184
|
+
if (key === "data") {
|
|
185
|
+
const mimeType = readMimeType(this);
|
|
186
|
+
if (mimeType && isBinaryMimeType(mimeType)) return describeOmittedValue(value, "binary data");
|
|
187
|
+
}
|
|
188
|
+
if (typeof value === "bigint") return value.toString();
|
|
189
|
+
if (typeof value === "string") return redactInlineDataUris(redactStructuredTextValue(value));
|
|
190
|
+
if (typeof value === "function" || typeof value === "symbol" || value === void 0) return;
|
|
191
|
+
if (!value || typeof value !== "object") return value;
|
|
192
|
+
if (seen.has(value)) return "[Circular]";
|
|
193
|
+
seen.add(value);
|
|
194
|
+
return value;
|
|
195
|
+
});
|
|
196
|
+
if (!serialized || serialized === "{}") return;
|
|
197
|
+
return serialized;
|
|
198
|
+
} catch {
|
|
199
|
+
return;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
function truncateProviderToolText(text) {
|
|
203
|
+
if (text.length <= PROVIDER_TOOL_RESULT_MAX_CHARS) return text;
|
|
204
|
+
return `${truncateUtf16Safe(text, PROVIDER_TOOL_RESULT_MAX_CHARS)}\n…(truncated)…`;
|
|
205
|
+
}
|
|
206
|
+
/** Media metadata alone is not an attachment; provider emitters need inline bytes. */
|
|
207
|
+
function hasMediaPayload(block) {
|
|
208
|
+
return isRecord(block) && typeof block.data === "string" && block.data.trim().length > 0;
|
|
209
|
+
}
|
|
210
|
+
/** Image metadata alone is not an attachment; provider emitters need inline bytes. */
|
|
211
|
+
function isImageWithMediaPayload(block) {
|
|
212
|
+
return isRecord(block) && block.type === "image" && hasMediaPayload(block);
|
|
213
|
+
}
|
|
214
|
+
function describeToolResultMediaPlaceholder(blocks) {
|
|
215
|
+
let hasImage = false;
|
|
216
|
+
let hasAudio = false;
|
|
217
|
+
for (const block of blocks) {
|
|
218
|
+
if (!hasMediaPayload(block)) continue;
|
|
219
|
+
const record = block;
|
|
220
|
+
const type = typeof record.type === "string" ? record.type : void 0;
|
|
221
|
+
const mimeType = readMimeType(record);
|
|
222
|
+
if (type && IMAGE_TOOL_RESULT_TYPES.has(type) || mimeType?.toLowerCase().startsWith("image/")) hasImage = true;
|
|
223
|
+
if (type && AUDIO_TOOL_RESULT_TYPES.has(type) || mimeType?.toLowerCase().startsWith("audio/")) hasAudio = true;
|
|
224
|
+
}
|
|
225
|
+
if (hasImage && hasAudio) return "(see attached media)";
|
|
226
|
+
if (hasAudio) return "(see attached audio)";
|
|
227
|
+
if (hasImage) return "(see attached image)";
|
|
228
|
+
}
|
|
229
|
+
function extractToolResultBlockText(block) {
|
|
230
|
+
if (!block || typeof block !== "object") return;
|
|
231
|
+
const record = block;
|
|
232
|
+
if (typeof record.type === "string" && MEDIA_ONLY_TOOL_RESULT_TYPES.has(record.type)) return;
|
|
233
|
+
if (record.type === "text") {
|
|
234
|
+
const text = typeof record.text === "string" ? record.text : "";
|
|
235
|
+
return text ? sanitizeSurrogates(text) : void 0;
|
|
236
|
+
}
|
|
237
|
+
const structured = stringifyStructuredBlock(record);
|
|
238
|
+
return structured ? sanitizeSurrogates(truncateProviderToolText(structured)) : void 0;
|
|
239
|
+
}
|
|
240
|
+
function extractToolResultText(blocks) {
|
|
241
|
+
const explicitTexts = [];
|
|
242
|
+
const structuredTexts = [];
|
|
243
|
+
for (const block of blocks) {
|
|
244
|
+
const text = extractToolResultBlockText(block);
|
|
245
|
+
if (!text) continue;
|
|
246
|
+
if (block.type === "text") explicitTexts.push(text);
|
|
247
|
+
else structuredTexts.push(text);
|
|
248
|
+
}
|
|
249
|
+
if (explicitTexts.length > 0) return sanitizeSurrogates(explicitTexts.join("\n"));
|
|
250
|
+
return sanitizeSurrogates(truncateProviderToolText(structuredTexts.join("\n")));
|
|
251
|
+
}
|
|
252
|
+
//#endregion
|
|
153
253
|
//#region packages/ai/src/transcript-transform.ts
|
|
154
254
|
const NON_VISION_USER_IMAGE_PLACEHOLDER = "(image omitted: model does not support images)";
|
|
155
255
|
const NON_VISION_TOOL_IMAGE_PLACEHOLDER = "(tool image omitted: model does not support images)";
|
|
156
|
-
function isImageWithMediaPayload(block) {
|
|
157
|
-
return isRecord(block) && block.type === "image" && typeof block.data === "string" && block.data.trim().length > 0;
|
|
158
|
-
}
|
|
159
256
|
function replaceImagesWithPlaceholder(content, placeholder) {
|
|
160
257
|
const result = [];
|
|
161
|
-
let previousWasPlaceholder = false;
|
|
162
258
|
for (const block of content) {
|
|
163
|
-
if (block.type
|
|
164
|
-
|
|
165
|
-
if (!previousWasPlaceholder) result.push({
|
|
166
|
-
type: "text",
|
|
167
|
-
text: placeholder
|
|
168
|
-
});
|
|
169
|
-
previousWasPlaceholder = true;
|
|
259
|
+
if (block.type !== "image") {
|
|
260
|
+
result.push(block);
|
|
170
261
|
continue;
|
|
171
262
|
}
|
|
172
|
-
result.
|
|
173
|
-
|
|
263
|
+
const previous = result.at(-1);
|
|
264
|
+
const repeated = previous?.type === "text" && previous.text === placeholder;
|
|
265
|
+
if (isImageWithMediaPayload(block) && !repeated) result.push({
|
|
266
|
+
type: "text",
|
|
267
|
+
text: placeholder
|
|
268
|
+
});
|
|
174
269
|
}
|
|
175
270
|
return result;
|
|
176
271
|
}
|
|
177
272
|
function downgradeUnsupportedImages(messages, model) {
|
|
178
273
|
if (model.input.includes("image")) return messages;
|
|
179
|
-
return messages.map((
|
|
180
|
-
if (
|
|
181
|
-
|
|
182
|
-
|
|
274
|
+
return messages.map((message) => {
|
|
275
|
+
if (message.role === "assistant" || typeof message.content === "string") return message;
|
|
276
|
+
const placeholder = message.role === "user" ? NON_VISION_USER_IMAGE_PLACEHOLDER : NON_VISION_TOOL_IMAGE_PLACEHOLDER;
|
|
277
|
+
return {
|
|
278
|
+
...message,
|
|
279
|
+
content: replaceImagesWithPlaceholder(message.content, placeholder)
|
|
183
280
|
};
|
|
184
|
-
if (msg.role === "toolResult") return {
|
|
185
|
-
...msg,
|
|
186
|
-
content: replaceImagesWithPlaceholder(msg.content, NON_VISION_TOOL_IMAGE_PLACEHOLDER)
|
|
187
|
-
};
|
|
188
|
-
return msg;
|
|
189
281
|
});
|
|
190
282
|
}
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
const normalizedId = toolCallIdMap.get(msg.toolCallId);
|
|
205
|
-
if (normalizedId && normalizedId !== msg.toolCallId) return Object.assign({}, msg, { toolCallId: normalizedId });
|
|
206
|
-
return msg;
|
|
283
|
+
function transformAssistant(message, model, toolCallIdMap, normalizeToolCallId) {
|
|
284
|
+
const replayMode = resolveModelBoundThinkingReplayMode({
|
|
285
|
+
source: {
|
|
286
|
+
provider: message.provider,
|
|
287
|
+
api: message.api,
|
|
288
|
+
modelId: message.model,
|
|
289
|
+
responseModelId: message.responseModel
|
|
290
|
+
},
|
|
291
|
+
target: {
|
|
292
|
+
provider: model.provider,
|
|
293
|
+
api: model.api,
|
|
294
|
+
modelId: model.id,
|
|
295
|
+
modelParams: model.params
|
|
207
296
|
}
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
modelId: model.id,
|
|
221
|
-
modelParams: model.params
|
|
222
|
-
}
|
|
223
|
-
});
|
|
224
|
-
const isSameModel = modelBoundThinkingReplayMode === "preserve" || assistantMsg.provider === model.provider && assistantMsg.api === model.api && assistantMsg.model === model.id;
|
|
225
|
-
const transformedContent = (typeof assistantMsg.content === "string" ? [{
|
|
297
|
+
});
|
|
298
|
+
const sameModel = replayMode === "preserve" || message.provider === model.provider && message.api === model.api && message.model === model.id;
|
|
299
|
+
const content = (typeof message.content === "string" ? [{
|
|
300
|
+
type: "text",
|
|
301
|
+
text: message.content
|
|
302
|
+
}] : message.content).flatMap((block) => {
|
|
303
|
+
if (block.type === "thinking") {
|
|
304
|
+
if (replayMode === "drop") return [];
|
|
305
|
+
if (block.redacted) return sameModel ? block : [];
|
|
306
|
+
if (sameModel && block.thinkingSignature) return block;
|
|
307
|
+
if (!block.thinking?.trim()) return [];
|
|
308
|
+
return sameModel ? block : {
|
|
226
309
|
type: "text",
|
|
227
|
-
text:
|
|
228
|
-
}
|
|
229
|
-
if (block.type === "thinking") {
|
|
230
|
-
if (modelBoundThinkingReplayMode === "drop") return [];
|
|
231
|
-
if (block.redacted) return isSameModel ? block : [];
|
|
232
|
-
if (isSameModel && block.thinkingSignature) return block;
|
|
233
|
-
if (!block.thinking || block.thinking.trim() === "") return [];
|
|
234
|
-
if (isSameModel) return block;
|
|
235
|
-
return {
|
|
236
|
-
type: "text",
|
|
237
|
-
text: block.thinking
|
|
238
|
-
};
|
|
239
|
-
}
|
|
240
|
-
if (block.type === "text") {
|
|
241
|
-
if (isSameModel) return block;
|
|
242
|
-
return {
|
|
243
|
-
type: "text",
|
|
244
|
-
text: block.text
|
|
245
|
-
};
|
|
246
|
-
}
|
|
247
|
-
if (block.type === "toolCall") {
|
|
248
|
-
const toolCall = block;
|
|
249
|
-
let normalizedToolCall = toolCall;
|
|
250
|
-
if (!isSameModel && toolCall.thoughtSignature) {
|
|
251
|
-
normalizedToolCall = Object.assign({}, toolCall);
|
|
252
|
-
delete normalizedToolCall.thoughtSignature;
|
|
253
|
-
}
|
|
254
|
-
if (!isSameModel && normalizeToolCallId) {
|
|
255
|
-
const normalizedId = normalizeToolCallId(toolCall.id, model, assistantMsg);
|
|
256
|
-
if (normalizedId !== toolCall.id) {
|
|
257
|
-
toolCallIdMap.set(toolCall.id, normalizedId);
|
|
258
|
-
normalizedToolCall = Object.assign({}, normalizedToolCall, { id: normalizedId });
|
|
259
|
-
}
|
|
260
|
-
}
|
|
261
|
-
return normalizedToolCall;
|
|
262
|
-
}
|
|
263
|
-
return block;
|
|
264
|
-
});
|
|
265
|
-
return Object.assign({}, assistantMsg, { content: transformedContent });
|
|
310
|
+
text: block.thinking
|
|
311
|
+
};
|
|
266
312
|
}
|
|
267
|
-
return
|
|
313
|
+
if (block.type === "text") return sameModel ? block : {
|
|
314
|
+
type: "text",
|
|
315
|
+
text: block.text
|
|
316
|
+
};
|
|
317
|
+
const { thoughtSignature: _, ...unsigned } = block;
|
|
318
|
+
const trimmedId = block.id.trim();
|
|
319
|
+
if (sameModel) return trimmedId === block.id ? block : Object.assign({}, block, { id: trimmedId });
|
|
320
|
+
const id = normalizeToolCallId?.(trimmedId, model, message) ?? trimmedId;
|
|
321
|
+
if (id !== trimmedId) toolCallIdMap.set(trimmedId, id);
|
|
322
|
+
return id === block.id ? unsigned : Object.assign({}, unsigned, { id });
|
|
323
|
+
});
|
|
324
|
+
return {
|
|
325
|
+
...message,
|
|
326
|
+
content
|
|
327
|
+
};
|
|
328
|
+
}
|
|
329
|
+
function transformMessages(messages, model, normalizeToolCallId) {
|
|
330
|
+
const toolCallIdMap = /* @__PURE__ */ new Map();
|
|
331
|
+
const transformed = downgradeUnsupportedImages(messages.map((message) => message.content == null ? Object.assign({}, message, { content: [] }) : message), model).map((message) => {
|
|
332
|
+
if (message.role === "assistant") return transformAssistant(message, model, toolCallIdMap, normalizeToolCallId);
|
|
333
|
+
if (message.role !== "toolResult") return message;
|
|
334
|
+
const trimmedId = message.toolCallId.trim();
|
|
335
|
+
const toolCallId = toolCallIdMap.get(trimmedId) ?? trimmedId;
|
|
336
|
+
return toolCallId === message.toolCallId ? message : Object.assign({}, message, { toolCallId });
|
|
268
337
|
});
|
|
269
338
|
const result = [];
|
|
270
339
|
let pendingToolCalls = [];
|
|
271
340
|
let existingToolResultIds = /* @__PURE__ */ new Set();
|
|
272
|
-
const
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
existingToolResultIds = /* @__PURE__ */ new Set();
|
|
287
|
-
}
|
|
341
|
+
const flushToolCalls = () => {
|
|
342
|
+
for (const call of pendingToolCalls) if (!existingToolResultIds.has(call.id)) result.push({
|
|
343
|
+
role: "toolResult",
|
|
344
|
+
toolCallId: call.id,
|
|
345
|
+
toolName: call.name,
|
|
346
|
+
content: [{
|
|
347
|
+
type: "text",
|
|
348
|
+
text: "No result provided"
|
|
349
|
+
}],
|
|
350
|
+
isError: true,
|
|
351
|
+
timestamp: Date.now()
|
|
352
|
+
});
|
|
353
|
+
pendingToolCalls = [];
|
|
354
|
+
existingToolResultIds = /* @__PURE__ */ new Set();
|
|
288
355
|
};
|
|
289
|
-
for (const
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
if (
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
} else if (msg.role === "toolResult") {
|
|
300
|
-
existingToolResultIds.add(msg.toolCallId);
|
|
301
|
-
result.push(msg);
|
|
302
|
-
} else if (msg.role === "user") {
|
|
303
|
-
insertSyntheticToolResults();
|
|
304
|
-
result.push(msg);
|
|
305
|
-
} else result.push(msg);
|
|
306
|
-
insertSyntheticToolResults();
|
|
356
|
+
for (const message of transformed) {
|
|
357
|
+
if (message.role === "assistant") {
|
|
358
|
+
flushToolCalls();
|
|
359
|
+
if (message.stopReason === "error" || message.stopReason === "aborted") continue;
|
|
360
|
+
pendingToolCalls = message.content.filter((block) => block.type === "toolCall");
|
|
361
|
+
} else if (message.role === "toolResult") existingToolResultIds.add(message.toolCallId);
|
|
362
|
+
else flushToolCalls();
|
|
363
|
+
result.push(message);
|
|
364
|
+
}
|
|
365
|
+
flushToolCalls();
|
|
307
366
|
return result;
|
|
308
367
|
}
|
|
309
368
|
//#endregion
|
|
@@ -358,7 +417,6 @@ const inertAiTransportHost = {
|
|
|
358
417
|
inheritManagedTransport: (_source, target) => target,
|
|
359
418
|
transformTransportMessages: (messages, model, normalizeToolCallId) => transformMessages(messages, model, normalizeToolCallId),
|
|
360
419
|
registerCustomApi: queueCustomApiRegistration,
|
|
361
|
-
prepareGoogleSimpleCompletionModel: (_registry, model) => model,
|
|
362
420
|
logDebug: () => {},
|
|
363
421
|
logInfo: () => {},
|
|
364
422
|
logWarn: () => {}
|
|
@@ -395,6 +453,7 @@ function resolveAiTransportHeaderSentinels(headers) {
|
|
|
395
453
|
const host = getAiTransportHost();
|
|
396
454
|
let resolvedHeaders;
|
|
397
455
|
for (const [name, value] of Object.entries(headers)) {
|
|
456
|
+
if (value === null) continue;
|
|
398
457
|
const resolved = host.resolveSecretSentinel(value);
|
|
399
458
|
if (resolved !== value) {
|
|
400
459
|
resolvedHeaders ??= { ...headers };
|
|
@@ -404,4 +463,4 @@ function resolveAiTransportHeaderSentinels(headers) {
|
|
|
404
463
|
return resolvedHeaders ?? headers;
|
|
405
464
|
}
|
|
406
465
|
//#endregion
|
|
407
|
-
export {
|
|
466
|
+
export { resolveAnthropicThinkingEffort as _, describeToolResultMediaPlaceholder as a, usesClaudeStreamingRefusalContract as b, hasMediaPayload as c, ANTHROPIC_CLAUDE_CODE_VERSION as d, applyClaudeRequestContract as f, requiresClaudeAdaptiveThinking as g, prepareClaudeNoPrefillRequestContext as h, transformMessages as i, isImageWithMediaPayload as l, mapAnthropicStopReason as m, getAiTransportHost as n, extractToolResultBlockText as o, defaultsClaudeAdaptiveThinking as p, resolveAiTransportHeaderSentinels as r, extractToolResultText as s, configureAiTransportHost as t, ANTHROPIC_CLAUDE_CODE_BILLING_SYSTEM_BLOCK as u, resolveModelBoundThinkingReplayMode as v, usesClaudeFable5MessagesContract as y };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { n as ApiRegistry } from "./api-registry-
|
|
1
|
+
import { B as StreamFn, E as Model, n as Api, u as Context } from "./types-BHNrPS1l.mjs";
|
|
2
|
+
import { n as ApiRegistry } from "./api-registry-k3zTz0cV.mjs";
|
|
3
3
|
|
|
4
4
|
//#region packages/ai/src/host.d.ts
|
|
5
5
|
/** Provider capability facts needed by the package-owned transports. */
|
|
@@ -29,6 +29,8 @@ interface AiProviderStreamHookContext {
|
|
|
29
29
|
provider: string;
|
|
30
30
|
modelId: string;
|
|
31
31
|
model: Model;
|
|
32
|
+
/** Wire-format API before simple completion projects an internal transport alias. */
|
|
33
|
+
sourceApi?: Api;
|
|
32
34
|
}
|
|
33
35
|
/** Narrow plugin-runtime port used by package-owned transports. */
|
|
34
36
|
interface AiTransportPluginHost {
|
|
@@ -59,6 +61,10 @@ interface AiTransportPluginHost {
|
|
|
59
61
|
}): {
|
|
60
62
|
headers?: Record<string, string>;
|
|
61
63
|
metadata?: Record<string, string>;
|
|
64
|
+
websocket?: {
|
|
65
|
+
headers?: Record<string, string>;
|
|
66
|
+
degradeCooldownMs?: number;
|
|
67
|
+
};
|
|
62
68
|
} | undefined;
|
|
63
69
|
wrapSimpleCompletionStream(this: void, params: {
|
|
64
70
|
provider: string;
|
|
@@ -77,6 +83,7 @@ type AiTransformTransportMessages = (messages: Context["messages"], model: Model
|
|
|
77
83
|
}) => string, options?: {
|
|
78
84
|
normalizeSameModelToolCallIds?: boolean;
|
|
79
85
|
preserveCrossModelToolCallThoughtSignature?: boolean;
|
|
86
|
+
preserveUnframedToolResults?: boolean;
|
|
80
87
|
}) => Context["messages"];
|
|
81
88
|
/** Strict-tool policy inputs for OpenAI-compatible routes. */
|
|
82
89
|
interface OpenAIStrictToolSettingOptions {
|
|
@@ -145,8 +152,6 @@ interface AiTransportHost {
|
|
|
145
152
|
transformTransportMessages: AiTransformTransportMessages;
|
|
146
153
|
/** Registers a custom transport API with the host's stream error bridge. */
|
|
147
154
|
registerCustomApi(registry: ApiRegistry, api: Api, streamFn: StreamFn): boolean;
|
|
148
|
-
/** Prepares the provider-owned Google simple-completion alias when needed. */
|
|
149
|
-
prepareGoogleSimpleCompletionModel(registry: ApiRegistry, model: Model): Model;
|
|
150
155
|
/**
|
|
151
156
|
* Emits one transport diagnostic; build runs only when the host logs it and
|
|
152
157
|
* may return null to suppress the entry (e.g. de-duplication).
|
package/dist/index.d.mts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
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";
|
|
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
|
|
4
|
-
import { n as EventStream, r as createAssistantMessageEventStream, t as AssistantMessageEventStream } from "./event-stream-
|
|
5
|
-
import { n as validateToolCall, t as validateToolArguments } from "./validation-
|
|
6
|
-
import { a as RegisteredApiProvider, i as ApiStreamSimpleFunction, n as ApiRegistry, o as createApiRegistry, r as ApiStreamFunction, t as ApiProvider } from "./api-registry-
|
|
7
|
-
import { a as AiProviderRequestPolicyInput, c as AiTransportHost, d as configureAiTransportHost, f as getAiTransportHost, i as AiProviderRequestCapabilities, l as AiTransportPluginHost, n as AiInlineImageBlock, o as AiProviderStreamHookContext, p as resolveAiTransportHeaderSentinels, r as AiInlineTextBlock, s as AiTransformTransportMessages, t as AiInlineContentBlock, u as OpenAIStrictToolSettingOptions } from "./host-
|
|
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
|
+
import { a as RegisteredApiProvider, i as ApiStreamSimpleFunction, n as ApiRegistry, o as createApiRegistry, r as ApiStreamFunction, t as ApiProvider } from "./api-registry-k3zTz0cV.mjs";
|
|
7
|
+
import { a as AiProviderRequestPolicyInput, c as AiTransportHost, d as configureAiTransportHost, f as getAiTransportHost, i as AiProviderRequestCapabilities, l as AiTransportPluginHost, n as AiInlineImageBlock, o as AiProviderStreamHookContext, p as resolveAiTransportHeaderSentinels, r as AiInlineTextBlock, s as AiTransformTransportMessages, t as AiInlineContentBlock, u as OpenAIStrictToolSettingOptions } from "./host-vWgMMhiJ.mjs";
|
|
8
8
|
|
|
9
9
|
//#region packages/ai/src/stream.d.ts
|
|
10
10
|
/** Creates an isolated LLM runtime backed by the supplied provider registry. */
|
|
@@ -23,4 +23,4 @@ declare function createLlmRuntime(registry?: ApiRegistry): {
|
|
|
23
23
|
};
|
|
24
24
|
type LlmRuntime = ReturnType<typeof createLlmRuntime>;
|
|
25
25
|
//#endregion
|
|
26
|
-
export { AiInlineContentBlock, AiInlineImageBlock, AiInlineTextBlock, AiProviderRequestCapabilities, AiProviderRequestPolicyInput, AiProviderStreamHookContext, AiTransformTransportMessages, AiTransportHost, AiTransportPluginHost, AnthropicMessagesCompat, Api, ApiProvider, ApiRegistry, ApiStreamFunction, ApiStreamSimpleFunction, 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, LlmRuntime, MaybePromise, Message, Model, ModelThinkingLevel, OpenAICompletionsCompat, OpenAIResponsesCompat, OpenAIStrictToolSettingOptions, OpenRouterRouting, Provider, ProviderImagesOptions, ProviderResponse, ProviderStreamOptions, RegisteredApiProvider, SimpleStreamOptions, StopReason, StreamFn, StreamFunction, StreamOptions, TextContent, TextSignatureV1, ThinkingBudgets, ThinkingContent, ThinkingLevel, ThinkingLevelMap, Tool, ToolCall, ToolResultMessage, Transport, Usage, UserMessage, ValidateToolArgumentsFn, VercelGatewayRouting, appendAssistantMessageDiagnostic, configureAiTransportHost, createApiRegistry, createAssistantMessageDiagnostic, createAssistantMessageEventStream, createLlmRuntime, extractDiagnosticError, formatThrownValue, getAiTransportHost, requiresClaudeDefaultSampling, requiresClaudeMandatoryAdaptiveThinking, resolveAiTransportHeaderSentinels, resolveClaudeFable5ModelIdentity, resolveClaudeModelIdentity, resolveClaudeMythos5ModelIdentity, resolveClaudeNativeThinkingLevelMap, resolveClaudeOpus5ModelIdentity, resolveClaudeSonnet5ModelIdentity, supportsClaude1MContext, supportsClaudeAdaptiveThinking, supportsClaudeFastMode, supportsClaudeNativeMaxEffort, supportsClaudeNativeXhighEffort, validateToolArguments, validateToolCall };
|
|
26
|
+
export { AiInlineContentBlock, AiInlineImageBlock, AiInlineTextBlock, AiProviderRequestCapabilities, AiProviderRequestPolicyInput, AiProviderStreamHookContext, AiTransformTransportMessages, AiTransportHost, AiTransportPluginHost, AnthropicMessagesCompat, Api, ApiProvider, ApiRegistry, ApiStreamFunction, ApiStreamSimpleFunction, 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, LlmRuntime, MaybePromise, Message, Model, ModelThinkingLevel, OpenAICompletionsCompat, OpenAIResponsesCompat, OpenAIStrictToolSettingOptions, OpenRouterRouting, PROVIDER_FAILURE_WITH_OUTPUT_ERROR_CODE, PROVIDER_POST_DISPATCH_AMBIGUITY_ERROR_CODE, Provider, ProviderImagesOptions, ProviderReplayState, ProviderResponse, ProviderStreamOptions, RegisteredApiProvider, SimpleStreamOptions, StopReason, StreamFn, StreamFunction, StreamOptions, TextContent, TextSignatureV1, ThinkingBudgets, ThinkingContent, ThinkingLevel, ThinkingLevelMap, Tool, ToolCall, ToolResultMessage, Transport, Usage, UserMessage, ValidateToolArgumentsFn, VercelGatewayRouting, appendAssistantMessageDiagnostic, configureAiTransportHost, createApiRegistry, createAssistantMessageDiagnostic, createAssistantMessageEventStream, createLlmRuntime, extractDiagnosticError, formatThrownValue, getAiTransportHost, requiresClaudeDefaultSampling, requiresClaudeMandatoryAdaptiveThinking, resolveAiTransportHeaderSentinels, resolveClaudeFable5ModelIdentity, resolveClaudeModelIdentity, resolveClaudeMythos5ModelIdentity, resolveClaudeNativeThinkingLevelMap, resolveClaudeOpus5ModelIdentity, resolveClaudeSonnet5ModelIdentity, supportsClaude1MContext, supportsClaudeAdaptiveThinking, supportsClaudeFastMode, supportsClaudeNativeMaxEffort, supportsClaudeNativeXhighEffort, validateToolArguments, validateToolCall };
|
package/dist/index.mjs
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
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 "./
|
|
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";
|
|
2
|
+
import { n as PROVIDER_POST_DISPATCH_AMBIGUITY_ERROR_CODE, t as PROVIDER_FAILURE_WITH_OUTPUT_ERROR_CODE } from "./types-BDdaOVi2.mjs";
|
|
2
3
|
import { i as formatThrownValue, n as createAssistantMessageDiagnostic, r as extractDiagnosticError, t as appendAssistantMessageDiagnostic } from "./diagnostics-COpOtRwq.mjs";
|
|
3
|
-
import { n as EventStream, r as createAssistantMessageEventStream, t as AssistantMessageEventStream } from "./event-stream-
|
|
4
|
-
import { n as validateToolCall, t as validateToolArguments } from "./validation-
|
|
4
|
+
import { n as EventStream, r as createAssistantMessageEventStream, t as AssistantMessageEventStream } from "./event-stream-uSMZJ3FA.mjs";
|
|
5
|
+
import { n as validateToolCall, t as validateToolArguments } from "./validation-B61OhAio.mjs";
|
|
6
|
+
import "./src-D2H6yKkH.mjs";
|
|
5
7
|
import { n as createApiRegistry, t as createLlmRuntime } from "./stream-CREqxHgU.mjs";
|
|
6
|
-
import { n as getAiTransportHost, r as resolveAiTransportHeaderSentinels, t as configureAiTransportHost } from "./host-
|
|
7
|
-
export { AssistantMessageEventStream, CLAUDE_FABLE_5_THINKING_PROFILE, CLAUDE_OPUS_5_THINKING_PROFILE, CLAUDE_SONNET_5_THINKING_PROFILE, EventStream, appendAssistantMessageDiagnostic, configureAiTransportHost, createApiRegistry, createAssistantMessageDiagnostic, createAssistantMessageEventStream, createLlmRuntime, extractDiagnosticError, formatThrownValue, getAiTransportHost, requiresClaudeDefaultSampling, requiresClaudeMandatoryAdaptiveThinking, resolveAiTransportHeaderSentinels, resolveClaudeFable5ModelIdentity, resolveClaudeModelIdentity, resolveClaudeMythos5ModelIdentity, resolveClaudeNativeThinkingLevelMap, resolveClaudeOpus5ModelIdentity, resolveClaudeSonnet5ModelIdentity, supportsClaude1MContext, supportsClaudeAdaptiveThinking, supportsClaudeFastMode, supportsClaudeNativeMaxEffort, supportsClaudeNativeXhighEffort, validateToolArguments, validateToolCall };
|
|
8
|
+
import { n as getAiTransportHost, r as resolveAiTransportHeaderSentinels, t as configureAiTransportHost } from "./host-DTqNc7ad.mjs";
|
|
9
|
+
export { AssistantMessageEventStream, CLAUDE_FABLE_5_THINKING_PROFILE, CLAUDE_OPUS_5_THINKING_PROFILE, CLAUDE_SONNET_5_THINKING_PROFILE, EventStream, PROVIDER_FAILURE_WITH_OUTPUT_ERROR_CODE, PROVIDER_POST_DISPATCH_AMBIGUITY_ERROR_CODE, appendAssistantMessageDiagnostic, configureAiTransportHost, createApiRegistry, createAssistantMessageDiagnostic, createAssistantMessageEventStream, createLlmRuntime, extractDiagnosticError, formatThrownValue, getAiTransportHost, requiresClaudeDefaultSampling, requiresClaudeMandatoryAdaptiveThinking, resolveAiTransportHeaderSentinels, resolveClaudeFable5ModelIdentity, resolveClaudeModelIdentity, resolveClaudeMythos5ModelIdentity, resolveClaudeNativeThinkingLevelMap, resolveClaudeOpus5ModelIdentity, resolveClaudeSonnet5ModelIdentity, supportsClaude1MContext, supportsClaudeAdaptiveThinking, supportsClaudeFastMode, supportsClaudeNativeMaxEffort, supportsClaudeNativeXhighEffort, validateToolArguments, validateToolCall };
|
|
@@ -1,11 +1,19 @@
|
|
|
1
1
|
import { a as requiresClaudeMandatoryAdaptiveThinking, c as resolveClaudeMythos5ModelIdentity, d as resolveClaudeSonnet5ModelIdentity, g as supportsClaudeNativeXhighEffort, h as supportsClaudeNativeMaxEffort, i as requiresClaudeDefaultSampling, l as resolveClaudeNativeThinkingLevelMap, o as resolveClaudeFable5ModelIdentity, p as supportsClaudeAdaptiveThinking, s as resolveClaudeModelIdentity, u as resolveClaudeOpus5ModelIdentity } from "../anthropic-SrGtwsJu.mjs";
|
|
2
2
|
import { t as AssistantMessageDiagnostic } from "../diagnostics-BaTA9eVl.mjs";
|
|
3
|
-
import {
|
|
4
|
-
import { n as AnthropicOptions, r as AnthropicThinkingDisplay, t as AnthropicEffort } from "../provider-options-
|
|
3
|
+
import { $ as Usage, E as Model, R as SimpleStreamOptions, V as StreamFunction, u as Context, z as StopReason } from "../types-BHNrPS1l.mjs";
|
|
4
|
+
import { n as AnthropicOptions, r as AnthropicThinkingDisplay, t as AnthropicEffort } from "../provider-options-B96RdNpH.mjs";
|
|
5
|
+
import { o as resolveAnthropicServerCompactionPlan } from "../anthropic-payload-policy-CiEuQS72.mjs";
|
|
6
|
+
|
|
5
7
|
//#region packages/ai/src/providers/anthropic.d.ts
|
|
6
|
-
|
|
8
|
+
type AnthropicCompactionOptions = AnthropicOptions & {
|
|
9
|
+
anthropicServerCompaction?: boolean;
|
|
10
|
+
authProfileId?: string;
|
|
11
|
+
};
|
|
12
|
+
declare const streamAnthropic: StreamFunction<"anthropic-messages", AnthropicCompactionOptions>;
|
|
7
13
|
type AnthropicSimpleStreamOptions = SimpleStreamOptions & {
|
|
8
|
-
|
|
14
|
+
anthropicServerCompaction?: boolean;
|
|
15
|
+
authProfileId?: string;
|
|
16
|
+
toolChoice?: AnthropicCompactionOptions["toolChoice"];
|
|
9
17
|
};
|
|
10
18
|
declare const streamSimpleAnthropic: StreamFunction<"anthropic-messages", AnthropicSimpleStreamOptions>;
|
|
11
19
|
//#endregion
|
|
@@ -207,4 +215,4 @@ declare function applyAnthropicMessageStartUsage(target: Usage, payload: Anthrop
|
|
|
207
215
|
/** Keep cumulative billing separate from the final server-side iteration context. */
|
|
208
216
|
declare function applyAnthropicMessageDeltaUsage(target: Usage, payload: AnthropicUsagePayload | undefined, messageStartPromptUsage: AnthropicPromptUsageSnapshot | undefined): void;
|
|
209
217
|
//#endregion
|
|
210
|
-
export { ANTHROPIC_CLAUDE_CODE_BILLING_SYSTEM_BLOCK, ANTHROPIC_CLAUDE_CODE_VERSION, ANTHROPIC_OMITTED_REASONING_TEXT, ANTHROPIC_SERVER_SIDE_FALLBACKS, ANTHROPIC_SERVER_SIDE_FALLBACK_BETA, AnthropicCacheWriteUsage, type AnthropicEffort, AnthropicFallbackBoundary, AnthropicIterationUsageResult, AnthropicIterationUsageSnapshot, type AnthropicOptions, AnthropicProjectedToolChoice, AnthropicPromptUsageSnapshot, type AnthropicThinkingDisplay, AnthropicToolProjection, CLAUDE_OPUS_FALLBACK_MODEL_COST, applyAnthropicFallbackBoundary, applyAnthropicMessageDeltaUsage, applyAnthropicMessageStartUsage, applyAnthropicRefusal, applyClaudeRequestContract, defaultsClaudeAdaptiveThinking, findActiveAnthropicToolTurnAssistantIndex, mapAnthropicStopReason, normalizeAnthropicToolCallId, normalizeAnthropicToolChoice, omitFoundryBearerCredentialHeaders, prepareClaudeNoPrefillRequestContext, projectAnthropicTools, readAnthropicCacheWriteUsage, readAnthropicFallbackBoundary, readAnthropicPromptUsageSnapshot, readAnthropicUsageTokenCount, readLastAnthropicIterationUsage, reconcileAnthropicToolChoice, requiresClaudeAdaptiveThinking, requiresClaudeDefaultSampling, requiresClaudeMandatoryAdaptiveThinking, resolveAnthropicFallbackServingModelCost, resolveAnthropicThinkingEffort, resolveClaudeFable5ModelIdentity, resolveClaudeModelIdentity, resolveClaudeMythos5ModelIdentity, resolveClaudeNativeThinkingLevelMap, resolveClaudeOpus5ModelIdentity, resolveClaudeSonnet5ModelIdentity, resolveModelBoundThinkingReplayMode, resolveOriginalAnthropicToolName, streamAnthropic, streamSimpleAnthropic, supportsClaudeAdaptiveThinking, supportsClaudeNativeMaxEffort, supportsClaudeNativeXhighEffort, toClaudeCodeToolName, usesClaudeFable5MessagesContract, usesClaudeStreamingRefusalContract, usesFoundryBearerAuth };
|
|
218
|
+
export { ANTHROPIC_CLAUDE_CODE_BILLING_SYSTEM_BLOCK, ANTHROPIC_CLAUDE_CODE_VERSION, ANTHROPIC_OMITTED_REASONING_TEXT, ANTHROPIC_SERVER_SIDE_FALLBACKS, ANTHROPIC_SERVER_SIDE_FALLBACK_BETA, AnthropicCacheWriteUsage, type AnthropicEffort, AnthropicFallbackBoundary, AnthropicIterationUsageResult, AnthropicIterationUsageSnapshot, type AnthropicOptions, AnthropicProjectedToolChoice, AnthropicPromptUsageSnapshot, type AnthropicThinkingDisplay, AnthropicToolProjection, CLAUDE_OPUS_FALLBACK_MODEL_COST, applyAnthropicFallbackBoundary, applyAnthropicMessageDeltaUsage, applyAnthropicMessageStartUsage, applyAnthropicRefusal, applyClaudeRequestContract, defaultsClaudeAdaptiveThinking, findActiveAnthropicToolTurnAssistantIndex, mapAnthropicStopReason, normalizeAnthropicToolCallId, normalizeAnthropicToolChoice, omitFoundryBearerCredentialHeaders, prepareClaudeNoPrefillRequestContext, projectAnthropicTools, readAnthropicCacheWriteUsage, readAnthropicFallbackBoundary, readAnthropicPromptUsageSnapshot, readAnthropicUsageTokenCount, readLastAnthropicIterationUsage, reconcileAnthropicToolChoice, requiresClaudeAdaptiveThinking, requiresClaudeDefaultSampling, requiresClaudeMandatoryAdaptiveThinking, resolveAnthropicFallbackServingModelCost, resolveAnthropicServerCompactionPlan, resolveAnthropicThinkingEffort, resolveClaudeFable5ModelIdentity, resolveClaudeModelIdentity, resolveClaudeMythos5ModelIdentity, resolveClaudeNativeThinkingLevelMap, resolveClaudeOpus5ModelIdentity, resolveClaudeSonnet5ModelIdentity, resolveModelBoundThinkingReplayMode, resolveOriginalAnthropicToolName, streamAnthropic, streamSimpleAnthropic, supportsClaudeAdaptiveThinking, supportsClaudeNativeMaxEffort, supportsClaudeNativeXhighEffort, toClaudeCodeToolName, usesClaudeFable5MessagesContract, usesClaudeStreamingRefusalContract, usesFoundryBearerAuth };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { a as requiresClaudeMandatoryAdaptiveThinking, c as resolveClaudeMythos5ModelIdentity, d as resolveClaudeSonnet5ModelIdentity, g as supportsClaudeNativeXhighEffort, h as supportsClaudeNativeMaxEffort, i as requiresClaudeDefaultSampling, l as resolveClaudeNativeThinkingLevelMap, o as resolveClaudeFable5ModelIdentity, p as supportsClaudeAdaptiveThinking, s as resolveClaudeModelIdentity, u as resolveClaudeOpus5ModelIdentity } from "../
|
|
2
|
-
import {
|
|
3
|
-
import { C as
|
|
4
|
-
import { n as streamAnthropic, r as streamSimpleAnthropic } from "../anthropic-
|
|
5
|
-
export { ANTHROPIC_CLAUDE_CODE_BILLING_SYSTEM_BLOCK, ANTHROPIC_CLAUDE_CODE_VERSION, ANTHROPIC_OMITTED_REASONING_TEXT, ANTHROPIC_SERVER_SIDE_FALLBACKS, ANTHROPIC_SERVER_SIDE_FALLBACK_BETA, CLAUDE_OPUS_FALLBACK_MODEL_COST, applyAnthropicFallbackBoundary, applyAnthropicMessageDeltaUsage, applyAnthropicMessageStartUsage, applyAnthropicRefusal, applyClaudeRequestContract, defaultsClaudeAdaptiveThinking, findActiveAnthropicToolTurnAssistantIndex, mapAnthropicStopReason, normalizeAnthropicToolCallId, normalizeAnthropicToolChoice, omitFoundryBearerCredentialHeaders, prepareClaudeNoPrefillRequestContext, projectAnthropicTools, readAnthropicCacheWriteUsage, readAnthropicFallbackBoundary, readAnthropicPromptUsageSnapshot, readAnthropicUsageTokenCount, readLastAnthropicIterationUsage, reconcileAnthropicToolChoice, requiresClaudeAdaptiveThinking, requiresClaudeDefaultSampling, requiresClaudeMandatoryAdaptiveThinking, resolveAnthropicFallbackServingModelCost, resolveAnthropicThinkingEffort, resolveClaudeFable5ModelIdentity, resolveClaudeModelIdentity, resolveClaudeMythos5ModelIdentity, resolveClaudeNativeThinkingLevelMap, resolveClaudeOpus5ModelIdentity, resolveClaudeSonnet5ModelIdentity, resolveModelBoundThinkingReplayMode, resolveOriginalAnthropicToolName, streamAnthropic, streamSimpleAnthropic, supportsClaudeAdaptiveThinking, supportsClaudeNativeMaxEffort, supportsClaudeNativeXhighEffort, toClaudeCodeToolName, usesClaudeFable5MessagesContract, usesClaudeStreamingRefusalContract, usesFoundryBearerAuth };
|
|
1
|
+
import { a as requiresClaudeMandatoryAdaptiveThinking, c as resolveClaudeMythos5ModelIdentity, d as resolveClaudeSonnet5ModelIdentity, g as supportsClaudeNativeXhighEffort, h as supportsClaudeNativeMaxEffort, i as requiresClaudeDefaultSampling, l as resolveClaudeNativeThinkingLevelMap, o as resolveClaudeFable5ModelIdentity, p as supportsClaudeAdaptiveThinking, s as resolveClaudeModelIdentity, u as resolveClaudeOpus5ModelIdentity } from "../anthropic-JsNA5KCu.mjs";
|
|
2
|
+
import { _ as resolveAnthropicThinkingEffort, b as usesClaudeStreamingRefusalContract, d as ANTHROPIC_CLAUDE_CODE_VERSION, f as applyClaudeRequestContract, g as requiresClaudeAdaptiveThinking, h as prepareClaudeNoPrefillRequestContext, m as mapAnthropicStopReason, p as defaultsClaudeAdaptiveThinking, u as ANTHROPIC_CLAUDE_CODE_BILLING_SYSTEM_BLOCK, v as resolveModelBoundThinkingReplayMode, y as usesClaudeFable5MessagesContract } from "../host-DTqNc7ad.mjs";
|
|
3
|
+
import { C as readAnthropicFallbackBoundary, D as usesFoundryBearerAuth, E as omitFoundryBearerCredentialHeaders, I as resolveAnthropicServerCompactionPlan, S as applyAnthropicFallbackBoundary, T as applyAnthropicRefusal, _ as ANTHROPIC_OMITTED_REASONING_TEXT, a as applyAnthropicMessageDeltaUsage, b as ANTHROPIC_SERVER_SIDE_FALLBACK_BETA, c as readAnthropicPromptUsageSnapshot, d as normalizeAnthropicToolCallId, f as normalizeAnthropicToolChoice, g as toClaudeCodeToolName, h as resolveOriginalAnthropicToolName, l as readAnthropicUsageTokenCount, m as reconcileAnthropicToolChoice, o as applyAnthropicMessageStartUsage, p as projectAnthropicTools, s as readAnthropicCacheWriteUsage, u as readLastAnthropicIterationUsage, v as findActiveAnthropicToolTurnAssistantIndex, w as resolveAnthropicFallbackServingModelCost, x as CLAUDE_OPUS_FALLBACK_MODEL_COST, y as ANTHROPIC_SERVER_SIDE_FALLBACKS } from "../anthropic-compaction-replay-8lJNKXOE.mjs";
|
|
4
|
+
import { n as streamAnthropic, r as streamSimpleAnthropic } from "../anthropic-B6dLpq5L.mjs";
|
|
5
|
+
export { ANTHROPIC_CLAUDE_CODE_BILLING_SYSTEM_BLOCK, ANTHROPIC_CLAUDE_CODE_VERSION, ANTHROPIC_OMITTED_REASONING_TEXT, ANTHROPIC_SERVER_SIDE_FALLBACKS, ANTHROPIC_SERVER_SIDE_FALLBACK_BETA, CLAUDE_OPUS_FALLBACK_MODEL_COST, applyAnthropicFallbackBoundary, applyAnthropicMessageDeltaUsage, applyAnthropicMessageStartUsage, applyAnthropicRefusal, applyClaudeRequestContract, defaultsClaudeAdaptiveThinking, findActiveAnthropicToolTurnAssistantIndex, mapAnthropicStopReason, normalizeAnthropicToolCallId, normalizeAnthropicToolChoice, omitFoundryBearerCredentialHeaders, prepareClaudeNoPrefillRequestContext, projectAnthropicTools, readAnthropicCacheWriteUsage, readAnthropicFallbackBoundary, readAnthropicPromptUsageSnapshot, readAnthropicUsageTokenCount, readLastAnthropicIterationUsage, reconcileAnthropicToolChoice, requiresClaudeAdaptiveThinking, requiresClaudeDefaultSampling, requiresClaudeMandatoryAdaptiveThinking, resolveAnthropicFallbackServingModelCost, resolveAnthropicServerCompactionPlan, resolveAnthropicThinkingEffort, resolveClaudeFable5ModelIdentity, resolveClaudeModelIdentity, resolveClaudeMythos5ModelIdentity, resolveClaudeNativeThinkingLevelMap, resolveClaudeOpus5ModelIdentity, resolveClaudeSonnet5ModelIdentity, resolveModelBoundThinkingReplayMode, resolveOriginalAnthropicToolName, streamAnthropic, streamSimpleAnthropic, supportsClaudeAdaptiveThinking, supportsClaudeNativeMaxEffort, supportsClaudeNativeXhighEffort, toClaudeCodeToolName, usesClaudeFable5MessagesContract, usesClaudeStreamingRefusalContract, usesFoundryBearerAuth };
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { t as OPENAI_RESPONSES_APIS } from "../openai-responses-contracts-XpZJxrRG.mjs";
|
|
2
|
+
import { i as resolveOpenAIResponsesServerCompactionPlan } from "../openai-responses-payload-policy-BSs371VM.mjs";
|
|
3
|
+
export { OPENAI_RESPONSES_APIS, resolveOpenAIResponsesServerCompactionPlan };
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { i as OPENAI_RESPONSES_APIS } from "../openai-responses-contracts-CyfIkQi5.mjs";
|
|
2
|
+
import { i as resolveOpenAIResponsesServerCompactionPlan } from "../openai-responses-payload-policy-BDxV-W0c.mjs";
|
|
3
|
+
export { OPENAI_RESPONSES_APIS, resolveOpenAIResponsesServerCompactionPlan };
|