@x12i/openrouter-runtime 1.0.1 → 1.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/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/config/defaults.ts","../src/openrouter/errors.ts","../src/utils/delay.ts","../src/openrouter/http-client.ts","../src/utils/json.ts","../src/function-tools/tool-messages.ts","../src/normalize/citations.ts","../src/normalize/images.ts","../src/normalize/patches.ts","../src/normalize/tool-usage.ts","../src/normalize/usage.ts","../src/utils/ids.ts","../src/normalize/normalize-chat-response.ts","../src/policies/post-response-validation.ts","../src/config/normalize-model.ts","../src/config/validate-runtime-request.ts","../src/openrouter/endpoints.ts","../src/openrouter/headers.ts","../src/tools/nested-tools.ts","../src/tools/server-tools.ts","../src/runtime/runtime.ts","../src/function-tools/registry.ts","../src/function-tools/parse-tool-args.ts","../src/function-tools/execute-function-tool.ts","../src/runtime/tool-loop.ts","../src/runtime/run-chat.ts","../src/normalize/normalize-responses-response.ts","../src/runtime/run-responses.ts","../src/runtime/create-runtime.ts"],"sourcesContent":["import type { OpenRouterRuntimeOptions } from \"../types/public\";\nimport type { RequiredRuntimeDefaults, RequiredRuntimeOptions } from \"../types/internal\";\n\nexport function resolveRuntimeOptions(options: OpenRouterRuntimeOptions): RequiredRuntimeOptions {\n return {\n ...options,\n baseUrl: options.baseUrl ?? \"https://openrouter.ai/api/v1\",\n defaultHeaders: options.defaultHeaders ?? {},\n fetch: options.fetch ?? globalThis.fetch\n };\n}\n\nexport function resolveDefaults(options: OpenRouterRuntimeOptions): RequiredRuntimeDefaults {\n const retry = options.defaults?.retry;\n return {\n ...options.defaults,\n apiMode: options.defaults?.apiMode ?? \"auto\",\n timeoutMs: options.defaults?.timeoutMs ?? 120_000,\n retry: {\n enabled: retry?.enabled ?? true,\n maxAttempts: retry?.maxAttempts ?? options.defaults?.maxRetries ?? 3,\n baseDelayMs: retry?.baseDelayMs ?? 500,\n maxDelayMs: retry?.maxDelayMs ?? 5_000\n },\n requireCitationsWhenSearchUsed: options.defaults?.requireCitationsWhenSearchUsed ?? true,\n onPolicyViolation: options.defaults?.onPolicyViolation ?? \"return_error\",\n serverTools: options.defaults?.serverTools ?? {\n datetime: {\n mode: \"allowed\",\n timezone: \"UTC\"\n }\n }\n };\n}\n","export class RuntimeConfigError extends Error {\n constructor(\n public readonly code: string,\n message: string,\n public readonly details?: unknown\n ) {\n super(message);\n this.name = \"RuntimeConfigError\";\n }\n}\n\nexport class OpenRouterHttpError extends Error {\n constructor(\n public readonly status: number,\n public readonly code: string,\n message: string,\n public readonly body?: unknown,\n public readonly retryable = false\n ) {\n super(message);\n this.name = \"OpenRouterHttpError\";\n }\n}\n","export function delay(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nexport function retryDelay(attempt: number, baseDelayMs: number, maxDelayMs: number): number {\n const exponential = Math.min(maxDelayMs, baseDelayMs * 2 ** Math.max(0, attempt - 1));\n const jitter = Math.floor(Math.random() * Math.min(250, exponential));\n return exponential + jitter;\n}\n","import { delay, retryDelay } from \"../utils/delay\";\nimport { OpenRouterHttpError } from \"./errors\";\nimport type { CompiledOpenRouterRequest } from \"../types/public\";\nimport type { RequiredRuntimeDefaults, RequiredRuntimeOptions } from \"../types/internal\";\n\nexport async function sendOpenRouterRequest(\n compiled: CompiledOpenRouterRequest,\n options: RequiredRuntimeOptions,\n defaults: RequiredRuntimeDefaults,\n timeoutMs: number\n): Promise<unknown> {\n const attempts = defaults.retry.enabled ? defaults.retry.maxAttempts : 1;\n let lastError: unknown;\n for (let attempt = 1; attempt <= attempts; attempt++) {\n try {\n return await sendOnce(compiled, options, timeoutMs);\n } catch (error) {\n lastError = error;\n const retryable = error instanceof OpenRouterHttpError ? error.retryable : true;\n if (!retryable || attempt >= attempts) throw error;\n await delay(retryDelay(attempt, defaults.retry.baseDelayMs, defaults.retry.maxDelayMs));\n }\n }\n throw lastError;\n}\n\nasync function sendOnce(\n compiled: CompiledOpenRouterRequest,\n options: RequiredRuntimeOptions,\n timeoutMs: number\n): Promise<unknown> {\n const controller = new AbortController();\n const timeout = setTimeout(() => controller.abort(), timeoutMs);\n try {\n const response = await options.fetch(compiled.url, {\n method: \"POST\",\n headers: compiled.headers,\n body: JSON.stringify(compiled.body),\n signal: controller.signal\n });\n const text = await response.text();\n const body = text ? parseBody(text) : undefined;\n if (!response.ok) {\n throw new OpenRouterHttpError(\n response.status,\n statusToCode(response.status),\n extractMessage(body) ?? `OpenRouter request failed with status ${response.status}.`,\n body,\n isRetryableStatus(response.status)\n );\n }\n return body;\n } catch (error) {\n if (error instanceof OpenRouterHttpError) throw error;\n if (error instanceof Error && error.name === \"AbortError\") {\n throw new OpenRouterHttpError(408, \"OPENROUTER_TIMEOUT\", \"OpenRouter request timed out.\", undefined, true);\n }\n throw error;\n } finally {\n clearTimeout(timeout);\n }\n}\n\nfunction parseBody(text: string): unknown {\n try {\n return JSON.parse(text);\n } catch {\n return text;\n }\n}\n\nfunction extractMessage(body: unknown): string | undefined {\n if (typeof body !== \"object\" || body === null) return undefined;\n const record = body as Record<string, unknown>;\n const error = record.error;\n if (typeof error === \"object\" && error !== null && typeof (error as Record<string, unknown>).message === \"string\") {\n return (error as Record<string, string>).message;\n }\n return typeof record.message === \"string\" ? record.message : undefined;\n}\n\nfunction statusToCode(status: number): string {\n if (status === 401) return \"OPENROUTER_AUTH_FAILED\";\n if (status === 429) return \"OPENROUTER_RATE_LIMITED\";\n return \"OPENROUTER_REQUEST_FAILED\";\n}\n\nfunction isRetryableStatus(status: number): boolean {\n return status === 429 || status === 500 || status === 502 || status === 503 || status === 504;\n}\n","export function parseJsonMaybe(value: unknown): unknown {\n if (typeof value !== \"string\") return value;\n if (value.trim() === \"\") return {};\n try {\n return JSON.parse(value);\n } catch {\n return value;\n }\n}\n\nexport function stringifyToolResult(value: unknown): string {\n if (typeof value === \"string\") return value;\n return JSON.stringify(value);\n}\n\nexport function isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n","import { stringifyToolResult } from \"../utils/json\";\nimport type { RuntimeFunctionToolResult, RuntimeMessage } from \"../types/public\";\n\nexport function resultToChatToolMessage(result: RuntimeFunctionToolResult): RuntimeMessage {\n return {\n role: \"tool\",\n toolCallId: result.callId,\n name: result.name,\n content: stringifyToolResult(result.status === \"completed\" ? result.result : { error: result.error })\n };\n}\n\nexport function resultToResponsesInput(result: RuntimeFunctionToolResult): Record<string, unknown> {\n return {\n type: \"function_call_output\",\n call_id: result.callId,\n output: stringifyToolResult(result.status === \"completed\" ? result.result : { error: result.error })\n };\n}\n","import type { RuntimeCitation } from \"../types/public\";\nimport { isRecord } from \"../utils/json\";\n\nexport function extractCitations(value: unknown): RuntimeCitation[] {\n const citations: RuntimeCitation[] = [];\n visit(value, (item) => {\n const url = pickString(item, [\"url\", \"uri\"]);\n if (!url) return;\n citations.push({\n type: \"url\",\n url,\n sourceProvider: \"openrouter\",\n raw: item,\n ...optional(\"title\", pickString(item, [\"title\", \"name\"])),\n ...optional(\"excerpt\", pickString(item, [\"excerpt\", \"content\", \"text\"])),\n ...optional(\"startIndex\", pickNumber(item, [\"start_index\", \"startIndex\"])),\n ...optional(\"endIndex\", pickNumber(item, [\"end_index\", \"endIndex\"]))\n });\n });\n return dedupe(citations);\n}\n\nfunction optional<T>(key: string, value: T | undefined): Record<string, T> {\n return value === undefined ? {} : { [key]: value };\n}\n\nfunction visit(value: unknown, onCitation: (record: Record<string, unknown>) => void): void {\n if (Array.isArray(value)) {\n for (const item of value) visit(item, onCitation);\n return;\n }\n if (!isRecord(value)) return;\n if (value.type === \"url_citation\" || value.type === \"citation\" || value.url || value.uri) onCitation(value);\n for (const key of [\"annotations\", \"citations\"]) visit(value[key], onCitation);\n}\n\nfunction pickString(record: Record<string, unknown>, keys: string[]): string | undefined {\n for (const key of keys) if (typeof record[key] === \"string\") return record[key];\n return undefined;\n}\n\nfunction pickNumber(record: Record<string, unknown>, keys: string[]): number | undefined {\n for (const key of keys) if (typeof record[key] === \"number\") return record[key];\n return undefined;\n}\n\nfunction dedupe(citations: RuntimeCitation[]): RuntimeCitation[] {\n const seen = new Set<string>();\n return citations.filter((citation) => {\n const key = `${citation.url}:${citation.startIndex ?? \"\"}:${citation.endIndex ?? \"\"}`;\n if (seen.has(key)) return false;\n seen.add(key);\n return true;\n });\n}\n","import type { RuntimeGeneratedImage } from \"../types/public\";\nimport { isRecord } from \"../utils/json\";\n\nexport function extractImages(value: unknown): RuntimeGeneratedImage[] {\n const images: RuntimeGeneratedImage[] = [];\n visit(value, (record) => {\n const imageUrl = stringValue(record.image_url) ?? stringValue(record.url);\n if (imageUrl) images.push({ imageUrl, status: \"ok\", raw: record });\n });\n return images;\n}\n\nfunction visit(value: unknown, onImage: (record: Record<string, unknown>) => void): void {\n if (Array.isArray(value)) {\n for (const item of value) visit(item, onImage);\n return;\n }\n if (!isRecord(value)) return;\n if (value.type === \"image\" || value.type === \"image_generation_call\" || value.image_url || value.url) {\n if (value.image_url || value.type === \"image_generation_call\") onImage(value);\n }\n for (const nested of Object.values(value)) visit(nested, onImage);\n}\n\nfunction stringValue(value: unknown): string | undefined {\n if (typeof value === \"string\") return value;\n if (isRecord(value) && typeof value.url === \"string\") return value.url;\n return undefined;\n}\n","import type { RuntimePatchProposal } from \"../types/public\";\nimport { isRecord } from \"../utils/json\";\n\nexport function extractPatches(value: unknown): RuntimePatchProposal[] {\n const patches: RuntimePatchProposal[] = [];\n visit(value, (record) => {\n const operation = normalizeOperation(record);\n if (!operation) return;\n patches.push({\n callId: stringValue(record.call_id) ?? stringValue(record.id) ?? \"patch_call\",\n status: record.status === \"failed\" ? \"failed\" : \"completed\",\n operation,\n raw: record\n });\n });\n return patches;\n}\n\nfunction visit(value: unknown, onPatch: (record: Record<string, unknown>) => void): void {\n if (Array.isArray(value)) {\n for (const item of value) visit(item, onPatch);\n return;\n }\n if (!isRecord(value)) return;\n if (value.type === \"apply_patch_call\" || value.type === \"patch\" || value.operation) onPatch(value);\n for (const nested of Object.values(value)) visit(nested, onPatch);\n}\n\nfunction normalizeOperation(record: Record<string, unknown>): RuntimePatchProposal[\"operation\"] | undefined {\n const operation = isRecord(record.operation) ? record.operation : record;\n const type = stringValue(operation.type) ?? stringValue(operation.operation);\n const path = stringValue(operation.path) ?? stringValue(operation.file);\n if (!type || !path) return undefined;\n if (type === \"delete_file\") return { type, path };\n if (type === \"create_file\" || type === \"update_file\") {\n return { type, path, diff: stringValue(operation.diff) ?? stringValue(operation.patch) ?? \"\" };\n }\n return undefined;\n}\n\nfunction stringValue(value: unknown): string | undefined {\n return typeof value === \"string\" ? value : undefined;\n}\n","import type {\n RuntimeFunctionToolUsage,\n RuntimeServerToolsPolicy,\n RuntimeToolUsage,\n ServerToolKey\n} from \"../types/public\";\n\nconst serverToolKeys: ServerToolKey[] = [\n \"webSearch\",\n \"webFetch\",\n \"datetime\",\n \"imageGeneration\",\n \"applyPatch\",\n \"fusion\",\n \"advisor\",\n \"subagent\"\n];\n\nconst rawTypeToKey: Record<string, ServerToolKey> = {\n \"openrouter:web_search\": \"webSearch\",\n web_search: \"webSearch\",\n webSearch: \"webSearch\",\n \"openrouter:web_fetch\": \"webFetch\",\n web_fetch: \"webFetch\",\n webFetch: \"webFetch\",\n \"openrouter:datetime\": \"datetime\",\n datetime: \"datetime\",\n \"openrouter:image_generation\": \"imageGeneration\",\n image_generation: \"imageGeneration\",\n imageGeneration: \"imageGeneration\",\n \"openrouter:apply_patch\": \"applyPatch\",\n apply_patch: \"applyPatch\",\n applyPatch: \"applyPatch\",\n \"openrouter:fusion\": \"fusion\",\n fusion: \"fusion\",\n \"openrouter:advisor\": \"advisor\",\n advisor: \"advisor\",\n \"openrouter:subagent\": \"subagent\",\n subagent: \"subagent\"\n};\n\nexport function createToolUsage(\n policy: RuntimeServerToolsPolicy | undefined,\n raw: unknown,\n functionTools: RuntimeFunctionToolUsage[] = []\n): RuntimeToolUsage {\n const counts = detectServerToolCounts(raw);\n const serverTools = Object.fromEntries(\n serverToolKeys.map((key) => {\n const item = policyValue(policy, key);\n const requested = Array.isArray(item) ? item.some((x) => x.mode !== \"disabled\") : !!item && item.mode !== \"disabled\";\n const required = Array.isArray(item) ? item.some((x) => x.mode === \"required\") : !!item && item.mode === \"required\";\n return [\n key,\n {\n requested,\n required,\n used: (counts[key] ?? 0) > 0,\n callCount: counts[key] ?? 0\n }\n ];\n })\n ) as RuntimeToolUsage[\"serverTools\"];\n return { serverTools, functionTools };\n}\n\nfunction policyValue(policy: RuntimeServerToolsPolicy | undefined, key: ServerToolKey) {\n return policy?.[key];\n}\n\nfunction detectServerToolCounts(raw: unknown): Partial<Record<ServerToolKey, number>> {\n const counts: Partial<Record<ServerToolKey, number>> = {};\n visit(raw, (type) => {\n const key = rawTypeToKey[type];\n if (key) counts[key] = (counts[key] ?? 0) + 1;\n });\n return counts;\n}\n\nfunction visit(value: unknown, onType: (type: string) => void): void {\n if (Array.isArray(value)) {\n for (const item of value) visit(item, onType);\n return;\n }\n if (typeof value !== \"object\" || value === null) return;\n const record = value as Record<string, unknown>;\n if (typeof record.type === \"string\") onType(record.type);\n if (typeof record.name === \"string\") onType(record.name);\n for (const nested of Object.values(record)) visit(nested, onType);\n}\n","import type { RuntimeUsage } from \"../types/public\";\nimport { isRecord } from \"../utils/json\";\n\nexport function normalizeUsage(usage: unknown): RuntimeUsage | undefined {\n if (!isRecord(usage)) return undefined;\n const details = isRecord(usage.completion_tokens_details) ? usage.completion_tokens_details : undefined;\n return {\n raw: usage,\n ...optional(\"inputTokens\", numberValue(usage.prompt_tokens) ?? numberValue(usage.input_tokens)),\n ...optional(\"outputTokens\", numberValue(usage.completion_tokens) ?? numberValue(usage.output_tokens)),\n ...optional(\"totalTokens\", numberValue(usage.total_tokens)),\n ...optional(\"reasoningTokens\", numberValue(details?.reasoning_tokens) ?? numberValue(usage.reasoning_tokens)),\n ...optional(\"costUsd\", numberValue(usage.cost))\n };\n}\n\nfunction numberValue(value: unknown): number | undefined {\n return typeof value === \"number\" ? value : undefined;\n}\n\nfunction optional<T>(key: string, value: T | undefined): Record<string, T> {\n return value === undefined ? {} : { [key]: value };\n}\n","export function createRuntimeId(prefix = \"orun\"): string {\n const cryptoObject = globalThis.crypto;\n if (cryptoObject?.randomUUID) return `${prefix}_${cryptoObject.randomUUID()}`;\n return `${prefix}_${Date.now()}_${Math.random().toString(36).slice(2)}`;\n}\n","import { extractCitations } from \"./citations\";\nimport { extractImages } from \"./images\";\nimport { extractPatches } from \"./patches\";\nimport { createToolUsage } from \"./tool-usage\";\nimport { normalizeUsage } from \"./usage\";\nimport type {\n ResolvedApiMode,\n RuntimeFunctionToolUsage,\n RuntimeResponse,\n RuntimeServerToolsPolicy,\n RuntimeWarning\n} from \"../types/public\";\nimport { createRuntimeId } from \"../utils/ids\";\nimport { isRecord } from \"../utils/json\";\n\nexport function normalizeChatResponse(params: {\n requestBody: unknown;\n response: unknown;\n apiMode: ResolvedApiMode;\n model: string;\n serverTools?: RuntimeServerToolsPolicy;\n warnings: RuntimeWarning[];\n functionToolUsage?: RuntimeFunctionToolUsage[];\n metadata?: Record<string, unknown>;\n}): RuntimeResponse {\n const responseRecord = isRecord(params.response) ? params.response : {};\n const choice = Array.isArray(responseRecord.choices) && isRecord(responseRecord.choices[0]) ? responseRecord.choices[0] : {};\n const message = isRecord(choice.message) ? choice.message : {};\n const text = normalizeContentToText(message.content);\n return {\n id: typeof responseRecord.id === \"string\" ? responseRecord.id : createRuntimeId(\"orresp\"),\n status: \"completed\",\n apiMode: params.apiMode,\n model: typeof responseRecord.model === \"string\" ? responseRecord.model : params.model,\n text,\n citations: extractCitations([message.annotations, responseRecord.citations, params.response]),\n images: extractImages(params.response),\n patches: extractPatches(params.response),\n toolUsage: createToolUsage(params.serverTools, params.response, params.functionToolUsage),\n warnings: params.warnings,\n errors: [],\n raw: {\n request: params.requestBody,\n response: params.response\n },\n ...optional(\"usage\", normalizeUsage(responseRecord.usage)),\n ...optional(\"finishReason\", typeof choice.finish_reason === \"string\" ? choice.finish_reason : undefined),\n ...optional(\"metadata\", params.metadata)\n };\n}\n\nexport function normalizeContentToText(content: unknown): string {\n if (typeof content === \"string\") return content;\n if (!Array.isArray(content)) return \"\";\n return content\n .map((part) => {\n if (typeof part === \"string\") return part;\n if (isRecord(part) && typeof part.text === \"string\") return part.text;\n if (isRecord(part) && typeof part.content === \"string\") return part.content;\n return \"\";\n })\n .filter(Boolean)\n .join(\"\");\n}\n\nfunction optional<T>(key: string, value: T | undefined): Record<string, T> {\n return value === undefined ? {} : { [key]: value };\n}\n","import type { RuntimeDefaults, RuntimeResponse } from \"../types/public\";\n\nexport async function validatePostResponse(response: RuntimeResponse, defaults: RuntimeDefaults): Promise<RuntimeResponse> {\n const errors = [...response.errors];\n const warnings = [...response.warnings];\n for (const [key, usage] of Object.entries(response.toolUsage.serverTools)) {\n if (usage.required && !usage.used) {\n const code = `${toScreamingSnake(key)}_REQUIRED_BUT_NOT_USED`;\n usage.policyViolation = code;\n const violation = { code, message: `${key} was required but no usage evidence was found.` };\n if (defaults.onPolicyViolation === \"throw\") {\n errors.push({ ...violation, source: \"policy\" });\n } else {\n warnings.push(violation);\n }\n }\n }\n if (\n defaults.requireCitationsWhenSearchUsed &&\n response.toolUsage.serverTools.webSearch.requested &&\n response.citations.length === 0\n ) {\n warnings.push({\n code: \"CITATIONS_REQUIRED_BUT_MISSING\",\n message: \"Web search was requested but no citations were extracted.\"\n });\n }\n return {\n ...response,\n status: errors.some((error) => error.source === \"policy\") ? \"policy_violation\" : response.status,\n errors,\n warnings\n };\n}\n\nfunction toScreamingSnake(value: string): string {\n return value.replace(/[A-Z]/g, (match) => `_${match}`).toUpperCase();\n}\n","import type { RuntimeServerToolsPolicy, RuntimeWarning } from \"../types/public\";\n\nexport interface ModelNormalizationResult {\n model: string;\n warnings: RuntimeWarning[];\n impliedServerTools?: Partial<RuntimeServerToolsPolicy>;\n}\n\nexport function normalizeModel(model: string): ModelNormalizationResult {\n if (!model.endsWith(\":online\")) {\n return { model, warnings: [] };\n }\n\n return {\n model: model.slice(0, -\":online\".length),\n warnings: [\n {\n code: \"OPENROUTER_ONLINE_VARIANT_DEPRECATED\",\n message: \"The :online model suffix is deprecated. Use serverTools.webSearch instead.\"\n }\n ],\n impliedServerTools: {\n webSearch: { mode: \"allowed\" }\n }\n };\n}\n","import { RuntimeConfigError } from \"../openrouter/errors\";\nimport type {\n OpenRouterRuntimeOptions,\n ResolvedApiMode,\n RuntimeFunctionToolDefinition,\n RuntimeRequest,\n RuntimeServerToolsPolicy\n} from \"../types/public\";\n\nexport function validateRuntimeRequest(\n request: RuntimeRequest,\n options: OpenRouterRuntimeOptions,\n apiMode: ResolvedApiMode,\n model: string,\n serverTools: RuntimeServerToolsPolicy | undefined\n): void {\n if (!options.apiKey) throw new RuntimeConfigError(\"OPENROUTER_API_KEY_MISSING\", \"OpenRouter API key is required.\");\n if (!model) throw new RuntimeConfigError(\"MODEL_MISSING\", \"Runtime request must include a model.\");\n if (!request.messages?.length && !request.input && !request.prompt) {\n throw new RuntimeConfigError(\"INPUT_MISSING\", \"Runtime request must include messages, input, or prompt.\");\n }\n if (serverTools?.applyPatch?.mode && serverTools.applyPatch.mode !== \"disabled\" && apiMode !== \"responses\") {\n throw new RuntimeConfigError(\"APPLY_PATCH_REQUIRES_RESPONSES_API\", \"apply_patch requires the Responses API.\");\n }\n if (serverTools?.applyPatch?.behavior === \"apply_with_callback\" && !options.patchApplier) {\n throw new RuntimeConfigError(\"PATCH_APPLIER_REQUIRED\", \"apply_with_callback requires options.patchApplier.\");\n }\n validateWebSearch(serverTools);\n validateWebFetch(serverTools);\n validateDomains(serverTools?.webSearch?.allowedDomains, \"allowedDomains\");\n validateDomains(serverTools?.webSearch?.excludedDomains, \"excludedDomains\");\n validateDomains(serverTools?.webFetch?.allowedDomains, \"allowedDomains\");\n validateDomains(serverTools?.webFetch?.blockedDomains, \"blockedDomains\");\n validateFunctionTools(request.functionTools);\n validateAdvisorNames(serverTools);\n validateToolChoice(request, serverTools);\n}\n\nfunction validateWebSearch(policy?: RuntimeServerToolsPolicy): void {\n const search = policy?.webSearch;\n if (!search || search.mode === \"disabled\") return;\n const maxResults = search.maxResults ?? 5;\n const maxTotalResults = search.maxTotalResults ?? 15;\n if (maxResults < 1 || maxResults > 25) {\n throw new RuntimeConfigError(\"INVALID_WEB_SEARCH_MAX_RESULTS\", \"webSearch.maxResults must be between 1 and 25.\");\n }\n if (search.engine === \"perplexity\" && maxResults > 20) {\n throw new RuntimeConfigError(\"PERPLEXITY_MAX_RESULTS_EXCEEDED\", \"Perplexity search supports at most 20 results.\");\n }\n if (maxTotalResults < maxResults) {\n throw new RuntimeConfigError(\"MAX_TOTAL_RESULTS_LT_MAX_RESULTS\", \"maxTotalResults must be >= maxResults.\");\n }\n}\n\nfunction validateWebFetch(policy?: RuntimeServerToolsPolicy): void {\n const fetch = policy?.webFetch;\n if (!fetch || fetch.mode === \"disabled\") return;\n if (fetch.maxUses !== undefined && fetch.maxUses < 1) {\n throw new RuntimeConfigError(\"INVALID_WEB_FETCH_MAX_USES\", \"webFetch.maxUses must be >= 1.\");\n }\n}\n\nfunction validateDomains(domains: string[] | undefined, field: string): void {\n for (const domain of domains ?? []) {\n if (/^https?:\\/\\//i.test(domain) || domain.includes(\"/\") || domain.trim() !== domain || domain === \"\") {\n throw new RuntimeConfigError(\"INVALID_DOMAIN\", `${field} must contain domains, not URLs.`, { domain });\n }\n }\n}\n\nfunction validateFunctionTools(tools: RuntimeFunctionToolDefinition[] | undefined): void {\n const names = new Set<string>();\n for (const tool of tools ?? []) {\n if (names.has(tool.name)) {\n throw new RuntimeConfigError(\"DUPLICATE_FUNCTION_TOOL\", `Function tool ${tool.name} is defined more than once.`);\n }\n names.add(tool.name);\n }\n}\n\nfunction validateAdvisorNames(policy?: RuntimeServerToolsPolicy): void {\n const advisors = Array.isArray(policy?.advisor) ? policy.advisor : policy?.advisor ? [policy.advisor] : [];\n const names = new Set<string>();\n for (const advisor of advisors) {\n if (!advisor.name) continue;\n if (names.has(advisor.name)) {\n throw new RuntimeConfigError(\"DUPLICATE_ADVISOR_NAME\", `Advisor ${advisor.name} is defined more than once.`);\n }\n names.add(advisor.name);\n }\n}\n\nfunction validateToolChoice(request: RuntimeRequest, policy?: RuntimeServerToolsPolicy): void {\n const choice = request.toolChoice;\n if (!choice || typeof choice === \"string\") return;\n if (choice.type === \"function\") {\n if (!request.functionTools?.some((tool) => tool.name === choice.functionName)) {\n throw new RuntimeConfigError(\"TOOL_CHOICE_FUNCTION_NOT_ENABLED\", `Function tool ${choice.functionName} is not enabled.`);\n }\n return;\n }\n const map = {\n web_search: policy?.webSearch,\n web_fetch: policy?.webFetch,\n datetime: policy?.datetime,\n image_generation: policy?.imageGeneration,\n apply_patch: policy?.applyPatch,\n fusion: policy?.fusion,\n advisor: policy?.advisor,\n subagent: policy?.subagent\n };\n const selected = map[choice.serverTool];\n const enabled = Array.isArray(selected)\n ? selected.some((item) => item.mode !== \"disabled\")\n : !!selected && selected.mode !== \"disabled\";\n if (!enabled) {\n throw new RuntimeConfigError(\"TOOL_CHOICE_SERVER_TOOL_NOT_ENABLED\", `Server tool ${choice.serverTool} is not enabled.`);\n }\n}\n","import type { ResolvedApiMode } from \"../types/public\";\n\nexport function endpointFor(baseUrl: string, apiMode: ResolvedApiMode): string {\n const trimmed = baseUrl.replace(/\\/+$/, \"\");\n return apiMode === \"chat\" ? `${trimmed}/chat/completions` : `${trimmed}/responses`;\n}\n","import type { OpenRouterRuntimeOptions } from \"../types/public\";\n\nexport function buildHeaders(options: OpenRouterRuntimeOptions): Record<string, string> {\n return {\n \"content-type\": \"application/json\",\n authorization: `Bearer ${options.apiKey}`,\n ...(options.appAttribution?.siteUrl ? { \"HTTP-Referer\": options.appAttribution.siteUrl } : {}),\n ...(options.appAttribution?.appName ? { \"X-Title\": options.appAttribution.appName } : {}),\n ...(options.defaultHeaders ?? {})\n };\n}\n","import { RuntimeConfigError } from \"../openrouter/errors\";\nimport type { NestedOpenRouterServerToolPolicy } from \"../types/public\";\n\nconst allowedNestedTypes = new Set([\n \"openrouter:web_search\",\n \"openrouter:web_fetch\",\n \"openrouter:datetime\",\n \"openrouter:image_generation\"\n]);\n\nexport function validateNestedTools(tools?: NestedOpenRouterServerToolPolicy[]): void {\n for (const tool of tools ?? []) {\n if (!allowedNestedTypes.has(tool.type)) {\n throw new RuntimeConfigError(\n \"INVALID_NESTED_SERVER_TOOL\",\n `Nested server tool ${tool.type} is not allowed.`\n );\n }\n }\n}\n","import type {\n AdvisorPolicy,\n ApplyPatchPolicy,\n DatetimePolicy,\n FusionPolicy,\n ImageGenerationPolicy,\n RuntimeServerToolsPolicy,\n SubagentPolicy,\n WebFetchPolicy,\n WebSearchPolicy\n} from \"../types/public\";\nimport type { OpenRouterTool } from \"../types/internal\";\nimport { validateNestedTools } from \"./nested-tools\";\n\nfunction cleanParameters(parameters: Record<string, unknown>): Record<string, unknown> {\n return Object.fromEntries(Object.entries(parameters).filter(([, value]) => value !== undefined));\n}\n\nfunction enabled(policy?: { mode: string }): boolean {\n return !!policy && policy.mode !== \"disabled\";\n}\n\nexport function buildOpenRouterServerTools(policy?: RuntimeServerToolsPolicy): OpenRouterTool[] {\n const tools: OpenRouterTool[] = [];\n const webSearch = buildWebSearchTool(policy?.webSearch);\n if (webSearch) tools.push(webSearch);\n const webFetch = buildWebFetchTool(policy?.webFetch);\n if (webFetch) tools.push(webFetch);\n const datetime = buildDatetimeTool(policy?.datetime);\n if (datetime) tools.push(datetime);\n const image = buildImageGenerationTool(policy?.imageGeneration);\n if (image) tools.push(image);\n const patch = buildApplyPatchTool(policy?.applyPatch);\n if (patch) tools.push(patch);\n const fusion = buildFusionTool(policy?.fusion);\n if (fusion) tools.push(fusion);\n tools.push(...buildAdvisorTools(policy?.advisor));\n const subagent = buildSubagentTool(policy?.subagent);\n if (subagent) tools.push(subagent);\n return tools;\n}\n\nexport function buildWebSearchTool(policy?: WebSearchPolicy): OpenRouterTool | undefined {\n if (!enabled(policy)) return undefined;\n return {\n type: \"openrouter:web_search\",\n parameters: cleanParameters({\n engine: policy?.engine ?? \"auto\",\n max_results: policy?.maxResults ?? 5,\n max_total_results: policy?.maxTotalResults ?? 15,\n search_context_size: policy?.searchContextSize ?? \"medium\",\n allowed_domains: policy?.allowedDomains,\n excluded_domains: policy?.excludedDomains,\n user_location: policy?.userLocation\n })\n };\n}\n\nexport function buildWebFetchTool(policy?: WebFetchPolicy): OpenRouterTool | undefined {\n if (!enabled(policy)) return undefined;\n return {\n type: \"openrouter:web_fetch\",\n parameters: cleanParameters({\n engine: policy?.engine ?? \"auto\",\n max_uses: policy?.maxUses ?? 10,\n max_content_tokens: policy?.maxContentTokens ?? 50_000,\n allowed_domains: policy?.allowedDomains,\n blocked_domains: policy?.blockedDomains\n })\n };\n}\n\nexport function buildDatetimeTool(policy?: DatetimePolicy): OpenRouterTool | undefined {\n if (!enabled(policy)) return undefined;\n return {\n type: \"openrouter:datetime\",\n parameters: cleanParameters({ timezone: policy?.timezone ?? \"UTC\" })\n };\n}\n\nexport function buildImageGenerationTool(policy?: ImageGenerationPolicy): OpenRouterTool | undefined {\n if (!enabled(policy)) return undefined;\n return {\n type: \"openrouter:image_generation\",\n parameters: cleanParameters({\n model: policy?.model ?? \"openai/gpt-5-image\",\n quality: policy?.quality,\n size: policy?.size,\n aspect_ratio: policy?.aspectRatio,\n background: policy?.background,\n output_format: policy?.outputFormat,\n output_compression: policy?.outputCompression,\n moderation: policy?.moderation\n })\n };\n}\n\nexport function buildApplyPatchTool(policy?: ApplyPatchPolicy): OpenRouterTool | undefined {\n if (!enabled(policy)) return undefined;\n return { type: \"openrouter:apply_patch\" };\n}\n\nexport function buildFusionTool(policy?: FusionPolicy): OpenRouterTool | undefined {\n if (!enabled(policy)) return undefined;\n return {\n type: \"openrouter:fusion\",\n parameters: cleanParameters({\n analysis_models: policy?.analysisModels,\n model: policy?.judgeModel,\n max_tool_calls: policy?.maxToolCalls ?? 8,\n max_completion_tokens: policy?.maxCompletionTokens,\n reasoning: policy?.reasoning,\n temperature: policy?.temperature\n })\n };\n}\n\nexport function buildAdvisorTools(policy?: AdvisorPolicy | AdvisorPolicy[]): OpenRouterTool[] {\n const advisors = Array.isArray(policy) ? policy : policy ? [policy] : [];\n return advisors.filter(enabled).map((advisor) => {\n validateNestedTools(advisor.tools);\n return {\n type: \"openrouter:advisor\",\n parameters: cleanParameters({\n name: advisor.name,\n model: advisor.model,\n instructions: advisor.instructions,\n tools: advisor.tools,\n forward_transcript: advisor.forwardTranscript ?? false,\n stream: advisor.stream,\n max_tool_calls: advisor.maxToolCalls,\n max_completion_tokens: advisor.maxCompletionTokens,\n reasoning: advisor.reasoning,\n temperature: advisor.temperature\n })\n };\n });\n}\n\nexport function buildSubagentTool(policy?: SubagentPolicy): OpenRouterTool | undefined {\n if (!policy || policy.mode === \"disabled\") return undefined;\n const subagent = policy;\n validateNestedTools(subagent.tools);\n return {\n type: \"openrouter:subagent\",\n parameters: cleanParameters({\n model: subagent.model,\n instructions: subagent.instructions,\n tools: subagent.tools,\n max_tool_calls: subagent.maxToolCalls,\n max_completion_tokens: subagent.maxCompletionTokens,\n reasoning: subagent.reasoning,\n temperature: subagent.temperature\n })\n };\n}\n","import { normalizeModel } from \"../config/normalize-model\";\nimport { validateRuntimeRequest } from \"../config/validate-runtime-request\";\nimport { endpointFor } from \"../openrouter/endpoints\";\nimport { buildHeaders } from \"../openrouter/headers\";\nimport { buildOpenRouterServerTools } from \"../tools/server-tools\";\nimport type { OpenRouterTool } from \"../types/internal\";\nimport type {\n ApiMode,\n CompiledOpenRouterRequest,\n OpenRouterRuntimeOptions,\n ResolvedApiMode,\n RuntimeDefaults,\n RuntimeMessage,\n RuntimeRequest,\n RuntimeServerToolsPolicy,\n RuntimeToolChoice,\n RuntimeWarning\n} from \"../types/public\";\n\nexport function compileRuntimeRequest(\n request: RuntimeRequest,\n defaults: RuntimeDefaults,\n options: OpenRouterRuntimeOptions = { apiKey: \"\" }\n): CompiledOpenRouterRequest {\n const warnings: RuntimeWarning[] = [];\n const requestedModel = request.model ?? options.defaultModel ?? \"\";\n const normalized = normalizeModel(requestedModel);\n warnings.push(...normalized.warnings);\n const serverTools = mergeServerTools(defaults.serverTools, normalized.impliedServerTools, request.serverTools);\n const apiMode = resolveApiMode(request, defaults.apiMode, serverTools);\n validateRuntimeRequest(request, options, apiMode, normalized.model, serverTools);\n\n const tools: OpenRouterTool[] = [\n ...buildOpenRouterServerTools(serverTools),\n ...(request.functionTools ?? []).map((tool) => ({\n type: \"function\",\n function: {\n name: tool.name,\n description: tool.description,\n parameters: tool.parameters\n }\n }))\n ];\n\n const headers = buildHeaders(options);\n const baseBody = buildBaseBody(request, normalized.model, defaults, tools, serverTools);\n const body =\n apiMode === \"chat\"\n ? buildChatBody(request, baseBody)\n : buildResponsesBody(request, baseBody);\n\n return {\n apiMode,\n url: endpointFor(options.baseUrl ?? \"https://openrouter.ai/api/v1\", apiMode),\n headers,\n body,\n warnings\n };\n}\n\nexport function resolveApiMode(\n request: RuntimeRequest,\n defaultMode: ApiMode = \"auto\",\n serverTools?: RuntimeServerToolsPolicy\n): ResolvedApiMode {\n const mode = request.apiMode ?? defaultMode;\n if (mode === \"chat\") return \"chat\";\n if (mode === \"responses\") return \"responses\";\n if (serverTools?.applyPatch?.mode && serverTools.applyPatch.mode !== \"disabled\") return \"responses\";\n if (request.input) return \"responses\";\n return \"chat\";\n}\n\nexport function mergeServerTools(\n ...policies: Array<Partial<RuntimeServerToolsPolicy> | undefined>\n): RuntimeServerToolsPolicy | undefined {\n const merged: RuntimeServerToolsPolicy = {};\n for (const policy of policies) {\n if (!policy) continue;\n Object.assign(merged, policy);\n }\n return Object.keys(merged).length ? merged : undefined;\n}\n\nfunction buildBaseBody(\n request: RuntimeRequest,\n model: string,\n defaults: RuntimeDefaults,\n tools: OpenRouterTool[],\n serverTools?: RuntimeServerToolsPolicy\n): Record<string, unknown> {\n const body: Record<string, unknown> = {\n model,\n temperature: request.temperature ?? defaults.temperature,\n reasoning: request.reasoning,\n tools: tools.length ? tools : undefined,\n tool_choice: compileToolChoice(request.toolChoice, serverTools),\n ...request.rawOpenRouterOverrides\n };\n return clean(body);\n}\n\nfunction buildChatBody(request: RuntimeRequest, baseBody: Record<string, unknown>): Record<string, unknown> {\n const messages = compileMessages(request);\n return clean({\n ...baseBody,\n messages,\n max_tokens: request.maxTokens,\n response_format: request.responseFormat\n });\n}\n\nfunction buildResponsesBody(request: RuntimeRequest, baseBody: Record<string, unknown>): Record<string, unknown> {\n return clean({\n ...baseBody,\n input: request.input ?? compilePromptInput(request),\n instructions: request.instructions ?? request.system,\n max_output_tokens: request.maxTokens,\n text: request.responseFormat\n });\n}\n\nexport function compileMessages(request: RuntimeRequest): RuntimeMessage[] {\n const messages: RuntimeMessage[] = [];\n if (request.system) messages.push({ role: \"system\", content: request.system });\n if (request.messages) messages.push(...request.messages);\n if (request.prompt) messages.push({ role: \"user\", content: request.prompt });\n return messages;\n}\n\nfunction compilePromptInput(request: RuntimeRequest): unknown {\n if (request.prompt) return request.prompt;\n return compileMessages(request).map((message) => ({\n role: message.role,\n content: message.content\n }));\n}\n\nfunction compileToolChoice(choice: RuntimeToolChoice | undefined, serverTools?: RuntimeServerToolsPolicy): unknown {\n if (!choice || choice === \"auto\") return undefined;\n if (choice === \"none\" || choice === \"required\") return choice;\n if (choice.type === \"function\") {\n return { type: \"function\", function: { name: choice.functionName } };\n }\n const toolType = `openrouter:${choice.serverTool}`;\n const matchingPolicy = serverToolPolicyForChoice(choice.serverTool, serverTools);\n return matchingPolicy === 1 ? { type: toolType } : \"required\";\n}\n\nfunction serverToolPolicyForChoice(name: string, policy?: RuntimeServerToolsPolicy): number {\n const value = {\n web_search: policy?.webSearch,\n web_fetch: policy?.webFetch,\n datetime: policy?.datetime,\n image_generation: policy?.imageGeneration,\n apply_patch: policy?.applyPatch,\n fusion: policy?.fusion,\n advisor: policy?.advisor,\n subagent: policy?.subagent\n }[name];\n if (!value) return 0;\n if (Array.isArray(value)) return value.filter((item) => item.mode !== \"disabled\").length;\n return value.mode === \"disabled\" ? 0 : 1;\n}\n\nfunction clean<T extends Record<string, unknown>>(record: T): T {\n return Object.fromEntries(Object.entries(record).filter(([, value]) => value !== undefined)) as T;\n}\n","import type { OpenRouterRuntimeOptions, RuntimeFunctionToolDefinition, RuntimeToolExecutor } from \"../types/public\";\n\nexport function resolveExecutor(\n name: string,\n definitions: RuntimeFunctionToolDefinition[] | undefined,\n options: OpenRouterRuntimeOptions\n): RuntimeToolExecutor | undefined {\n return definitions?.find((tool) => tool.name === name)?.executor ?? options.tools?.[name];\n}\n","import { parseJsonMaybe } from \"../utils/json\";\n\nexport function parseToolArgs(args: unknown): unknown {\n return parseJsonMaybe(args);\n}\n","import { RuntimeConfigError } from \"../openrouter/errors\";\nimport { resolveExecutor } from \"./registry\";\nimport { parseToolArgs } from \"./parse-tool-args\";\nimport type {\n OpenRouterRuntimeOptions,\n RuntimeFunctionToolCall,\n RuntimeFunctionToolDefinition,\n RuntimeFunctionToolResult,\n RuntimeRequest\n} from \"../types/public\";\n\nexport async function executeFunctionTool(\n call: RuntimeFunctionToolCall,\n request: RuntimeRequest,\n definitions: RuntimeFunctionToolDefinition[] | undefined,\n options: OpenRouterRuntimeOptions\n): Promise<RuntimeFunctionToolResult> {\n const executor = resolveExecutor(call.name, definitions, options);\n if (!executor) {\n throw new RuntimeConfigError(\"FUNCTION_TOOL_EXECUTOR_MISSING\", `No executor registered for ${call.name}.`);\n }\n const started = Date.now();\n const args = parseToolArgs(call.args);\n try {\n options.logger?.debug?.(\"runtime.function_tool.started\", { name: call.name, callId: call.callId });\n await options.hooks?.beforeFunctionToolExecution?.({ ...call, args });\n const context = {\n requestId: request.id ?? \"\",\n toolName: call.name,\n callId: call.callId,\n ...(request.metadata ? { metadata: request.metadata } : {})\n };\n const result = await executor(args, context);\n const normalized = {\n name: call.name,\n callId: call.callId,\n status: \"completed\" as const,\n result,\n durationMs: Date.now() - started\n };\n await options.hooks?.afterFunctionToolExecution?.(normalized);\n options.logger?.debug?.(\"runtime.function_tool.completed\", { name: call.name, callId: call.callId });\n return normalized;\n } catch (error) {\n const normalized = {\n name: call.name,\n callId: call.callId,\n status: \"failed\" as const,\n error: error instanceof Error ? error.message : String(error),\n durationMs: Date.now() - started\n };\n await options.hooks?.afterFunctionToolExecution?.(normalized);\n options.logger?.warn?.(\"runtime.function_tool.failed\", normalized);\n return normalized;\n }\n}\n","import { executeFunctionTool } from \"../function-tools/execute-function-tool\";\nimport type {\n OpenRouterRuntimeOptions,\n RuntimeFunctionToolCall,\n RuntimeFunctionToolDefinition,\n RuntimeFunctionToolUsage,\n RuntimeRequest\n} from \"../types/public\";\nimport { isRecord } from \"../utils/json\";\n\nexport function extractChatFunctionCalls(response: unknown): RuntimeFunctionToolCall[] {\n const record = isRecord(response) ? response : {};\n const choice = Array.isArray(record.choices) && isRecord(record.choices[0]) ? record.choices[0] : {};\n const message = isRecord(choice.message) ? choice.message : {};\n const calls = Array.isArray(message.tool_calls) ? message.tool_calls : [];\n return calls.flatMap((call) => {\n if (!isRecord(call) || call.type !== \"function\" || !isRecord(call.function)) return [];\n const name = typeof call.function.name === \"string\" ? call.function.name : undefined;\n if (!name) return [];\n return [\n {\n name,\n callId: typeof call.id === \"string\" ? call.id : name,\n args: call.function.arguments\n }\n ];\n });\n}\n\nexport function extractResponsesFunctionCalls(response: unknown): RuntimeFunctionToolCall[] {\n const record = isRecord(response) ? response : {};\n const output = Array.isArray(record.output) ? record.output : [];\n return output.flatMap((item) => {\n if (!isRecord(item) || item.type !== \"function_call\") return [];\n const name = typeof item.name === \"string\" ? item.name : undefined;\n if (!name) return [];\n return [\n {\n name,\n callId: typeof item.call_id === \"string\" ? item.call_id : typeof item.id === \"string\" ? item.id : name,\n args: item.arguments\n }\n ];\n });\n}\n\nexport async function executeFunctionCalls(params: {\n calls: RuntimeFunctionToolCall[];\n request: RuntimeRequest;\n definitions: RuntimeFunctionToolDefinition[] | undefined;\n options: OpenRouterRuntimeOptions;\n previousUsage: RuntimeFunctionToolUsage[];\n maxFunctionToolCalls: number;\n}): Promise<RuntimeFunctionToolUsage[]> {\n if (params.previousUsage.length + params.calls.length > params.maxFunctionToolCalls) {\n throw new Error(\"maxFunctionToolCalls exceeded.\");\n }\n const results = [];\n for (const call of params.calls) {\n const result = await executeFunctionTool(call, params.request, params.definitions, params.options);\n results.push({\n name: result.name,\n callId: result.callId,\n status: result.status,\n args: call.args,\n ...(result.result !== undefined ? { result: result.result } : {}),\n ...(result.error !== undefined ? { error: result.error } : {}),\n ...(result.durationMs !== undefined ? { durationMs: result.durationMs } : {})\n });\n }\n return results;\n}\n","import { sendOpenRouterRequest } from \"../openrouter/http-client\";\nimport { resultToChatToolMessage } from \"../function-tools/tool-messages\";\nimport { normalizeChatResponse } from \"../normalize/normalize-chat-response\";\nimport { validatePostResponse } from \"../policies/post-response-validation\";\nimport { mergeServerTools } from \"./runtime\";\nimport { executeFunctionCalls, extractChatFunctionCalls } from \"./tool-loop\";\nimport type { RuntimeContext } from \"../types/internal\";\nimport type { CompiledOpenRouterRequest, RuntimeFunctionToolUsage, RuntimeRequest } from \"../types/public\";\n\nexport async function runChat(\n request: RuntimeRequest,\n compiled: CompiledOpenRouterRequest,\n context: RuntimeContext\n) {\n const maxIterations = request.execution?.maxToolIterations ?? 8;\n const maxFunctionToolCalls = request.execution?.maxFunctionToolCalls ?? 20;\n const functionUsage: RuntimeFunctionToolUsage[] = [];\n let activeCompiled = compiled;\n let response: unknown;\n\n for (let iteration = 0; iteration <= maxIterations; iteration++) {\n response = await sendOpenRouterRequest(\n activeCompiled,\n context.options,\n context.defaults,\n request.execution?.timeoutMs ?? context.defaults.timeoutMs\n );\n const calls = extractChatFunctionCalls(response);\n if (!calls.length) break;\n const results = await executeFunctionCalls({\n calls,\n request,\n definitions: request.functionTools,\n options: context.options,\n previousUsage: functionUsage,\n maxFunctionToolCalls\n });\n functionUsage.push(...results);\n const body = activeCompiled.body;\n const messages = Array.isArray(body.messages) ? [...body.messages] : [];\n messages.push(...results.map(resultToChatToolMessage));\n activeCompiled = { ...activeCompiled, body: { ...body, messages } };\n }\n\n const model = typeof compiled.body.model === \"string\" ? compiled.body.model : \"\";\n const normalized = normalizeChatResponse({\n requestBody: activeCompiled.body,\n response,\n apiMode: \"chat\",\n model,\n warnings: compiled.warnings,\n functionToolUsage: functionUsage,\n ...optional(\"serverTools\", mergeServerTools(context.defaults.serverTools, request.serverTools)),\n ...optional(\"metadata\", request.metadata)\n });\n return validatePostResponse(normalized, context.defaults);\n}\n\nfunction optional<T>(key: string, value: T | undefined): Record<string, T> {\n return value === undefined ? {} : { [key]: value };\n}\n","import { extractCitations } from \"./citations\";\nimport { extractImages } from \"./images\";\nimport { extractPatches } from \"./patches\";\nimport { createToolUsage } from \"./tool-usage\";\nimport { normalizeUsage } from \"./usage\";\nimport type {\n RuntimeFunctionToolUsage,\n RuntimeResponse,\n RuntimeServerToolsPolicy,\n RuntimeWarning\n} from \"../types/public\";\nimport { createRuntimeId } from \"../utils/ids\";\nimport { isRecord } from \"../utils/json\";\n\nexport function normalizeResponsesResponse(params: {\n requestBody: unknown;\n response: unknown;\n model: string;\n serverTools?: RuntimeServerToolsPolicy;\n warnings: RuntimeWarning[];\n functionToolUsage?: RuntimeFunctionToolUsage[];\n metadata?: Record<string, unknown>;\n}): RuntimeResponse {\n const record = isRecord(params.response) ? params.response : {};\n return {\n id: typeof record.id === \"string\" ? record.id : createRuntimeId(\"orresp\"),\n status: record.status === \"requires_action\" ? \"requires_action\" : \"completed\",\n apiMode: \"responses\",\n model: typeof record.model === \"string\" ? record.model : params.model,\n text: extractOutputText(record),\n citations: extractCitations(params.response),\n images: extractImages(params.response),\n patches: extractPatches(params.response),\n toolUsage: createToolUsage(params.serverTools, params.response, params.functionToolUsage),\n warnings: params.warnings,\n errors: [],\n raw: {\n request: params.requestBody,\n response: params.response\n },\n ...optional(\"usage\", normalizeUsage(record.usage)),\n ...optional(\"finishReason\", typeof record.status === \"string\" ? record.status : undefined),\n ...optional(\"metadata\", params.metadata)\n };\n}\n\nfunction extractOutputText(record: Record<string, unknown>): string {\n if (typeof record.output_text === \"string\") return record.output_text;\n const output = Array.isArray(record.output) ? record.output : [];\n const chunks: string[] = [];\n for (const item of output) {\n if (!isRecord(item)) continue;\n if (typeof item.text === \"string\") chunks.push(item.text);\n const content = Array.isArray(item.content) ? item.content : [];\n for (const part of content) {\n if (isRecord(part) && typeof part.text === \"string\") chunks.push(part.text);\n }\n }\n return chunks.join(\"\");\n}\n\nfunction optional<T>(key: string, value: T | undefined): Record<string, T> {\n return value === undefined ? {} : { [key]: value };\n}\n","import { resultToResponsesInput } from \"../function-tools/tool-messages\";\nimport { normalizeResponsesResponse } from \"../normalize/normalize-responses-response\";\nimport { sendOpenRouterRequest } from \"../openrouter/http-client\";\nimport { validatePostResponse } from \"../policies/post-response-validation\";\nimport { mergeServerTools } from \"./runtime\";\nimport { executeFunctionCalls, extractResponsesFunctionCalls } from \"./tool-loop\";\nimport type { RuntimeContext } from \"../types/internal\";\nimport type { CompiledOpenRouterRequest, RuntimeFunctionToolUsage, RuntimeRequest } from \"../types/public\";\nimport { isRecord } from \"../utils/json\";\n\nexport async function runResponses(\n request: RuntimeRequest,\n compiled: CompiledOpenRouterRequest,\n context: RuntimeContext\n) {\n const maxIterations = request.execution?.maxToolIterations ?? 8;\n const maxFunctionToolCalls = request.execution?.maxFunctionToolCalls ?? 20;\n const functionUsage: RuntimeFunctionToolUsage[] = [];\n let activeCompiled = compiled;\n let response: unknown;\n\n for (let iteration = 0; iteration <= maxIterations; iteration++) {\n response = await sendOpenRouterRequest(\n activeCompiled,\n context.options,\n context.defaults,\n request.execution?.timeoutMs ?? context.defaults.timeoutMs\n );\n const calls = extractResponsesFunctionCalls(response);\n if (!calls.length) break;\n const results = await executeFunctionCalls({\n calls,\n request,\n definitions: request.functionTools,\n options: context.options,\n previousUsage: functionUsage,\n maxFunctionToolCalls\n });\n functionUsage.push(...results);\n activeCompiled = {\n ...activeCompiled,\n body: {\n ...activeCompiled.body,\n previous_response_id: isRecord(response) && typeof response.id === \"string\" ? response.id : undefined,\n input: results.map(resultToResponsesInput)\n }\n };\n }\n\n const model = typeof compiled.body.model === \"string\" ? compiled.body.model : \"\";\n const normalized = normalizeResponsesResponse({\n requestBody: activeCompiled.body,\n response,\n model,\n warnings: compiled.warnings,\n functionToolUsage: functionUsage,\n ...optional(\"serverTools\", mergeServerTools(context.defaults.serverTools, request.serverTools)),\n ...optional(\"metadata\", request.metadata)\n });\n return validatePostResponse(normalized, context.defaults);\n}\n\nfunction optional<T>(key: string, value: T | undefined): Record<string, T> {\n return value === undefined ? {} : { [key]: value };\n}\n","import { resolveDefaults, resolveRuntimeOptions } from \"../config/defaults\";\nimport { OpenRouterHttpError, RuntimeConfigError } from \"../openrouter/errors\";\nimport { runChat } from \"./run-chat\";\nimport { runResponses } from \"./run-responses\";\nimport { compileRuntimeRequest } from \"./runtime\";\nimport type { OpenRouterRuntime, OpenRouterRuntimeOptions, RuntimeRequest, RuntimeResponse } from \"../types/public\";\nimport type { RuntimeContext } from \"../types/internal\";\nimport { createRuntimeId } from \"../utils/ids\";\n\nexport function createOpenRouterRuntime(options: OpenRouterRuntimeOptions): OpenRouterRuntime {\n const resolvedOptions = resolveRuntimeOptions(options);\n const defaults = resolveDefaults(options);\n const context: RuntimeContext = { options: resolvedOptions, defaults };\n\n return {\n async run(request: RuntimeRequest): Promise<RuntimeResponse> {\n const requestWithId = { ...request, id: request.id ?? createRuntimeId() };\n try {\n resolvedOptions.logger?.info?.(\"runtime.request.started\", { requestId: requestWithId.id });\n await resolvedOptions.hooks?.beforeCompile?.(requestWithId);\n const compiled = compileRuntimeRequest(requestWithId, defaults, resolvedOptions);\n await resolvedOptions.hooks?.afterCompile?.(compiled);\n resolvedOptions.logger?.debug?.(\"runtime.request.compiled\", {\n requestId: requestWithId.id,\n apiMode: compiled.apiMode\n });\n await resolvedOptions.hooks?.beforeOpenRouterRequest?.(compiled);\n const response = compiled.apiMode === \"chat\"\n ? await runChat(requestWithId, compiled, context)\n : await runResponses(requestWithId, compiled, context);\n await resolvedOptions.hooks?.afterOpenRouterResponse?.(response.raw.response);\n resolvedOptions.logger?.info?.(\"runtime.response.normalized\", { requestId: requestWithId.id, status: response.status });\n return response;\n } catch (error) {\n return errorResponse(requestWithId, error);\n }\n }\n };\n\n function errorResponse(request: RuntimeRequest, error: unknown): RuntimeResponse {\n const runtimeError = normalizeError(error);\n if (error instanceof RuntimeConfigError && defaults.onPolicyViolation === \"throw\") throw error;\n return {\n id: request.id ?? createRuntimeId(\"orerr\"),\n status: \"failed\",\n apiMode: request.apiMode === \"responses\" ? \"responses\" : \"chat\",\n model: request.model ?? resolvedOptions.defaultModel ?? \"\",\n text: \"\",\n citations: [],\n images: [],\n patches: [],\n toolUsage: {\n serverTools: {\n webSearch: { requested: false, required: false, used: false },\n webFetch: { requested: false, required: false, used: false },\n datetime: { requested: false, required: false, used: false },\n imageGeneration: { requested: false, required: false, used: false },\n applyPatch: { requested: false, required: false, used: false },\n fusion: { requested: false, required: false, used: false },\n advisor: { requested: false, required: false, used: false },\n subagent: { requested: false, required: false, used: false }\n },\n functionTools: []\n },\n warnings: [],\n errors: [runtimeError],\n raw: {\n request,\n response: error instanceof OpenRouterHttpError ? error.body : undefined\n },\n ...(request.metadata ? { metadata: request.metadata } : {})\n };\n }\n}\n\nfunction normalizeError(error: unknown) {\n if (error instanceof RuntimeConfigError) {\n return {\n code: error.code,\n message: error.message,\n source: \"validation\" as const,\n details: error.details\n };\n }\n if (error instanceof OpenRouterHttpError) {\n return {\n code: error.code,\n message: error.message,\n source: \"openrouter\" as const,\n retryable: error.retryable,\n details: error.body\n };\n }\n return {\n code: \"RUNTIME_ERROR\",\n message: error instanceof Error ? error.message : String(error),\n source: \"runtime\" as const\n };\n}\n"],"mappings":"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","names":["visit","visit","stringValue","visit","optional","optional","enabled","optional","optional","optional"]}
1
+ {"version":3,"sources":["../src/config/defaults.ts","../src/openrouter/errors.ts","../src/utils/delay.ts","../src/openrouter/http-client.ts","../src/utils/json.ts","../src/function-tools/tool-messages.ts","../src/normalize/citations.ts","../src/normalize/images.ts","../src/normalize/patches.ts","../src/normalize/tool-usage.ts","../src/normalize/usage.ts","../src/utils/ids.ts","../src/normalize/normalize-chat-response.ts","../src/policies/post-response-validation.ts","../src/config/normalize-model.ts","../src/config/validate-runtime-request.ts","../src/openrouter/endpoints.ts","../src/openrouter/headers.ts","../src/tools/nested-tools.ts","../src/tools/server-tools.ts","../src/runtime/runtime.ts","../src/function-tools/registry.ts","../src/function-tools/parse-tool-args.ts","../src/function-tools/execute-function-tool.ts","../src/runtime/tool-loop.ts","../src/runtime/run-chat.ts","../src/normalize/normalize-responses-response.ts","../src/runtime/run-responses.ts","../src/runtime/create-runtime.ts"],"sourcesContent":["import type { OpenRouterRuntimeOptions } from \"../types/public\";\nimport type { RequiredRuntimeDefaults, RequiredRuntimeOptions } from \"../types/internal\";\n\nexport function resolveRuntimeOptions(options: OpenRouterRuntimeOptions): RequiredRuntimeOptions {\n return {\n ...options,\n baseUrl: options.baseUrl ?? \"https://openrouter.ai/api/v1\",\n defaultHeaders: options.defaultHeaders ?? {},\n fetch: options.fetch ?? globalThis.fetch\n };\n}\n\nexport function resolveDefaults(options: OpenRouterRuntimeOptions): RequiredRuntimeDefaults {\n const retry = options.defaults?.retry;\n return {\n ...options.defaults,\n apiMode: options.defaults?.apiMode ?? \"auto\",\n timeoutMs: options.defaults?.timeoutMs ?? 120_000,\n retry: {\n enabled: retry?.enabled ?? true,\n maxAttempts: retry?.maxAttempts ?? options.defaults?.maxRetries ?? 3,\n baseDelayMs: retry?.baseDelayMs ?? 500,\n maxDelayMs: retry?.maxDelayMs ?? 5_000\n },\n requireCitationsWhenSearchUsed: options.defaults?.requireCitationsWhenSearchUsed ?? true,\n onPolicyViolation: options.defaults?.onPolicyViolation ?? \"return_error\",\n serverTools: options.defaults?.serverTools ?? {\n datetime: {\n mode: \"allowed\",\n timezone: \"UTC\"\n }\n }\n };\n}\n","export class RuntimeConfigError extends Error {\n constructor(\n public readonly code: string,\n message: string,\n public readonly details?: unknown\n ) {\n super(message);\n this.name = \"RuntimeConfigError\";\n }\n}\n\nexport class OpenRouterHttpError extends Error {\n constructor(\n public readonly status: number,\n public readonly code: string,\n message: string,\n public readonly body?: unknown,\n public readonly retryable = false\n ) {\n super(message);\n this.name = \"OpenRouterHttpError\";\n }\n}\n","export function delay(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nexport function retryDelay(attempt: number, baseDelayMs: number, maxDelayMs: number): number {\n const exponential = Math.min(maxDelayMs, baseDelayMs * 2 ** Math.max(0, attempt - 1));\n const jitter = Math.floor(Math.random() * Math.min(250, exponential));\n return exponential + jitter;\n}\n","import { delay, retryDelay } from \"../utils/delay\";\nimport { OpenRouterHttpError } from \"./errors\";\nimport type { CompiledOpenRouterRequest } from \"../types/public\";\nimport type { RequiredRuntimeDefaults, RequiredRuntimeOptions } from \"../types/internal\";\n\nexport async function sendOpenRouterRequest(\n compiled: CompiledOpenRouterRequest,\n options: RequiredRuntimeOptions,\n defaults: RequiredRuntimeDefaults,\n timeoutMs: number\n): Promise<unknown> {\n const attempts = defaults.retry.enabled ? defaults.retry.maxAttempts : 1;\n let lastError: unknown;\n for (let attempt = 1; attempt <= attempts; attempt++) {\n try {\n return await sendOnce(compiled, options, timeoutMs);\n } catch (error) {\n lastError = error;\n const retryable = error instanceof OpenRouterHttpError ? error.retryable : true;\n if (!retryable || attempt >= attempts) throw error;\n await delay(retryDelay(attempt, defaults.retry.baseDelayMs, defaults.retry.maxDelayMs));\n }\n }\n throw lastError;\n}\n\nasync function sendOnce(\n compiled: CompiledOpenRouterRequest,\n options: RequiredRuntimeOptions,\n timeoutMs: number\n): Promise<unknown> {\n const controller = new AbortController();\n const timeout = setTimeout(() => controller.abort(), timeoutMs);\n try {\n const response = await options.fetch(compiled.url, {\n method: \"POST\",\n headers: compiled.headers,\n body: JSON.stringify(compiled.body),\n signal: controller.signal\n });\n const text = await response.text();\n const body = text ? parseBody(text) : undefined;\n if (!response.ok) {\n throw new OpenRouterHttpError(\n response.status,\n statusToCode(response.status),\n extractMessage(body) ?? `OpenRouter request failed with status ${response.status}.`,\n body,\n isRetryableStatus(response.status)\n );\n }\n return body;\n } catch (error) {\n if (error instanceof OpenRouterHttpError) throw error;\n if (error instanceof Error && error.name === \"AbortError\") {\n throw new OpenRouterHttpError(408, \"OPENROUTER_TIMEOUT\", \"OpenRouter request timed out.\", undefined, true);\n }\n throw error;\n } finally {\n clearTimeout(timeout);\n }\n}\n\nfunction parseBody(text: string): unknown {\n try {\n return JSON.parse(text);\n } catch {\n return text;\n }\n}\n\nfunction extractMessage(body: unknown): string | undefined {\n if (typeof body !== \"object\" || body === null) return undefined;\n const record = body as Record<string, unknown>;\n const error = record.error;\n if (typeof error === \"object\" && error !== null && typeof (error as Record<string, unknown>).message === \"string\") {\n return (error as Record<string, string>).message;\n }\n return typeof record.message === \"string\" ? record.message : undefined;\n}\n\nfunction statusToCode(status: number): string {\n if (status === 401) return \"OPENROUTER_AUTH_FAILED\";\n if (status === 429) return \"OPENROUTER_RATE_LIMITED\";\n return \"OPENROUTER_REQUEST_FAILED\";\n}\n\nfunction isRetryableStatus(status: number): boolean {\n return status === 429 || status === 500 || status === 502 || status === 503 || status === 504;\n}\n","export function parseJsonMaybe(value: unknown): unknown {\n if (typeof value !== \"string\") return value;\n if (value.trim() === \"\") return {};\n try {\n return JSON.parse(value);\n } catch {\n return value;\n }\n}\n\nexport function stringifyToolResult(value: unknown): string {\n if (typeof value === \"string\") return value;\n return JSON.stringify(value);\n}\n\nexport function isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n","import { stringifyToolResult } from \"../utils/json\";\nimport type { RuntimeFunctionToolResult } from \"../types/public\";\n\nexport function resultToChatToolMessage(result: RuntimeFunctionToolResult): Record<string, unknown> {\n return {\n role: \"tool\",\n tool_call_id: result.callId,\n name: result.name,\n content: stringifyToolResult(result.status === \"completed\" ? result.result : { error: result.error })\n };\n}\n\nexport function resultToResponsesInput(result: RuntimeFunctionToolResult): Record<string, unknown> {\n return {\n type: \"function_call_output\",\n call_id: result.callId,\n output: stringifyToolResult(result.status === \"completed\" ? result.result : { error: result.error })\n };\n}\n","import type { RuntimeCitation } from \"../types/public\";\nimport { isRecord } from \"../utils/json\";\n\nexport function extractCitations(value: unknown): RuntimeCitation[] {\n const citations: RuntimeCitation[] = [];\n if (typeof value === \"string\") {\n return extractCitationsFromText(value);\n }\n visit(value, (item) => {\n const url = pickString(item, [\"url\", \"uri\"]);\n if (!url) return;\n citations.push({\n type: \"url\",\n url,\n sourceProvider: \"openrouter\",\n raw: item,\n ...optional(\"title\", pickString(item, [\"title\", \"name\"])),\n ...optional(\"excerpt\", pickString(item, [\"excerpt\", \"content\", \"text\"])),\n ...optional(\"startIndex\", pickNumber(item, [\"start_index\", \"startIndex\"])),\n ...optional(\"endIndex\", pickNumber(item, [\"end_index\", \"endIndex\"]))\n });\n });\n return dedupeCitations(citations);\n}\n\nexport function extractCitationsFromText(text: string): RuntimeCitation[] {\n const citations: RuntimeCitation[] = [];\n const markdownLinkPattern = /\\[([^\\]]+)\\]\\((https?:\\/\\/[^)\\s]+)\\)/g;\n for (const match of text.matchAll(markdownLinkPattern)) {\n const title = match[1];\n const url = cleanUrl(match[2]);\n const startIndex = match.index;\n citations.push({\n type: \"url\",\n url,\n sourceProvider: \"openrouter\",\n raw: match[0],\n ...(title ? { title } : {}),\n ...(startIndex !== undefined ? { startIndex, endIndex: startIndex + match[0].length } : {})\n });\n }\n\n const urlPattern = /https?:\\/\\/[^\\s)]+/g;\n for (const match of text.matchAll(urlPattern)) {\n const url = cleanUrl(match[0]);\n const startIndex = match.index;\n citations.push({\n type: \"url\",\n url,\n sourceProvider: \"openrouter\",\n raw: match[0],\n ...(startIndex !== undefined ? { startIndex, endIndex: startIndex + match[0].length } : {})\n });\n }\n\n return dedupeCitations(citations);\n}\n\nfunction optional<T>(key: string, value: T | undefined): Record<string, T> {\n return value === undefined ? {} : { [key]: value };\n}\n\nfunction visit(value: unknown, onCitation: (record: Record<string, unknown>) => void): void {\n if (Array.isArray(value)) {\n for (const item of value) visit(item, onCitation);\n return;\n }\n if (!isRecord(value)) return;\n if (value.type === \"url_citation\" || value.type === \"citation\" || value.url || value.uri) onCitation(value);\n for (const key of [\"annotations\", \"citations\"]) visit(value[key], onCitation);\n}\n\nfunction pickString(record: Record<string, unknown>, keys: string[]): string | undefined {\n for (const key of keys) if (typeof record[key] === \"string\") return record[key];\n return undefined;\n}\n\nfunction pickNumber(record: Record<string, unknown>, keys: string[]): number | undefined {\n for (const key of keys) if (typeof record[key] === \"number\") return record[key];\n return undefined;\n}\n\nexport function dedupeCitations(citations: RuntimeCitation[]): RuntimeCitation[] {\n const seen = new Set<string>();\n return citations.filter((citation) => {\n const key = citation.url;\n if (seen.has(key)) return false;\n seen.add(key);\n return true;\n });\n}\n\nfunction cleanUrl(url: string | undefined): string {\n return (url ?? \"\").replace(/[.,;:!?]+$/, \"\");\n}\n","import type { RuntimeGeneratedImage } from \"../types/public\";\nimport { isRecord } from \"../utils/json\";\n\nexport function extractImages(value: unknown): RuntimeGeneratedImage[] {\n const images: RuntimeGeneratedImage[] = [];\n visit(value, (record) => {\n const imageUrl = stringValue(record.image_url) ?? stringValue(record.url);\n if (imageUrl) images.push({ imageUrl, status: \"ok\", raw: record });\n });\n return images;\n}\n\nfunction visit(value: unknown, onImage: (record: Record<string, unknown>) => void): void {\n if (Array.isArray(value)) {\n for (const item of value) visit(item, onImage);\n return;\n }\n if (!isRecord(value)) return;\n if (value.type === \"image\" || value.type === \"image_generation_call\" || value.image_url || value.url) {\n if (value.image_url || value.type === \"image_generation_call\") onImage(value);\n }\n for (const nested of Object.values(value)) visit(nested, onImage);\n}\n\nfunction stringValue(value: unknown): string | undefined {\n if (typeof value === \"string\") return value;\n if (isRecord(value) && typeof value.url === \"string\") return value.url;\n return undefined;\n}\n","import type { RuntimePatchProposal } from \"../types/public\";\nimport { isRecord } from \"../utils/json\";\n\nexport function extractPatches(value: unknown): RuntimePatchProposal[] {\n const patches: RuntimePatchProposal[] = [];\n visit(value, (record) => {\n const operation = normalizeOperation(record);\n if (!operation) return;\n patches.push({\n callId: stringValue(record.call_id) ?? stringValue(record.id) ?? \"patch_call\",\n status: record.status === \"failed\" ? \"failed\" : \"completed\",\n operation,\n raw: record\n });\n });\n return patches;\n}\n\nfunction visit(value: unknown, onPatch: (record: Record<string, unknown>) => void): void {\n if (Array.isArray(value)) {\n for (const item of value) visit(item, onPatch);\n return;\n }\n if (!isRecord(value)) return;\n if (value.type === \"apply_patch_call\" || value.type === \"patch\" || value.operation) onPatch(value);\n for (const nested of Object.values(value)) visit(nested, onPatch);\n}\n\nfunction normalizeOperation(record: Record<string, unknown>): RuntimePatchProposal[\"operation\"] | undefined {\n const operation = isRecord(record.operation) ? record.operation : record;\n const type = stringValue(operation.type) ?? stringValue(operation.operation);\n const path = stringValue(operation.path) ?? stringValue(operation.file);\n if (!type || !path) return undefined;\n if (type === \"delete_file\") return { type, path };\n if (type === \"create_file\" || type === \"update_file\") {\n return { type, path, diff: stringValue(operation.diff) ?? stringValue(operation.patch) ?? \"\" };\n }\n return undefined;\n}\n\nfunction stringValue(value: unknown): string | undefined {\n return typeof value === \"string\" ? value : undefined;\n}\n","import type {\n RuntimeFunctionToolUsage,\n RuntimeServerToolsPolicy,\n RuntimeToolUsage,\n ServerToolKey\n} from \"../types/public\";\n\nconst serverToolKeys: ServerToolKey[] = [\n \"webSearch\",\n \"webFetch\",\n \"datetime\",\n \"imageGeneration\",\n \"applyPatch\",\n \"fusion\",\n \"advisor\",\n \"subagent\"\n];\n\nconst rawTypeToKey: Record<string, ServerToolKey> = {\n \"openrouter:web_search\": \"webSearch\",\n web_search: \"webSearch\",\n webSearch: \"webSearch\",\n \"openrouter:web_fetch\": \"webFetch\",\n web_fetch: \"webFetch\",\n webFetch: \"webFetch\",\n \"openrouter:datetime\": \"datetime\",\n datetime: \"datetime\",\n \"openrouter:image_generation\": \"imageGeneration\",\n image_generation: \"imageGeneration\",\n imageGeneration: \"imageGeneration\",\n \"openrouter:apply_patch\": \"applyPatch\",\n apply_patch: \"applyPatch\",\n applyPatch: \"applyPatch\",\n \"openrouter:fusion\": \"fusion\",\n fusion: \"fusion\",\n \"openrouter:advisor\": \"advisor\",\n advisor: \"advisor\",\n \"openrouter:subagent\": \"subagent\",\n subagent: \"subagent\"\n};\n\nexport function createToolUsage(\n policy: RuntimeServerToolsPolicy | undefined,\n raw: unknown,\n functionTools: RuntimeFunctionToolUsage[] = []\n): RuntimeToolUsage {\n const counts = detectServerToolCounts(raw);\n const serverTools = Object.fromEntries(\n serverToolKeys.map((key) => {\n const item = policyValue(policy, key);\n const requested = Array.isArray(item) ? item.some((x) => x.mode !== \"disabled\") : !!item && item.mode !== \"disabled\";\n const required = Array.isArray(item) ? item.some((x) => x.mode === \"required\") : !!item && item.mode === \"required\";\n return [\n key,\n {\n requested,\n required,\n used: (counts[key] ?? 0) > 0,\n callCount: counts[key] ?? 0\n }\n ];\n })\n ) as RuntimeToolUsage[\"serverTools\"];\n return { serverTools, functionTools };\n}\n\nfunction policyValue(policy: RuntimeServerToolsPolicy | undefined, key: ServerToolKey) {\n return policy?.[key];\n}\n\nfunction detectServerToolCounts(raw: unknown): Partial<Record<ServerToolKey, number>> {\n const counts: Partial<Record<ServerToolKey, number>> = {};\n visit(raw, (type) => {\n const key = rawTypeToKey[type];\n if (key) counts[key] = (counts[key] ?? 0) + 1;\n });\n return counts;\n}\n\nfunction visit(value: unknown, onType: (type: string) => void): void {\n if (Array.isArray(value)) {\n for (const item of value) visit(item, onType);\n return;\n }\n if (typeof value !== \"object\" || value === null) return;\n const record = value as Record<string, unknown>;\n if (typeof record.type === \"string\") onType(record.type);\n if (typeof record.name === \"string\") onType(record.name);\n for (const nested of Object.values(record)) visit(nested, onType);\n}\n","import type { RuntimeUsage } from \"../types/public\";\nimport { isRecord } from \"../utils/json\";\n\nexport function normalizeUsage(usage: unknown): RuntimeUsage | undefined {\n if (!isRecord(usage)) return undefined;\n const details = isRecord(usage.completion_tokens_details) ? usage.completion_tokens_details : undefined;\n return {\n raw: usage,\n ...optional(\"inputTokens\", numberValue(usage.prompt_tokens) ?? numberValue(usage.input_tokens)),\n ...optional(\"outputTokens\", numberValue(usage.completion_tokens) ?? numberValue(usage.output_tokens)),\n ...optional(\"totalTokens\", numberValue(usage.total_tokens)),\n ...optional(\"reasoningTokens\", numberValue(details?.reasoning_tokens) ?? numberValue(usage.reasoning_tokens)),\n ...optional(\"costUsd\", numberValue(usage.cost))\n };\n}\n\nfunction numberValue(value: unknown): number | undefined {\n return typeof value === \"number\" ? value : undefined;\n}\n\nfunction optional<T>(key: string, value: T | undefined): Record<string, T> {\n return value === undefined ? {} : { [key]: value };\n}\n","export function createRuntimeId(prefix = \"orun\"): string {\n const cryptoObject = globalThis.crypto;\n if (cryptoObject?.randomUUID) return `${prefix}_${cryptoObject.randomUUID()}`;\n return `${prefix}_${Date.now()}_${Math.random().toString(36).slice(2)}`;\n}\n","import { dedupeCitations, extractCitations } from \"./citations\";\nimport { extractImages } from \"./images\";\nimport { extractPatches } from \"./patches\";\nimport { createToolUsage } from \"./tool-usage\";\nimport { normalizeUsage } from \"./usage\";\nimport type {\n ResolvedApiMode,\n RuntimeFunctionToolUsage,\n RuntimeResponse,\n RuntimeServerToolsPolicy,\n RuntimeWarning\n} from \"../types/public\";\nimport { createRuntimeId } from \"../utils/ids\";\nimport { isRecord } from \"../utils/json\";\n\nexport function normalizeChatResponse(params: {\n requestBody: unknown;\n response: unknown;\n apiMode: ResolvedApiMode;\n model: string;\n serverTools?: RuntimeServerToolsPolicy;\n warnings: RuntimeWarning[];\n functionToolUsage?: RuntimeFunctionToolUsage[];\n metadata?: Record<string, unknown>;\n}): RuntimeResponse {\n const responseRecord = isRecord(params.response) ? params.response : {};\n const choice = Array.isArray(responseRecord.choices) && isRecord(responseRecord.choices[0]) ? responseRecord.choices[0] : {};\n const message = isRecord(choice.message) ? choice.message : {};\n const text = normalizeContentToText(message.content);\n return {\n id: typeof responseRecord.id === \"string\" ? responseRecord.id : createRuntimeId(\"orresp\"),\n status: \"completed\",\n apiMode: params.apiMode,\n model: typeof responseRecord.model === \"string\" ? responseRecord.model : params.model,\n text,\n citations: dedupeCitations([\n ...extractCitations([message.annotations, responseRecord.citations, params.response]),\n ...extractCitations(text)\n ]),\n images: extractImages(params.response),\n patches: extractPatches(params.response),\n toolUsage: createToolUsage(params.serverTools, params.response, params.functionToolUsage),\n warnings: params.warnings,\n errors: [],\n raw: {\n request: params.requestBody,\n response: params.response\n },\n ...optional(\"usage\", normalizeUsage(responseRecord.usage)),\n ...optional(\"finishReason\", typeof choice.finish_reason === \"string\" ? choice.finish_reason : undefined),\n ...optional(\"metadata\", params.metadata)\n };\n}\n\nexport function normalizeContentToText(content: unknown): string {\n if (typeof content === \"string\") return content;\n if (!Array.isArray(content)) return \"\";\n return content\n .map((part) => {\n if (typeof part === \"string\") return part;\n if (isRecord(part) && typeof part.text === \"string\") return part.text;\n if (isRecord(part) && typeof part.content === \"string\") return part.content;\n return \"\";\n })\n .filter(Boolean)\n .join(\"\");\n}\n\nfunction optional<T>(key: string, value: T | undefined): Record<string, T> {\n return value === undefined ? {} : { [key]: value };\n}\n","import type { RuntimeDefaults, RuntimeResponse, RuntimeServerToolsPolicy } from \"../types/public\";\n\nexport async function validatePostResponse(\n response: RuntimeResponse,\n defaults: RuntimeDefaults,\n serverTools?: RuntimeServerToolsPolicy\n): Promise<RuntimeResponse> {\n const errors = [...response.errors];\n const warnings = [...response.warnings];\n const webSearchUsage = response.toolUsage.serverTools.webSearch;\n if (\n webSearchUsage.requested &&\n response.citations.length > 0 &&\n !webSearchUsage.used\n ) {\n webSearchUsage.used = true;\n webSearchUsage.callCount = Math.max(webSearchUsage.callCount ?? 0, 1);\n }\n for (const [key, usage] of Object.entries(response.toolUsage.serverTools)) {\n if (usage.required && !usage.used) {\n const code = `${toScreamingSnake(key)}_REQUIRED_BUT_NOT_USED`;\n usage.policyViolation = code;\n const violation = { code, message: `${key} was required but no usage evidence was found.` };\n if (defaults.onPolicyViolation === \"throw\") {\n errors.push({ ...violation, source: \"policy\" });\n } else {\n warnings.push(violation);\n }\n }\n }\n const citationsRequired = serverTools?.webSearch?.requireCitations ?? defaults.requireCitationsWhenSearchUsed;\n if (citationsRequired && webSearchUsage.used && response.citations.length === 0) {\n const violation = {\n code: \"CITATIONS_REQUIRED_BUT_MISSING\",\n message: \"Web search was used but no citations were extracted.\"\n };\n webSearchUsage.policyViolation = webSearchUsage.policyViolation ?? violation.code;\n if (defaults.onPolicyViolation === \"throw\") {\n errors.push({ ...violation, source: \"policy\" });\n } else {\n warnings.push(violation);\n }\n }\n return {\n ...response,\n status: errors.some((error) => error.source === \"policy\") ? \"policy_violation\" : response.status,\n errors,\n warnings\n };\n}\n\nfunction toScreamingSnake(value: string): string {\n return value.replace(/[A-Z]/g, (match) => `_${match}`).toUpperCase();\n}\n","import type { RuntimeServerToolsPolicy, RuntimeWarning } from \"../types/public\";\n\nexport interface ModelNormalizationResult {\n model: string;\n warnings: RuntimeWarning[];\n impliedServerTools?: Partial<RuntimeServerToolsPolicy>;\n}\n\nexport function normalizeModel(model: string): ModelNormalizationResult {\n if (!model.endsWith(\":online\")) {\n return { model, warnings: [] };\n }\n\n return {\n model: model.slice(0, -\":online\".length),\n warnings: [\n {\n code: \"OPENROUTER_ONLINE_VARIANT_DEPRECATED\",\n message: \"The :online model suffix is deprecated. Use serverTools.webSearch instead.\"\n }\n ],\n impliedServerTools: {\n webSearch: { mode: \"allowed\" }\n }\n };\n}\n","import { RuntimeConfigError } from \"../openrouter/errors\";\nimport type {\n OpenRouterRuntimeOptions,\n ResolvedApiMode,\n RuntimeFunctionToolDefinition,\n RuntimeRequest,\n RuntimeServerToolsPolicy\n} from \"../types/public\";\n\nexport function validateRuntimeRequest(\n request: RuntimeRequest,\n options: OpenRouterRuntimeOptions,\n apiMode: ResolvedApiMode,\n model: string,\n serverTools: RuntimeServerToolsPolicy | undefined\n): void {\n if (!options.apiKey) throw new RuntimeConfigError(\"OPENROUTER_API_KEY_MISSING\", \"OpenRouter API key is required.\");\n if (!model) throw new RuntimeConfigError(\"MODEL_MISSING\", \"Runtime request must include a model.\");\n if (!request.messages?.length && !request.input && !request.prompt) {\n throw new RuntimeConfigError(\"INPUT_MISSING\", \"Runtime request must include messages, input, or prompt.\");\n }\n if (serverTools?.applyPatch?.mode && serverTools.applyPatch.mode !== \"disabled\" && apiMode !== \"responses\") {\n throw new RuntimeConfigError(\"APPLY_PATCH_REQUIRES_RESPONSES_API\", \"apply_patch requires the Responses API.\");\n }\n if (serverTools?.applyPatch?.behavior === \"apply_with_callback\" && !options.patchApplier) {\n throw new RuntimeConfigError(\"PATCH_APPLIER_REQUIRED\", \"apply_with_callback requires options.patchApplier.\");\n }\n validateWebSearch(serverTools);\n validateWebFetch(serverTools);\n validateDomains(serverTools?.webSearch?.allowedDomains, \"allowedDomains\");\n validateDomains(serverTools?.webSearch?.excludedDomains, \"excludedDomains\");\n validateDomains(serverTools?.webFetch?.allowedDomains, \"allowedDomains\");\n validateDomains(serverTools?.webFetch?.blockedDomains, \"blockedDomains\");\n validateFunctionTools(request.functionTools);\n validateAdvisorNames(serverTools);\n validateToolChoice(request, serverTools);\n}\n\nfunction validateWebSearch(policy?: RuntimeServerToolsPolicy): void {\n const search = policy?.webSearch;\n if (!search || search.mode === \"disabled\") return;\n const maxResults = search.maxResults ?? 5;\n const maxTotalResults = search.maxTotalResults ?? 15;\n if (maxResults < 1 || maxResults > 25) {\n throw new RuntimeConfigError(\"INVALID_WEB_SEARCH_MAX_RESULTS\", \"webSearch.maxResults must be between 1 and 25.\");\n }\n if (search.engine === \"perplexity\" && maxResults > 20) {\n throw new RuntimeConfigError(\"PERPLEXITY_MAX_RESULTS_EXCEEDED\", \"Perplexity search supports at most 20 results.\");\n }\n if (maxTotalResults < maxResults) {\n throw new RuntimeConfigError(\"MAX_TOTAL_RESULTS_LT_MAX_RESULTS\", \"maxTotalResults must be >= maxResults.\");\n }\n}\n\nfunction validateWebFetch(policy?: RuntimeServerToolsPolicy): void {\n const fetch = policy?.webFetch;\n if (!fetch || fetch.mode === \"disabled\") return;\n if (fetch.maxUses !== undefined && fetch.maxUses < 1) {\n throw new RuntimeConfigError(\"INVALID_WEB_FETCH_MAX_USES\", \"webFetch.maxUses must be >= 1.\");\n }\n}\n\nfunction validateDomains(domains: string[] | undefined, field: string): void {\n for (const domain of domains ?? []) {\n if (/^https?:\\/\\//i.test(domain) || domain.includes(\"/\") || domain.trim() !== domain || domain === \"\") {\n throw new RuntimeConfigError(\"INVALID_DOMAIN\", `${field} must contain domains, not URLs.`, { domain });\n }\n }\n}\n\nfunction validateFunctionTools(tools: RuntimeFunctionToolDefinition[] | undefined): void {\n const names = new Set<string>();\n for (const tool of tools ?? []) {\n if (names.has(tool.name)) {\n throw new RuntimeConfigError(\"DUPLICATE_FUNCTION_TOOL\", `Function tool ${tool.name} is defined more than once.`);\n }\n names.add(tool.name);\n }\n}\n\nfunction validateAdvisorNames(policy?: RuntimeServerToolsPolicy): void {\n const advisors = Array.isArray(policy?.advisor) ? policy.advisor : policy?.advisor ? [policy.advisor] : [];\n const names = new Set<string>();\n for (const advisor of advisors) {\n if (!advisor.name) continue;\n if (names.has(advisor.name)) {\n throw new RuntimeConfigError(\"DUPLICATE_ADVISOR_NAME\", `Advisor ${advisor.name} is defined more than once.`);\n }\n names.add(advisor.name);\n }\n}\n\nfunction validateToolChoice(request: RuntimeRequest, policy?: RuntimeServerToolsPolicy): void {\n const choice = request.toolChoice;\n if (!choice || typeof choice === \"string\") return;\n if (choice.type === \"function\") {\n if (!request.functionTools?.some((tool) => tool.name === choice.functionName)) {\n throw new RuntimeConfigError(\"TOOL_CHOICE_FUNCTION_NOT_ENABLED\", `Function tool ${choice.functionName} is not enabled.`);\n }\n return;\n }\n const map = {\n web_search: policy?.webSearch,\n web_fetch: policy?.webFetch,\n datetime: policy?.datetime,\n image_generation: policy?.imageGeneration,\n apply_patch: policy?.applyPatch,\n fusion: policy?.fusion,\n advisor: policy?.advisor,\n subagent: policy?.subagent\n };\n const selected = map[choice.serverTool];\n const enabled = Array.isArray(selected)\n ? selected.some((item) => item.mode !== \"disabled\")\n : !!selected && selected.mode !== \"disabled\";\n if (!enabled) {\n throw new RuntimeConfigError(\"TOOL_CHOICE_SERVER_TOOL_NOT_ENABLED\", `Server tool ${choice.serverTool} is not enabled.`);\n }\n}\n","import type { ResolvedApiMode } from \"../types/public\";\n\nexport function endpointFor(baseUrl: string, apiMode: ResolvedApiMode): string {\n const trimmed = baseUrl.replace(/\\/+$/, \"\");\n return apiMode === \"chat\" ? `${trimmed}/chat/completions` : `${trimmed}/responses`;\n}\n","import type { OpenRouterRuntimeOptions } from \"../types/public\";\n\nexport function buildHeaders(options: OpenRouterRuntimeOptions): Record<string, string> {\n return {\n \"content-type\": \"application/json\",\n authorization: `Bearer ${options.apiKey}`,\n ...(options.appAttribution?.siteUrl ? { \"HTTP-Referer\": options.appAttribution.siteUrl } : {}),\n ...(options.appAttribution?.appName ? { \"X-Title\": options.appAttribution.appName } : {}),\n ...(options.defaultHeaders ?? {})\n };\n}\n","import { RuntimeConfigError } from \"../openrouter/errors\";\nimport type { NestedOpenRouterServerToolPolicy } from \"../types/public\";\n\nconst allowedNestedTypes = new Set([\n \"openrouter:web_search\",\n \"openrouter:web_fetch\",\n \"openrouter:datetime\",\n \"openrouter:image_generation\"\n]);\n\nexport function validateNestedTools(tools?: NestedOpenRouterServerToolPolicy[]): void {\n for (const tool of tools ?? []) {\n if (!allowedNestedTypes.has(tool.type)) {\n throw new RuntimeConfigError(\n \"INVALID_NESTED_SERVER_TOOL\",\n `Nested server tool ${tool.type} is not allowed.`\n );\n }\n }\n}\n","import type {\n AdvisorPolicy,\n ApplyPatchPolicy,\n DatetimePolicy,\n FusionPolicy,\n ImageGenerationPolicy,\n RuntimeServerToolsPolicy,\n SubagentPolicy,\n WebFetchPolicy,\n WebSearchPolicy\n} from \"../types/public\";\nimport type { OpenRouterTool } from \"../types/internal\";\nimport { validateNestedTools } from \"./nested-tools\";\n\nfunction cleanParameters(parameters: Record<string, unknown>): Record<string, unknown> {\n return Object.fromEntries(Object.entries(parameters).filter(([, value]) => value !== undefined));\n}\n\nfunction enabled(policy?: { mode: string }): boolean {\n return !!policy && policy.mode !== \"disabled\";\n}\n\nexport function buildOpenRouterServerTools(policy?: RuntimeServerToolsPolicy): OpenRouterTool[] {\n const tools: OpenRouterTool[] = [];\n const webSearch = buildWebSearchTool(policy?.webSearch);\n if (webSearch) tools.push(webSearch);\n const webFetch = buildWebFetchTool(policy?.webFetch);\n if (webFetch) tools.push(webFetch);\n const datetime = buildDatetimeTool(policy?.datetime);\n if (datetime) tools.push(datetime);\n const image = buildImageGenerationTool(policy?.imageGeneration);\n if (image) tools.push(image);\n const patch = buildApplyPatchTool(policy?.applyPatch);\n if (patch) tools.push(patch);\n const fusion = buildFusionTool(policy?.fusion);\n if (fusion) tools.push(fusion);\n tools.push(...buildAdvisorTools(policy?.advisor));\n const subagent = buildSubagentTool(policy?.subagent);\n if (subagent) tools.push(subagent);\n return tools;\n}\n\nexport function buildWebSearchTool(policy?: WebSearchPolicy): OpenRouterTool | undefined {\n if (!enabled(policy)) return undefined;\n return {\n type: \"openrouter:web_search\",\n parameters: cleanParameters({\n engine: policy?.engine ?? \"auto\",\n max_results: policy?.maxResults ?? 5,\n max_total_results: policy?.maxTotalResults ?? 15,\n search_context_size: policy?.searchContextSize ?? \"medium\",\n allowed_domains: policy?.allowedDomains,\n excluded_domains: policy?.excludedDomains,\n user_location: policy?.userLocation\n })\n };\n}\n\nexport function buildWebFetchTool(policy?: WebFetchPolicy): OpenRouterTool | undefined {\n if (!enabled(policy)) return undefined;\n return {\n type: \"openrouter:web_fetch\",\n parameters: cleanParameters({\n engine: policy?.engine ?? \"auto\",\n max_uses: policy?.maxUses ?? 10,\n max_content_tokens: policy?.maxContentTokens ?? 50_000,\n allowed_domains: policy?.allowedDomains,\n blocked_domains: policy?.blockedDomains\n })\n };\n}\n\nexport function buildDatetimeTool(policy?: DatetimePolicy): OpenRouterTool | undefined {\n if (!enabled(policy)) return undefined;\n return {\n type: \"openrouter:datetime\",\n parameters: cleanParameters({ timezone: policy?.timezone ?? \"UTC\" })\n };\n}\n\nexport function buildImageGenerationTool(policy?: ImageGenerationPolicy): OpenRouterTool | undefined {\n if (!enabled(policy)) return undefined;\n return {\n type: \"openrouter:image_generation\",\n parameters: cleanParameters({\n model: policy?.model ?? \"openai/gpt-5-image\",\n quality: policy?.quality,\n size: policy?.size,\n aspect_ratio: policy?.aspectRatio,\n background: policy?.background,\n output_format: policy?.outputFormat,\n output_compression: policy?.outputCompression,\n moderation: policy?.moderation\n })\n };\n}\n\nexport function buildApplyPatchTool(policy?: ApplyPatchPolicy): OpenRouterTool | undefined {\n if (!enabled(policy)) return undefined;\n return { type: \"openrouter:apply_patch\" };\n}\n\nexport function buildFusionTool(policy?: FusionPolicy): OpenRouterTool | undefined {\n if (!enabled(policy)) return undefined;\n return {\n type: \"openrouter:fusion\",\n parameters: cleanParameters({\n analysis_models: policy?.analysisModels,\n model: policy?.judgeModel,\n max_tool_calls: policy?.maxToolCalls ?? 8,\n max_completion_tokens: policy?.maxCompletionTokens,\n reasoning: policy?.reasoning,\n temperature: policy?.temperature\n })\n };\n}\n\nexport function buildAdvisorTools(policy?: AdvisorPolicy | AdvisorPolicy[]): OpenRouterTool[] {\n const advisors = Array.isArray(policy) ? policy : policy ? [policy] : [];\n return advisors.filter(enabled).map((advisor) => {\n validateNestedTools(advisor.tools);\n return {\n type: \"openrouter:advisor\",\n parameters: cleanParameters({\n name: advisor.name,\n model: advisor.model,\n instructions: advisor.instructions,\n tools: advisor.tools,\n forward_transcript: advisor.forwardTranscript ?? false,\n stream: advisor.stream,\n max_tool_calls: advisor.maxToolCalls,\n max_completion_tokens: advisor.maxCompletionTokens,\n reasoning: advisor.reasoning,\n temperature: advisor.temperature\n })\n };\n });\n}\n\nexport function buildSubagentTool(policy?: SubagentPolicy): OpenRouterTool | undefined {\n if (!policy || policy.mode === \"disabled\") return undefined;\n const subagent = policy;\n validateNestedTools(subagent.tools);\n return {\n type: \"openrouter:subagent\",\n parameters: cleanParameters({\n model: subagent.model,\n instructions: subagent.instructions,\n tools: subagent.tools,\n max_tool_calls: subagent.maxToolCalls,\n max_completion_tokens: subagent.maxCompletionTokens,\n reasoning: subagent.reasoning,\n temperature: subagent.temperature\n })\n };\n}\n","import { normalizeModel } from \"../config/normalize-model\";\nimport { validateRuntimeRequest } from \"../config/validate-runtime-request\";\nimport { endpointFor } from \"../openrouter/endpoints\";\nimport { buildHeaders } from \"../openrouter/headers\";\nimport { buildOpenRouterServerTools } from \"../tools/server-tools\";\nimport type { OpenRouterTool } from \"../types/internal\";\nimport type {\n ApiMode,\n CompiledOpenRouterRequest,\n OpenRouterRuntimeOptions,\n ResolvedApiMode,\n RuntimeDefaults,\n RuntimeMessage,\n RuntimeRequest,\n RuntimeServerToolsPolicy,\n RuntimeToolChoice,\n RuntimeWarning\n} from \"../types/public\";\n\nexport function compileRuntimeRequest(\n request: RuntimeRequest,\n defaults: RuntimeDefaults,\n options: OpenRouterRuntimeOptions = { apiKey: \"\" }\n): CompiledOpenRouterRequest {\n const warnings: RuntimeWarning[] = [];\n const requestedModel = request.model ?? options.defaultModel ?? \"\";\n const normalized = normalizeModel(requestedModel);\n warnings.push(...normalized.warnings);\n const serverTools = mergeServerTools(defaults.serverTools, normalized.impliedServerTools, request.serverTools);\n const apiMode = resolveApiMode(request, defaults.apiMode, serverTools);\n validateRuntimeRequest(request, options, apiMode, normalized.model, serverTools);\n\n const tools: OpenRouterTool[] = [\n ...buildOpenRouterServerTools(serverTools),\n ...(request.functionTools ?? []).map((tool) => ({\n type: \"function\",\n function: {\n name: tool.name,\n description: tool.description,\n parameters: tool.parameters\n }\n }))\n ];\n\n const headers = buildHeaders(options);\n const baseBody = buildBaseBody(request, normalized.model, defaults, tools, serverTools);\n const body =\n apiMode === \"chat\"\n ? buildChatBody(request, baseBody)\n : buildResponsesBody(request, baseBody);\n\n return {\n apiMode,\n url: endpointFor(options.baseUrl ?? \"https://openrouter.ai/api/v1\", apiMode),\n headers,\n body,\n warnings\n };\n}\n\nexport function resolveApiMode(\n request: RuntimeRequest,\n defaultMode: ApiMode = \"auto\",\n serverTools?: RuntimeServerToolsPolicy\n): ResolvedApiMode {\n const mode = request.apiMode ?? defaultMode;\n if (mode === \"chat\") return \"chat\";\n if (mode === \"responses\") return \"responses\";\n if (serverTools?.applyPatch?.mode && serverTools.applyPatch.mode !== \"disabled\") return \"responses\";\n if (request.input) return \"responses\";\n return \"chat\";\n}\n\nexport function mergeServerTools(\n ...policies: Array<Partial<RuntimeServerToolsPolicy> | undefined>\n): RuntimeServerToolsPolicy | undefined {\n const merged: RuntimeServerToolsPolicy = {};\n for (const policy of policies) {\n if (!policy) continue;\n Object.assign(merged, policy);\n }\n return Object.keys(merged).length ? merged : undefined;\n}\n\nfunction buildBaseBody(\n request: RuntimeRequest,\n model: string,\n defaults: RuntimeDefaults,\n tools: OpenRouterTool[],\n serverTools?: RuntimeServerToolsPolicy\n): Record<string, unknown> {\n const body: Record<string, unknown> = {\n model,\n temperature: request.temperature ?? defaults.temperature,\n reasoning: request.reasoning,\n tools: tools.length ? tools : undefined,\n tool_choice: compileToolChoice(request.toolChoice, serverTools),\n ...request.rawOpenRouterOverrides\n };\n return clean(body);\n}\n\nfunction buildChatBody(request: RuntimeRequest, baseBody: Record<string, unknown>): Record<string, unknown> {\n const messages = compileMessages(request);\n return clean({\n ...baseBody,\n messages,\n max_tokens: request.maxTokens,\n response_format: request.responseFormat\n });\n}\n\nfunction buildResponsesBody(request: RuntimeRequest, baseBody: Record<string, unknown>): Record<string, unknown> {\n return clean({\n ...baseBody,\n input: request.input ?? compilePromptInput(request),\n instructions: request.instructions ?? request.system,\n max_output_tokens: request.maxTokens,\n text: request.responseFormat\n });\n}\n\nexport function compileMessages(request: RuntimeRequest): Record<string, unknown>[] {\n const messages: RuntimeMessage[] = [];\n if (request.system) messages.push({ role: \"system\", content: request.system });\n if (request.messages) messages.push(...request.messages);\n if (request.prompt) messages.push({ role: \"user\", content: request.prompt });\n return messages.map(compileMessage);\n}\n\nfunction compilePromptInput(request: RuntimeRequest): unknown {\n if (request.prompt) return request.prompt;\n return compileMessages(request).map((message) => ({\n role: message.role,\n content: message.content\n }));\n}\n\nfunction compileMessage(message: RuntimeMessage): Record<string, unknown> {\n return clean({\n role: message.role,\n content: compileContent(message.content),\n name: message.name,\n tool_call_id: message.toolCallId\n });\n}\n\nfunction compileContent(content: RuntimeMessage[\"content\"]): unknown {\n if (typeof content === \"string\") return content;\n return content.map((part) => {\n if (part.type === \"image_url\") {\n return { type: \"image_url\", image_url: { url: part.imageUrl } };\n }\n if (part.type === \"file\") {\n return clean({\n type: \"file\",\n file_name: part.fileName,\n mime_type: part.mimeType,\n data: part.data,\n url: part.url\n });\n }\n return part;\n });\n}\n\nfunction compileToolChoice(choice: RuntimeToolChoice | undefined, serverTools?: RuntimeServerToolsPolicy): unknown {\n if (!choice || choice === \"auto\") return undefined;\n if (choice === \"none\" || choice === \"required\") return choice;\n if (choice.type === \"function\") {\n return { type: \"function\", function: { name: choice.functionName } };\n }\n const toolType = `openrouter:${choice.serverTool}`;\n const matchingPolicy = serverToolPolicyForChoice(choice.serverTool, serverTools);\n return matchingPolicy === 1 ? { type: toolType } : \"required\";\n}\n\nfunction serverToolPolicyForChoice(name: string, policy?: RuntimeServerToolsPolicy): number {\n const value = {\n web_search: policy?.webSearch,\n web_fetch: policy?.webFetch,\n datetime: policy?.datetime,\n image_generation: policy?.imageGeneration,\n apply_patch: policy?.applyPatch,\n fusion: policy?.fusion,\n advisor: policy?.advisor,\n subagent: policy?.subagent\n }[name];\n if (!value) return 0;\n if (Array.isArray(value)) return value.filter((item) => item.mode !== \"disabled\").length;\n return value.mode === \"disabled\" ? 0 : 1;\n}\n\nfunction clean<T extends Record<string, unknown>>(record: T): T {\n return Object.fromEntries(Object.entries(record).filter(([, value]) => value !== undefined)) as T;\n}\n","import type { OpenRouterRuntimeOptions, RuntimeFunctionToolDefinition, RuntimeToolExecutor } from \"../types/public\";\n\nexport function resolveExecutor(\n name: string,\n definitions: RuntimeFunctionToolDefinition[] | undefined,\n options: OpenRouterRuntimeOptions\n): RuntimeToolExecutor | undefined {\n return definitions?.find((tool) => tool.name === name)?.executor ?? options.tools?.[name];\n}\n","import { parseJsonMaybe } from \"../utils/json\";\n\nexport function parseToolArgs(args: unknown): unknown {\n return parseJsonMaybe(args);\n}\n","import { RuntimeConfigError } from \"../openrouter/errors\";\nimport { resolveExecutor } from \"./registry\";\nimport { parseToolArgs } from \"./parse-tool-args\";\nimport type {\n OpenRouterRuntimeOptions,\n RuntimeFunctionToolCall,\n RuntimeFunctionToolDefinition,\n RuntimeFunctionToolResult,\n RuntimeRequest\n} from \"../types/public\";\n\nexport async function executeFunctionTool(\n call: RuntimeFunctionToolCall,\n request: RuntimeRequest,\n definitions: RuntimeFunctionToolDefinition[] | undefined,\n options: OpenRouterRuntimeOptions\n): Promise<RuntimeFunctionToolResult> {\n const executor = resolveExecutor(call.name, definitions, options);\n if (!executor) {\n throw new RuntimeConfigError(\"FUNCTION_TOOL_EXECUTOR_MISSING\", `No executor registered for ${call.name}.`);\n }\n const started = Date.now();\n const args = parseToolArgs(call.args);\n try {\n options.logger?.debug?.(\"runtime.function_tool.started\", { name: call.name, callId: call.callId });\n await options.hooks?.beforeFunctionToolExecution?.({ ...call, args });\n const context = {\n requestId: request.id ?? \"\",\n toolName: call.name,\n callId: call.callId,\n ...(request.metadata ? { metadata: request.metadata } : {})\n };\n const result = await executor(args, context);\n const normalized = {\n name: call.name,\n callId: call.callId,\n status: \"completed\" as const,\n result,\n durationMs: Date.now() - started\n };\n await options.hooks?.afterFunctionToolExecution?.(normalized);\n options.logger?.debug?.(\"runtime.function_tool.completed\", { name: call.name, callId: call.callId });\n return normalized;\n } catch (error) {\n const normalized = {\n name: call.name,\n callId: call.callId,\n status: \"failed\" as const,\n error: error instanceof Error ? error.message : String(error),\n durationMs: Date.now() - started\n };\n await options.hooks?.afterFunctionToolExecution?.(normalized);\n options.logger?.warn?.(\"runtime.function_tool.failed\", normalized);\n return normalized;\n }\n}\n","import { executeFunctionTool } from \"../function-tools/execute-function-tool\";\nimport { parseToolArgs } from \"../function-tools/parse-tool-args\";\nimport type {\n OpenRouterRuntimeOptions,\n RuntimeFunctionToolCall,\n RuntimeFunctionToolDefinition,\n RuntimeFunctionToolUsage,\n RuntimeRequest\n} from \"../types/public\";\nimport { isRecord } from \"../utils/json\";\n\nexport function extractChatFunctionCalls(response: unknown): RuntimeFunctionToolCall[] {\n const record = isRecord(response) ? response : {};\n const choice = Array.isArray(record.choices) && isRecord(record.choices[0]) ? record.choices[0] : {};\n const message = isRecord(choice.message) ? choice.message : {};\n const calls = Array.isArray(message.tool_calls) ? message.tool_calls : [];\n return calls.flatMap((call) => {\n if (!isRecord(call) || call.type !== \"function\" || !isRecord(call.function)) return [];\n const name = typeof call.function.name === \"string\" ? call.function.name : undefined;\n if (!name) return [];\n return [\n {\n name,\n callId: typeof call.id === \"string\" ? call.id : name,\n args: call.function.arguments\n }\n ];\n });\n}\n\nexport function extractResponsesFunctionCalls(response: unknown): RuntimeFunctionToolCall[] {\n const record = isRecord(response) ? response : {};\n const output = Array.isArray(record.output) ? record.output : [];\n return output.flatMap((item) => {\n if (!isRecord(item) || item.type !== \"function_call\") return [];\n const name = typeof item.name === \"string\" ? item.name : undefined;\n if (!name) return [];\n return [\n {\n name,\n callId: typeof item.call_id === \"string\" ? item.call_id : typeof item.id === \"string\" ? item.id : name,\n args: item.arguments\n }\n ];\n });\n}\n\nexport async function executeFunctionCalls(params: {\n calls: RuntimeFunctionToolCall[];\n request: RuntimeRequest;\n definitions: RuntimeFunctionToolDefinition[] | undefined;\n options: OpenRouterRuntimeOptions;\n previousUsage: RuntimeFunctionToolUsage[];\n maxFunctionToolCalls: number;\n}): Promise<RuntimeFunctionToolUsage[]> {\n if (params.previousUsage.length + params.calls.length > params.maxFunctionToolCalls) {\n throw new Error(\"maxFunctionToolCalls exceeded.\");\n }\n const results = [];\n for (const call of params.calls) {\n const result = await executeFunctionTool(call, params.request, params.definitions, params.options);\n results.push({\n name: result.name,\n callId: result.callId,\n status: result.status,\n args: parseToolArgs(call.args),\n ...(result.result !== undefined ? { result: result.result } : {}),\n ...(result.error !== undefined ? { error: result.error } : {}),\n ...(result.durationMs !== undefined ? { durationMs: result.durationMs } : {})\n });\n }\n return results;\n}\n","import { sendOpenRouterRequest } from \"../openrouter/http-client\";\nimport { resultToChatToolMessage } from \"../function-tools/tool-messages\";\nimport { normalizeChatResponse } from \"../normalize/normalize-chat-response\";\nimport { validatePostResponse } from \"../policies/post-response-validation\";\nimport { mergeServerTools } from \"./runtime\";\nimport { executeFunctionCalls, extractChatFunctionCalls } from \"./tool-loop\";\nimport type { RuntimeContext } from \"../types/internal\";\nimport type { CompiledOpenRouterRequest, RuntimeFunctionToolUsage, RuntimeRequest } from \"../types/public\";\nimport { isRecord } from \"../utils/json\";\n\nexport async function runChat(\n request: RuntimeRequest,\n compiled: CompiledOpenRouterRequest,\n context: RuntimeContext\n) {\n const maxIterations = request.execution?.maxToolIterations ?? 8;\n const maxFunctionToolCalls = request.execution?.maxFunctionToolCalls ?? 20;\n const functionUsage: RuntimeFunctionToolUsage[] = [];\n let activeCompiled = compiled;\n let response: unknown;\n\n for (let iteration = 0; iteration <= maxIterations; iteration++) {\n response = await sendOpenRouterRequest(\n activeCompiled,\n context.options,\n context.defaults,\n request.execution?.timeoutMs ?? context.defaults.timeoutMs\n );\n const calls = extractChatFunctionCalls(response);\n if (!calls.length) break;\n const results = await executeFunctionCalls({\n calls,\n request,\n definitions: request.functionTools,\n options: context.options,\n previousUsage: functionUsage,\n maxFunctionToolCalls\n });\n functionUsage.push(...results);\n const body = activeCompiled.body;\n const messages = Array.isArray(body.messages) ? [...body.messages] : [];\n const assistantMessage = extractAssistantMessage(response);\n if (assistantMessage) messages.push(assistantMessage);\n messages.push(...results.map(resultToChatToolMessage));\n activeCompiled = { ...activeCompiled, body: { ...body, messages, tool_choice: \"auto\" } };\n }\n\n const model = typeof compiled.body.model === \"string\" ? compiled.body.model : \"\";\n const serverTools = mergeServerTools(context.defaults.serverTools, request.serverTools);\n const normalized = normalizeChatResponse({\n requestBody: activeCompiled.body,\n response,\n apiMode: \"chat\",\n model,\n warnings: compiled.warnings,\n functionToolUsage: functionUsage,\n ...optional(\"serverTools\", serverTools),\n ...optional(\"metadata\", request.metadata)\n });\n return validatePostResponse(normalized, context.defaults, serverTools);\n}\n\nfunction optional<T>(key: string, value: T | undefined): Record<string, T> {\n return value === undefined ? {} : { [key]: value };\n}\n\nfunction extractAssistantMessage(response: unknown): Record<string, unknown> | undefined {\n const record = isRecord(response) ? response : {};\n const choice = Array.isArray(record.choices) && isRecord(record.choices[0]) ? record.choices[0] : {};\n const message = isRecord(choice.message) ? choice.message : undefined;\n if (!message) return undefined;\n return message;\n}\n","import { dedupeCitations, extractCitations } from \"./citations\";\nimport { extractImages } from \"./images\";\nimport { extractPatches } from \"./patches\";\nimport { createToolUsage } from \"./tool-usage\";\nimport { normalizeUsage } from \"./usage\";\nimport type {\n RuntimeFunctionToolUsage,\n RuntimeResponse,\n RuntimeServerToolsPolicy,\n RuntimeWarning\n} from \"../types/public\";\nimport { createRuntimeId } from \"../utils/ids\";\nimport { isRecord } from \"../utils/json\";\n\nexport function normalizeResponsesResponse(params: {\n requestBody: unknown;\n response: unknown;\n model: string;\n serverTools?: RuntimeServerToolsPolicy;\n warnings: RuntimeWarning[];\n functionToolUsage?: RuntimeFunctionToolUsage[];\n metadata?: Record<string, unknown>;\n}): RuntimeResponse {\n const record = isRecord(params.response) ? params.response : {};\n const text = extractOutputText(record);\n return {\n id: typeof record.id === \"string\" ? record.id : createRuntimeId(\"orresp\"),\n status: record.status === \"requires_action\" ? \"requires_action\" : \"completed\",\n apiMode: \"responses\",\n model: typeof record.model === \"string\" ? record.model : params.model,\n text,\n citations: dedupeCitations([...extractCitations(params.response), ...extractCitations(text)]),\n images: extractImages(params.response),\n patches: extractPatches(params.response),\n toolUsage: createToolUsage(params.serverTools, params.response, params.functionToolUsage),\n warnings: params.warnings,\n errors: [],\n raw: {\n request: params.requestBody,\n response: params.response\n },\n ...optional(\"usage\", normalizeUsage(record.usage)),\n ...optional(\"finishReason\", typeof record.status === \"string\" ? record.status : undefined),\n ...optional(\"metadata\", params.metadata)\n };\n}\n\nfunction extractOutputText(record: Record<string, unknown>): string {\n if (typeof record.output_text === \"string\") return record.output_text;\n const output = Array.isArray(record.output) ? record.output : [];\n const chunks: string[] = [];\n for (const item of output) {\n if (!isRecord(item)) continue;\n if (typeof item.text === \"string\") chunks.push(item.text);\n const content = Array.isArray(item.content) ? item.content : [];\n for (const part of content) {\n if (isRecord(part) && typeof part.text === \"string\") chunks.push(part.text);\n }\n }\n return chunks.join(\"\");\n}\n\nfunction optional<T>(key: string, value: T | undefined): Record<string, T> {\n return value === undefined ? {} : { [key]: value };\n}\n","import { resultToResponsesInput } from \"../function-tools/tool-messages\";\nimport { normalizeResponsesResponse } from \"../normalize/normalize-responses-response\";\nimport { sendOpenRouterRequest } from \"../openrouter/http-client\";\nimport { validatePostResponse } from \"../policies/post-response-validation\";\nimport { mergeServerTools } from \"./runtime\";\nimport { executeFunctionCalls, extractResponsesFunctionCalls } from \"./tool-loop\";\nimport type { RuntimeContext } from \"../types/internal\";\nimport type { CompiledOpenRouterRequest, RuntimeFunctionToolUsage, RuntimeRequest } from \"../types/public\";\nimport { isRecord } from \"../utils/json\";\n\nexport async function runResponses(\n request: RuntimeRequest,\n compiled: CompiledOpenRouterRequest,\n context: RuntimeContext\n) {\n const maxIterations = request.execution?.maxToolIterations ?? 8;\n const maxFunctionToolCalls = request.execution?.maxFunctionToolCalls ?? 20;\n const functionUsage: RuntimeFunctionToolUsage[] = [];\n let activeCompiled = compiled;\n let response: unknown;\n\n for (let iteration = 0; iteration <= maxIterations; iteration++) {\n response = await sendOpenRouterRequest(\n activeCompiled,\n context.options,\n context.defaults,\n request.execution?.timeoutMs ?? context.defaults.timeoutMs\n );\n const calls = extractResponsesFunctionCalls(response);\n if (!calls.length) break;\n const results = await executeFunctionCalls({\n calls,\n request,\n definitions: request.functionTools,\n options: context.options,\n previousUsage: functionUsage,\n maxFunctionToolCalls\n });\n functionUsage.push(...results);\n activeCompiled = {\n ...activeCompiled,\n body: {\n ...activeCompiled.body,\n tool_choice: \"auto\",\n previous_response_id: isRecord(response) && typeof response.id === \"string\" ? response.id : undefined,\n input: results.map(resultToResponsesInput)\n }\n };\n }\n\n const model = typeof compiled.body.model === \"string\" ? compiled.body.model : \"\";\n const serverTools = mergeServerTools(context.defaults.serverTools, request.serverTools);\n const normalized = normalizeResponsesResponse({\n requestBody: activeCompiled.body,\n response,\n model,\n warnings: compiled.warnings,\n functionToolUsage: functionUsage,\n ...optional(\"serverTools\", serverTools),\n ...optional(\"metadata\", request.metadata)\n });\n return validatePostResponse(normalized, context.defaults, serverTools);\n}\n\nfunction optional<T>(key: string, value: T | undefined): Record<string, T> {\n return value === undefined ? {} : { [key]: value };\n}\n","import { resolveDefaults, resolveRuntimeOptions } from \"../config/defaults\";\nimport { OpenRouterHttpError, RuntimeConfigError } from \"../openrouter/errors\";\nimport { runChat } from \"./run-chat\";\nimport { runResponses } from \"./run-responses\";\nimport { compileRuntimeRequest } from \"./runtime\";\nimport type { OpenRouterRuntime, OpenRouterRuntimeOptions, RuntimeRequest, RuntimeResponse } from \"../types/public\";\nimport type { RuntimeContext } from \"../types/internal\";\nimport { createRuntimeId } from \"../utils/ids\";\n\nexport function createOpenRouterRuntime(options: OpenRouterRuntimeOptions): OpenRouterRuntime {\n const resolvedOptions = resolveRuntimeOptions(options);\n const defaults = resolveDefaults(options);\n const context: RuntimeContext = { options: resolvedOptions, defaults };\n\n return {\n async run(request: RuntimeRequest): Promise<RuntimeResponse> {\n const requestWithId = { ...request, id: request.id ?? createRuntimeId() };\n try {\n resolvedOptions.logger?.info?.(\"runtime.request.started\", { requestId: requestWithId.id });\n await resolvedOptions.hooks?.beforeCompile?.(requestWithId);\n const compiled = compileRuntimeRequest(requestWithId, defaults, resolvedOptions);\n await resolvedOptions.hooks?.afterCompile?.(compiled);\n resolvedOptions.logger?.debug?.(\"runtime.request.compiled\", {\n requestId: requestWithId.id,\n apiMode: compiled.apiMode\n });\n await resolvedOptions.hooks?.beforeOpenRouterRequest?.(compiled);\n const response = compiled.apiMode === \"chat\"\n ? await runChat(requestWithId, compiled, context)\n : await runResponses(requestWithId, compiled, context);\n await resolvedOptions.hooks?.afterOpenRouterResponse?.(response.raw.response);\n resolvedOptions.logger?.info?.(\"runtime.response.normalized\", { requestId: requestWithId.id, status: response.status });\n return response;\n } catch (error) {\n return errorResponse(requestWithId, error);\n }\n }\n };\n\n function errorResponse(request: RuntimeRequest, error: unknown): RuntimeResponse {\n const runtimeError = normalizeError(error);\n if (error instanceof RuntimeConfigError && defaults.onPolicyViolation === \"throw\") throw error;\n return {\n id: request.id ?? createRuntimeId(\"orerr\"),\n status: \"failed\",\n apiMode: request.apiMode === \"responses\" ? \"responses\" : \"chat\",\n model: request.model ?? resolvedOptions.defaultModel ?? \"\",\n text: \"\",\n citations: [],\n images: [],\n patches: [],\n toolUsage: {\n serverTools: {\n webSearch: { requested: false, required: false, used: false },\n webFetch: { requested: false, required: false, used: false },\n datetime: { requested: false, required: false, used: false },\n imageGeneration: { requested: false, required: false, used: false },\n applyPatch: { requested: false, required: false, used: false },\n fusion: { requested: false, required: false, used: false },\n advisor: { requested: false, required: false, used: false },\n subagent: { requested: false, required: false, used: false }\n },\n functionTools: []\n },\n warnings: [],\n errors: [runtimeError],\n raw: {\n request,\n response: error instanceof OpenRouterHttpError ? error.body : undefined\n },\n ...(request.metadata ? { metadata: request.metadata } : {})\n };\n }\n}\n\nfunction normalizeError(error: unknown) {\n if (error instanceof RuntimeConfigError) {\n return {\n code: error.code,\n message: error.message,\n source: \"validation\" as const,\n details: error.details\n };\n }\n if (error instanceof OpenRouterHttpError) {\n return {\n code: error.code,\n message: error.message,\n source: \"openrouter\" as const,\n retryable: error.retryable,\n details: error.body\n };\n }\n return {\n code: \"RUNTIME_ERROR\",\n message: error instanceof Error ? error.message : String(error),\n source: \"runtime\" as const\n };\n}\n"],"mappings":"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","names":["visit","visit","stringValue","visit","optional","optional","enabled","optional","optional","optional"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@x12i/openrouter-runtime",
3
- "version": "1.0.1",
3
+ "version": "1.0.3",
4
4
  "description": "TypeScript runtime for OpenRouter models, server tools, user tools, citations, patches, and normalized responses.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",