zidane 5.0.1 → 5.0.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.
- package/dist/agent-JhicgLOV.d.ts.map +1 -1
- package/dist/chat.js +1 -1
- package/dist/index.js +2 -2
- package/dist/{messages-z5Pq20p7.js → messages-xaYMMFlb.js} +13 -10
- package/dist/{messages-z5Pq20p7.js.map → messages-xaYMMFlb.js.map} +1 -1
- package/dist/{providers-CCDvIXGJ.js → providers-BCbdv99U.js} +2 -2
- package/dist/{providers-CCDvIXGJ.js.map → providers-BCbdv99U.js.map} +1 -1
- package/dist/providers.js +2 -2
- package/dist/session.js +1 -1
- package/dist/tui.d.ts.map +1 -1
- package/dist/tui.js +18 -18
- package/dist/tui.js.map +1 -1
- package/dist/{turn-operations-5aQu4dJg.js → turn-operations-CHS2Prne.js} +2 -2
- package/dist/{turn-operations-5aQu4dJg.js.map → turn-operations-CHS2Prne.js.map} +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-JhicgLOV.d.ts","names":[],"sources":["../src/errors.ts","../src/types.ts","../src/providers/anthropic.ts","../src/providers/cerebras.ts","../src/providers/openai.ts","../src/providers/openai-compat.ts","../src/providers/openrouter.ts","../src/providers/index.ts","../src/session/file-map.ts","../src/session/memory.ts","../src/session/messages.ts","../src/session/remote.ts","../src/session/index.ts","../src/skills/types.ts","../src/tools/types.ts","../src/mcp/index.ts","../src/skills/activation.ts","../src/agent.ts"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"agent-JhicgLOV.d.ts","names":[],"sources":["../src/errors.ts","../src/types.ts","../src/providers/anthropic.ts","../src/providers/cerebras.ts","../src/providers/openai.ts","../src/providers/openai-compat.ts","../src/providers/openrouter.ts","../src/providers/index.ts","../src/session/file-map.ts","../src/session/memory.ts","../src/session/messages.ts","../src/session/remote.ts","../src/session/index.ts","../src/skills/types.ts","../src/tools/types.ts","../src/mcp/index.ts","../src/skills/activation.ts","../src/agent.ts"],"mappings":"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"}
|
package/dist/chat.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { $ as BUILTIN_THEMES, $t as BUILTIN_AGENTS, A as readProjects, At as applyInsert, B as cleanTitle, Bt as removeProviderCredential, C as useSafeModeQueue, D as isOnSafelist, Dt as FILES_TRIGGER, E as getSafelist, Et as uniqueSkillNamesFromReferences, F as supportsOAuth, Ft as detectAuth, G as shortId, Gt as cerebrasDescriptor, H as ageString, Ht as writeCredentials, I as buildMcpServers, It as applyApiKeyEnv, J as DEFAULT_SETTINGS, Jt as modelsForDescriptor, K as listProjectFiles, Kt as credKeyOf, L as defaultMcpsConfigPaths, Lt as credentialsPath, M as writeProjects, Mt as findActiveTrigger, N as splitPromptSegments, Nt as mergeReferences, O as matchesSafelistEntry, Ot as createFilesCompletionProvider, P as runOAuthLogin, Pt as useCompletion, Q as useSettings, Qt as BUILD_AGENT, R as discoverProjectMcps, Rt as readCredentials, S as useSafeModeActions, St as toolResultText, T as addToSafelist, Tt as createSkillsCompletionProvider, Ut as BUILTIN_PROVIDERS, V as generateSessionTitle, Vt as setProviderCredential, W as fmtTokens, Wt as anthropicDescriptor, X as SETTINGS_TOGGLES, Xt as openrouterDescriptor, Y as SETTINGS_CHOICES, Yt as openaiDescriptor, Z as SettingsProvider, Zt as piIdOf, _ as discoverProjectSkills, _t as saveState, a as ThemeProvider, at as CATPPUCCIN_LATTE, b as writeSessionExport, bt as titleFromTurns, c as useSurfaces, ct as ConfigProvider, d as finalizeStreamingMarkdown, dt as createStateStore, en as DEFAULT_AGENT_ID, et as DEFAULT_THEME, f as finalizeStreamingMarkdownForOwner, ft as deriveSessionTitle, g as defaultSkillScanPaths, gt as loadState, h as buildSkillsConfig, ht as listSessionMeta, i as turnAsText, it as CATPPUCCIN_FRAPPE, j as suggestSafelistEntry, jt as collectReferences, k as projectsFilePath, kt as uniqueFilesFromReferences, l as useSyntaxStyles, lt as useConfig, m as useStreamBuffer, mt as lastContextSizeFromTurns, n as deleteTurnSafely, nn as resolveAgentId, nt as resolveTheme, o as useColors, ot as CATPPUCCIN_MACCHIATO, p as turnContextSize, pt as eventsFromTurns, q as useEnabledToggleSet, qt as getContextWindow, r as truncateTurnsAt, rn as singleAgentRegistry, rt as VAPORWAVE_THEME, s as useSelectStyle, st as CATPPUCCIN_MOCHA, t as countNeighbors, tn as PLAN_AGENT, tt as resolveChipColor, u as useTheme, ut as resolveConfig, v as renderSession, vt as selectableTurnIds, w as IMPLICITLY_SAFE_TOOLS, wt as SKILLS_TRIGGER, x as SafeModeProvider, xt as toolCallPreview, y as resolveSessionExportTarget, yt as stripSpawnTokensLine, z as parseMcpsFile, zt as readProviderCredential } from "./turn-operations-
|
|
1
|
+
import { $ as BUILTIN_THEMES, $t as BUILTIN_AGENTS, A as readProjects, At as applyInsert, B as cleanTitle, Bt as removeProviderCredential, C as useSafeModeQueue, D as isOnSafelist, Dt as FILES_TRIGGER, E as getSafelist, Et as uniqueSkillNamesFromReferences, F as supportsOAuth, Ft as detectAuth, G as shortId, Gt as cerebrasDescriptor, H as ageString, Ht as writeCredentials, I as buildMcpServers, It as applyApiKeyEnv, J as DEFAULT_SETTINGS, Jt as modelsForDescriptor, K as listProjectFiles, Kt as credKeyOf, L as defaultMcpsConfigPaths, Lt as credentialsPath, M as writeProjects, Mt as findActiveTrigger, N as splitPromptSegments, Nt as mergeReferences, O as matchesSafelistEntry, Ot as createFilesCompletionProvider, P as runOAuthLogin, Pt as useCompletion, Q as useSettings, Qt as BUILD_AGENT, R as discoverProjectMcps, Rt as readCredentials, S as useSafeModeActions, St as toolResultText, T as addToSafelist, Tt as createSkillsCompletionProvider, Ut as BUILTIN_PROVIDERS, V as generateSessionTitle, Vt as setProviderCredential, W as fmtTokens, Wt as anthropicDescriptor, X as SETTINGS_TOGGLES, Xt as openrouterDescriptor, Y as SETTINGS_CHOICES, Yt as openaiDescriptor, Z as SettingsProvider, Zt as piIdOf, _ as discoverProjectSkills, _t as saveState, a as ThemeProvider, at as CATPPUCCIN_LATTE, b as writeSessionExport, bt as titleFromTurns, c as useSurfaces, ct as ConfigProvider, d as finalizeStreamingMarkdown, dt as createStateStore, en as DEFAULT_AGENT_ID, et as DEFAULT_THEME, f as finalizeStreamingMarkdownForOwner, ft as deriveSessionTitle, g as defaultSkillScanPaths, gt as loadState, h as buildSkillsConfig, ht as listSessionMeta, i as turnAsText, it as CATPPUCCIN_FRAPPE, j as suggestSafelistEntry, jt as collectReferences, k as projectsFilePath, kt as uniqueFilesFromReferences, l as useSyntaxStyles, lt as useConfig, m as useStreamBuffer, mt as lastContextSizeFromTurns, n as deleteTurnSafely, nn as resolveAgentId, nt as resolveTheme, o as useColors, ot as CATPPUCCIN_MACCHIATO, p as turnContextSize, pt as eventsFromTurns, q as useEnabledToggleSet, qt as getContextWindow, r as truncateTurnsAt, rn as singleAgentRegistry, rt as VAPORWAVE_THEME, s as useSelectStyle, st as CATPPUCCIN_MOCHA, t as countNeighbors, tn as PLAN_AGENT, tt as resolveChipColor, u as useTheme, ut as resolveConfig, v as renderSession, vt as selectableTurnIds, w as IMPLICITLY_SAFE_TOOLS, wt as SKILLS_TRIGGER, x as SafeModeProvider, xt as toolCallPreview, y as resolveSessionExportTarget, yt as stripSpawnTokensLine, z as parseMcpsFile, zt as readProviderCredential } from "./turn-operations-CHS2Prne.js";
|
|
2
2
|
export { BUILD_AGENT, BUILTIN_AGENTS, BUILTIN_PROVIDERS, BUILTIN_THEMES, CATPPUCCIN_FRAPPE, CATPPUCCIN_LATTE, CATPPUCCIN_MACCHIATO, CATPPUCCIN_MOCHA, ConfigProvider, DEFAULT_AGENT_ID, DEFAULT_SETTINGS, DEFAULT_THEME, FILES_TRIGGER, IMPLICITLY_SAFE_TOOLS, PLAN_AGENT, SETTINGS_CHOICES, SETTINGS_TOGGLES, SKILLS_TRIGGER, SafeModeProvider, SettingsProvider, ThemeProvider, VAPORWAVE_THEME, addToSafelist, ageString, anthropicDescriptor, applyApiKeyEnv, applyInsert, buildMcpServers, buildSkillsConfig, cerebrasDescriptor, cleanTitle, collectReferences, countNeighbors, createFilesCompletionProvider, createSkillsCompletionProvider, createStateStore, credKeyOf, credentialsPath, defaultMcpsConfigPaths, defaultSkillScanPaths, deleteTurnSafely, deriveSessionTitle, detectAuth, discoverProjectMcps, discoverProjectSkills, eventsFromTurns, finalizeStreamingMarkdown, finalizeStreamingMarkdownForOwner, findActiveTrigger, fmtTokens, generateSessionTitle, getContextWindow, getSafelist, isOnSafelist, lastContextSizeFromTurns, listProjectFiles, listSessionMeta, loadState, matchesSafelistEntry, mergeReferences, modelsForDescriptor, openaiDescriptor, openrouterDescriptor, parseMcpsFile, piIdOf, projectsFilePath, readCredentials, readProjects, readProviderCredential, removeProviderCredential, renderSession, resolveAgentId, resolveChipColor, resolveConfig, resolveSessionExportTarget, resolveTheme, runOAuthLogin, saveState, selectableTurnIds, setProviderCredential, shortId, singleAgentRegistry, splitPromptSegments, stripSpawnTokensLine, suggestSafelistEntry, supportsOAuth, titleFromTurns, toolCallPreview, toolResultText, truncateTurnsAt, turnAsText, turnContextSize, uniqueFilesFromReferences, uniqueSkillNamesFromReferences, useColors, useCompletion, useConfig, useEnabledToggleSet, useSafeModeActions, useSafeModeQueue, useSelectStyle, useSettings, useStreamBuffer, useSurfaces, useSyntaxStyles, useTheme, writeCredentials, writeProjects, writeSessionExport };
|
package/dist/index.js
CHANGED
|
@@ -6,8 +6,8 @@ import { i as resultToString, n as normalizeMcpBlocks, r as normalizeMcpServers,
|
|
|
6
6
|
import { _ as validateResourcePath, a as discoverSkills, b as createSkillActivationState, f as IMPLICITLY_ALLOWED_SKILL_TOOLS, g as parseAllowedToolPattern, h as matchesAllowedTool, i as writeSkillsToDisk, l as parseSkillFile, m as isToolAllowedByUnion, n as resolveSkills, p as installAllowedToolsGate, r as writeSkillToDisk, t as interpolateShellCommands, u as buildCatalog, v as validateSkillForWrite, y as validateSkillName } from "./interpolate-Ck970-61.js";
|
|
7
7
|
import { r as statsByModel, t as flattenTurns } from "./stats-DZIsGqzu.js";
|
|
8
8
|
import { i as basic_default, n as definePreset, r as basicTools } from "./presets-BRFH2qsQ.js";
|
|
9
|
-
import { a as toOpenAI, c as classifyOpenAICompatError, i as toAnthropic, l as mapOAIFinishReason, n as fromAnthropic, o as OpenAICompatHttpError, r as fromOpenAI, t as autoDetectAndConvert, u as openaiCompat } from "./messages-
|
|
10
|
-
import { i as anthropic, n as openai, r as cerebras, t as openrouter } from "./providers-
|
|
9
|
+
import { a as toOpenAI, c as classifyOpenAICompatError, i as toAnthropic, l as mapOAIFinishReason, n as fromAnthropic, o as OpenAICompatHttpError, r as fromOpenAI, t as autoDetectAndConvert, u as openaiCompat } from "./messages-xaYMMFlb.js";
|
|
10
|
+
import { i as anthropic, n as openai, r as cerebras, t as openrouter } from "./providers-BCbdv99U.js";
|
|
11
11
|
import { a as createFileMapStore, i as createMemoryStore, n as loadSession, r as createRemoteStore, t as createSession } from "./session-791hhrFa.js";
|
|
12
12
|
import { defineSkill } from "./skills.js";
|
|
13
13
|
//#region src/tracing.ts
|
|
@@ -868,7 +868,13 @@ function fromOpenAI(msg) {
|
|
|
868
868
|
};
|
|
869
869
|
}
|
|
870
870
|
function toAnthropic(msg) {
|
|
871
|
-
const blocks = msg.content.filter((b) =>
|
|
871
|
+
const blocks = msg.content.filter((b) => {
|
|
872
|
+
if (b.type === "provider_reasoning") return false;
|
|
873
|
+
if (b.type !== "thinking") return true;
|
|
874
|
+
if (b.signatureProducer === "openai") return false;
|
|
875
|
+
if (!b.signature) return false;
|
|
876
|
+
return true;
|
|
877
|
+
}).map((block) => {
|
|
872
878
|
switch (block.type) {
|
|
873
879
|
case "text": return {
|
|
874
880
|
type: "text",
|
|
@@ -897,14 +903,11 @@ function toAnthropic(msg) {
|
|
|
897
903
|
if (block.isError) out.is_error = true;
|
|
898
904
|
return out;
|
|
899
905
|
}
|
|
900
|
-
case "thinking": {
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
if (block.signature) out.signature = block.signature;
|
|
906
|
-
return out;
|
|
907
|
-
}
|
|
906
|
+
case "thinking": return {
|
|
907
|
+
type: "thinking",
|
|
908
|
+
thinking: block.text,
|
|
909
|
+
signature: block.signature
|
|
910
|
+
};
|
|
908
911
|
case "redacted_thinking": return {
|
|
909
912
|
type: "redacted_thinking",
|
|
910
913
|
data: block.data
|
|
@@ -1017,4 +1020,4 @@ function autoDetectAndConvert(msg) {
|
|
|
1017
1020
|
//#endregion
|
|
1018
1021
|
export { toOpenAI as a, classifyOpenAICompatError as c, toolResultsMessage as d, userMessage as f, toAnthropic as i, mapOAIFinishReason as l, fromAnthropic as n, OpenAICompatHttpError as o, fromOpenAI as r, assistantMessage as s, autoDetectAndConvert as t, openaiCompat as u };
|
|
1019
1022
|
|
|
1020
|
-
//# sourceMappingURL=messages-
|
|
1023
|
+
//# sourceMappingURL=messages-xaYMMFlb.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messages-z5Pq20p7.js","names":[],"sources":["../src/providers/openai-compat.ts","../src/session/messages.ts"],"sourcesContent":["/**\n * OpenAI-compatible provider factory + shared utilities.\n *\n * `openaiCompat(params)` returns a `Provider` that talks to any OpenAI-compatible\n * HTTP endpoint (OpenRouter, Cerebras, Baseten, Fireworks, Groq, local LM servers, ...).\n * Helpers (`consumeSSE`, `toOAIMessages`, ...) are shared by the bespoke `openrouter`\n * and `cerebras` wrappers, which pin defaults on top of this factory.\n */\n\nimport type { Provider, ProviderCapabilities, StreamCallbacks, StreamOptions, ToolResult, ToolSpec, TurnResult } from '.'\nimport type { ClassifiedError } from '../errors'\nimport type { SessionContentBlock, SessionMessage, ThinkingLevel, ToolResultContent, TurnFinishReason } from '../types'\nimport { matchesContextExceeded } from '../errors'\n\n// ---------------------------------------------------------------------------\n// OpenAI-compatible types\n// ---------------------------------------------------------------------------\n\nexport interface OAIMessage {\n role: 'system' | 'user' | 'assistant' | 'tool'\n content?: unknown\n tool_calls?: { id: string, type: 'function', function: { name: string, arguments: string } }[]\n tool_call_id?: string\n /**\n * OpenRouter normalized reasoning envelope. Echoed back unmodified on assistant\n * messages so the gateway can resume an extended-reasoning chain on the\n * upstream route. Ignored by hosts that don't speak the envelope.\n */\n reasoning_details?: unknown[]\n}\n\nexport interface OAITool {\n type: 'function'\n function: { name: string, description: string, parameters: Record<string, unknown> }\n}\n\n// Sentinel tags zidane uses to round-trip tool_calls / tool_results through\n// the OpenAI-compat session shape. `toOpenAI` writes them; `fromOpenAI` reads\n// them back. The `__zidane_` prefix avoids collisions with any literal `_tag`\n// value a host might emit on real wire messages.\nexport const TOOL_RESULTS_TAG = '__zidane_tool_results__'\nexport const ASSISTANT_TOOL_CALLS_TAG = '__zidane_assistant_tc__'\n\n// ---------------------------------------------------------------------------\n// SSE stream parser\n// ---------------------------------------------------------------------------\n\n/**\n * Ceiling on how many bytes may accumulate between two newline boundaries when\n * parsing an SSE stream. A broken or malicious server that emits an unbounded\n * stream of non-newline bytes would otherwise grow `buffer` without end and\n * eventually OOM the host. 8 MB is safely above the largest tool-call arg\n * JSON we reasonably expect and still catches a pathological stream in ~1 s on\n * a 10 MB/s connection.\n */\nconst SSE_MAX_BUFFER_BYTES = 8 * 1024 * 1024\n\nexport class OpenAICompatStreamError extends Error {\n constructor(message: string) {\n super(message)\n this.name = 'OpenAICompatStreamError'\n }\n}\n\nexport async function consumeSSE(\n response: Response,\n callbacks: StreamCallbacks,\n signal?: AbortSignal,\n) {\n const reader = response.body!.getReader()\n const decoder = new TextDecoder()\n let buffer = ''\n let text = ''\n let thinking = ''\n let finishReason = 'stop'\n let usage: { input: number, output: number, cost?: number, cacheRead?: number, cacheCreation?: number } = { input: 0, output: 0 }\n const tcMap = new Map<number, { id: string, name: string, args: string }>()\n // OpenRouter `reasoning_details` deltas, keyed by item index. Items are merged\n // field-by-field: text/summary concatenate, signature/data/format/id/type are\n // last-write-wins (they only appear once per item in practice).\n const reasoningMap = new Map<number, Record<string, unknown>>()\n let sawReasoningDetails = false\n\n try {\n while (true) {\n if (signal?.aborted)\n break\n const { done, value } = await reader.read()\n if (done)\n break\n\n buffer += decoder.decode(value, { stream: true })\n // Cap the line-less buffer. Any single event must fit under the ceiling.\n if (buffer.length > SSE_MAX_BUFFER_BYTES) {\n throw new OpenAICompatStreamError(\n `SSE buffer exceeded ${SSE_MAX_BUFFER_BYTES} bytes without a line boundary — upstream may be streaming non-SSE data.`,\n )\n }\n const lines = buffer.split('\\n')\n buffer = lines.pop() || ''\n\n for (const line of lines) {\n if (!line.startsWith('data: '))\n continue\n const data = line.slice(6).trim()\n if (data === '[DONE]')\n continue\n\n let chunk: Record<string, unknown>\n try {\n chunk = JSON.parse(data) as Record<string, unknown>\n }\n catch {\n // Malformed JSON frame — skip (SSE keepalives, injected comments, etc.)\n continue\n }\n\n const choices = chunk.choices as Array<Record<string, unknown>> | undefined\n const choice = choices?.[0]\n if (!choice)\n continue\n const fr = choice.finish_reason as string | undefined\n if (fr)\n finishReason = fr\n\n const delta = choice.delta as Record<string, unknown> | undefined\n\n // OpenRouter normalized reasoning envelope. Items arrive as deltas keyed\n // by `index`; merge into a stable list and stream the visible text portion\n // through `onThinking` so the UI sees reasoning live.\n const reasoningDeltaArr = delta?.reasoning_details as Array<Record<string, unknown>> | undefined\n if (reasoningDeltaArr && reasoningDeltaArr.length > 0) {\n sawReasoningDetails = true\n for (const item of reasoningDeltaArr) {\n const idx = (typeof item.index === 'number' ? item.index : 0)\n const existing = reasoningMap.get(idx) ?? {}\n // Concatenate text/summary across deltas.\n if (typeof item.text === 'string') {\n existing.text = ((existing.text as string | undefined) ?? '') + item.text\n thinking += item.text\n callbacks.onThinking?.(item.text)\n }\n if (typeof item.summary === 'string') {\n existing.summary = ((existing.summary as string | undefined) ?? '') + item.summary\n thinking += item.summary\n callbacks.onThinking?.(item.summary)\n }\n // Last-write-wins for opaque fields.\n for (const key of ['type', 'signature', 'data', 'format', 'id'] as const) {\n const v = item[key]\n if (typeof v === 'string')\n existing[key] = v\n }\n reasoningMap.set(idx, existing)\n }\n }\n\n // Legacy text-only reasoning fields (DeepSeek `reasoning_content`,\n // pre-`reasoning_details` OpenRouter, Qwen-thinking, …). Suppressed\n // when the structured envelope is in flight to avoid double-counting\n // the same reasoning text into the `thinking` buffer.\n if (!sawReasoningDetails) {\n const thinkingDelta = (delta?.reasoning_content ?? delta?.reasoning) as string | undefined\n if (thinkingDelta) {\n thinking += thinkingDelta\n callbacks.onThinking?.(thinkingDelta)\n }\n }\n\n const contentDelta = delta?.content as string | undefined\n if (contentDelta) {\n text += contentDelta\n callbacks.onText(contentDelta)\n }\n\n const toolCallsDelta = delta?.tool_calls as Array<{\n index: number\n id?: string\n function?: { name?: string, arguments?: string }\n }> | undefined\n if (toolCallsDelta) {\n for (const tc of toolCallsDelta) {\n const existing = tcMap.get(tc.index)\n if (existing) {\n if (tc.function?.arguments)\n existing.args += tc.function.arguments\n }\n else {\n tcMap.set(tc.index, {\n id: tc.id || `call_${tc.index}`,\n name: tc.function?.name || '',\n args: tc.function?.arguments || '',\n })\n }\n }\n }\n\n const chunkUsage = chunk.usage as\n | {\n prompt_tokens?: number\n completion_tokens?: number\n total_cost?: number\n cache_discount?: number\n prompt_tokens_details?: {\n cached_tokens?: number\n cache_creation_input_tokens?: number\n cache_write_tokens?: number\n }\n cache_creation_input_tokens?: number\n }\n | undefined\n if (chunkUsage) {\n const cachedRead = chunkUsage.prompt_tokens_details?.cached_tokens\n // OpenRouter surfaces cache writes via `prompt_tokens_details.cache_creation_input_tokens`\n // (Anthropic passthrough) or `cache_write_tokens` (normalized form). Either is cumulative\n // for the request, so pick whichever the route populated.\n const cachedWrite = chunkUsage.prompt_tokens_details?.cache_creation_input_tokens\n ?? chunkUsage.prompt_tokens_details?.cache_write_tokens\n ?? chunkUsage.cache_creation_input_tokens\n usage = {\n input: chunkUsage.prompt_tokens ?? 0,\n output: chunkUsage.completion_tokens ?? 0,\n cost: chunkUsage.total_cost ?? undefined,\n ...(typeof cachedRead === 'number' && cachedRead > 0 ? { cacheRead: cachedRead } : {}),\n ...(typeof cachedWrite === 'number' && cachedWrite > 0 ? { cacheCreation: cachedWrite } : {}),\n }\n }\n }\n }\n }\n finally {\n reader.releaseLock()\n }\n\n // Tool call JSON is accumulated across many deltas. If the stream truncates\n // mid-object (network hiccup, server crash) `tc.args` won't parse — fall\n // back to an empty input and surface a stream error rather than letting the\n // whole turn reject with `SyntaxError: Unexpected end of JSON input`, which\n // gives callers no actionable signal.\n const toolCalls: Array<{ id: string, name: string, input: Record<string, unknown> }> = []\n for (const tc of tcMap.values()) {\n if (!tc.args) {\n toolCalls.push({ id: tc.id, name: tc.name, input: {} })\n continue\n }\n try {\n toolCalls.push({ id: tc.id, name: tc.name, input: JSON.parse(tc.args) as Record<string, unknown> })\n }\n catch (err) {\n throw new OpenAICompatStreamError(\n `Tool call \"${tc.name}\" (${tc.id}) arguments were truncated or malformed: ${(err as Error).message}`,\n )\n }\n }\n\n // Sort by index so `reasoning_details` round-trip preserves item order.\n const reasoningDetails = Array.from(reasoningMap.entries())\n .sort(([a], [b]) => a - b)\n .map(([, item]) => item)\n\n return { text, thinking, toolCalls, finishReason, usage, reasoningDetails }\n}\n\n// ---------------------------------------------------------------------------\n// Message conversion: SessionMessage[] → OAIMessage[]\n// ---------------------------------------------------------------------------\n\n/**\n * Encode a single image block as an OpenAI `image_url` multi-part entry.\n */\nfunction toImageUrlPart(img: { mediaType: string, data: string }) {\n return {\n type: 'image_url' as const,\n image_url: { url: `data:${img.mediaType};base64,${img.data}` },\n }\n}\n\n/**\n * Summarize a `tool_result` output for the companion-user-message path — text blocks\n * are joined (separated by `\\n`) so the tool message carries all textual context; image\n * blocks are collected in a flat list for the companion user message.\n *\n * Used only on the fallback path; the native path walks `output` in-order to preserve\n * text↔image interleaving.\n */\nfunction summarizeToolResultOutput(output: string | ToolResultContent[]): {\n text: string\n images: Array<{ mediaType: string, data: string }>\n} {\n if (typeof output === 'string')\n return { text: output, images: [] }\n\n const texts: string[] = []\n const images: Array<{ mediaType: string, data: string }> = []\n for (const block of output) {\n if (block.type === 'text')\n texts.push(block.text)\n else if (block.type === 'image')\n images.push({ mediaType: block.mediaType, data: block.data })\n }\n return { text: texts.join('\\n'), images }\n}\n\n/**\n * Options that influence OpenAI-compat message shaping.\n *\n * `imageInToolResult` defaults to `false`: the loop routes images via a companion\n * user message emitted immediately after the `tool` message. Providers with\n * genuine multi-part tool support can set it to `true` to emit a single\n * multi-part `tool` message instead.\n */\ninterface ToOAIOptions {\n imageInToolResult?: boolean\n /**\n * Host accepts OpenRouter-style `reasoning_details` echoed back on assistant\n * messages. When `true`, `provider_reasoning` blocks whose `producer`/`model`\n * match the active route are forwarded; when `false` (default), they are\n * silently dropped to avoid 400s on hosts that strict-validate the schema.\n */\n supportsReasoning?: boolean\n /**\n * Active model id. Used to gate `provider_reasoning` blocks — reasoning state\n * is bound to the route that produced it, so a model switch invalidates the\n * embedded signatures.\n */\n model?: string\n}\n\nexport function toOAIMessages(system: string, messages: SessionMessage[], options: ToOAIOptions = {}): OAIMessage[] {\n const out: OAIMessage[] = [{ role: 'system', content: system }]\n const nativeImageInTool = options.imageInToolResult === true\n const reasoningEnabled = options.supportsReasoning === true\n const activeModel = options.model\n\n for (const msg of messages) {\n const toolResults = msg.content.filter(b => b.type === 'tool_result') as Extract<SessionContentBlock, { type: 'tool_result' }>[]\n const toolCalls = msg.content.filter(b => b.type === 'tool_call') as Extract<SessionContentBlock, { type: 'tool_call' }>[]\n const textBlocks = msg.content.filter(b => b.type === 'text') as Extract<SessionContentBlock, { type: 'text' }>[]\n const imageBlocks = msg.content.filter(b => b.type === 'image') as Extract<SessionContentBlock, { type: 'image' }>[]\n // Provider-bound reasoning state — attached to the assistant message below\n // when the host supports it AND the active route matches the producer.\n const reasoningBlocks = reasoningEnabled\n ? (msg.content.filter((b) => {\n if (b.type !== 'provider_reasoning')\n return false\n if (b.producer !== 'openrouter')\n return false\n if (b.model && activeModel && b.model !== activeModel)\n return false\n return true\n }) as Extract<SessionContentBlock, { type: 'provider_reasoning' }>[])\n : []\n const reasoningDetails = reasoningBlocks.flatMap(b => b.details)\n\n // Tool results → individual tool messages (plus optional companion user message for images)\n if (toolResults.length > 0) {\n for (const tr of toolResults) {\n // Pure-string output → text-only fast path, wire-identical to pre-multimodal behavior.\n if (typeof tr.output === 'string') {\n out.push({ role: 'tool', tool_call_id: tr.callId, content: tr.output })\n continue\n }\n\n // Native multi-part path — walk blocks in order so text↔image interleaving is preserved.\n if (nativeImageInTool) {\n const parts = tr.output.map(block => block.type === 'image'\n ? toImageUrlPart({ mediaType: block.mediaType, data: block.data })\n : { type: 'text' as const, text: block.text })\n out.push({ role: 'tool', tool_call_id: tr.callId, content: parts })\n continue\n }\n\n // Companion-user-message fallback (Claude Desktop / Cline pattern).\n // Works on any Chat Completions endpoint that accepts images in user messages.\n const { text, images } = summarizeToolResultOutput(tr.output)\n if (images.length === 0) {\n // Structured array happened to be text-only — collapse to pure-text path.\n out.push({ role: 'tool', tool_call_id: tr.callId, content: text })\n continue\n }\n\n const noun = images.length === 1 ? 'image' : 'images'\n const attachedMarker = `[${images.length} ${noun} attached — see next user message]`\n const toolMarker = text.length > 0 ? `${text}\\n\\n${attachedMarker}` : attachedMarker\n out.push({ role: 'tool', tool_call_id: tr.callId, content: toolMarker })\n\n out.push({\n role: 'user',\n content: [\n ...images.map(toImageUrlPart),\n { type: 'text' as const, text: `(${noun} returned by tool call ${tr.callId})` },\n ],\n })\n }\n continue\n }\n\n // Tool calls → assistant message with tool_calls array\n if (toolCalls.length > 0) {\n const textContent = textBlocks.length > 0 ? textBlocks[0].text : null\n const m: OAIMessage = {\n role: 'assistant',\n content: textContent,\n tool_calls: toolCalls.map(tc => ({\n id: tc.id,\n type: 'function' as const,\n function: { name: tc.name, arguments: JSON.stringify(tc.input) },\n })),\n }\n if (reasoningDetails.length > 0)\n m.reasoning_details = reasoningDetails\n out.push(m)\n continue\n }\n\n // Images → multimodal array\n if (imageBlocks.length > 0) {\n const parts: unknown[] = imageBlocks.map(img => ({\n type: 'image_url',\n image_url: { url: `data:${img.mediaType};base64,${img.data}` },\n }))\n for (const b of textBlocks) {\n parts.push({ type: 'text', text: b.text })\n }\n const m: OAIMessage = { role: msg.role, content: parts }\n if (msg.role === 'assistant' && reasoningDetails.length > 0)\n m.reasoning_details = reasoningDetails\n out.push(m)\n continue\n }\n\n // Pure text\n let pushed: OAIMessage\n if (textBlocks.length === 1) {\n pushed = { role: msg.role, content: textBlocks[0].text }\n }\n else if (textBlocks.length > 1) {\n pushed = { role: msg.role, content: textBlocks.map(b => ({ type: 'text', text: b.text })) }\n }\n else {\n pushed = { role: msg.role, content: null }\n }\n if (msg.role === 'assistant' && reasoningDetails.length > 0)\n pushed.reasoning_details = reasoningDetails\n out.push(pushed)\n }\n\n return out\n}\n\n// ---------------------------------------------------------------------------\n// Prompt caching\n// ---------------------------------------------------------------------------\n\nconst EPHEMERAL = { type: 'ephemeral' as const }\n\n/**\n * Add `cache_control: { type: 'ephemeral' }` breakpoints to the system message's\n * last text part and the last message's final content part.\n *\n * Mutates `messages` in place. Converts plain-string content into a single-element\n * content array so the cache marker can attach — this shape is accepted verbatim by\n * OpenRouter's Anthropic and Gemini routes and ignored by routes with automatic\n * caching (OpenAI, DeepSeek, Grok, Groq, Moonshot).\n *\n * Skip conditions (safe no-ops):\n * - Empty messages array.\n * - Assistant messages with no text (tool-call-only) — attaching a cache marker to a\n * `tool_calls` block has no defined semantics, so we skip and let the prior\n * system/tools breakpoints carry caching.\n */\nexport function applyOAICacheBreakpoints(messages: OAIMessage[]): void {\n if (messages.length === 0)\n return\n\n const first = messages[0]\n if (first.role === 'system')\n markLastContentPart(first)\n\n const lastIdx = messages.length - 1\n if (lastIdx > 0)\n markLastContentPart(messages[lastIdx])\n}\n\n/**\n * Mark the last content part of an OAI message with `cache_control`. Normalizes\n * string content into a `[{ type: 'text', text, cache_control }]` array so the\n * marker has a block to attach to.\n *\n * No-op for messages without string or array content (tool-call-only assistant\n * messages fall through; the system/tools breakpoints carry the cache prefix).\n */\nfunction markLastContentPart(msg: OAIMessage): void {\n if (typeof msg.content === 'string') {\n if (msg.content.length === 0)\n return\n msg.content = [{ type: 'text', text: msg.content, cache_control: EPHEMERAL }]\n return\n }\n if (!Array.isArray(msg.content) || msg.content.length === 0)\n return\n\n const parts = msg.content as Array<Record<string, unknown>>\n const lastBlockIdx = parts.length - 1\n parts[lastBlockIdx] = { ...parts[lastBlockIdx], cache_control: EPHEMERAL }\n}\n\n/**\n * Return a copy of `tools` with `cache_control` on the last entry.\n *\n * OpenRouter accepts the marker alongside the standard `type` + `function` fields\n * and forwards it when routing to Anthropic/Gemini. Leaves the non-cached tools\n * unchanged so the caller's reference is not mutated.\n */\nexport function applyOAIToolCacheBreakpoint(tools: OAITool[]): OAITool[] {\n if (tools.length === 0)\n return tools\n const lastIdx = tools.length - 1\n return tools.map((tool, i) =>\n i === lastIdx ? ({ ...tool, cache_control: EPHEMERAL } as OAITool & { cache_control: typeof EPHEMERAL }) : tool,\n )\n}\n\n// ---------------------------------------------------------------------------\n// Shared message builders\n// ---------------------------------------------------------------------------\n\nexport function formatTools(tools: ToolSpec[]): OAITool[] {\n return tools.map(t => ({\n type: 'function' as const,\n function: { name: t.name, description: t.description, parameters: t.inputSchema },\n }))\n}\n\nexport function userMessage(content: string): SessionMessage {\n return { role: 'user', content: [{ type: 'text', text: content }] }\n}\n\nexport function assistantMessage(content: string): SessionMessage {\n return { role: 'assistant', content: [{ type: 'text', text: content }] }\n}\n\nexport function toolResultsMessage(results: ToolResult[]): SessionMessage {\n return {\n role: 'user',\n content: results.map(r => ({\n type: 'tool_result' as const,\n callId: r.id,\n output: r.content,\n })),\n }\n}\n\nexport function buildAssistantContent(\n text: string,\n toolCalls: { id: string, name: string, input: Record<string, unknown> }[],\n thinking?: string,\n reasoning?: { details: unknown[], producer: 'openrouter', model?: string },\n): SessionMessage {\n const content: SessionContentBlock[] = []\n // `provider_reasoning` precedes `thinking` so re-attached envelopes arrive\n // before the legacy text mirror in the assistant content list.\n if (reasoning && reasoning.details.length > 0) {\n const block: Extract<SessionContentBlock, { type: 'provider_reasoning' }> = {\n type: 'provider_reasoning',\n producer: reasoning.producer,\n details: reasoning.details,\n }\n if (reasoning.model)\n block.model = reasoning.model\n content.push(block)\n }\n if (thinking)\n content.push({ type: 'thinking', text: thinking })\n if (text)\n content.push({ type: 'text', text })\n for (const tc of toolCalls) {\n content.push({ type: 'tool_call', id: tc.id, name: tc.name, input: tc.input })\n }\n return { role: 'assistant', content }\n}\n\n// ---------------------------------------------------------------------------\n// Error classification\n// ---------------------------------------------------------------------------\n\n/**\n * HTTP error thrown when an OpenAI-compatible endpoint returns a non-OK response.\n *\n * The body is best-effort JSON-parsed; `error.message` / `error.code` / `error.type`\n * are extracted for clean downstream classification.\n */\nexport class OpenAICompatHttpError extends Error {\n readonly status: number\n readonly providerCode?: string\n readonly bodyText: string\n\n constructor(status: number, bodyText: string) {\n let message = bodyText\n let code: string | undefined\n try {\n const parsed = JSON.parse(bodyText)\n message = parsed?.error?.message ?? bodyText\n code = parsed?.error?.code ?? parsed?.error?.type\n }\n catch {\n // Leave message as the raw body.\n }\n super(`HTTP ${status}: ${message}`)\n this.name = 'OpenAICompatHttpError'\n this.status = status\n this.providerCode = code\n this.bodyText = bodyText\n }\n}\n\nconst TRAILING_SLASH_RE = /\\/$/\n\n/**\n * Classify an OpenAI-compatible error into `ClassifiedError`.\n *\n * Recognizes:\n * - `AbortError` (from fetch) → `aborted`.\n * - `OpenAICompatHttpError` with a context-exceeded code or message → `context_exceeded`.\n * - Any other `OpenAICompatHttpError` → `provider_error`.\n *\n * Returns `null` for unrecognized error shapes (the loop falls back to `AgentProviderError`).\n */\nexport function classifyOpenAICompatError(err: unknown): ClassifiedError | null {\n if (!err || typeof err !== 'object')\n return null\n\n if ((err as Error).name === 'AbortError')\n return { kind: 'aborted' }\n\n // A truncated / malformed SSE stream is a transient network-level failure —\n // typically worth a retry from the caller's perspective.\n if (err instanceof OpenAICompatStreamError) {\n return {\n kind: 'provider_error',\n providerCode: 'stream_error',\n message: err.message,\n retryable: true,\n }\n }\n\n if (!(err instanceof OpenAICompatHttpError))\n return null\n\n const code = err.providerCode\n const msg = err.message\n\n if (code === 'context_length_exceeded' || matchesContextExceeded(msg)) {\n return {\n kind: 'context_exceeded',\n providerCode: code ?? 'context_length_exceeded',\n message: msg,\n }\n }\n\n return {\n kind: 'provider_error',\n providerCode: code ?? String(err.status),\n message: msg,\n retryable: isRetryableHttpStatus(err.status),\n }\n}\n\n/**\n * 429 + 5xx (except 501 Not Implemented) are safe to retry with backoff;\n * 4xx other than 429 are terminal (bad request, auth, not found, etc.).\n */\nfunction isRetryableHttpStatus(status: number): boolean {\n if (status === 429)\n return true\n if (status >= 500 && status !== 501)\n return true\n return false\n}\n\n// ---------------------------------------------------------------------------\n// Finish-reason mapping\n// ---------------------------------------------------------------------------\n\n/**\n * Map an OpenAI-compatible `finish_reason` string to the zidane `TurnFinishReason` union.\n */\nexport function mapOAIFinishReason(reason: string | null | undefined): TurnFinishReason | undefined {\n if (!reason)\n return undefined\n switch (reason) {\n case 'stop':\n return 'stop'\n case 'tool_calls':\n case 'function_call':\n return 'tool-calls'\n case 'length':\n return 'length'\n case 'content_filter':\n return 'content-filter'\n default:\n return 'other'\n }\n}\n\n// ---------------------------------------------------------------------------\n// openaiCompat factory\n// ---------------------------------------------------------------------------\n\n/**\n * Auth header config. `scheme` is prepended to the api key with a space, e.g.\n * `{ name: 'Authorization', scheme: 'Bearer' }` → `Authorization: Bearer <key>`.\n * Omit `scheme` for raw header values (e.g. `{ name: 'X-Api-Key' }` → `X-Api-Key: <key>`).\n *\n * Real-world examples:\n * - Default OpenAI / OpenRouter / Cerebras: `{ name: 'Authorization', scheme: 'Bearer' }`.\n * - Baseten: `{ name: 'Authorization', scheme: 'Api-Key' }`.\n * - Some gateways: `{ name: 'X-Api-Key' }`.\n */\nexport interface OpenAICompatAuthHeader {\n name: string\n scheme?: string\n}\n\nexport interface OpenAICompatParams {\n /** Bearer-style API key. */\n apiKey: string\n /** Base URL — `/chat/completions` is appended. */\n baseURL: string\n /** Default model id when `run({ model })` is omitted. */\n defaultModel?: string\n /** Provider name exposed as `Provider.name`. Defaults to `'openai-compat'`. */\n name?: string\n /** Auth header shape. Defaults to `{ name: 'Authorization', scheme: 'Bearer' }`. */\n authHeader?: OpenAICompatAuthHeader\n /** Extra headers sent with every request (e.g. referer, user-agent). */\n extraHeaders?: Record<string, string>\n /**\n * Provider-level capability flags. Routed into the message shaper and the\n * agent loop so images in tool results + user messages are handled correctly\n * for the underlying model.\n *\n * Defaults when omitted: `vision: false`, `imageInToolResult: false` — a\n * conservative assumption matching most OSS text-only OpenAI-compat\n * endpoints. Override when routing to a known vision-capable endpoint\n * (e.g. OpenRouter vision models, Baseten image-capable deployments).\n */\n capabilities?: ProviderCapabilities\n /**\n * Whether this endpoint honors `cache_control: { type: 'ephemeral' }` markers\n * on message content parts and tool definitions.\n *\n * - `true` — inject markers when the caller asks for caching. OpenRouter routes\n * to Anthropic/Gemini forward the markers; routes to OpenAI/DeepSeek/\n * Grok/Groq/Moonshot ignore them (those backends cache automatically).\n * - `false` — never inject markers. Safe default for endpoints that strictly\n * validate the request schema (OpenAI direct, most OSS inference\n * servers) and would reject unknown fields.\n *\n * Default: `false`. The `openrouter` wrapper sets this to `true`.\n */\n cacheBreakpoints?: boolean\n /**\n * Whether this endpoint speaks OpenRouter's normalized reasoning envelope —\n * `reasoning: { effort | max_tokens | exclude }` on requests and structured\n * `reasoning_details[]` on assistant messages, round-tripped to preserve\n * extended-reasoning state across turns.\n *\n * - `true` — map zidane's `behavior.thinking` / `behavior.thinkingBudget` to\n * the request's `reasoning` field, capture `reasoning_details`\n * from streaming responses into `provider_reasoning` blocks, and\n * echo them back on subsequent assistant messages.\n * - `false` — never set the field; drop any stored `provider_reasoning`\n * blocks before sending. Safe default for hosts that strict-\n * validate the request schema.\n *\n * Default: `false`. The `openrouter` wrapper sets this to `true`.\n */\n supportsReasoning?: boolean\n /**\n * Generic pass-through for fields on the Chat Completions request body that\n * zidane does not yet type. Spread into the request before the typed core\n * (model / messages / tools / max_tokens / stream / tool_choice), so\n * explicit options always win on collision.\n *\n * Forward-compat escape hatch for endpoints that ship one-off fields ahead\n * of zidane (e.g. OpenAI `reasoning_effort`, OpenRouter `provider` routing,\n * vendor-specific `safety_level` knobs).\n */\n extraBodyParams?: Record<string, unknown>\n}\n\n/**\n * Map zidane's `ThinkingLevel` + optional explicit budget to the OpenRouter\n * `reasoning` request field. Returns `undefined` when reasoning should not be\n * sent (off, or no level + no budget).\n *\n * - `'low' | 'medium' | 'high'` → `{ effort }`.\n * - `'minimal'` → `{ effort: 'low' }` (closest match in OpenRouter's vocabulary).\n * - `'adaptive'` → `{}` (let upstream decide; OpenRouter passes through).\n * - explicit `thinkingBudget` → `{ max_tokens }` overlaid on the level.\n */\nfunction planOpenRouterReasoning(\n thinking: ThinkingLevel | undefined,\n thinkingBudget: number | undefined,\n): Record<string, unknown> | undefined {\n if ((!thinking || thinking === 'off') && typeof thinkingBudget !== 'number')\n return undefined\n const out: Record<string, unknown> = {}\n if (thinking && thinking !== 'off' && thinking !== 'adaptive') {\n out.effort = thinking === 'minimal' ? 'low' : thinking\n }\n if (typeof thinkingBudget === 'number' && thinkingBudget > 0) {\n out.max_tokens = thinkingBudget\n }\n return out\n}\n\n/**\n * Factory for any OpenAI-compatible HTTP endpoint.\n *\n * Speaks the standard `POST /chat/completions` + `stream: true` + SSE dialect.\n * Thin wrappers (`openrouter`, `cerebras`) call this with pinned defaults.\n *\n * @example Baseten (non-standard auth scheme)\n * ```ts\n * openaiCompat({\n * name: 'baseten',\n * apiKey: process.env.BASETEN_API_KEY!,\n * baseURL: process.env.BASETEN_PROXY_URL!,\n * authHeader: { name: 'Authorization', scheme: 'Api-Key' },\n * })\n * ```\n */\nexport function openaiCompat(params: OpenAICompatParams): Provider {\n const name = params.name ?? 'openai-compat'\n const defaultModel = params.defaultModel ?? 'gpt-4o-mini'\n const authHeaderName = params.authHeader?.name ?? 'Authorization'\n const authHeaderValue = params.authHeader?.scheme\n ? `${params.authHeader.scheme} ${params.apiKey}`\n : (params.authHeader ? params.apiKey : `Bearer ${params.apiKey}`)\n const extraHeaders = params.extraHeaders ?? {}\n const endpoint = `${params.baseURL.replace(TRAILING_SLASH_RE, '')}/chat/completions`\n const capabilities: ProviderCapabilities = {\n vision: params.capabilities?.vision ?? false,\n imageInToolResult: params.capabilities?.imageInToolResult ?? false,\n }\n\n const cacheBreakpointsEnabled = params.cacheBreakpoints === true\n const reasoningEnabled = params.supportsReasoning === true\n\n return {\n name,\n meta: { defaultModel, capabilities },\n formatTools,\n userMessage,\n assistantMessage,\n toolResultsMessage,\n classifyError: classifyOpenAICompatError,\n\n async stream(options: StreamOptions, callbacks: StreamCallbacks): Promise<TurnResult> {\n const modelId = options.model || defaultModel\n const messages = toOAIMessages(options.system, options.messages, {\n imageInToolResult: capabilities.imageInToolResult === true,\n supportsReasoning: reasoningEnabled,\n model: modelId,\n })\n // Prompt caching — insert `cache_control: { type: 'ephemeral' }` breakpoints on\n // the system message's last text part, the last tool definition, and the last\n // message's final content part. Only emitted when the factory was constructed\n // with `cacheBreakpoints: true` (set by the `openrouter` wrapper); endpoints\n // that strict-validate the request schema otherwise reject unknown fields.\n const shouldCache = cacheBreakpointsEnabled && options.cache !== false\n if (shouldCache) {\n applyOAICacheBreakpoints(messages)\n }\n\n // max_tokens must cover both thinking budget and response tokens\n const maxTokens = options.thinkingBudget\n ? options.thinkingBudget + options.maxTokens\n : options.maxTokens\n\n const body: Record<string, unknown> = {\n // Spread first so the typed core below wins on collision — explicit\n // always overrides generic.\n ...(params.extraBodyParams ?? {}),\n model: modelId,\n messages,\n max_tokens: maxTokens,\n stream: true,\n }\n\n // OpenRouter normalized reasoning request field. Only set when the host\n // advertises support — Chat Completions hosts that don't speak it would\n // 400 on the unknown field.\n if (reasoningEnabled) {\n const reasoning = planOpenRouterReasoning(options.thinking, options.thinkingBudget)\n if (reasoning)\n body.reasoning = reasoning\n }\n\n if (options.tools && (options.tools as unknown[]).length > 0) {\n body.tools = shouldCache\n ? applyOAIToolCacheBreakpoint(options.tools as OAITool[])\n : options.tools\n }\n\n if (options.toolChoice) {\n if (options.toolChoice.type === 'tool' && options.toolChoice.name)\n body.tool_choice = { type: 'function', function: { name: options.toolChoice.name } }\n else if (options.toolChoice.type === 'required')\n body.tool_choice = 'required'\n else\n body.tool_choice = 'auto'\n }\n\n const response = await fetch(endpoint, {\n method: 'POST',\n headers: {\n [authHeaderName]: authHeaderValue,\n 'Content-Type': 'application/json',\n ...extraHeaders,\n },\n body: JSON.stringify(body),\n signal: options.signal,\n })\n\n if (!response.ok) {\n const errorText = await response.text()\n throw new OpenAICompatHttpError(response.status, errorText)\n }\n\n const result = await consumeSSE(response, callbacks, options.signal)\n const finishReason = mapOAIFinishReason(result.finishReason)\n\n return {\n assistantMessage: buildAssistantContent(\n result.text,\n result.toolCalls,\n result.thinking,\n reasoningEnabled && result.reasoningDetails.length > 0\n ? { details: result.reasoningDetails, producer: 'openrouter', model: modelId }\n : undefined,\n ),\n text: result.text,\n toolCalls: result.toolCalls,\n done: result.finishReason === 'stop' || result.toolCalls.length === 0,\n usage: {\n input: result.usage.input,\n output: result.usage.output,\n ...(result.usage.cacheRead !== undefined ? { cacheRead: result.usage.cacheRead } : {}),\n ...(result.usage.cacheCreation !== undefined ? { cacheCreation: result.usage.cacheCreation } : {}),\n ...(result.usage.cost !== undefined ? { cost: result.usage.cost } : {}),\n ...(finishReason ? { finishReason } : {}),\n modelId,\n },\n }\n },\n }\n}\n","/**\n * Canonical SessionMessage format with converters from/to Anthropic and OpenAI-compat formats.\n */\n\nimport type { SessionContentBlock, SessionMessage, ToolResultContent } from '../types'\nimport { ASSISTANT_TOOL_CALLS_TAG, TOOL_RESULTS_TAG } from '../providers/openai-compat'\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\n/**\n * Decode an Anthropic `tool_result.content` wire value back to zidane's canonical\n * `string | ToolResultContent[]` shape.\n *\n * Anthropic accepts three shapes in the wire: `string`, `Array<{type:'text',text}>`,\n * or `Array<{type:'text'|'image', ...}>`. We collapse to `string` only when every\n * block is text to keep simple cases readable.\n */\nfunction decodeAnthropicToolResultContent(content: unknown): string | ToolResultContent[] {\n if (typeof content === 'string')\n return content\n\n if (!Array.isArray(content))\n return JSON.stringify(content)\n\n const blocks: ToolResultContent[] = []\n for (const raw of content) {\n if (!raw || typeof raw !== 'object')\n continue\n const b = raw as Record<string, unknown>\n if (b.type === 'text' && typeof b.text === 'string') {\n blocks.push({ type: 'text', text: b.text })\n continue\n }\n if (b.type === 'image' && b.source && typeof b.source === 'object') {\n const src = b.source as Record<string, unknown>\n if (src.type === 'base64' && typeof src.data === 'string' && typeof src.media_type === 'string') {\n blocks.push({ type: 'image', mediaType: src.media_type, data: src.data })\n continue\n }\n }\n // Unknown block → stringify into text for visibility.\n blocks.push({ type: 'text', text: JSON.stringify(raw) })\n }\n\n if (blocks.length === 0)\n return ''\n\n const hasNonText = blocks.some(b => b.type !== 'text')\n if (!hasNonText)\n return blocks.map(b => (b as { type: 'text', text: string }).text).join('\\n')\n\n return blocks\n}\n\n/**\n * Encode zidane's canonical `string | ToolResultContent[]` shape to Anthropic's\n * wire format for `tool_result.content`.\n */\nfunction encodeAnthropicToolResultContent(\n output: string | ToolResultContent[],\n): string | Array<{ type: 'text', text: string } | { type: 'image', source: { type: 'base64', media_type: string, data: string } }> {\n if (typeof output === 'string')\n return output\n return output.map((b) => {\n if (b.type === 'text')\n return { type: 'text' as const, text: b.text }\n return {\n type: 'image' as const,\n source: { type: 'base64' as const, media_type: b.mediaType, data: b.data },\n }\n })\n}\n\n// ---------------------------------------------------------------------------\n// fromAnthropic\n// ---------------------------------------------------------------------------\n\nexport function fromAnthropic(msg: { role: string, content: unknown }): SessionMessage {\n const role = msg.role as 'user' | 'assistant'\n const content: SessionContentBlock[] = []\n\n if (typeof msg.content === 'string') {\n content.push({ type: 'text', text: msg.content })\n return { role, content }\n }\n\n if (Array.isArray(msg.content)) {\n for (const block of msg.content) {\n if (!block || typeof block !== 'object')\n continue\n const b = block as Record<string, unknown>\n\n if (b.type === 'text') {\n content.push({ type: 'text', text: b.text as string })\n }\n else if (b.type === 'image') {\n const source = b.source as Record<string, unknown>\n if (source?.type === 'base64') {\n content.push({ type: 'image', mediaType: source.media_type as string, data: source.data as string })\n }\n }\n else if (b.type === 'tool_use') {\n content.push({ type: 'tool_call', id: b.id as string, name: b.name as string, input: b.input as Record<string, unknown> })\n }\n else if (b.type === 'tool_result') {\n const output = decodeAnthropicToolResultContent(b.content)\n const block: Extract<SessionContentBlock, { type: 'tool_result' }> = {\n type: 'tool_result',\n callId: b.tool_use_id as string,\n output,\n }\n if (b.is_error === true)\n block.isError = true\n content.push(block)\n }\n else if (b.type === 'thinking') {\n const block: Extract<SessionContentBlock, { type: 'thinking' }> = {\n type: 'thinking',\n text: (b.thinking as string | undefined) ?? '',\n }\n if (typeof b.signature === 'string') {\n block.signature = b.signature\n // Tag the producer so cross-provider senders can drop foreign signatures.\n block.signatureProducer = 'anthropic'\n }\n content.push(block)\n }\n else if (b.type === 'redacted_thinking') {\n // Encrypted reasoning that must be echoed back unmodified to keep\n // interleaved-thinking + tool-use chains working on Sonnet 3.7+/Opus 4.x.\n content.push({ type: 'redacted_thinking', data: (b.data as string | undefined) ?? '' })\n }\n // Unknown block types are silently skipped\n }\n }\n\n return { role, content }\n}\n\n// ---------------------------------------------------------------------------\n// fromOpenAI\n// ---------------------------------------------------------------------------\n\nexport function fromOpenAI(msg: { role: string, content: unknown }): SessionMessage {\n const role = msg.role as 'user' | 'assistant'\n const content: SessionContentBlock[] = []\n const c: unknown = msg.content\n\n if (c == null) {\n return { role, content }\n }\n\n if (typeof c === 'string') {\n content.push({ type: 'text', text: c })\n return { role, content }\n }\n\n if (typeof c === 'object' && !Array.isArray(c) && (c as { _tag?: unknown })._tag === ASSISTANT_TOOL_CALLS_TAG) {\n const tagged = c as { text?: unknown, tool_calls?: unknown }\n if (typeof tagged.text === 'string' && tagged.text) {\n content.push({ type: 'text', text: tagged.text })\n }\n if (Array.isArray(tagged.tool_calls)) {\n for (const raw of tagged.tool_calls) {\n if (!raw || typeof raw !== 'object')\n continue\n const tc = raw as { id?: string, function?: { name?: string, arguments?: unknown } }\n const rawArgs = tc.function?.arguments\n const input: Record<string, unknown> = rawArgs\n ? (typeof rawArgs === 'string' ? JSON.parse(rawArgs) : rawArgs as Record<string, unknown>)\n : {}\n content.push({ type: 'tool_call', id: tc.id ?? '', name: tc.function?.name ?? '', input })\n }\n }\n return { role, content }\n }\n\n if (typeof c === 'object' && !Array.isArray(c) && (c as { _tag?: unknown })._tag === TOOL_RESULTS_TAG) {\n const tagged = c as { results?: unknown }\n if (Array.isArray(tagged.results)) {\n for (const raw of tagged.results) {\n if (!raw || typeof raw !== 'object')\n continue\n const r = raw as { tool_call_id?: string, content?: string | ToolResultContent[] }\n content.push({ type: 'tool_result', callId: r.tool_call_id ?? '', output: r.content ?? '' })\n }\n }\n return { role, content }\n }\n\n if (Array.isArray(c)) {\n for (const block of c) {\n if (!block || typeof block !== 'object')\n continue\n const b = block as Record<string, unknown>\n\n if (b.type === 'text') {\n content.push({ type: 'text', text: b.text as string })\n }\n else if (b.type === 'image_url') {\n const imageUrl = (b.image_url as Record<string, unknown>)?.url as string\n if (imageUrl?.startsWith('data:')) {\n const [meta, data] = imageUrl.slice(5).split(',', 2)\n const mediaType = meta.replace(';base64', '')\n content.push({ type: 'image', mediaType, data })\n }\n }\n }\n return { role, content }\n }\n\n return { role, content }\n}\n\n// ---------------------------------------------------------------------------\n// toAnthropic\n// ---------------------------------------------------------------------------\n\nexport function toAnthropic(msg: SessionMessage): { role: string, content: unknown } {\n const blocks = msg.content\n // Drop foreign reasoning state — Anthropic rejects unknown block types and\n // OpenAI-flavored signatures are not valid Anthropic HMACs.\n .filter(b => !(b.type === 'thinking' && b.signatureProducer === 'openai'))\n .filter(b => b.type !== 'provider_reasoning')\n .map((block) => {\n switch (block.type) {\n case 'text':\n return { type: 'text', text: block.text }\n case 'image':\n return { type: 'image', source: { type: 'base64', media_type: block.mediaType, data: block.data } }\n case 'tool_call':\n return { type: 'tool_use', id: block.id, name: block.name, input: block.input }\n case 'tool_result': {\n const out: Record<string, unknown> = {\n type: 'tool_result',\n tool_use_id: block.callId,\n content: encodeAnthropicToolResultContent(block.output),\n }\n if (block.isError)\n out.is_error = true\n return out\n }\n case 'thinking': {\n // `signature` is required by the Anthropic SDK on `ThinkingBlockParam`.\n // Omit the key entirely when missing — sending `undefined` is dropped by\n // JSON.stringify but the API still 400s on extended-thinking paths.\n const out: Record<string, unknown> = { type: 'thinking', thinking: block.text }\n if (block.signature)\n out.signature = block.signature\n return out\n }\n case 'redacted_thinking':\n return { type: 'redacted_thinking', data: block.data }\n default:\n return { type: 'text', text: '' }\n }\n })\n\n // Simplify to plain string if only one text block\n if (blocks.length === 1 && blocks[0].type === 'text') {\n return { role: msg.role, content: (blocks[0] as { type: string, text: string }).text }\n }\n\n return { role: msg.role, content: blocks }\n}\n\n// ---------------------------------------------------------------------------\n// toOpenAI\n// ---------------------------------------------------------------------------\n\nexport function toOpenAI(msg: SessionMessage): { role: string, content: unknown } {\n const toolCalls = msg.content.filter(b => b.type === 'tool_call')\n const toolResults = msg.content.filter(b => b.type === 'tool_result')\n const textBlocks = msg.content.filter(b => b.type === 'text')\n const imageBlocks = msg.content.filter(b => b.type === 'image')\n\n // Tool results → tagged format\n if (toolResults.length > 0) {\n return {\n role: msg.role,\n content: {\n _tag: TOOL_RESULTS_TAG,\n results: toolResults.map((b) => {\n const tr = b as Extract<SessionContentBlock, { type: 'tool_result' }>\n return { tool_call_id: tr.callId, content: tr.output }\n }),\n },\n }\n }\n\n // Tool calls → tagged format\n if (toolCalls.length > 0) {\n const textContent = textBlocks.length > 0 ? (textBlocks[0] as Extract<SessionContentBlock, { type: 'text' }>).text : null\n return {\n role: msg.role,\n content: {\n _tag: ASSISTANT_TOOL_CALLS_TAG,\n text: textContent,\n tool_calls: toolCalls.map((b) => {\n const tc = b as Extract<SessionContentBlock, { type: 'tool_call' }>\n return {\n id: tc.id,\n type: 'function',\n function: { name: tc.name, arguments: JSON.stringify(tc.input) },\n }\n }),\n },\n }\n }\n\n // Images → multimodal array\n if (imageBlocks.length > 0) {\n const parts: unknown[] = imageBlocks.map((b) => {\n const img = b as Extract<SessionContentBlock, { type: 'image' }>\n return { type: 'image_url', image_url: { url: `data:${img.mediaType};base64,${img.data}` } }\n })\n for (const b of textBlocks) {\n parts.push({ type: 'text', text: (b as Extract<SessionContentBlock, { type: 'text' }>).text })\n }\n return { role: msg.role, content: parts }\n }\n\n // Pure text → string\n if (textBlocks.length === 1) {\n return { role: msg.role, content: (textBlocks[0] as Extract<SessionContentBlock, { type: 'text' }>).text }\n }\n\n // Multiple text blocks or empty\n if (textBlocks.length > 1) {\n return { role: msg.role, content: textBlocks.map(b => ({ type: 'text', text: (b as Extract<SessionContentBlock, { type: 'text' }>).text })) }\n }\n\n return { role: msg.role, content: null }\n}\n\n// ---------------------------------------------------------------------------\n// autoDetectAndConvert\n// ---------------------------------------------------------------------------\n\nexport function autoDetectAndConvert(msg: { role: string, content: unknown }): SessionMessage {\n const c: unknown = msg.content\n\n // OpenAI-compat tagged messages\n if (c && typeof c === 'object' && !Array.isArray(c)) {\n const tag = (c as { _tag?: unknown })._tag\n if (typeof tag === 'string' && tag.startsWith('__zidane_'))\n return fromOpenAI(msg)\n }\n\n // Array: inspect block types\n if (Array.isArray(c)) {\n for (const block of c) {\n if (!block || typeof block !== 'object')\n continue\n const b = block as Record<string, unknown>\n if (b.type === 'tool_use' || (b.type === 'tool_result' && 'tool_use_id' in b)) {\n return fromAnthropic(msg)\n }\n if (b.type === 'image_url') {\n return fromOpenAI(msg)\n }\n }\n // Default array → Anthropic\n return fromAnthropic(msg)\n }\n\n // String → either format is the same\n if (typeof c === 'string') {\n return fromAnthropic(msg)\n }\n\n // Default\n return fromAnthropic(msg)\n}\n"],"mappings":";;AAwCA,MAAa,mBAAmB;AAChC,MAAa,2BAA2B;;;;;;;;;AAcxC,MAAM,uBAAuB,IAAI,OAAO;AAExC,IAAa,0BAAb,cAA6C,MAAM;CACjD,YAAY,SAAiB;EAC3B,MAAM,QAAQ;EACd,KAAK,OAAO;;;AAIhB,eAAsB,WACpB,UACA,WACA,QACA;CACA,MAAM,SAAS,SAAS,KAAM,WAAW;CACzC,MAAM,UAAU,IAAI,aAAa;CACjC,IAAI,SAAS;CACb,IAAI,OAAO;CACX,IAAI,WAAW;CACf,IAAI,eAAe;CACnB,IAAI,QAAsG;EAAE,OAAO;EAAG,QAAQ;EAAG;CACjI,MAAM,wBAAQ,IAAI,KAAyD;CAI3E,MAAM,+BAAe,IAAI,KAAsC;CAC/D,IAAI,sBAAsB;CAE1B,IAAI;EACF,OAAO,MAAM;GACX,IAAI,QAAQ,SACV;GACF,MAAM,EAAE,MAAM,UAAU,MAAM,OAAO,MAAM;GAC3C,IAAI,MACF;GAEF,UAAU,QAAQ,OAAO,OAAO,EAAE,QAAQ,MAAM,CAAC;GAEjD,IAAI,OAAO,SAAS,sBAClB,MAAM,IAAI,wBACR,uBAAuB,qBAAqB,0EAC7C;GAEH,MAAM,QAAQ,OAAO,MAAM,KAAK;GAChC,SAAS,MAAM,KAAK,IAAI;GAExB,KAAK,MAAM,QAAQ,OAAO;IACxB,IAAI,CAAC,KAAK,WAAW,SAAS,EAC5B;IACF,MAAM,OAAO,KAAK,MAAM,EAAE,CAAC,MAAM;IACjC,IAAI,SAAS,UACX;IAEF,IAAI;IACJ,IAAI;KACF,QAAQ,KAAK,MAAM,KAAK;YAEpB;KAEJ;;IAIF,MAAM,SADU,MAAM,UACG;IACzB,IAAI,CAAC,QACH;IACF,MAAM,KAAK,OAAO;IAClB,IAAI,IACF,eAAe;IAEjB,MAAM,QAAQ,OAAO;IAKrB,MAAM,oBAAoB,OAAO;IACjC,IAAI,qBAAqB,kBAAkB,SAAS,GAAG;KACrD,sBAAsB;KACtB,KAAK,MAAM,QAAQ,mBAAmB;MACpC,MAAM,MAAO,OAAO,KAAK,UAAU,WAAW,KAAK,QAAQ;MAC3D,MAAM,WAAW,aAAa,IAAI,IAAI,IAAI,EAAE;MAE5C,IAAI,OAAO,KAAK,SAAS,UAAU;OACjC,SAAS,QAAS,SAAS,QAA+B,MAAM,KAAK;OACrE,YAAY,KAAK;OACjB,UAAU,aAAa,KAAK,KAAK;;MAEnC,IAAI,OAAO,KAAK,YAAY,UAAU;OACpC,SAAS,WAAY,SAAS,WAAkC,MAAM,KAAK;OAC3E,YAAY,KAAK;OACjB,UAAU,aAAa,KAAK,QAAQ;;MAGtC,KAAK,MAAM,OAAO;OAAC;OAAQ;OAAa;OAAQ;OAAU;OAAK,EAAW;OACxE,MAAM,IAAI,KAAK;OACf,IAAI,OAAO,MAAM,UACf,SAAS,OAAO;;MAEpB,aAAa,IAAI,KAAK,SAAS;;;IAQnC,IAAI,CAAC,qBAAqB;KACxB,MAAM,gBAAiB,OAAO,qBAAqB,OAAO;KAC1D,IAAI,eAAe;MACjB,YAAY;MACZ,UAAU,aAAa,cAAc;;;IAIzC,MAAM,eAAe,OAAO;IAC5B,IAAI,cAAc;KAChB,QAAQ;KACR,UAAU,OAAO,aAAa;;IAGhC,MAAM,iBAAiB,OAAO;IAK9B,IAAI,gBACF,KAAK,MAAM,MAAM,gBAAgB;KAC/B,MAAM,WAAW,MAAM,IAAI,GAAG,MAAM;KACpC,IAAI;UACE,GAAG,UAAU,WACf,SAAS,QAAQ,GAAG,SAAS;YAG/B,MAAM,IAAI,GAAG,OAAO;MAClB,IAAI,GAAG,MAAM,QAAQ,GAAG;MACxB,MAAM,GAAG,UAAU,QAAQ;MAC3B,MAAM,GAAG,UAAU,aAAa;MACjC,CAAC;;IAKR,MAAM,aAAa,MAAM;IAczB,IAAI,YAAY;KACd,MAAM,aAAa,WAAW,uBAAuB;KAIrD,MAAM,cAAc,WAAW,uBAAuB,+BACjD,WAAW,uBAAuB,sBAClC,WAAW;KAChB,QAAQ;MACN,OAAO,WAAW,iBAAiB;MACnC,QAAQ,WAAW,qBAAqB;MACxC,MAAM,WAAW,cAAc,KAAA;MAC/B,GAAI,OAAO,eAAe,YAAY,aAAa,IAAI,EAAE,WAAW,YAAY,GAAG,EAAE;MACrF,GAAI,OAAO,gBAAgB,YAAY,cAAc,IAAI,EAAE,eAAe,aAAa,GAAG,EAAE;MAC7F;;;;WAKD;EACN,OAAO,aAAa;;CAQtB,MAAM,YAAiF,EAAE;CACzF,KAAK,MAAM,MAAM,MAAM,QAAQ,EAAE;EAC/B,IAAI,CAAC,GAAG,MAAM;GACZ,UAAU,KAAK;IAAE,IAAI,GAAG;IAAI,MAAM,GAAG;IAAM,OAAO,EAAE;IAAE,CAAC;GACvD;;EAEF,IAAI;GACF,UAAU,KAAK;IAAE,IAAI,GAAG;IAAI,MAAM,GAAG;IAAM,OAAO,KAAK,MAAM,GAAG,KAAK;IAA6B,CAAC;WAE9F,KAAK;GACV,MAAM,IAAI,wBACR,cAAc,GAAG,KAAK,KAAK,GAAG,GAAG,2CAA4C,IAAc,UAC5F;;;CAKL,MAAM,mBAAmB,MAAM,KAAK,aAAa,SAAS,CAAC,CACxD,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CACzB,KAAK,GAAG,UAAU,KAAK;CAE1B,OAAO;EAAE;EAAM;EAAU;EAAW;EAAc;EAAO;EAAkB;;;;;AAU7E,SAAS,eAAe,KAA0C;CAChE,OAAO;EACL,MAAM;EACN,WAAW,EAAE,KAAK,QAAQ,IAAI,UAAU,UAAU,IAAI,QAAQ;EAC/D;;;;;;;;;;AAWH,SAAS,0BAA0B,QAGjC;CACA,IAAI,OAAO,WAAW,UACpB,OAAO;EAAE,MAAM;EAAQ,QAAQ,EAAE;EAAE;CAErC,MAAM,QAAkB,EAAE;CAC1B,MAAM,SAAqD,EAAE;CAC7D,KAAK,MAAM,SAAS,QAClB,IAAI,MAAM,SAAS,QACjB,MAAM,KAAK,MAAM,KAAK;MACnB,IAAI,MAAM,SAAS,SACtB,OAAO,KAAK;EAAE,WAAW,MAAM;EAAW,MAAM,MAAM;EAAM,CAAC;CAEjE,OAAO;EAAE,MAAM,MAAM,KAAK,KAAK;EAAE;EAAQ;;AA4B3C,SAAgB,cAAc,QAAgB,UAA4B,UAAwB,EAAE,EAAgB;CAClH,MAAM,MAAoB,CAAC;EAAE,MAAM;EAAU,SAAS;EAAQ,CAAC;CAC/D,MAAM,oBAAoB,QAAQ,sBAAsB;CACxD,MAAM,mBAAmB,QAAQ,sBAAsB;CACvD,MAAM,cAAc,QAAQ;CAE5B,KAAK,MAAM,OAAO,UAAU;EAC1B,MAAM,cAAc,IAAI,QAAQ,QAAO,MAAK,EAAE,SAAS,cAAc;EACrE,MAAM,YAAY,IAAI,QAAQ,QAAO,MAAK,EAAE,SAAS,YAAY;EACjE,MAAM,aAAa,IAAI,QAAQ,QAAO,MAAK,EAAE,SAAS,OAAO;EAC7D,MAAM,cAAc,IAAI,QAAQ,QAAO,MAAK,EAAE,SAAS,QAAQ;EAc/D,MAAM,oBAXkB,mBACnB,IAAI,QAAQ,QAAQ,MAAM;GACzB,IAAI,EAAE,SAAS,sBACb,OAAO;GACT,IAAI,EAAE,aAAa,cACjB,OAAO;GACT,IAAI,EAAE,SAAS,eAAe,EAAE,UAAU,aACxC,OAAO;GACT,OAAO;IACP,GACF,EAAE,EACmC,SAAQ,MAAK,EAAE,QAAQ;EAGhE,IAAI,YAAY,SAAS,GAAG;GAC1B,KAAK,MAAM,MAAM,aAAa;IAE5B,IAAI,OAAO,GAAG,WAAW,UAAU;KACjC,IAAI,KAAK;MAAE,MAAM;MAAQ,cAAc,GAAG;MAAQ,SAAS,GAAG;MAAQ,CAAC;KACvE;;IAIF,IAAI,mBAAmB;KACrB,MAAM,QAAQ,GAAG,OAAO,KAAI,UAAS,MAAM,SAAS,UAChD,eAAe;MAAE,WAAW,MAAM;MAAW,MAAM,MAAM;MAAM,CAAC,GAChE;MAAE,MAAM;MAAiB,MAAM,MAAM;MAAM,CAAC;KAChD,IAAI,KAAK;MAAE,MAAM;MAAQ,cAAc,GAAG;MAAQ,SAAS;MAAO,CAAC;KACnE;;IAKF,MAAM,EAAE,MAAM,WAAW,0BAA0B,GAAG,OAAO;IAC7D,IAAI,OAAO,WAAW,GAAG;KAEvB,IAAI,KAAK;MAAE,MAAM;MAAQ,cAAc,GAAG;MAAQ,SAAS;MAAM,CAAC;KAClE;;IAGF,MAAM,OAAO,OAAO,WAAW,IAAI,UAAU;IAC7C,MAAM,iBAAiB,IAAI,OAAO,OAAO,GAAG,KAAK;IACjD,MAAM,aAAa,KAAK,SAAS,IAAI,GAAG,KAAK,MAAM,mBAAmB;IACtE,IAAI,KAAK;KAAE,MAAM;KAAQ,cAAc,GAAG;KAAQ,SAAS;KAAY,CAAC;IAExE,IAAI,KAAK;KACP,MAAM;KACN,SAAS,CACP,GAAG,OAAO,IAAI,eAAe,EAC7B;MAAE,MAAM;MAAiB,MAAM,IAAI,KAAK,yBAAyB,GAAG,OAAO;MAAI,CAChF;KACF,CAAC;;GAEJ;;EAIF,IAAI,UAAU,SAAS,GAAG;GAExB,MAAM,IAAgB;IACpB,MAAM;IACN,SAHkB,WAAW,SAAS,IAAI,WAAW,GAAG,OAAO;IAI/D,YAAY,UAAU,KAAI,QAAO;KAC/B,IAAI,GAAG;KACP,MAAM;KACN,UAAU;MAAE,MAAM,GAAG;MAAM,WAAW,KAAK,UAAU,GAAG,MAAM;MAAE;KACjE,EAAE;IACJ;GACD,IAAI,iBAAiB,SAAS,GAC5B,EAAE,oBAAoB;GACxB,IAAI,KAAK,EAAE;GACX;;EAIF,IAAI,YAAY,SAAS,GAAG;GAC1B,MAAM,QAAmB,YAAY,KAAI,SAAQ;IAC/C,MAAM;IACN,WAAW,EAAE,KAAK,QAAQ,IAAI,UAAU,UAAU,IAAI,QAAQ;IAC/D,EAAE;GACH,KAAK,MAAM,KAAK,YACd,MAAM,KAAK;IAAE,MAAM;IAAQ,MAAM,EAAE;IAAM,CAAC;GAE5C,MAAM,IAAgB;IAAE,MAAM,IAAI;IAAM,SAAS;IAAO;GACxD,IAAI,IAAI,SAAS,eAAe,iBAAiB,SAAS,GACxD,EAAE,oBAAoB;GACxB,IAAI,KAAK,EAAE;GACX;;EAIF,IAAI;EACJ,IAAI,WAAW,WAAW,GACxB,SAAS;GAAE,MAAM,IAAI;GAAM,SAAS,WAAW,GAAG;GAAM;OAErD,IAAI,WAAW,SAAS,GAC3B,SAAS;GAAE,MAAM,IAAI;GAAM,SAAS,WAAW,KAAI,OAAM;IAAE,MAAM;IAAQ,MAAM,EAAE;IAAM,EAAE;GAAE;OAG3F,SAAS;GAAE,MAAM,IAAI;GAAM,SAAS;GAAM;EAE5C,IAAI,IAAI,SAAS,eAAe,iBAAiB,SAAS,GACxD,OAAO,oBAAoB;EAC7B,IAAI,KAAK,OAAO;;CAGlB,OAAO;;AAOT,MAAM,YAAY,EAAE,MAAM,aAAsB;;;;;;;;;;;;;;;;AAiBhD,SAAgB,yBAAyB,UAA8B;CACrE,IAAI,SAAS,WAAW,GACtB;CAEF,MAAM,QAAQ,SAAS;CACvB,IAAI,MAAM,SAAS,UACjB,oBAAoB,MAAM;CAE5B,MAAM,UAAU,SAAS,SAAS;CAClC,IAAI,UAAU,GACZ,oBAAoB,SAAS,SAAS;;;;;;;;;;AAW1C,SAAS,oBAAoB,KAAuB;CAClD,IAAI,OAAO,IAAI,YAAY,UAAU;EACnC,IAAI,IAAI,QAAQ,WAAW,GACzB;EACF,IAAI,UAAU,CAAC;GAAE,MAAM;GAAQ,MAAM,IAAI;GAAS,eAAe;GAAW,CAAC;EAC7E;;CAEF,IAAI,CAAC,MAAM,QAAQ,IAAI,QAAQ,IAAI,IAAI,QAAQ,WAAW,GACxD;CAEF,MAAM,QAAQ,IAAI;CAClB,MAAM,eAAe,MAAM,SAAS;CACpC,MAAM,gBAAgB;EAAE,GAAG,MAAM;EAAe,eAAe;EAAW;;;;;;;;;AAU5E,SAAgB,4BAA4B,OAA6B;CACvE,IAAI,MAAM,WAAW,GACnB,OAAO;CACT,MAAM,UAAU,MAAM,SAAS;CAC/B,OAAO,MAAM,KAAK,MAAM,MACtB,MAAM,UAAW;EAAE,GAAG;EAAM,eAAe;EAAW,GAAqD,KAC5G;;AAOH,SAAgB,YAAY,OAA8B;CACxD,OAAO,MAAM,KAAI,OAAM;EACrB,MAAM;EACN,UAAU;GAAE,MAAM,EAAE;GAAM,aAAa,EAAE;GAAa,YAAY,EAAE;GAAa;EAClF,EAAE;;AAGL,SAAgB,YAAY,SAAiC;CAC3D,OAAO;EAAE,MAAM;EAAQ,SAAS,CAAC;GAAE,MAAM;GAAQ,MAAM;GAAS,CAAC;EAAE;;AAGrE,SAAgB,iBAAiB,SAAiC;CAChE,OAAO;EAAE,MAAM;EAAa,SAAS,CAAC;GAAE,MAAM;GAAQ,MAAM;GAAS,CAAC;EAAE;;AAG1E,SAAgB,mBAAmB,SAAuC;CACxE,OAAO;EACL,MAAM;EACN,SAAS,QAAQ,KAAI,OAAM;GACzB,MAAM;GACN,QAAQ,EAAE;GACV,QAAQ,EAAE;GACX,EAAE;EACJ;;AAGH,SAAgB,sBACd,MACA,WACA,UACA,WACgB;CAChB,MAAM,UAAiC,EAAE;CAGzC,IAAI,aAAa,UAAU,QAAQ,SAAS,GAAG;EAC7C,MAAM,QAAsE;GAC1E,MAAM;GACN,UAAU,UAAU;GACpB,SAAS,UAAU;GACpB;EACD,IAAI,UAAU,OACZ,MAAM,QAAQ,UAAU;EAC1B,QAAQ,KAAK,MAAM;;CAErB,IAAI,UACF,QAAQ,KAAK;EAAE,MAAM;EAAY,MAAM;EAAU,CAAC;CACpD,IAAI,MACF,QAAQ,KAAK;EAAE,MAAM;EAAQ;EAAM,CAAC;CACtC,KAAK,MAAM,MAAM,WACf,QAAQ,KAAK;EAAE,MAAM;EAAa,IAAI,GAAG;EAAI,MAAM,GAAG;EAAM,OAAO,GAAG;EAAO,CAAC;CAEhF,OAAO;EAAE,MAAM;EAAa;EAAS;;;;;;;;AAavC,IAAa,wBAAb,cAA2C,MAAM;CAC/C;CACA;CACA;CAEA,YAAY,QAAgB,UAAkB;EAC5C,IAAI,UAAU;EACd,IAAI;EACJ,IAAI;GACF,MAAM,SAAS,KAAK,MAAM,SAAS;GACnC,UAAU,QAAQ,OAAO,WAAW;GACpC,OAAO,QAAQ,OAAO,QAAQ,QAAQ,OAAO;UAEzC;EAGN,MAAM,QAAQ,OAAO,IAAI,UAAU;EACnC,KAAK,OAAO;EACZ,KAAK,SAAS;EACd,KAAK,eAAe;EACpB,KAAK,WAAW;;;AAIpB,MAAM,oBAAoB;;;;;;;;;;;AAY1B,SAAgB,0BAA0B,KAAsC;CAC9E,IAAI,CAAC,OAAO,OAAO,QAAQ,UACzB,OAAO;CAET,IAAK,IAAc,SAAS,cAC1B,OAAO,EAAE,MAAM,WAAW;CAI5B,IAAI,eAAe,yBACjB,OAAO;EACL,MAAM;EACN,cAAc;EACd,SAAS,IAAI;EACb,WAAW;EACZ;CAGH,IAAI,EAAE,eAAe,wBACnB,OAAO;CAET,MAAM,OAAO,IAAI;CACjB,MAAM,MAAM,IAAI;CAEhB,IAAI,SAAS,6BAA6B,uBAAuB,IAAI,EACnE,OAAO;EACL,MAAM;EACN,cAAc,QAAQ;EACtB,SAAS;EACV;CAGH,OAAO;EACL,MAAM;EACN,cAAc,QAAQ,OAAO,IAAI,OAAO;EACxC,SAAS;EACT,WAAW,sBAAsB,IAAI,OAAO;EAC7C;;;;;;AAOH,SAAS,sBAAsB,QAAyB;CACtD,IAAI,WAAW,KACb,OAAO;CACT,IAAI,UAAU,OAAO,WAAW,KAC9B,OAAO;CACT,OAAO;;;;;AAUT,SAAgB,mBAAmB,QAAiE;CAClG,IAAI,CAAC,QACH,OAAO,KAAA;CACT,QAAQ,QAAR;EACE,KAAK,QACH,OAAO;EACT,KAAK;EACL,KAAK,iBACH,OAAO;EACT,KAAK,UACH,OAAO;EACT,KAAK,kBACH,OAAO;EACT,SACE,OAAO;;;;;;;;;;;;;AAqGb,SAAS,wBACP,UACA,gBACqC;CACrC,KAAK,CAAC,YAAY,aAAa,UAAU,OAAO,mBAAmB,UACjE,OAAO,KAAA;CACT,MAAM,MAA+B,EAAE;CACvC,IAAI,YAAY,aAAa,SAAS,aAAa,YACjD,IAAI,SAAS,aAAa,YAAY,QAAQ;CAEhD,IAAI,OAAO,mBAAmB,YAAY,iBAAiB,GACzD,IAAI,aAAa;CAEnB,OAAO;;;;;;;;;;;;;;;;;;AAmBT,SAAgB,aAAa,QAAsC;CACjE,MAAM,OAAO,OAAO,QAAQ;CAC5B,MAAM,eAAe,OAAO,gBAAgB;CAC5C,MAAM,iBAAiB,OAAO,YAAY,QAAQ;CAClD,MAAM,kBAAkB,OAAO,YAAY,SACvC,GAAG,OAAO,WAAW,OAAO,GAAG,OAAO,WACrC,OAAO,aAAa,OAAO,SAAS,UAAU,OAAO;CAC1D,MAAM,eAAe,OAAO,gBAAgB,EAAE;CAC9C,MAAM,WAAW,GAAG,OAAO,QAAQ,QAAQ,mBAAmB,GAAG,CAAC;CAClE,MAAM,eAAqC;EACzC,QAAQ,OAAO,cAAc,UAAU;EACvC,mBAAmB,OAAO,cAAc,qBAAqB;EAC9D;CAED,MAAM,0BAA0B,OAAO,qBAAqB;CAC5D,MAAM,mBAAmB,OAAO,sBAAsB;CAEtD,OAAO;EACL;EACA,MAAM;GAAE;GAAc;GAAc;EACpC;EACA;EACA;EACA;EACA,eAAe;EAEf,MAAM,OAAO,SAAwB,WAAiD;GACpF,MAAM,UAAU,QAAQ,SAAS;GACjC,MAAM,WAAW,cAAc,QAAQ,QAAQ,QAAQ,UAAU;IAC/D,mBAAmB,aAAa,sBAAsB;IACtD,mBAAmB;IACnB,OAAO;IACR,CAAC;GAMF,MAAM,cAAc,2BAA2B,QAAQ,UAAU;GACjE,IAAI,aACF,yBAAyB,SAAS;GAIpC,MAAM,YAAY,QAAQ,iBACtB,QAAQ,iBAAiB,QAAQ,YACjC,QAAQ;GAEZ,MAAM,OAAgC;IAGpC,GAAI,OAAO,mBAAmB,EAAE;IAChC,OAAO;IACP;IACA,YAAY;IACZ,QAAQ;IACT;GAKD,IAAI,kBAAkB;IACpB,MAAM,YAAY,wBAAwB,QAAQ,UAAU,QAAQ,eAAe;IACnF,IAAI,WACF,KAAK,YAAY;;GAGrB,IAAI,QAAQ,SAAU,QAAQ,MAAoB,SAAS,GACzD,KAAK,QAAQ,cACT,4BAA4B,QAAQ,MAAmB,GACvD,QAAQ;GAGd,IAAI,QAAQ,YACV,IAAI,QAAQ,WAAW,SAAS,UAAU,QAAQ,WAAW,MAC3D,KAAK,cAAc;IAAE,MAAM;IAAY,UAAU,EAAE,MAAM,QAAQ,WAAW,MAAM;IAAE;QACjF,IAAI,QAAQ,WAAW,SAAS,YACnC,KAAK,cAAc;QAEnB,KAAK,cAAc;GAGvB,MAAM,WAAW,MAAM,MAAM,UAAU;IACrC,QAAQ;IACR,SAAS;MACN,iBAAiB;KAClB,gBAAgB;KAChB,GAAG;KACJ;IACD,MAAM,KAAK,UAAU,KAAK;IAC1B,QAAQ,QAAQ;IACjB,CAAC;GAEF,IAAI,CAAC,SAAS,IAAI;IAChB,MAAM,YAAY,MAAM,SAAS,MAAM;IACvC,MAAM,IAAI,sBAAsB,SAAS,QAAQ,UAAU;;GAG7D,MAAM,SAAS,MAAM,WAAW,UAAU,WAAW,QAAQ,OAAO;GACpE,MAAM,eAAe,mBAAmB,OAAO,aAAa;GAE5D,OAAO;IACL,kBAAkB,sBAChB,OAAO,MACP,OAAO,WACP,OAAO,UACP,oBAAoB,OAAO,iBAAiB,SAAS,IACjD;KAAE,SAAS,OAAO;KAAkB,UAAU;KAAc,OAAO;KAAS,GAC5E,KAAA,EACL;IACD,MAAM,OAAO;IACb,WAAW,OAAO;IAClB,MAAM,OAAO,iBAAiB,UAAU,OAAO,UAAU,WAAW;IACpE,OAAO;KACL,OAAO,OAAO,MAAM;KACpB,QAAQ,OAAO,MAAM;KACrB,GAAI,OAAO,MAAM,cAAc,KAAA,IAAY,EAAE,WAAW,OAAO,MAAM,WAAW,GAAG,EAAE;KACrF,GAAI,OAAO,MAAM,kBAAkB,KAAA,IAAY,EAAE,eAAe,OAAO,MAAM,eAAe,GAAG,EAAE;KACjG,GAAI,OAAO,MAAM,SAAS,KAAA,IAAY,EAAE,MAAM,OAAO,MAAM,MAAM,GAAG,EAAE;KACtE,GAAI,eAAe,EAAE,cAAc,GAAG,EAAE;KACxC;KACD;IACF;;EAEJ;;;;;;;;;;;;AC36BH,SAAS,iCAAiC,SAAgD;CACxF,IAAI,OAAO,YAAY,UACrB,OAAO;CAET,IAAI,CAAC,MAAM,QAAQ,QAAQ,EACzB,OAAO,KAAK,UAAU,QAAQ;CAEhC,MAAM,SAA8B,EAAE;CACtC,KAAK,MAAM,OAAO,SAAS;EACzB,IAAI,CAAC,OAAO,OAAO,QAAQ,UACzB;EACF,MAAM,IAAI;EACV,IAAI,EAAE,SAAS,UAAU,OAAO,EAAE,SAAS,UAAU;GACnD,OAAO,KAAK;IAAE,MAAM;IAAQ,MAAM,EAAE;IAAM,CAAC;GAC3C;;EAEF,IAAI,EAAE,SAAS,WAAW,EAAE,UAAU,OAAO,EAAE,WAAW,UAAU;GAClE,MAAM,MAAM,EAAE;GACd,IAAI,IAAI,SAAS,YAAY,OAAO,IAAI,SAAS,YAAY,OAAO,IAAI,eAAe,UAAU;IAC/F,OAAO,KAAK;KAAE,MAAM;KAAS,WAAW,IAAI;KAAY,MAAM,IAAI;KAAM,CAAC;IACzE;;;EAIJ,OAAO,KAAK;GAAE,MAAM;GAAQ,MAAM,KAAK,UAAU,IAAI;GAAE,CAAC;;CAG1D,IAAI,OAAO,WAAW,GACpB,OAAO;CAGT,IAAI,CADe,OAAO,MAAK,MAAK,EAAE,SAAS,OAChC,EACb,OAAO,OAAO,KAAI,MAAM,EAAqC,KAAK,CAAC,KAAK,KAAK;CAE/E,OAAO;;;;;;AAOT,SAAS,iCACP,QACkI;CAClI,IAAI,OAAO,WAAW,UACpB,OAAO;CACT,OAAO,OAAO,KAAK,MAAM;EACvB,IAAI,EAAE,SAAS,QACb,OAAO;GAAE,MAAM;GAAiB,MAAM,EAAE;GAAM;EAChD,OAAO;GACL,MAAM;GACN,QAAQ;IAAE,MAAM;IAAmB,YAAY,EAAE;IAAW,MAAM,EAAE;IAAM;GAC3E;GACD;;AAOJ,SAAgB,cAAc,KAAyD;CACrF,MAAM,OAAO,IAAI;CACjB,MAAM,UAAiC,EAAE;CAEzC,IAAI,OAAO,IAAI,YAAY,UAAU;EACnC,QAAQ,KAAK;GAAE,MAAM;GAAQ,MAAM,IAAI;GAAS,CAAC;EACjD,OAAO;GAAE;GAAM;GAAS;;CAG1B,IAAI,MAAM,QAAQ,IAAI,QAAQ,EAC5B,KAAK,MAAM,SAAS,IAAI,SAAS;EAC/B,IAAI,CAAC,SAAS,OAAO,UAAU,UAC7B;EACF,MAAM,IAAI;EAEV,IAAI,EAAE,SAAS,QACb,QAAQ,KAAK;GAAE,MAAM;GAAQ,MAAM,EAAE;GAAgB,CAAC;OAEnD,IAAI,EAAE,SAAS,SAAS;GAC3B,MAAM,SAAS,EAAE;GACjB,IAAI,QAAQ,SAAS,UACnB,QAAQ,KAAK;IAAE,MAAM;IAAS,WAAW,OAAO;IAAsB,MAAM,OAAO;IAAgB,CAAC;SAGnG,IAAI,EAAE,SAAS,YAClB,QAAQ,KAAK;GAAE,MAAM;GAAa,IAAI,EAAE;GAAc,MAAM,EAAE;GAAgB,OAAO,EAAE;GAAkC,CAAC;OAEvH,IAAI,EAAE,SAAS,eAAe;GACjC,MAAM,SAAS,iCAAiC,EAAE,QAAQ;GAC1D,MAAM,QAA+D;IACnE,MAAM;IACN,QAAQ,EAAE;IACV;IACD;GACD,IAAI,EAAE,aAAa,MACjB,MAAM,UAAU;GAClB,QAAQ,KAAK,MAAM;SAEhB,IAAI,EAAE,SAAS,YAAY;GAC9B,MAAM,QAA4D;IAChE,MAAM;IACN,MAAO,EAAE,YAAmC;IAC7C;GACD,IAAI,OAAO,EAAE,cAAc,UAAU;IACnC,MAAM,YAAY,EAAE;IAEpB,MAAM,oBAAoB;;GAE5B,QAAQ,KAAK,MAAM;SAEhB,IAAI,EAAE,SAAS,qBAGlB,QAAQ,KAAK;GAAE,MAAM;GAAqB,MAAO,EAAE,QAA+B;GAAI,CAAC;;CAM7F,OAAO;EAAE;EAAM;EAAS;;AAO1B,SAAgB,WAAW,KAAyD;CAClF,MAAM,OAAO,IAAI;CACjB,MAAM,UAAiC,EAAE;CACzC,MAAM,IAAa,IAAI;CAEvB,IAAI,KAAK,MACP,OAAO;EAAE;EAAM;EAAS;CAG1B,IAAI,OAAO,MAAM,UAAU;EACzB,QAAQ,KAAK;GAAE,MAAM;GAAQ,MAAM;GAAG,CAAC;EACvC,OAAO;GAAE;GAAM;GAAS;;CAG1B,IAAI,OAAO,MAAM,YAAY,CAAC,MAAM,QAAQ,EAAE,IAAK,EAAyB,SAAA,2BAAmC;EAC7G,MAAM,SAAS;EACf,IAAI,OAAO,OAAO,SAAS,YAAY,OAAO,MAC5C,QAAQ,KAAK;GAAE,MAAM;GAAQ,MAAM,OAAO;GAAM,CAAC;EAEnD,IAAI,MAAM,QAAQ,OAAO,WAAW,EAClC,KAAK,MAAM,OAAO,OAAO,YAAY;GACnC,IAAI,CAAC,OAAO,OAAO,QAAQ,UACzB;GACF,MAAM,KAAK;GACX,MAAM,UAAU,GAAG,UAAU;GAC7B,MAAM,QAAiC,UAClC,OAAO,YAAY,WAAW,KAAK,MAAM,QAAQ,GAAG,UACrD,EAAE;GACN,QAAQ,KAAK;IAAE,MAAM;IAAa,IAAI,GAAG,MAAM;IAAI,MAAM,GAAG,UAAU,QAAQ;IAAI;IAAO,CAAC;;EAG9F,OAAO;GAAE;GAAM;GAAS;;CAG1B,IAAI,OAAO,MAAM,YAAY,CAAC,MAAM,QAAQ,EAAE,IAAK,EAAyB,SAAA,2BAA2B;EACrG,MAAM,SAAS;EACf,IAAI,MAAM,QAAQ,OAAO,QAAQ,EAC/B,KAAK,MAAM,OAAO,OAAO,SAAS;GAChC,IAAI,CAAC,OAAO,OAAO,QAAQ,UACzB;GACF,MAAM,IAAI;GACV,QAAQ,KAAK;IAAE,MAAM;IAAe,QAAQ,EAAE,gBAAgB;IAAI,QAAQ,EAAE,WAAW;IAAI,CAAC;;EAGhG,OAAO;GAAE;GAAM;GAAS;;CAG1B,IAAI,MAAM,QAAQ,EAAE,EAAE;EACpB,KAAK,MAAM,SAAS,GAAG;GACrB,IAAI,CAAC,SAAS,OAAO,UAAU,UAC7B;GACF,MAAM,IAAI;GAEV,IAAI,EAAE,SAAS,QACb,QAAQ,KAAK;IAAE,MAAM;IAAQ,MAAM,EAAE;IAAgB,CAAC;QAEnD,IAAI,EAAE,SAAS,aAAa;IAC/B,MAAM,WAAY,EAAE,WAAuC;IAC3D,IAAI,UAAU,WAAW,QAAQ,EAAE;KACjC,MAAM,CAAC,MAAM,QAAQ,SAAS,MAAM,EAAE,CAAC,MAAM,KAAK,EAAE;KACpD,MAAM,YAAY,KAAK,QAAQ,WAAW,GAAG;KAC7C,QAAQ,KAAK;MAAE,MAAM;MAAS;MAAW;MAAM,CAAC;;;;EAItD,OAAO;GAAE;GAAM;GAAS;;CAG1B,OAAO;EAAE;EAAM;EAAS;;AAO1B,SAAgB,YAAY,KAAyD;CACnF,MAAM,SAAS,IAAI,QAGhB,QAAO,MAAK,EAAE,EAAE,SAAS,cAAc,EAAE,sBAAsB,UAAU,CACzE,QAAO,MAAK,EAAE,SAAS,qBAAqB,CAC5C,KAAK,UAAU;EACd,QAAQ,MAAM,MAAd;GACE,KAAK,QACH,OAAO;IAAE,MAAM;IAAQ,MAAM,MAAM;IAAM;GAC3C,KAAK,SACH,OAAO;IAAE,MAAM;IAAS,QAAQ;KAAE,MAAM;KAAU,YAAY,MAAM;KAAW,MAAM,MAAM;KAAM;IAAE;GACrG,KAAK,aACH,OAAO;IAAE,MAAM;IAAY,IAAI,MAAM;IAAI,MAAM,MAAM;IAAM,OAAO,MAAM;IAAO;GACjF,KAAK,eAAe;IAClB,MAAM,MAA+B;KACnC,MAAM;KACN,aAAa,MAAM;KACnB,SAAS,iCAAiC,MAAM,OAAO;KACxD;IACD,IAAI,MAAM,SACR,IAAI,WAAW;IACjB,OAAO;;GAET,KAAK,YAAY;IAIf,MAAM,MAA+B;KAAE,MAAM;KAAY,UAAU,MAAM;KAAM;IAC/E,IAAI,MAAM,WACR,IAAI,YAAY,MAAM;IACxB,OAAO;;GAET,KAAK,qBACH,OAAO;IAAE,MAAM;IAAqB,MAAM,MAAM;IAAM;GACxD,SACE,OAAO;IAAE,MAAM;IAAQ,MAAM;IAAI;;GAErC;CAGJ,IAAI,OAAO,WAAW,KAAK,OAAO,GAAG,SAAS,QAC5C,OAAO;EAAE,MAAM,IAAI;EAAM,SAAU,OAAO,GAAsC;EAAM;CAGxF,OAAO;EAAE,MAAM,IAAI;EAAM,SAAS;EAAQ;;AAO5C,SAAgB,SAAS,KAAyD;CAChF,MAAM,YAAY,IAAI,QAAQ,QAAO,MAAK,EAAE,SAAS,YAAY;CACjE,MAAM,cAAc,IAAI,QAAQ,QAAO,MAAK,EAAE,SAAS,cAAc;CACrE,MAAM,aAAa,IAAI,QAAQ,QAAO,MAAK,EAAE,SAAS,OAAO;CAC7D,MAAM,cAAc,IAAI,QAAQ,QAAO,MAAK,EAAE,SAAS,QAAQ;CAG/D,IAAI,YAAY,SAAS,GACvB,OAAO;EACL,MAAM,IAAI;EACV,SAAS;GACP,MAAM;GACN,SAAS,YAAY,KAAK,MAAM;IAC9B,MAAM,KAAK;IACX,OAAO;KAAE,cAAc,GAAG;KAAQ,SAAS,GAAG;KAAQ;KACtD;GACH;EACF;CAIH,IAAI,UAAU,SAAS,GAAG;EACxB,MAAM,cAAc,WAAW,SAAS,IAAK,WAAW,GAAsD,OAAO;EACrH,OAAO;GACL,MAAM,IAAI;GACV,SAAS;IACP,MAAM;IACN,MAAM;IACN,YAAY,UAAU,KAAK,MAAM;KAC/B,MAAM,KAAK;KACX,OAAO;MACL,IAAI,GAAG;MACP,MAAM;MACN,UAAU;OAAE,MAAM,GAAG;OAAM,WAAW,KAAK,UAAU,GAAG,MAAM;OAAE;MACjE;MACD;IACH;GACF;;CAIH,IAAI,YAAY,SAAS,GAAG;EAC1B,MAAM,QAAmB,YAAY,KAAK,MAAM;GAC9C,MAAM,MAAM;GACZ,OAAO;IAAE,MAAM;IAAa,WAAW,EAAE,KAAK,QAAQ,IAAI,UAAU,UAAU,IAAI,QAAQ;IAAE;IAC5F;EACF,KAAK,MAAM,KAAK,YACd,MAAM,KAAK;GAAE,MAAM;GAAQ,MAAO,EAAqD;GAAM,CAAC;EAEhG,OAAO;GAAE,MAAM,IAAI;GAAM,SAAS;GAAO;;CAI3C,IAAI,WAAW,WAAW,GACxB,OAAO;EAAE,MAAM,IAAI;EAAM,SAAU,WAAW,GAAsD;EAAM;CAI5G,IAAI,WAAW,SAAS,GACtB,OAAO;EAAE,MAAM,IAAI;EAAM,SAAS,WAAW,KAAI,OAAM;GAAE,MAAM;GAAQ,MAAO,EAAqD;GAAM,EAAE;EAAE;CAG/I,OAAO;EAAE,MAAM,IAAI;EAAM,SAAS;EAAM;;AAO1C,SAAgB,qBAAqB,KAAyD;CAC5F,MAAM,IAAa,IAAI;CAGvB,IAAI,KAAK,OAAO,MAAM,YAAY,CAAC,MAAM,QAAQ,EAAE,EAAE;EACnD,MAAM,MAAO,EAAyB;EACtC,IAAI,OAAO,QAAQ,YAAY,IAAI,WAAW,YAAY,EACxD,OAAO,WAAW,IAAI;;CAI1B,IAAI,MAAM,QAAQ,EAAE,EAAE;EACpB,KAAK,MAAM,SAAS,GAAG;GACrB,IAAI,CAAC,SAAS,OAAO,UAAU,UAC7B;GACF,MAAM,IAAI;GACV,IAAI,EAAE,SAAS,cAAe,EAAE,SAAS,iBAAiB,iBAAiB,GACzE,OAAO,cAAc,IAAI;GAE3B,IAAI,EAAE,SAAS,aACb,OAAO,WAAW,IAAI;;EAI1B,OAAO,cAAc,IAAI;;CAI3B,IAAI,OAAO,MAAM,UACf,OAAO,cAAc,IAAI;CAI3B,OAAO,cAAc,IAAI"}
|
|
1
|
+
{"version":3,"file":"messages-xaYMMFlb.js","names":[],"sources":["../src/providers/openai-compat.ts","../src/session/messages.ts"],"sourcesContent":["/**\n * OpenAI-compatible provider factory + shared utilities.\n *\n * `openaiCompat(params)` returns a `Provider` that talks to any OpenAI-compatible\n * HTTP endpoint (OpenRouter, Cerebras, Baseten, Fireworks, Groq, local LM servers, ...).\n * Helpers (`consumeSSE`, `toOAIMessages`, ...) are shared by the bespoke `openrouter`\n * and `cerebras` wrappers, which pin defaults on top of this factory.\n */\n\nimport type { Provider, ProviderCapabilities, StreamCallbacks, StreamOptions, ToolResult, ToolSpec, TurnResult } from '.'\nimport type { ClassifiedError } from '../errors'\nimport type { SessionContentBlock, SessionMessage, ThinkingLevel, ToolResultContent, TurnFinishReason } from '../types'\nimport { matchesContextExceeded } from '../errors'\n\n// ---------------------------------------------------------------------------\n// OpenAI-compatible types\n// ---------------------------------------------------------------------------\n\nexport interface OAIMessage {\n role: 'system' | 'user' | 'assistant' | 'tool'\n content?: unknown\n tool_calls?: { id: string, type: 'function', function: { name: string, arguments: string } }[]\n tool_call_id?: string\n /**\n * OpenRouter normalized reasoning envelope. Echoed back unmodified on assistant\n * messages so the gateway can resume an extended-reasoning chain on the\n * upstream route. Ignored by hosts that don't speak the envelope.\n */\n reasoning_details?: unknown[]\n}\n\nexport interface OAITool {\n type: 'function'\n function: { name: string, description: string, parameters: Record<string, unknown> }\n}\n\n// Sentinel tags zidane uses to round-trip tool_calls / tool_results through\n// the OpenAI-compat session shape. `toOpenAI` writes them; `fromOpenAI` reads\n// them back. The `__zidane_` prefix avoids collisions with any literal `_tag`\n// value a host might emit on real wire messages.\nexport const TOOL_RESULTS_TAG = '__zidane_tool_results__'\nexport const ASSISTANT_TOOL_CALLS_TAG = '__zidane_assistant_tc__'\n\n// ---------------------------------------------------------------------------\n// SSE stream parser\n// ---------------------------------------------------------------------------\n\n/**\n * Ceiling on how many bytes may accumulate between two newline boundaries when\n * parsing an SSE stream. A broken or malicious server that emits an unbounded\n * stream of non-newline bytes would otherwise grow `buffer` without end and\n * eventually OOM the host. 8 MB is safely above the largest tool-call arg\n * JSON we reasonably expect and still catches a pathological stream in ~1 s on\n * a 10 MB/s connection.\n */\nconst SSE_MAX_BUFFER_BYTES = 8 * 1024 * 1024\n\nexport class OpenAICompatStreamError extends Error {\n constructor(message: string) {\n super(message)\n this.name = 'OpenAICompatStreamError'\n }\n}\n\nexport async function consumeSSE(\n response: Response,\n callbacks: StreamCallbacks,\n signal?: AbortSignal,\n) {\n const reader = response.body!.getReader()\n const decoder = new TextDecoder()\n let buffer = ''\n let text = ''\n let thinking = ''\n let finishReason = 'stop'\n let usage: { input: number, output: number, cost?: number, cacheRead?: number, cacheCreation?: number } = { input: 0, output: 0 }\n const tcMap = new Map<number, { id: string, name: string, args: string }>()\n // OpenRouter `reasoning_details` deltas, keyed by item index. Items are merged\n // field-by-field: text/summary concatenate, signature/data/format/id/type are\n // last-write-wins (they only appear once per item in practice).\n const reasoningMap = new Map<number, Record<string, unknown>>()\n let sawReasoningDetails = false\n\n try {\n while (true) {\n if (signal?.aborted)\n break\n const { done, value } = await reader.read()\n if (done)\n break\n\n buffer += decoder.decode(value, { stream: true })\n // Cap the line-less buffer. Any single event must fit under the ceiling.\n if (buffer.length > SSE_MAX_BUFFER_BYTES) {\n throw new OpenAICompatStreamError(\n `SSE buffer exceeded ${SSE_MAX_BUFFER_BYTES} bytes without a line boundary — upstream may be streaming non-SSE data.`,\n )\n }\n const lines = buffer.split('\\n')\n buffer = lines.pop() || ''\n\n for (const line of lines) {\n if (!line.startsWith('data: '))\n continue\n const data = line.slice(6).trim()\n if (data === '[DONE]')\n continue\n\n let chunk: Record<string, unknown>\n try {\n chunk = JSON.parse(data) as Record<string, unknown>\n }\n catch {\n // Malformed JSON frame — skip (SSE keepalives, injected comments, etc.)\n continue\n }\n\n const choices = chunk.choices as Array<Record<string, unknown>> | undefined\n const choice = choices?.[0]\n if (!choice)\n continue\n const fr = choice.finish_reason as string | undefined\n if (fr)\n finishReason = fr\n\n const delta = choice.delta as Record<string, unknown> | undefined\n\n // OpenRouter normalized reasoning envelope. Items arrive as deltas keyed\n // by `index`; merge into a stable list and stream the visible text portion\n // through `onThinking` so the UI sees reasoning live.\n const reasoningDeltaArr = delta?.reasoning_details as Array<Record<string, unknown>> | undefined\n if (reasoningDeltaArr && reasoningDeltaArr.length > 0) {\n sawReasoningDetails = true\n for (const item of reasoningDeltaArr) {\n const idx = (typeof item.index === 'number' ? item.index : 0)\n const existing = reasoningMap.get(idx) ?? {}\n // Concatenate text/summary across deltas.\n if (typeof item.text === 'string') {\n existing.text = ((existing.text as string | undefined) ?? '') + item.text\n thinking += item.text\n callbacks.onThinking?.(item.text)\n }\n if (typeof item.summary === 'string') {\n existing.summary = ((existing.summary as string | undefined) ?? '') + item.summary\n thinking += item.summary\n callbacks.onThinking?.(item.summary)\n }\n // Last-write-wins for opaque fields.\n for (const key of ['type', 'signature', 'data', 'format', 'id'] as const) {\n const v = item[key]\n if (typeof v === 'string')\n existing[key] = v\n }\n reasoningMap.set(idx, existing)\n }\n }\n\n // Legacy text-only reasoning fields (DeepSeek `reasoning_content`,\n // pre-`reasoning_details` OpenRouter, Qwen-thinking, …). Suppressed\n // when the structured envelope is in flight to avoid double-counting\n // the same reasoning text into the `thinking` buffer.\n if (!sawReasoningDetails) {\n const thinkingDelta = (delta?.reasoning_content ?? delta?.reasoning) as string | undefined\n if (thinkingDelta) {\n thinking += thinkingDelta\n callbacks.onThinking?.(thinkingDelta)\n }\n }\n\n const contentDelta = delta?.content as string | undefined\n if (contentDelta) {\n text += contentDelta\n callbacks.onText(contentDelta)\n }\n\n const toolCallsDelta = delta?.tool_calls as Array<{\n index: number\n id?: string\n function?: { name?: string, arguments?: string }\n }> | undefined\n if (toolCallsDelta) {\n for (const tc of toolCallsDelta) {\n const existing = tcMap.get(tc.index)\n if (existing) {\n if (tc.function?.arguments)\n existing.args += tc.function.arguments\n }\n else {\n tcMap.set(tc.index, {\n id: tc.id || `call_${tc.index}`,\n name: tc.function?.name || '',\n args: tc.function?.arguments || '',\n })\n }\n }\n }\n\n const chunkUsage = chunk.usage as\n | {\n prompt_tokens?: number\n completion_tokens?: number\n total_cost?: number\n cache_discount?: number\n prompt_tokens_details?: {\n cached_tokens?: number\n cache_creation_input_tokens?: number\n cache_write_tokens?: number\n }\n cache_creation_input_tokens?: number\n }\n | undefined\n if (chunkUsage) {\n const cachedRead = chunkUsage.prompt_tokens_details?.cached_tokens\n // OpenRouter surfaces cache writes via `prompt_tokens_details.cache_creation_input_tokens`\n // (Anthropic passthrough) or `cache_write_tokens` (normalized form). Either is cumulative\n // for the request, so pick whichever the route populated.\n const cachedWrite = chunkUsage.prompt_tokens_details?.cache_creation_input_tokens\n ?? chunkUsage.prompt_tokens_details?.cache_write_tokens\n ?? chunkUsage.cache_creation_input_tokens\n usage = {\n input: chunkUsage.prompt_tokens ?? 0,\n output: chunkUsage.completion_tokens ?? 0,\n cost: chunkUsage.total_cost ?? undefined,\n ...(typeof cachedRead === 'number' && cachedRead > 0 ? { cacheRead: cachedRead } : {}),\n ...(typeof cachedWrite === 'number' && cachedWrite > 0 ? { cacheCreation: cachedWrite } : {}),\n }\n }\n }\n }\n }\n finally {\n reader.releaseLock()\n }\n\n // Tool call JSON is accumulated across many deltas. If the stream truncates\n // mid-object (network hiccup, server crash) `tc.args` won't parse — fall\n // back to an empty input and surface a stream error rather than letting the\n // whole turn reject with `SyntaxError: Unexpected end of JSON input`, which\n // gives callers no actionable signal.\n const toolCalls: Array<{ id: string, name: string, input: Record<string, unknown> }> = []\n for (const tc of tcMap.values()) {\n if (!tc.args) {\n toolCalls.push({ id: tc.id, name: tc.name, input: {} })\n continue\n }\n try {\n toolCalls.push({ id: tc.id, name: tc.name, input: JSON.parse(tc.args) as Record<string, unknown> })\n }\n catch (err) {\n throw new OpenAICompatStreamError(\n `Tool call \"${tc.name}\" (${tc.id}) arguments were truncated or malformed: ${(err as Error).message}`,\n )\n }\n }\n\n // Sort by index so `reasoning_details` round-trip preserves item order.\n const reasoningDetails = Array.from(reasoningMap.entries())\n .sort(([a], [b]) => a - b)\n .map(([, item]) => item)\n\n return { text, thinking, toolCalls, finishReason, usage, reasoningDetails }\n}\n\n// ---------------------------------------------------------------------------\n// Message conversion: SessionMessage[] → OAIMessage[]\n// ---------------------------------------------------------------------------\n\n/**\n * Encode a single image block as an OpenAI `image_url` multi-part entry.\n */\nfunction toImageUrlPart(img: { mediaType: string, data: string }) {\n return {\n type: 'image_url' as const,\n image_url: { url: `data:${img.mediaType};base64,${img.data}` },\n }\n}\n\n/**\n * Summarize a `tool_result` output for the companion-user-message path — text blocks\n * are joined (separated by `\\n`) so the tool message carries all textual context; image\n * blocks are collected in a flat list for the companion user message.\n *\n * Used only on the fallback path; the native path walks `output` in-order to preserve\n * text↔image interleaving.\n */\nfunction summarizeToolResultOutput(output: string | ToolResultContent[]): {\n text: string\n images: Array<{ mediaType: string, data: string }>\n} {\n if (typeof output === 'string')\n return { text: output, images: [] }\n\n const texts: string[] = []\n const images: Array<{ mediaType: string, data: string }> = []\n for (const block of output) {\n if (block.type === 'text')\n texts.push(block.text)\n else if (block.type === 'image')\n images.push({ mediaType: block.mediaType, data: block.data })\n }\n return { text: texts.join('\\n'), images }\n}\n\n/**\n * Options that influence OpenAI-compat message shaping.\n *\n * `imageInToolResult` defaults to `false`: the loop routes images via a companion\n * user message emitted immediately after the `tool` message. Providers with\n * genuine multi-part tool support can set it to `true` to emit a single\n * multi-part `tool` message instead.\n */\ninterface ToOAIOptions {\n imageInToolResult?: boolean\n /**\n * Host accepts OpenRouter-style `reasoning_details` echoed back on assistant\n * messages. When `true`, `provider_reasoning` blocks whose `producer`/`model`\n * match the active route are forwarded; when `false` (default), they are\n * silently dropped to avoid 400s on hosts that strict-validate the schema.\n */\n supportsReasoning?: boolean\n /**\n * Active model id. Used to gate `provider_reasoning` blocks — reasoning state\n * is bound to the route that produced it, so a model switch invalidates the\n * embedded signatures.\n */\n model?: string\n}\n\nexport function toOAIMessages(system: string, messages: SessionMessage[], options: ToOAIOptions = {}): OAIMessage[] {\n const out: OAIMessage[] = [{ role: 'system', content: system }]\n const nativeImageInTool = options.imageInToolResult === true\n const reasoningEnabled = options.supportsReasoning === true\n const activeModel = options.model\n\n for (const msg of messages) {\n const toolResults = msg.content.filter(b => b.type === 'tool_result') as Extract<SessionContentBlock, { type: 'tool_result' }>[]\n const toolCalls = msg.content.filter(b => b.type === 'tool_call') as Extract<SessionContentBlock, { type: 'tool_call' }>[]\n const textBlocks = msg.content.filter(b => b.type === 'text') as Extract<SessionContentBlock, { type: 'text' }>[]\n const imageBlocks = msg.content.filter(b => b.type === 'image') as Extract<SessionContentBlock, { type: 'image' }>[]\n // Provider-bound reasoning state — attached to the assistant message below\n // when the host supports it AND the active route matches the producer.\n const reasoningBlocks = reasoningEnabled\n ? (msg.content.filter((b) => {\n if (b.type !== 'provider_reasoning')\n return false\n if (b.producer !== 'openrouter')\n return false\n if (b.model && activeModel && b.model !== activeModel)\n return false\n return true\n }) as Extract<SessionContentBlock, { type: 'provider_reasoning' }>[])\n : []\n const reasoningDetails = reasoningBlocks.flatMap(b => b.details)\n\n // Tool results → individual tool messages (plus optional companion user message for images)\n if (toolResults.length > 0) {\n for (const tr of toolResults) {\n // Pure-string output → text-only fast path, wire-identical to pre-multimodal behavior.\n if (typeof tr.output === 'string') {\n out.push({ role: 'tool', tool_call_id: tr.callId, content: tr.output })\n continue\n }\n\n // Native multi-part path — walk blocks in order so text↔image interleaving is preserved.\n if (nativeImageInTool) {\n const parts = tr.output.map(block => block.type === 'image'\n ? toImageUrlPart({ mediaType: block.mediaType, data: block.data })\n : { type: 'text' as const, text: block.text })\n out.push({ role: 'tool', tool_call_id: tr.callId, content: parts })\n continue\n }\n\n // Companion-user-message fallback (Claude Desktop / Cline pattern).\n // Works on any Chat Completions endpoint that accepts images in user messages.\n const { text, images } = summarizeToolResultOutput(tr.output)\n if (images.length === 0) {\n // Structured array happened to be text-only — collapse to pure-text path.\n out.push({ role: 'tool', tool_call_id: tr.callId, content: text })\n continue\n }\n\n const noun = images.length === 1 ? 'image' : 'images'\n const attachedMarker = `[${images.length} ${noun} attached — see next user message]`\n const toolMarker = text.length > 0 ? `${text}\\n\\n${attachedMarker}` : attachedMarker\n out.push({ role: 'tool', tool_call_id: tr.callId, content: toolMarker })\n\n out.push({\n role: 'user',\n content: [\n ...images.map(toImageUrlPart),\n { type: 'text' as const, text: `(${noun} returned by tool call ${tr.callId})` },\n ],\n })\n }\n continue\n }\n\n // Tool calls → assistant message with tool_calls array\n if (toolCalls.length > 0) {\n const textContent = textBlocks.length > 0 ? textBlocks[0].text : null\n const m: OAIMessage = {\n role: 'assistant',\n content: textContent,\n tool_calls: toolCalls.map(tc => ({\n id: tc.id,\n type: 'function' as const,\n function: { name: tc.name, arguments: JSON.stringify(tc.input) },\n })),\n }\n if (reasoningDetails.length > 0)\n m.reasoning_details = reasoningDetails\n out.push(m)\n continue\n }\n\n // Images → multimodal array\n if (imageBlocks.length > 0) {\n const parts: unknown[] = imageBlocks.map(img => ({\n type: 'image_url',\n image_url: { url: `data:${img.mediaType};base64,${img.data}` },\n }))\n for (const b of textBlocks) {\n parts.push({ type: 'text', text: b.text })\n }\n const m: OAIMessage = { role: msg.role, content: parts }\n if (msg.role === 'assistant' && reasoningDetails.length > 0)\n m.reasoning_details = reasoningDetails\n out.push(m)\n continue\n }\n\n // Pure text\n let pushed: OAIMessage\n if (textBlocks.length === 1) {\n pushed = { role: msg.role, content: textBlocks[0].text }\n }\n else if (textBlocks.length > 1) {\n pushed = { role: msg.role, content: textBlocks.map(b => ({ type: 'text', text: b.text })) }\n }\n else {\n pushed = { role: msg.role, content: null }\n }\n if (msg.role === 'assistant' && reasoningDetails.length > 0)\n pushed.reasoning_details = reasoningDetails\n out.push(pushed)\n }\n\n return out\n}\n\n// ---------------------------------------------------------------------------\n// Prompt caching\n// ---------------------------------------------------------------------------\n\nconst EPHEMERAL = { type: 'ephemeral' as const }\n\n/**\n * Add `cache_control: { type: 'ephemeral' }` breakpoints to the system message's\n * last text part and the last message's final content part.\n *\n * Mutates `messages` in place. Converts plain-string content into a single-element\n * content array so the cache marker can attach — this shape is accepted verbatim by\n * OpenRouter's Anthropic and Gemini routes and ignored by routes with automatic\n * caching (OpenAI, DeepSeek, Grok, Groq, Moonshot).\n *\n * Skip conditions (safe no-ops):\n * - Empty messages array.\n * - Assistant messages with no text (tool-call-only) — attaching a cache marker to a\n * `tool_calls` block has no defined semantics, so we skip and let the prior\n * system/tools breakpoints carry caching.\n */\nexport function applyOAICacheBreakpoints(messages: OAIMessage[]): void {\n if (messages.length === 0)\n return\n\n const first = messages[0]\n if (first.role === 'system')\n markLastContentPart(first)\n\n const lastIdx = messages.length - 1\n if (lastIdx > 0)\n markLastContentPart(messages[lastIdx])\n}\n\n/**\n * Mark the last content part of an OAI message with `cache_control`. Normalizes\n * string content into a `[{ type: 'text', text, cache_control }]` array so the\n * marker has a block to attach to.\n *\n * No-op for messages without string or array content (tool-call-only assistant\n * messages fall through; the system/tools breakpoints carry the cache prefix).\n */\nfunction markLastContentPart(msg: OAIMessage): void {\n if (typeof msg.content === 'string') {\n if (msg.content.length === 0)\n return\n msg.content = [{ type: 'text', text: msg.content, cache_control: EPHEMERAL }]\n return\n }\n if (!Array.isArray(msg.content) || msg.content.length === 0)\n return\n\n const parts = msg.content as Array<Record<string, unknown>>\n const lastBlockIdx = parts.length - 1\n parts[lastBlockIdx] = { ...parts[lastBlockIdx], cache_control: EPHEMERAL }\n}\n\n/**\n * Return a copy of `tools` with `cache_control` on the last entry.\n *\n * OpenRouter accepts the marker alongside the standard `type` + `function` fields\n * and forwards it when routing to Anthropic/Gemini. Leaves the non-cached tools\n * unchanged so the caller's reference is not mutated.\n */\nexport function applyOAIToolCacheBreakpoint(tools: OAITool[]): OAITool[] {\n if (tools.length === 0)\n return tools\n const lastIdx = tools.length - 1\n return tools.map((tool, i) =>\n i === lastIdx ? ({ ...tool, cache_control: EPHEMERAL } as OAITool & { cache_control: typeof EPHEMERAL }) : tool,\n )\n}\n\n// ---------------------------------------------------------------------------\n// Shared message builders\n// ---------------------------------------------------------------------------\n\nexport function formatTools(tools: ToolSpec[]): OAITool[] {\n return tools.map(t => ({\n type: 'function' as const,\n function: { name: t.name, description: t.description, parameters: t.inputSchema },\n }))\n}\n\nexport function userMessage(content: string): SessionMessage {\n return { role: 'user', content: [{ type: 'text', text: content }] }\n}\n\nexport function assistantMessage(content: string): SessionMessage {\n return { role: 'assistant', content: [{ type: 'text', text: content }] }\n}\n\nexport function toolResultsMessage(results: ToolResult[]): SessionMessage {\n return {\n role: 'user',\n content: results.map(r => ({\n type: 'tool_result' as const,\n callId: r.id,\n output: r.content,\n })),\n }\n}\n\nexport function buildAssistantContent(\n text: string,\n toolCalls: { id: string, name: string, input: Record<string, unknown> }[],\n thinking?: string,\n reasoning?: { details: unknown[], producer: 'openrouter', model?: string },\n): SessionMessage {\n const content: SessionContentBlock[] = []\n // `provider_reasoning` precedes `thinking` so re-attached envelopes arrive\n // before the legacy text mirror in the assistant content list.\n if (reasoning && reasoning.details.length > 0) {\n const block: Extract<SessionContentBlock, { type: 'provider_reasoning' }> = {\n type: 'provider_reasoning',\n producer: reasoning.producer,\n details: reasoning.details,\n }\n if (reasoning.model)\n block.model = reasoning.model\n content.push(block)\n }\n if (thinking)\n content.push({ type: 'thinking', text: thinking })\n if (text)\n content.push({ type: 'text', text })\n for (const tc of toolCalls) {\n content.push({ type: 'tool_call', id: tc.id, name: tc.name, input: tc.input })\n }\n return { role: 'assistant', content }\n}\n\n// ---------------------------------------------------------------------------\n// Error classification\n// ---------------------------------------------------------------------------\n\n/**\n * HTTP error thrown when an OpenAI-compatible endpoint returns a non-OK response.\n *\n * The body is best-effort JSON-parsed; `error.message` / `error.code` / `error.type`\n * are extracted for clean downstream classification.\n */\nexport class OpenAICompatHttpError extends Error {\n readonly status: number\n readonly providerCode?: string\n readonly bodyText: string\n\n constructor(status: number, bodyText: string) {\n let message = bodyText\n let code: string | undefined\n try {\n const parsed = JSON.parse(bodyText)\n message = parsed?.error?.message ?? bodyText\n code = parsed?.error?.code ?? parsed?.error?.type\n }\n catch {\n // Leave message as the raw body.\n }\n super(`HTTP ${status}: ${message}`)\n this.name = 'OpenAICompatHttpError'\n this.status = status\n this.providerCode = code\n this.bodyText = bodyText\n }\n}\n\nconst TRAILING_SLASH_RE = /\\/$/\n\n/**\n * Classify an OpenAI-compatible error into `ClassifiedError`.\n *\n * Recognizes:\n * - `AbortError` (from fetch) → `aborted`.\n * - `OpenAICompatHttpError` with a context-exceeded code or message → `context_exceeded`.\n * - Any other `OpenAICompatHttpError` → `provider_error`.\n *\n * Returns `null` for unrecognized error shapes (the loop falls back to `AgentProviderError`).\n */\nexport function classifyOpenAICompatError(err: unknown): ClassifiedError | null {\n if (!err || typeof err !== 'object')\n return null\n\n if ((err as Error).name === 'AbortError')\n return { kind: 'aborted' }\n\n // A truncated / malformed SSE stream is a transient network-level failure —\n // typically worth a retry from the caller's perspective.\n if (err instanceof OpenAICompatStreamError) {\n return {\n kind: 'provider_error',\n providerCode: 'stream_error',\n message: err.message,\n retryable: true,\n }\n }\n\n if (!(err instanceof OpenAICompatHttpError))\n return null\n\n const code = err.providerCode\n const msg = err.message\n\n if (code === 'context_length_exceeded' || matchesContextExceeded(msg)) {\n return {\n kind: 'context_exceeded',\n providerCode: code ?? 'context_length_exceeded',\n message: msg,\n }\n }\n\n return {\n kind: 'provider_error',\n providerCode: code ?? String(err.status),\n message: msg,\n retryable: isRetryableHttpStatus(err.status),\n }\n}\n\n/**\n * 429 + 5xx (except 501 Not Implemented) are safe to retry with backoff;\n * 4xx other than 429 are terminal (bad request, auth, not found, etc.).\n */\nfunction isRetryableHttpStatus(status: number): boolean {\n if (status === 429)\n return true\n if (status >= 500 && status !== 501)\n return true\n return false\n}\n\n// ---------------------------------------------------------------------------\n// Finish-reason mapping\n// ---------------------------------------------------------------------------\n\n/**\n * Map an OpenAI-compatible `finish_reason` string to the zidane `TurnFinishReason` union.\n */\nexport function mapOAIFinishReason(reason: string | null | undefined): TurnFinishReason | undefined {\n if (!reason)\n return undefined\n switch (reason) {\n case 'stop':\n return 'stop'\n case 'tool_calls':\n case 'function_call':\n return 'tool-calls'\n case 'length':\n return 'length'\n case 'content_filter':\n return 'content-filter'\n default:\n return 'other'\n }\n}\n\n// ---------------------------------------------------------------------------\n// openaiCompat factory\n// ---------------------------------------------------------------------------\n\n/**\n * Auth header config. `scheme` is prepended to the api key with a space, e.g.\n * `{ name: 'Authorization', scheme: 'Bearer' }` → `Authorization: Bearer <key>`.\n * Omit `scheme` for raw header values (e.g. `{ name: 'X-Api-Key' }` → `X-Api-Key: <key>`).\n *\n * Real-world examples:\n * - Default OpenAI / OpenRouter / Cerebras: `{ name: 'Authorization', scheme: 'Bearer' }`.\n * - Baseten: `{ name: 'Authorization', scheme: 'Api-Key' }`.\n * - Some gateways: `{ name: 'X-Api-Key' }`.\n */\nexport interface OpenAICompatAuthHeader {\n name: string\n scheme?: string\n}\n\nexport interface OpenAICompatParams {\n /** Bearer-style API key. */\n apiKey: string\n /** Base URL — `/chat/completions` is appended. */\n baseURL: string\n /** Default model id when `run({ model })` is omitted. */\n defaultModel?: string\n /** Provider name exposed as `Provider.name`. Defaults to `'openai-compat'`. */\n name?: string\n /** Auth header shape. Defaults to `{ name: 'Authorization', scheme: 'Bearer' }`. */\n authHeader?: OpenAICompatAuthHeader\n /** Extra headers sent with every request (e.g. referer, user-agent). */\n extraHeaders?: Record<string, string>\n /**\n * Provider-level capability flags. Routed into the message shaper and the\n * agent loop so images in tool results + user messages are handled correctly\n * for the underlying model.\n *\n * Defaults when omitted: `vision: false`, `imageInToolResult: false` — a\n * conservative assumption matching most OSS text-only OpenAI-compat\n * endpoints. Override when routing to a known vision-capable endpoint\n * (e.g. OpenRouter vision models, Baseten image-capable deployments).\n */\n capabilities?: ProviderCapabilities\n /**\n * Whether this endpoint honors `cache_control: { type: 'ephemeral' }` markers\n * on message content parts and tool definitions.\n *\n * - `true` — inject markers when the caller asks for caching. OpenRouter routes\n * to Anthropic/Gemini forward the markers; routes to OpenAI/DeepSeek/\n * Grok/Groq/Moonshot ignore them (those backends cache automatically).\n * - `false` — never inject markers. Safe default for endpoints that strictly\n * validate the request schema (OpenAI direct, most OSS inference\n * servers) and would reject unknown fields.\n *\n * Default: `false`. The `openrouter` wrapper sets this to `true`.\n */\n cacheBreakpoints?: boolean\n /**\n * Whether this endpoint speaks OpenRouter's normalized reasoning envelope —\n * `reasoning: { effort | max_tokens | exclude }` on requests and structured\n * `reasoning_details[]` on assistant messages, round-tripped to preserve\n * extended-reasoning state across turns.\n *\n * - `true` — map zidane's `behavior.thinking` / `behavior.thinkingBudget` to\n * the request's `reasoning` field, capture `reasoning_details`\n * from streaming responses into `provider_reasoning` blocks, and\n * echo them back on subsequent assistant messages.\n * - `false` — never set the field; drop any stored `provider_reasoning`\n * blocks before sending. Safe default for hosts that strict-\n * validate the request schema.\n *\n * Default: `false`. The `openrouter` wrapper sets this to `true`.\n */\n supportsReasoning?: boolean\n /**\n * Generic pass-through for fields on the Chat Completions request body that\n * zidane does not yet type. Spread into the request before the typed core\n * (model / messages / tools / max_tokens / stream / tool_choice), so\n * explicit options always win on collision.\n *\n * Forward-compat escape hatch for endpoints that ship one-off fields ahead\n * of zidane (e.g. OpenAI `reasoning_effort`, OpenRouter `provider` routing,\n * vendor-specific `safety_level` knobs).\n */\n extraBodyParams?: Record<string, unknown>\n}\n\n/**\n * Map zidane's `ThinkingLevel` + optional explicit budget to the OpenRouter\n * `reasoning` request field. Returns `undefined` when reasoning should not be\n * sent (off, or no level + no budget).\n *\n * - `'low' | 'medium' | 'high'` → `{ effort }`.\n * - `'minimal'` → `{ effort: 'low' }` (closest match in OpenRouter's vocabulary).\n * - `'adaptive'` → `{}` (let upstream decide; OpenRouter passes through).\n * - explicit `thinkingBudget` → `{ max_tokens }` overlaid on the level.\n */\nfunction planOpenRouterReasoning(\n thinking: ThinkingLevel | undefined,\n thinkingBudget: number | undefined,\n): Record<string, unknown> | undefined {\n if ((!thinking || thinking === 'off') && typeof thinkingBudget !== 'number')\n return undefined\n const out: Record<string, unknown> = {}\n if (thinking && thinking !== 'off' && thinking !== 'adaptive') {\n out.effort = thinking === 'minimal' ? 'low' : thinking\n }\n if (typeof thinkingBudget === 'number' && thinkingBudget > 0) {\n out.max_tokens = thinkingBudget\n }\n return out\n}\n\n/**\n * Factory for any OpenAI-compatible HTTP endpoint.\n *\n * Speaks the standard `POST /chat/completions` + `stream: true` + SSE dialect.\n * Thin wrappers (`openrouter`, `cerebras`) call this with pinned defaults.\n *\n * @example Baseten (non-standard auth scheme)\n * ```ts\n * openaiCompat({\n * name: 'baseten',\n * apiKey: process.env.BASETEN_API_KEY!,\n * baseURL: process.env.BASETEN_PROXY_URL!,\n * authHeader: { name: 'Authorization', scheme: 'Api-Key' },\n * })\n * ```\n */\nexport function openaiCompat(params: OpenAICompatParams): Provider {\n const name = params.name ?? 'openai-compat'\n const defaultModel = params.defaultModel ?? 'gpt-4o-mini'\n const authHeaderName = params.authHeader?.name ?? 'Authorization'\n const authHeaderValue = params.authHeader?.scheme\n ? `${params.authHeader.scheme} ${params.apiKey}`\n : (params.authHeader ? params.apiKey : `Bearer ${params.apiKey}`)\n const extraHeaders = params.extraHeaders ?? {}\n const endpoint = `${params.baseURL.replace(TRAILING_SLASH_RE, '')}/chat/completions`\n const capabilities: ProviderCapabilities = {\n vision: params.capabilities?.vision ?? false,\n imageInToolResult: params.capabilities?.imageInToolResult ?? false,\n }\n\n const cacheBreakpointsEnabled = params.cacheBreakpoints === true\n const reasoningEnabled = params.supportsReasoning === true\n\n return {\n name,\n meta: { defaultModel, capabilities },\n formatTools,\n userMessage,\n assistantMessage,\n toolResultsMessage,\n classifyError: classifyOpenAICompatError,\n\n async stream(options: StreamOptions, callbacks: StreamCallbacks): Promise<TurnResult> {\n const modelId = options.model || defaultModel\n const messages = toOAIMessages(options.system, options.messages, {\n imageInToolResult: capabilities.imageInToolResult === true,\n supportsReasoning: reasoningEnabled,\n model: modelId,\n })\n // Prompt caching — insert `cache_control: { type: 'ephemeral' }` breakpoints on\n // the system message's last text part, the last tool definition, and the last\n // message's final content part. Only emitted when the factory was constructed\n // with `cacheBreakpoints: true` (set by the `openrouter` wrapper); endpoints\n // that strict-validate the request schema otherwise reject unknown fields.\n const shouldCache = cacheBreakpointsEnabled && options.cache !== false\n if (shouldCache) {\n applyOAICacheBreakpoints(messages)\n }\n\n // max_tokens must cover both thinking budget and response tokens\n const maxTokens = options.thinkingBudget\n ? options.thinkingBudget + options.maxTokens\n : options.maxTokens\n\n const body: Record<string, unknown> = {\n // Spread first so the typed core below wins on collision — explicit\n // always overrides generic.\n ...(params.extraBodyParams ?? {}),\n model: modelId,\n messages,\n max_tokens: maxTokens,\n stream: true,\n }\n\n // OpenRouter normalized reasoning request field. Only set when the host\n // advertises support — Chat Completions hosts that don't speak it would\n // 400 on the unknown field.\n if (reasoningEnabled) {\n const reasoning = planOpenRouterReasoning(options.thinking, options.thinkingBudget)\n if (reasoning)\n body.reasoning = reasoning\n }\n\n if (options.tools && (options.tools as unknown[]).length > 0) {\n body.tools = shouldCache\n ? applyOAIToolCacheBreakpoint(options.tools as OAITool[])\n : options.tools\n }\n\n if (options.toolChoice) {\n if (options.toolChoice.type === 'tool' && options.toolChoice.name)\n body.tool_choice = { type: 'function', function: { name: options.toolChoice.name } }\n else if (options.toolChoice.type === 'required')\n body.tool_choice = 'required'\n else\n body.tool_choice = 'auto'\n }\n\n const response = await fetch(endpoint, {\n method: 'POST',\n headers: {\n [authHeaderName]: authHeaderValue,\n 'Content-Type': 'application/json',\n ...extraHeaders,\n },\n body: JSON.stringify(body),\n signal: options.signal,\n })\n\n if (!response.ok) {\n const errorText = await response.text()\n throw new OpenAICompatHttpError(response.status, errorText)\n }\n\n const result = await consumeSSE(response, callbacks, options.signal)\n const finishReason = mapOAIFinishReason(result.finishReason)\n\n return {\n assistantMessage: buildAssistantContent(\n result.text,\n result.toolCalls,\n result.thinking,\n reasoningEnabled && result.reasoningDetails.length > 0\n ? { details: result.reasoningDetails, producer: 'openrouter', model: modelId }\n : undefined,\n ),\n text: result.text,\n toolCalls: result.toolCalls,\n done: result.finishReason === 'stop' || result.toolCalls.length === 0,\n usage: {\n input: result.usage.input,\n output: result.usage.output,\n ...(result.usage.cacheRead !== undefined ? { cacheRead: result.usage.cacheRead } : {}),\n ...(result.usage.cacheCreation !== undefined ? { cacheCreation: result.usage.cacheCreation } : {}),\n ...(result.usage.cost !== undefined ? { cost: result.usage.cost } : {}),\n ...(finishReason ? { finishReason } : {}),\n modelId,\n },\n }\n },\n }\n}\n","/**\n * Canonical SessionMessage format with converters from/to Anthropic and OpenAI-compat formats.\n */\n\nimport type { SessionContentBlock, SessionMessage, ToolResultContent } from '../types'\nimport { ASSISTANT_TOOL_CALLS_TAG, TOOL_RESULTS_TAG } from '../providers/openai-compat'\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\n/**\n * Decode an Anthropic `tool_result.content` wire value back to zidane's canonical\n * `string | ToolResultContent[]` shape.\n *\n * Anthropic accepts three shapes in the wire: `string`, `Array<{type:'text',text}>`,\n * or `Array<{type:'text'|'image', ...}>`. We collapse to `string` only when every\n * block is text to keep simple cases readable.\n */\nfunction decodeAnthropicToolResultContent(content: unknown): string | ToolResultContent[] {\n if (typeof content === 'string')\n return content\n\n if (!Array.isArray(content))\n return JSON.stringify(content)\n\n const blocks: ToolResultContent[] = []\n for (const raw of content) {\n if (!raw || typeof raw !== 'object')\n continue\n const b = raw as Record<string, unknown>\n if (b.type === 'text' && typeof b.text === 'string') {\n blocks.push({ type: 'text', text: b.text })\n continue\n }\n if (b.type === 'image' && b.source && typeof b.source === 'object') {\n const src = b.source as Record<string, unknown>\n if (src.type === 'base64' && typeof src.data === 'string' && typeof src.media_type === 'string') {\n blocks.push({ type: 'image', mediaType: src.media_type, data: src.data })\n continue\n }\n }\n // Unknown block → stringify into text for visibility.\n blocks.push({ type: 'text', text: JSON.stringify(raw) })\n }\n\n if (blocks.length === 0)\n return ''\n\n const hasNonText = blocks.some(b => b.type !== 'text')\n if (!hasNonText)\n return blocks.map(b => (b as { type: 'text', text: string }).text).join('\\n')\n\n return blocks\n}\n\n/**\n * Encode zidane's canonical `string | ToolResultContent[]` shape to Anthropic's\n * wire format for `tool_result.content`.\n */\nfunction encodeAnthropicToolResultContent(\n output: string | ToolResultContent[],\n): string | Array<{ type: 'text', text: string } | { type: 'image', source: { type: 'base64', media_type: string, data: string } }> {\n if (typeof output === 'string')\n return output\n return output.map((b) => {\n if (b.type === 'text')\n return { type: 'text' as const, text: b.text }\n return {\n type: 'image' as const,\n source: { type: 'base64' as const, media_type: b.mediaType, data: b.data },\n }\n })\n}\n\n// ---------------------------------------------------------------------------\n// fromAnthropic\n// ---------------------------------------------------------------------------\n\nexport function fromAnthropic(msg: { role: string, content: unknown }): SessionMessage {\n const role = msg.role as 'user' | 'assistant'\n const content: SessionContentBlock[] = []\n\n if (typeof msg.content === 'string') {\n content.push({ type: 'text', text: msg.content })\n return { role, content }\n }\n\n if (Array.isArray(msg.content)) {\n for (const block of msg.content) {\n if (!block || typeof block !== 'object')\n continue\n const b = block as Record<string, unknown>\n\n if (b.type === 'text') {\n content.push({ type: 'text', text: b.text as string })\n }\n else if (b.type === 'image') {\n const source = b.source as Record<string, unknown>\n if (source?.type === 'base64') {\n content.push({ type: 'image', mediaType: source.media_type as string, data: source.data as string })\n }\n }\n else if (b.type === 'tool_use') {\n content.push({ type: 'tool_call', id: b.id as string, name: b.name as string, input: b.input as Record<string, unknown> })\n }\n else if (b.type === 'tool_result') {\n const output = decodeAnthropicToolResultContent(b.content)\n const block: Extract<SessionContentBlock, { type: 'tool_result' }> = {\n type: 'tool_result',\n callId: b.tool_use_id as string,\n output,\n }\n if (b.is_error === true)\n block.isError = true\n content.push(block)\n }\n else if (b.type === 'thinking') {\n const block: Extract<SessionContentBlock, { type: 'thinking' }> = {\n type: 'thinking',\n text: (b.thinking as string | undefined) ?? '',\n }\n if (typeof b.signature === 'string') {\n block.signature = b.signature\n // Tag the producer so cross-provider senders can drop foreign signatures.\n block.signatureProducer = 'anthropic'\n }\n content.push(block)\n }\n else if (b.type === 'redacted_thinking') {\n // Encrypted reasoning that must be echoed back unmodified to keep\n // interleaved-thinking + tool-use chains working on Sonnet 3.7+/Opus 4.x.\n content.push({ type: 'redacted_thinking', data: (b.data as string | undefined) ?? '' })\n }\n // Unknown block types are silently skipped\n }\n }\n\n return { role, content }\n}\n\n// ---------------------------------------------------------------------------\n// fromOpenAI\n// ---------------------------------------------------------------------------\n\nexport function fromOpenAI(msg: { role: string, content: unknown }): SessionMessage {\n const role = msg.role as 'user' | 'assistant'\n const content: SessionContentBlock[] = []\n const c: unknown = msg.content\n\n if (c == null) {\n return { role, content }\n }\n\n if (typeof c === 'string') {\n content.push({ type: 'text', text: c })\n return { role, content }\n }\n\n if (typeof c === 'object' && !Array.isArray(c) && (c as { _tag?: unknown })._tag === ASSISTANT_TOOL_CALLS_TAG) {\n const tagged = c as { text?: unknown, tool_calls?: unknown }\n if (typeof tagged.text === 'string' && tagged.text) {\n content.push({ type: 'text', text: tagged.text })\n }\n if (Array.isArray(tagged.tool_calls)) {\n for (const raw of tagged.tool_calls) {\n if (!raw || typeof raw !== 'object')\n continue\n const tc = raw as { id?: string, function?: { name?: string, arguments?: unknown } }\n const rawArgs = tc.function?.arguments\n const input: Record<string, unknown> = rawArgs\n ? (typeof rawArgs === 'string' ? JSON.parse(rawArgs) : rawArgs as Record<string, unknown>)\n : {}\n content.push({ type: 'tool_call', id: tc.id ?? '', name: tc.function?.name ?? '', input })\n }\n }\n return { role, content }\n }\n\n if (typeof c === 'object' && !Array.isArray(c) && (c as { _tag?: unknown })._tag === TOOL_RESULTS_TAG) {\n const tagged = c as { results?: unknown }\n if (Array.isArray(tagged.results)) {\n for (const raw of tagged.results) {\n if (!raw || typeof raw !== 'object')\n continue\n const r = raw as { tool_call_id?: string, content?: string | ToolResultContent[] }\n content.push({ type: 'tool_result', callId: r.tool_call_id ?? '', output: r.content ?? '' })\n }\n }\n return { role, content }\n }\n\n if (Array.isArray(c)) {\n for (const block of c) {\n if (!block || typeof block !== 'object')\n continue\n const b = block as Record<string, unknown>\n\n if (b.type === 'text') {\n content.push({ type: 'text', text: b.text as string })\n }\n else if (b.type === 'image_url') {\n const imageUrl = (b.image_url as Record<string, unknown>)?.url as string\n if (imageUrl?.startsWith('data:')) {\n const [meta, data] = imageUrl.slice(5).split(',', 2)\n const mediaType = meta.replace(';base64', '')\n content.push({ type: 'image', mediaType, data })\n }\n }\n }\n return { role, content }\n }\n\n return { role, content }\n}\n\n// ---------------------------------------------------------------------------\n// toAnthropic\n// ---------------------------------------------------------------------------\n\nexport function toAnthropic(msg: SessionMessage): { role: string, content: unknown } {\n const blocks = msg.content\n // Drop foreign reasoning state. Three independent rejection paths,\n // each driven by an Anthropic API constraint we've hit in production:\n //\n // 1. `signatureProducer === 'openai'` — OpenAI's `encrypted_content`\n // isn't a valid Anthropic HMAC; sending it 400s with an unhelpful\n // \"invalid signature\" error.\n // 2. `type === 'thinking' && !signature` — Anthropic's\n // `ThinkingBlockParam` requires a signature field. A non-Anthropic\n // producer that doesn't sign thinking (Cerebras, Gemini, OSS via\n // OpenAI-compat, etc.) leaves a block in the session that 400s\n // here with `messages.N.content.M.thinking.signature: Field\n // required` the next time the user picks an Anthropic model. Drop\n // them — the model can re-think on its own turn, no info loss\n // beyond the prior provider's chain-of-thought, which Anthropic\n // can't consume anyway.\n // 3. `type === 'provider_reasoning'` — opaque OpenRouter envelope;\n // not an Anthropic block type at all.\n .filter((b) => {\n if (b.type === 'provider_reasoning')\n return false\n if (b.type !== 'thinking')\n return true\n if (b.signatureProducer === 'openai')\n return false\n if (!b.signature)\n return false\n return true\n })\n .map((block) => {\n switch (block.type) {\n case 'text':\n return { type: 'text', text: block.text }\n case 'image':\n return { type: 'image', source: { type: 'base64', media_type: block.mediaType, data: block.data } }\n case 'tool_call':\n return { type: 'tool_use', id: block.id, name: block.name, input: block.input }\n case 'tool_result': {\n const out: Record<string, unknown> = {\n type: 'tool_result',\n tool_use_id: block.callId,\n content: encodeAnthropicToolResultContent(block.output),\n }\n if (block.isError)\n out.is_error = true\n return out\n }\n case 'thinking': {\n // Filter above guarantees `signature` is present and either\n // anthropic-produced or legacy (back-compat for pre-tagging\n // Anthropic sessions where producer was never recorded).\n return { type: 'thinking', thinking: block.text, signature: block.signature }\n }\n case 'redacted_thinking':\n return { type: 'redacted_thinking', data: block.data }\n default:\n return { type: 'text', text: '' }\n }\n })\n\n // Simplify to plain string if only one text block\n if (blocks.length === 1 && blocks[0].type === 'text') {\n return { role: msg.role, content: (blocks[0] as { type: string, text: string }).text }\n }\n\n return { role: msg.role, content: blocks }\n}\n\n// ---------------------------------------------------------------------------\n// toOpenAI\n// ---------------------------------------------------------------------------\n\nexport function toOpenAI(msg: SessionMessage): { role: string, content: unknown } {\n const toolCalls = msg.content.filter(b => b.type === 'tool_call')\n const toolResults = msg.content.filter(b => b.type === 'tool_result')\n const textBlocks = msg.content.filter(b => b.type === 'text')\n const imageBlocks = msg.content.filter(b => b.type === 'image')\n\n // Tool results → tagged format\n if (toolResults.length > 0) {\n return {\n role: msg.role,\n content: {\n _tag: TOOL_RESULTS_TAG,\n results: toolResults.map((b) => {\n const tr = b as Extract<SessionContentBlock, { type: 'tool_result' }>\n return { tool_call_id: tr.callId, content: tr.output }\n }),\n },\n }\n }\n\n // Tool calls → tagged format\n if (toolCalls.length > 0) {\n const textContent = textBlocks.length > 0 ? (textBlocks[0] as Extract<SessionContentBlock, { type: 'text' }>).text : null\n return {\n role: msg.role,\n content: {\n _tag: ASSISTANT_TOOL_CALLS_TAG,\n text: textContent,\n tool_calls: toolCalls.map((b) => {\n const tc = b as Extract<SessionContentBlock, { type: 'tool_call' }>\n return {\n id: tc.id,\n type: 'function',\n function: { name: tc.name, arguments: JSON.stringify(tc.input) },\n }\n }),\n },\n }\n }\n\n // Images → multimodal array\n if (imageBlocks.length > 0) {\n const parts: unknown[] = imageBlocks.map((b) => {\n const img = b as Extract<SessionContentBlock, { type: 'image' }>\n return { type: 'image_url', image_url: { url: `data:${img.mediaType};base64,${img.data}` } }\n })\n for (const b of textBlocks) {\n parts.push({ type: 'text', text: (b as Extract<SessionContentBlock, { type: 'text' }>).text })\n }\n return { role: msg.role, content: parts }\n }\n\n // Pure text → string\n if (textBlocks.length === 1) {\n return { role: msg.role, content: (textBlocks[0] as Extract<SessionContentBlock, { type: 'text' }>).text }\n }\n\n // Multiple text blocks or empty\n if (textBlocks.length > 1) {\n return { role: msg.role, content: textBlocks.map(b => ({ type: 'text', text: (b as Extract<SessionContentBlock, { type: 'text' }>).text })) }\n }\n\n return { role: msg.role, content: null }\n}\n\n// ---------------------------------------------------------------------------\n// autoDetectAndConvert\n// ---------------------------------------------------------------------------\n\nexport function autoDetectAndConvert(msg: { role: string, content: unknown }): SessionMessage {\n const c: unknown = msg.content\n\n // OpenAI-compat tagged messages\n if (c && typeof c === 'object' && !Array.isArray(c)) {\n const tag = (c as { _tag?: unknown })._tag\n if (typeof tag === 'string' && tag.startsWith('__zidane_'))\n return fromOpenAI(msg)\n }\n\n // Array: inspect block types\n if (Array.isArray(c)) {\n for (const block of c) {\n if (!block || typeof block !== 'object')\n continue\n const b = block as Record<string, unknown>\n if (b.type === 'tool_use' || (b.type === 'tool_result' && 'tool_use_id' in b)) {\n return fromAnthropic(msg)\n }\n if (b.type === 'image_url') {\n return fromOpenAI(msg)\n }\n }\n // Default array → Anthropic\n return fromAnthropic(msg)\n }\n\n // String → either format is the same\n if (typeof c === 'string') {\n return fromAnthropic(msg)\n }\n\n // Default\n return fromAnthropic(msg)\n}\n"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { o as matchesContextExceeded } from "./errors-D1lhd6mX.js";
|
|
2
|
-
import { d as toolResultsMessage, f as userMessage, i as toAnthropic, n as fromAnthropic, s as assistantMessage, u as openaiCompat } from "./messages-
|
|
2
|
+
import { d as toolResultsMessage, f as userMessage, i as toAnthropic, n as fromAnthropic, s as assistantMessage, u as openaiCompat } from "./messages-xaYMMFlb.js";
|
|
3
3
|
import { resolve } from "node:path";
|
|
4
4
|
import { existsSync, readFileSync, renameSync, writeFileSync } from "node:fs";
|
|
5
5
|
import { getOAuthApiKey } from "@mariozechner/pi-ai/oauth";
|
|
@@ -987,4 +987,4 @@ function openrouter(params) {
|
|
|
987
987
|
//#endregion
|
|
988
988
|
export { anthropic as i, openai as n, cerebras as r, openrouter as t };
|
|
989
989
|
|
|
990
|
-
//# sourceMappingURL=providers-
|
|
990
|
+
//# sourceMappingURL=providers-BCbdv99U.js.map
|