@niscorp/signal 0.1.4 → 0.1.5

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/utils/estimate-usage.ts","../src/errors.ts","../src/registry.ts","../src/utils/sdk-loader.ts","../src/adapters/openai-compatible.adapter.ts","../src/adapters/anthropic.adapter.ts","../src/adapters/google.adapter.ts","../src/adapters/systemone.adapter.ts","../src/transport/protocol.ts","../src/decide/gate.ts","../src/stream/execute-step-stream.ts","../src/output-trust.ts","../src/run.ts","../src/wire/repair.ts","../src/wire/strategies/failed-generation.ts","../src/wire/strategies/jsonl-lines.ts","../src/wire/strategies/index.ts","../src/wire/router.ts","../src/signal.ts","../src/tools/define-tool.ts","../src/transport/resolve.ts","../src/types.ts"],"names":["fn","z","output","tryParse","apiKey","routed","CHARS_PER_TOKEN","injectSchemaDoc"],"mappings":"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","file":"index.cjs","sourcesContent":["import type { Message, StepToolCall } from '../types';\n\nconst CHARS_PER_TOKEN = 4;\nconst PER_MESSAGE = 4;\n\nconst lengthOf = (content: unknown): number => (typeof content === 'string' ? content.length : JSON.stringify(content ?? '').length);\n\nexport const estimateUsage = (\n messages: readonly Message[],\n content: string,\n toolCalls: readonly StepToolCall[] = [],\n): { inputTokens: number; outputTokens: number; totalTokens: number; reported: false } => {\n let inputTokens = 0;\n for (const message of messages) inputTokens += PER_MESSAGE + Math.ceil(lengthOf(message.content) / CHARS_PER_TOKEN);\n const emitted = content + toolCalls.map((call) => `${call.name}${JSON.stringify(call.args)}`).join('');\n const outputTokens = Math.ceil(emitted.length / CHARS_PER_TOKEN);\n return { inputTokens, outputTokens, totalTokens: inputTokens + outputTokens, reported: false };\n};\n","export const ErrorCode = {\n PROVIDER_NOT_FOUND: 'E_PROVIDER_NOT_FOUND',\n MISSING_API_KEY: 'E_MISSING_API_KEY',\n MISSING_MODEL: 'E_MISSING_MODEL',\n MISSING_SDK: 'E_MISSING_SDK',\n VALIDATION_FAILED: 'E_VALIDATION_FAILED',\n MAX_RETRIES: 'E_MAX_RETRIES',\n MAX_ITERATIONS: 'E_MAX_ITERATIONS',\n PROVIDER_ERROR: 'E_PROVIDER_ERROR',\n TOOL_NOT_FOUND: 'E_TOOL_NOT_FOUND',\n TOOL_EXECUTION: 'E_TOOL_EXECUTION',\n TOOL_VALIDATION: 'E_TOOL_VALIDATION',\n VERB_NOT_SUPPORTED: 'E_VERB_NOT_SUPPORTED',\n} as const;\n\nexport type ErrorCode = (typeof ErrorCode)[keyof typeof ErrorCode];\n\nexport class SignalError extends Error {\n readonly code: ErrorCode;\n readonly context?: Record<string, unknown>;\n\n constructor(message: string, code: ErrorCode, context?: Record<string, unknown>) {\n super(message);\n this.name = 'SignalError';\n this.code = code;\n this.context = context;\n }\n}\n","import type { EndpointCapabilities, ModelCapabilities, ReasoningEffort } from './types';\n\ntype ProviderEntryBase = {\n id: string;\n baseUrl: string;\n envKey: string;\n defaultModel: string;\n};\n\nexport type ChatProviderEntry = ProviderEntryBase & {\n adapter: 'openai-compatible' | 'anthropic' | 'google';\n endpoint: EndpointCapabilities;\n wire?: string[];\n reasoningRequest?: Record<string, unknown>;\n};\n\nexport type DecisionProviderEntry = ProviderEntryBase & {\n adapter: 'systemone';\n};\n\nexport type ProviderEntry = ChatProviderEntry | DecisionProviderEntry;\n\nexport type ModelEntry = {\n capabilities: ModelCapabilities;\n reasoningEfforts: readonly ReasoningEffort[];\n verified: string;\n};\n\nexport const providerRegistry: Record<string, ProviderEntry> = {\n groq: {\n id: 'groq',\n baseUrl: 'https://api.groq.com/openai/v1',\n envKey: 'GROQ_API_KEY',\n defaultModel: 'qwen/qwen3.8-27b',\n endpoint: {\n nativeTools: true,\n nativeJsonMode: true,\n validatesToolArgs: true,\n supportsEmbedding: false,\n },\n adapter: 'openai-compatible',\n wire: ['failed-generation'],\n reasoningRequest: { reasoning_format: 'parsed' },\n },\n openai: {\n id: 'openai',\n baseUrl: 'https://api.openai.com/v1',\n envKey: 'OPENAI_API_KEY',\n defaultModel: 'gpt-4o',\n endpoint: {\n nativeTools: true,\n nativeJsonMode: true,\n validatesToolArgs: false,\n supportsEmbedding: true,\n },\n adapter: 'openai-compatible',\n wire: ['jsonl-lines'],\n },\n openrouter: {\n id: 'openrouter',\n baseUrl: 'https://openrouter.ai/api/v1',\n envKey: 'OPENROUTER_API_KEY',\n defaultModel: 'openai/gpt-4o',\n endpoint: {\n nativeTools: true,\n nativeJsonMode: true,\n validatesToolArgs: false,\n supportsEmbedding: false,\n },\n adapter: 'openai-compatible',\n reasoningRequest: { reasoning: { enabled: true } },\n },\n anthropic: {\n id: 'anthropic',\n baseUrl: 'https://api.anthropic.com/v1',\n envKey: 'ANTHROPIC_API_KEY',\n defaultModel: 'claude-sonnet-4-20250514',\n endpoint: {\n nativeTools: true,\n nativeJsonMode: true,\n validatesToolArgs: false,\n supportsEmbedding: false,\n },\n adapter: 'anthropic',\n },\n google: {\n id: 'google',\n baseUrl: 'https://generativelanguage.googleapis.com/v1beta',\n envKey: 'GOOGLE_API_KEY',\n defaultModel: 'gemini-2.0-flash',\n endpoint: {\n nativeTools: true,\n nativeJsonMode: true,\n validatesToolArgs: false,\n supportsEmbedding: false,\n },\n adapter: 'google',\n },\n typesafe: {\n id: 'typesafe',\n baseUrl: 'https://api.typesafe.ai/v1',\n envKey: 'TYPESAFE_API_KEY',\n defaultModel: 'jev-latest',\n adapter: 'systemone',\n },\n};\n\n// A row is the output of scripts/probe-model.ts, not typed by hand.\n// On OpenRouter, reasoningEfforts is what the proxy accepts, not what the routed model\n// honours: it passes `reasoning_effort` through even to non-reasoning models.\nexport const modelRegistry: Record<string, ModelEntry> = {\n 'groq/qwen/qwen3.8-27b': {\n capabilities: { nativeJsonSchema: false, toolsWithStructuredOutput: false, manglesNestedToolArgs: true, multimodal: true },\n reasoningEfforts: ['none', 'default', 'low', 'medium', 'high'],\n verified: '2026-09-24',\n },\n 'groq/openai/gpt-oss-120b': {\n capabilities: { nativeJsonSchema: true, toolsWithStructuredOutput: false, manglesNestedToolArgs: true, multimodal: false },\n reasoningEfforts: ['low', 'medium', 'high'],\n verified: '2026-09-24',\n },\n 'groq/openai/gpt-oss-20b': {\n capabilities: { nativeJsonSchema: true, toolsWithStructuredOutput: false, manglesNestedToolArgs: true, multimodal: false },\n reasoningEfforts: ['low', 'medium', 'high'],\n verified: '2026-09-24',\n },\n 'openai/gpt-4o': {\n capabilities: { nativeJsonSchema: true, toolsWithStructuredOutput: true, manglesNestedToolArgs: false, multimodal: true },\n reasoningEfforts: [],\n verified: '2026-09-24',\n },\n 'openai/gpt-4o-mini': {\n capabilities: { nativeJsonSchema: true, toolsWithStructuredOutput: true, manglesNestedToolArgs: false, multimodal: true },\n reasoningEfforts: [],\n verified: '2026-09-24',\n },\n 'openai/gpt-4.1-mini': {\n capabilities: { nativeJsonSchema: true, toolsWithStructuredOutput: true, manglesNestedToolArgs: false, multimodal: true },\n reasoningEfforts: [],\n verified: '2026-09-24',\n },\n 'openrouter/qwen/qwen3.8-27b': {\n capabilities: { nativeJsonSchema: true, toolsWithStructuredOutput: true, manglesNestedToolArgs: false, multimodal: true },\n reasoningEfforts: ['none', 'minimal', 'low', 'medium', 'high', 'xhigh', 'max'],\n verified: '2026-09-24',\n },\n 'openrouter/openai/gpt-4o': {\n capabilities: { nativeJsonSchema: true, toolsWithStructuredOutput: true, manglesNestedToolArgs: false, multimodal: true },\n reasoningEfforts: ['none', 'minimal', 'low', 'medium', 'high', 'xhigh', 'max'],\n verified: '2026-09-24',\n },\n 'openrouter/openai/gpt-4o-mini': {\n capabilities: { nativeJsonSchema: true, toolsWithStructuredOutput: true, manglesNestedToolArgs: false, multimodal: true },\n reasoningEfforts: ['none', 'minimal', 'low', 'medium', 'high', 'xhigh', 'max'],\n verified: '2026-09-24',\n },\n 'openrouter/openai/gpt-oss-120b': {\n capabilities: { nativeJsonSchema: false, toolsWithStructuredOutput: true, manglesNestedToolArgs: false, multimodal: false },\n reasoningEfforts: ['minimal', 'low', 'medium', 'high', 'xhigh', 'max'],\n verified: '2026-09-24',\n },\n 'openrouter/z-ai/glm-5.2': {\n capabilities: { nativeJsonSchema: true, toolsWithStructuredOutput: true, manglesNestedToolArgs: true, multimodal: false },\n reasoningEfforts: ['none', 'minimal', 'low', 'medium', 'high', 'xhigh', 'max'],\n verified: '2026-09-24',\n },\n 'openrouter/openai/gpt-5.6-luna': {\n capabilities: { nativeJsonSchema: true, toolsWithStructuredOutput: true, manglesNestedToolArgs: false, multimodal: true },\n reasoningEfforts: ['none', 'minimal', 'low', 'medium', 'high', 'xhigh', 'max'],\n verified: '2026-09-24',\n },\n 'openrouter/openai/gpt-oss-20b': {\n capabilities: { nativeJsonSchema: false, toolsWithStructuredOutput: true, manglesNestedToolArgs: false, multimodal: false },\n reasoningEfforts: ['minimal', 'low', 'medium', 'high', 'xhigh', 'max'],\n verified: '2026-09-24',\n },\n 'openrouter/meta-llama/llama-3.3-70b-instruct': {\n capabilities: { nativeJsonSchema: false, toolsWithStructuredOutput: true, manglesNestedToolArgs: true, multimodal: false },\n reasoningEfforts: ['none', 'minimal', 'low', 'medium', 'high', 'xhigh', 'max'],\n verified: '2026-09-24',\n },\n};\n\nexport const UNMEASURED_MODEL: ModelCapabilities = {\n nativeJsonSchema: false,\n toolsWithStructuredOutput: false,\n manglesNestedToolArgs: true,\n multimodal: false,\n};\n\nexport const modelKey = (provider: string, model: string): string => `${provider}/${model}`;\n\nexport const modelEntry = (provider: string, model: string): ModelEntry | undefined => modelRegistry[modelKey(provider, model)];\n\nexport const resolveApiKey = (envKey: string, explicitKey?: string): string | undefined =>\n explicitKey ?? (typeof process !== 'undefined' ? process.env?.[envKey] : undefined);\n\nexport const chatProviderEntry = (id: string): ChatProviderEntry | undefined => {\n const entry = providerRegistry[id];\n return entry === undefined || entry.adapter === 'systemone' ? undefined : entry;\n};\n","import { SignalError, ErrorCode } from '../errors';\n\nexport const loadSdk = async (pkg: string): Promise<unknown> => {\n try {\n const mod = await import(/* @vite-ignore */ pkg);\n return mod.default ?? mod;\n } catch {\n throw new SignalError(\n `Missing dependency: ${pkg}. Install it with: pnpm add ${pkg}`,\n ErrorCode.MISSING_SDK,\n { package: pkg },\n );\n }\n};\n","import type { ChatAdapter, ProviderRequest, ProviderResponse, ProviderStreamDelta, EmbedRequest, EmbedResponse, Message, ContentPart } from '../types';\nimport { SignalError, ErrorCode } from '../errors';\nimport { loadSdk } from '../utils/sdk-loader';\n\ntype OpenAIMessage = {\n role: string;\n content: string | Array<{ type: string; text?: string; image_url?: { url: string } }> | null;\n tool_calls?: Array<{ id: string; type: string; function: { name: string; arguments: string } }>;\n tool_call_id?: string;\n};\n\ntype OpenAICompletion = {\n choices?: Array<{\n message?: {\n role: string;\n content?: string | null;\n tool_calls?: Array<{\n id: string;\n type: string;\n function: { name: string; arguments: string };\n }>;\n };\n finish_reason?: string;\n }>;\n usage?: {\n prompt_tokens?: number;\n completion_tokens?: number;\n total_tokens?: number;\n };\n};\n\ntype RequestOptions = { signal?: AbortSignal };\n\ntype ChatCreateFn = {\n (params: Record<string, unknown> & { stream: true }, options?: RequestOptions): Promise<OpenAIStream>;\n (params: Record<string, unknown>, options?: RequestOptions): Promise<OpenAICompletion>;\n};\n\ntype OpenAIStreamChunk = {\n choices?: Array<{\n delta?: {\n content?: string | null;\n // Neither is in the SDK's delta type. OpenRouter and Groq's gpt-oss send `reasoning`;\n // GLM and DeepSeek send `reasoning_content`.\n reasoning?: string | null;\n reasoning_content?: string | null;\n tool_calls?: Array<{\n index: number;\n id?: string;\n function?: { name?: string; arguments?: string };\n }>;\n };\n finish_reason?: string | null;\n }>;\n usage?: {\n prompt_tokens?: number;\n completion_tokens?: number;\n total_tokens?: number;\n };\n};\n\ntype OpenAIStream = AsyncIterable<OpenAIStreamChunk>;\n\ntype OpenAIEmbeddingResponse = {\n data?: Array<{ embedding: number[]; index: number }>;\n usage?: { prompt_tokens?: number; total_tokens?: number };\n};\n\ntype EmbedCreateFn = (params: Record<string, unknown>) => Promise<OpenAIEmbeddingResponse>;\n\nconst translateContentParts = (parts: ContentPart[]): Array<{ type: string; text?: string; image_url?: { url: string } }> =>\n parts.map((part) => {\n if (part.type === 'text') return { type: 'text', text: part.text };\n if (part.type === 'image') {\n const url = part.source.type === 'url'\n ? part.source.url\n : `data:${part.source.mediaType};base64,${part.source.data}`;\n return { type: 'image_url', image_url: { url } };\n }\n return { type: 'text', text: '' };\n });\n\nconst translateMessage = (msg: Message): OpenAIMessage => {\n switch (msg.role) {\n case 'system':\n return { role: 'system', content: msg.content };\n case 'user':\n return {\n role: 'user',\n content: typeof msg.content === 'string'\n ? msg.content\n : translateContentParts(msg.content),\n };\n case 'assistant': {\n const out: OpenAIMessage = { role: 'assistant', content: msg.content };\n if (msg.toolCalls && msg.toolCalls.length > 0) {\n out.tool_calls = msg.toolCalls.map((tc) => ({\n id: tc.id,\n type: 'function',\n function: { name: tc.name, arguments: tc.args },\n }));\n }\n return out;\n }\n case 'tool':\n return { role: 'tool', content: msg.content, tool_call_id: msg.toolCallId };\n default:\n return { role: 'user', content: '' };\n }\n};\n\nconst bindAt = <T>(obj: unknown, path: readonly string[]): T | undefined => {\n let parent: unknown;\n let current = obj;\n for (const key of path) {\n if (!current || typeof current !== 'object') return undefined;\n parent = current;\n current = (current as Record<string, unknown>)[key];\n }\n return typeof current === 'function' ? ((current as (...args: unknown[]) => unknown).bind(parent) as T) : undefined;\n};\n\nconst createSdkInstance = async (config: OpenAICompatibleConfig): Promise<unknown> => {\n const Sdk = await loadSdk('openai');\n const Constructor = (typeof Sdk === 'function' ? Sdk : (Sdk as Record<string, unknown>)['default']) as\n new (params: { apiKey?: string; baseURL?: string; dangerouslyAllowBrowser?: boolean }) => unknown;\n\n return new Constructor({\n apiKey: config.apiKey,\n baseURL: config.baseUrl,\n dangerouslyAllowBrowser: typeof globalThis.window !== 'undefined',\n });\n};\n\nconst loadSdkFn = async <T>(\n config: OpenAICompatibleConfig,\n path: readonly string[],\n missing: { message: string; code: ErrorCode },\n strictClient: boolean,\n): Promise<T> => {\n if (config.client) {\n const fn = bindAt<T>(config.client, path);\n if (fn) return fn;\n if (strictClient) {\n throw new SignalError(`Invalid client: expected client.${path.join('.')} to be a function`, ErrorCode.PROVIDER_ERROR);\n }\n }\n const fn = bindAt<T>(await createSdkInstance(config), path);\n if (!fn) throw new SignalError(missing.message, missing.code);\n return fn;\n};\n\nconst loadChatCreateFn = (config: OpenAICompatibleConfig): Promise<ChatCreateFn> =>\n loadSdkFn(config, ['chat', 'completions', 'create'], { message: 'Failed to initialize OpenAI SDK', code: ErrorCode.MISSING_SDK }, true);\n\nconst loadEmbedCreateFn = (config: OpenAICompatibleConfig): Promise<EmbedCreateFn> =>\n loadSdkFn(\n config,\n ['embeddings', 'create'],\n { message: 'Embedding is not supported by this provider or SDK', code: ErrorCode.PROVIDER_ERROR },\n false,\n );\n\nexport type OpenAICompatibleConfig = {\n apiKey: string;\n baseUrl: string;\n client?: unknown;\n reasoningRequest?: Record<string, unknown>;\n};\n\nexport const createOpenAICompatibleAdapter = async (\n config: OpenAICompatibleConfig,\n): Promise<ChatAdapter> => {\n const chatCreate = await loadChatCreateFn(config);\n\n const buildParams = (request: ProviderRequest): Record<string, unknown> => {\n const params: Record<string, unknown> = {\n model: request.model,\n messages: request.messages.map(translateMessage),\n };\n if (request.responseFormat) {\n params['response_format'] = request.responseFormat.type === 'json_schema'\n ? { type: 'json_schema', json_schema: request.responseFormat.jsonSchema }\n : { type: 'json_object' };\n }\n if (request.tools?.length) params['tools'] = request.tools;\n if (request.toolChoice !== undefined) {\n params['tool_choice'] = typeof request.toolChoice === 'string'\n ? request.toolChoice\n : { type: 'function', function: { name: request.toolChoice.name } };\n }\n if (request.options?.temperature !== undefined) params['temperature'] = request.options.temperature;\n if (request.options?.maxTokens !== undefined) params['max_completion_tokens'] = request.options.maxTokens;\n if (request.options?.topP !== undefined) params['top_p'] = request.options.topP;\n if (request.options?.stopSequences) params['stop'] = request.options.stopSequences;\n if (request.options?.seed !== undefined) params['seed'] = request.options.seed;\n if (request.options?.reasoningEffort !== undefined)\n params['reasoning_effort'] = request.options.reasoningEffort;\n return params;\n };\n\n const chat = async (request: ProviderRequest): Promise<ProviderResponse> => {\n const params = buildParams(request);\n\n let completion: OpenAICompletion;\n try {\n completion = await chatCreate(params);\n } catch (error) {\n throw new SignalError(\n `Provider error: ${error instanceof Error ? error.message : String(error)}`,\n ErrorCode.PROVIDER_ERROR,\n { raw: error },\n );\n }\n\n const choice = completion.choices?.[0];\n return {\n content: choice?.message?.content ?? '',\n toolCalls: choice?.message?.tool_calls?.map((tc) => ({\n id: tc.id,\n name: tc.function.name,\n args: tc.function.arguments,\n })),\n usage: {\n inputTokens: completion.usage?.prompt_tokens ?? 0,\n outputTokens: completion.usage?.completion_tokens ?? 0,\n totalTokens: completion.usage?.total_tokens ?? 0,\n },\n finishReason: choice?.finish_reason ?? 'unknown',\n raw: completion,\n };\n };\n\n async function* chatStream(request: ProviderRequest, options?: RequestOptions): AsyncIterable<ProviderStreamDelta> {\n const streamParams = {\n ...buildParams(request),\n // Only when the caller set reasoningEffort: Groq answers `reasoning_format` with a 400\n // on its non-reasoning models.\n ...(request.options?.reasoningEffort !== undefined && config.reasoningRequest !== undefined ? config.reasoningRequest : {}),\n stream: true as const,\n stream_options: { include_usage: true },\n };\n\n let sseStream: OpenAIStream;\n try {\n sseStream = await chatCreate(streamParams, options);\n } catch (error) {\n throw new SignalError(\n `Provider stream error: ${error instanceof Error ? error.message : String(error)}`,\n ErrorCode.PROVIDER_ERROR,\n { raw: error },\n );\n }\n\n try {\n for await (const chunk of sseStream) {\n const choice = chunk.choices?.[0];\n if (choice?.delta?.content) {\n yield { type: 'text', text: choice.delta.content };\n }\n const reasoning = choice?.delta?.reasoning ?? choice?.delta?.reasoning_content;\n if (reasoning) {\n yield { type: 'reasoning', text: reasoning };\n }\n if (choice?.delta?.tool_calls) {\n for (const tc of choice.delta.tool_calls) {\n yield {\n type: 'tool_call',\n index: tc.index,\n id: tc.id,\n name: tc.function?.name,\n argsFragment: tc.function?.arguments,\n };\n }\n }\n if (chunk.usage) {\n yield {\n type: 'usage',\n inputTokens: chunk.usage.prompt_tokens ?? 0,\n outputTokens: chunk.usage.completion_tokens ?? 0,\n totalTokens: chunk.usage.total_tokens ?? 0,\n };\n }\n if (choice?.finish_reason) {\n yield { type: 'finish', finishReason: choice.finish_reason };\n }\n }\n } catch (error) {\n if (error instanceof SignalError) throw error;\n throw new SignalError(\n `Provider stream error: ${error instanceof Error ? error.message : String(error)}`,\n ErrorCode.PROVIDER_ERROR,\n { raw: error },\n );\n }\n }\n\n let cachedEmbedCreate: EmbedCreateFn | undefined;\n\n const embed = async (request: EmbedRequest): Promise<EmbedResponse> => {\n if (!cachedEmbedCreate) cachedEmbedCreate = await loadEmbedCreateFn(config);\n\n const params: Record<string, unknown> = {\n model: request.model,\n input: request.input,\n };\n if (request.dimensions !== undefined) params['dimensions'] = request.dimensions;\n\n let response: OpenAIEmbeddingResponse;\n try {\n response = await cachedEmbedCreate(params);\n } catch (error) {\n throw new SignalError(\n `Embedding error: ${error instanceof Error ? error.message : String(error)}`,\n ErrorCode.PROVIDER_ERROR,\n { raw: error },\n );\n }\n\n const embeddings = (response.data ?? [])\n .sort((a, b) => a.index - b.index)\n .map(d => d.embedding);\n\n return {\n embeddings,\n usage: {\n inputTokens: response.usage?.prompt_tokens ?? 0,\n totalTokens: response.usage?.total_tokens ?? 0,\n },\n };\n };\n\n return { kind: 'chat', id: 'openai-compatible', chat, chatStream, embed };\n};\n","import type { ProviderAdapter } from '../types';\nimport { SignalError, ErrorCode } from '../errors';\n\nexport type AnthropicConfig = {\n apiKey: string;\n client?: unknown;\n};\n\nexport const createAnthropicAdapter = async (\n _config: AnthropicConfig,\n): Promise<ProviderAdapter> => {\n throw new SignalError(\n 'Anthropic adapter is not yet implemented. Use openai-compatible with OpenRouter for Anthropic models.',\n ErrorCode.PROVIDER_ERROR,\n );\n};\n","import type { ProviderAdapter } from '../types';\nimport { SignalError, ErrorCode } from '../errors';\n\nexport type GoogleConfig = {\n apiKey: string;\n client?: unknown;\n};\n\nexport const createGoogleAdapter = async (\n _config: GoogleConfig,\n): Promise<ProviderAdapter> => {\n throw new SignalError(\n 'Google adapter is not yet implemented. Use openai-compatible with OpenRouter for Google models.',\n ErrorCode.PROVIDER_ERROR,\n );\n};\n","import { z } from 'zod';\nimport type { DecisionAdapter, DecisionRequest, DecisionResponse } from '../types';\nimport { SignalError, ErrorCode } from '../errors';\n\nexport type SystemOneConfig = {\n apiKey: string;\n baseUrl: string;\n client?: unknown;\n};\n\nconst InjectedClientSchema = z.object({\n fetch: z.custom<typeof fetch>((value) => typeof value === 'function'),\n});\n\nconst BodySchema = z.object({\n model: z.string().optional(),\n answers: z.unknown(),\n usage: z.object({ input_tokens: z.number(), output_tokens: z.number() }).optional(),\n});\n\nconst sendOf = (client: unknown): typeof fetch => {\n if (client === undefined) return fetch;\n const injected = InjectedClientSchema.safeParse(client);\n if (!injected.success) {\n throw new SignalError('Invalid client: expected client.fetch to be a function', ErrorCode.PROVIDER_ERROR);\n }\n return injected.data.fetch;\n};\n\nconst jsonOrText = (text: string): unknown => {\n try {\n return JSON.parse(text);\n } catch {\n return text;\n }\n};\n\nconst providerError = (message: string, raw: unknown): SignalError =>\n new SignalError(`Provider error: ${message}`, ErrorCode.PROVIDER_ERROR, { raw });\n\nexport const createSystemOneAdapter = async (config: SystemOneConfig): Promise<DecisionAdapter> => {\n const send = sendOf(config.client);\n const url = `${config.baseUrl.replace(/\\/+$/, '')}/systemone`;\n\n const decide = async (request: DecisionRequest, options?: { signal?: AbortSignal }): Promise<DecisionResponse> => {\n let status: number;\n let body: unknown;\n try {\n const response = await send(url, {\n method: 'POST',\n headers: { authorization: `Bearer ${config.apiKey}`, 'content-type': 'application/json' },\n body: JSON.stringify({ model: request.model, state: request.state, questions: request.questions }),\n ...(options?.signal !== undefined && { signal: options.signal }),\n });\n status = response.status;\n body = jsonOrText(await response.text());\n } catch (error) {\n // An abort is wrapped too: the caller holds the signal and knows it fired.\n throw providerError(error instanceof Error ? error.message : String(error), error);\n }\n if (status < 200 || status >= 300) throw providerError(`HTTP ${status}`, { status, body });\n\n // Not thrown: the gate rejects a body of the wrong shape, with these bytes as evidence.\n const parsed = BodySchema.safeParse(body);\n if (!parsed.success) return { answers: undefined, raw: body };\n return {\n ...(parsed.data.model !== undefined && { model: parsed.data.model }),\n answers: parsed.data.answers,\n ...(parsed.data.usage !== undefined && {\n usage: { inputTokens: parsed.data.usage.input_tokens, outputTokens: parsed.data.usage.output_tokens },\n }),\n raw: body,\n };\n };\n\n return { kind: 'decisions', id: 'systemone', decide };\n};\n","import type { OutputTransport, ResponseMode } from './resolve';\nimport type { Question } from '../types';\n\nexport const RESPOND_DESCRIPTION =\n 'Finish the task. Call this EXACTLY ONCE, ALONE in its own turn, with your final envelope: ' +\n '{ response?: string (human-facing text), data (the payload), reasoning?: string (why) }. ' +\n 'Calling this ends the run.';\n\nexport type ProtocolSpec = {\n transport: OutputTransport;\n responseMode: ResponseMode;\n hasData: boolean;\n hasTools: boolean;\n injectSchemaDoc: boolean;\n};\n\nconst EMIT_WITH_TOOLS = (shape: string, note: string): string =>\n `FINISH PROTOCOL: Use your tools as needed. To finish, your ENTIRE final message must be ONLY the JSON envelope ${shape} — raw JSON, no prose around it, no code fences.${note} A message without tool calls is treated as your final envelope.`;\n\nconst EMIT_TOOLLESS = (shape: string, note: string): string =>\n `FINISH PROTOCOL: Your ENTIRE final message must be ONLY the JSON envelope ${shape} — raw JSON, no prose around it, no code fences.${note}`;\n\nconst NATIVE = (shape: string, note: string): string =>\n `FINISH PROTOCOL: To finish, reply with no tool calls; your reply is the JSON envelope ${shape}.${note}`;\n\nconst RESPOND = (shape: string, note: string): string =>\n `FINISH PROTOCOL: To finish, call the \\`respond\\` tool ALONE in its own turn with the envelope ${shape} as its arguments — or reply with ONLY that JSON envelope as your entire message.${note}`;\n\n// Key order matters: a model writes JSON in the order it is shown, so `reasoning` comes\n// first, before the answer it explains.\nconst envelopeShape = (spec: ProtocolSpec): string => {\n if (!spec.hasData) return '{ \"reasoning\"?: string, \"response\": string }';\n return spec.responseMode === 'required'\n ? '{ \"reasoning\"?: string, \"response\": string, \"data\": <the payload> }'\n : '{ \"reasoning\"?: string, \"response\"?: string, \"data\": <the payload> }';\n};\n\nexport const finishProtocol = (spec: ProtocolSpec): string => {\n const shape = envelopeShape(spec);\n const note = spec.hasData && spec.injectSchemaDoc ? ' `data` must match the OUTPUT SCHEMA above.' : '';\n switch (spec.transport) {\n case 'emit':\n return spec.hasTools ? EMIT_WITH_TOOLS(shape, note) : EMIT_TOOLLESS(shape, note);\n case 'native':\n return NATIVE(shape, note);\n case 'respond':\n return RESPOND(shape, note);\n }\n};\n\n// The caller replaces `{issues}` with the evidence.\nconst RESPOND_TERMINATION =\n 'You did not finish. Either call the `respond` tool with your final envelope ({ response?, data, reasoning? }), or reply with ONLY that JSON envelope as your entire message — no surrounding prose.';\n\nconst RESPOND_INVALID =\n 'Your output was invalid: {issues}. Either call `respond`, or reply with ONLY the corrected JSON envelope — no prose.';\n\nconst CONTENT_TERMINATION =\n 'You did not finish. Reply with ONLY the JSON envelope ({ response?, data, reasoning? }) as your entire message — no surrounding prose, no code fences.';\n\nconst CONTENT_INVALID =\n 'Your output was invalid: {issues}. Reply with ONLY the corrected JSON envelope as your entire message.';\n\nexport const corrections = (transport: OutputTransport): { termination: string; invalidOutput: string } =>\n transport === 'respond'\n ? { termination: RESPOND_TERMINATION, invalidOutput: RESPOND_INVALID }\n : { termination: CONTENT_TERMINATION, invalidOutput: CONTENT_INVALID };\n\nexport const bareSchemaPrompt = (jsonSchema: string): string =>\n `OUTPUT SCHEMA: your final reply must be ONLY a JSON value matching this schema — raw JSON, no prose, no code fences:\\n${jsonSchema}`;\n\nexport const bareSchemaCorrection = (issues: string): string =>\n `Your output was invalid: ${issues}. Reply with ONLY the corrected JSON value matching the OUTPUT SCHEMA.`;\n\nexport const decisionEmulationPrompt = (state: string): string =>\n `Answer every field of the OUTPUT SCHEMA about the STATE below. Each field's description is the question and lists everything you may answer with.\\nSTATE:\\n${state}`;\n\nexport const decisionQuestionDescription = (question: Question): string => {\n if (question.type === 'choice') return `${question.instructions} Options: ${JSON.stringify(question.criteria)}`;\n if (question.type === 'score') {\n return `${question.instructions} Answer with the index of the level that fits. Levels, lowest first: ${JSON.stringify(question.criteria)}`;\n }\n return question.criteria === undefined\n ? question.instructions\n : `${question.instructions} Meaning: ${JSON.stringify(question.criteria)}`;\n};\n","import { z, type ZodType } from 'zod';\nimport { SignalError, ErrorCode } from '../errors';\nimport { decisionQuestionDescription } from '../transport/protocol';\nimport type { Questions, Question, CalibratedDecision, UncalibratedDecision } from '../types';\n\nexport type CalibratedDecisions<Qs extends Questions> = { [N in keyof Qs]: CalibratedDecision<Qs[N]> };\nexport type UncalibratedDecisions<Qs extends Questions> = { [N in keyof Qs]: UncalibratedDecision<Qs[N]> };\n\nconst probability = z.number().min(0).max(1);\n\nconst enumOf = (name: string, options: readonly string[]) => {\n const [first, ...rest] = options;\n if (first === undefined) {\n throw new SignalError(`Question \"${name}\" offers nothing to answer with`, ErrorCode.VALIDATION_FAILED, { question: name });\n }\n return z.enum([first, ...rest]);\n};\n\nconst levelKeysOf = (question: { criteria: readonly string[] }): string[] =>\n question.criteria.map((_, level) => String(level));\n\nconst mostProbable = (probabilities: readonly number[]): number =>\n probabilities.reduce((best, value, level) => (value > (probabilities[best] ?? 0) ? level : best), 0);\n\nconst calibratedGate = (name: string, question: Question): ZodType => {\n if (question.type === 'choice') {\n const option = enumOf(name, Object.keys(question.criteria));\n return z.object({ choice: option, probabilities: z.record(option, probability), confidence: probability });\n }\n if (question.type === 'score') {\n const keys = levelKeysOf(question);\n const level = enumOf(name, keys);\n return z\n .object({\n score: z.number().min(0).max(keys.length - 1),\n probabilities: z.record(level, probability),\n confidence: probability,\n })\n .transform((answer) => {\n const probabilities = keys.map((key) => answer.probabilities[key] ?? 0);\n return { level: mostProbable(probabilities), score: answer.score, probabilities, confidence: answer.confidence };\n });\n }\n return z.object({ noul: probability }).transform((answer) => ({ answer: answer.noul >= 0.5, noul: answer.noul }));\n};\n\nconst uncalibratedField = (name: string, question: Question): ZodType => {\n const description = decisionQuestionDescription(question);\n if (question.type === 'choice') return enumOf(name, Object.keys(question.criteria)).describe(description);\n if (question.type === 'score') return z.number().int().min(0).max(question.criteria.length - 1).describe(description);\n return z.boolean().describe(description);\n};\n\nconst uncalibratedDecision = (question: Question, value: unknown): Record<string, unknown> => {\n if (question.type === 'choice') return { choice: value };\n if (question.type === 'score') return { level: value };\n return { answer: value };\n};\n\nconst assertAsked = (questions: Questions): void => {\n if (Object.keys(questions).length === 0) {\n throw new SignalError('decide() needs at least one question', ErrorCode.VALIDATION_FAILED);\n }\n};\n\n// Each entry was written by its question's own gate, so covering the names covers the type.\nconst answersEvery = <Out extends object>(questions: Questions, decisions: object): decisions is Out =>\n Object.keys(questions).every((name) => name in decisions);\n\nconst rejected = (issues: readonly string[], raw: unknown): SignalError =>\n new SignalError(`Decision rejected: ${issues.join('; ')}`, ErrorCode.VALIDATION_FAILED, { issues, raw });\n\nconst issuesOf = (name: string, error: z.ZodError): string[] =>\n error.issues.map((issue) => `${[name, ...issue.path].join('.')}: ${issue.message}`);\n\n// Builds each gate for its throw: a question that cannot be gated fails before the network.\nexport const assertQuestions = (questions: Questions): void => {\n assertAsked(questions);\n for (const [name, question] of Object.entries(questions)) calibratedGate(name, question);\n};\n\nexport const acceptCalibrated = <Qs extends Questions>(\n questions: Qs,\n answers: unknown,\n raw: unknown,\n): CalibratedDecisions<Qs> => {\n const arrived = z.record(z.string(), z.unknown()).safeParse(answers);\n if (!arrived.success) throw rejected(['the provider returned no answers'], raw);\n\n const decisions: Record<string, unknown> = {};\n const issues: string[] = [];\n for (const [name, question] of Object.entries(questions)) {\n if (!(name in arrived.data)) {\n issues.push(`${name}: not answered`);\n continue;\n }\n const gated = calibratedGate(name, question).safeParse(arrived.data[name]);\n if (gated.success) decisions[name] = gated.data;\n else issues.push(...issuesOf(name, gated.error));\n }\n if (issues.length > 0 || !answersEvery<CalibratedDecisions<Qs>>(questions, decisions)) throw rejected(issues, raw);\n return decisions;\n};\n\nexport const uncalibratedSchemaOf = (questions: Questions): ZodType<Record<string, unknown>> =>\n z.strictObject(\n Object.fromEntries(Object.entries(questions).map(([name, question]) => [name, uncalibratedField(name, question)])),\n );\n\nexport const acceptUncalibrated = <Qs extends Questions>(\n questions: Qs,\n value: unknown,\n raw: unknown,\n): UncalibratedDecisions<Qs> => {\n const gated = uncalibratedSchemaOf(questions).safeParse(value);\n if (!gated.success) throw rejected(issuesOf('decisions', gated.error), raw);\n\n const decisions: Record<string, unknown> = {};\n for (const [name, question] of Object.entries(questions)) decisions[name] = uncalibratedDecision(question, gated.data[name]);\n if (!answersEvery<UncalibratedDecisions<Qs>>(questions, decisions)) throw rejected(['a question went unanswered'], raw);\n return decisions;\n};\n","import type {\n Message, ChatAdapter, ProviderRequest, ProviderStreamDelta,\n StepRequest, StepResult, StepStreamEvent, StepToolCall, StreamOptions,\n} from '../types';\nimport { estimateUsage } from '../utils/estimate-usage';\n\nexport type ExecuteStepStreamConfig = {\n adapter: ChatAdapter;\n model: string;\n request: StepRequest;\n streamOptions?: StreamOptions;\n};\n\ntype AssembledToolCall = { id: string; name: string; args: string };\n\n\nconst assembleToolCall = (\n map: Map<number, AssembledToolCall>,\n delta: Extract<ProviderStreamDelta, { type: 'tool_call' }>,\n): void => {\n let tc = map.get(delta.index);\n if (!tc) {\n tc = { id: delta.id ?? '', name: delta.name ?? '', args: '' };\n map.set(delta.index, tc);\n }\n if (delta.id) tc.id = delta.id;\n if (delta.name) tc.name = delta.name;\n if (delta.argsFragment) tc.args += delta.argsFragment;\n};\n\nconst buildProviderRequest = (\n model: string,\n request: StepRequest,\n): ProviderRequest => {\n const providerTools = request.tools && request.tools.length > 0\n ? request.tools.map((tool) => ({\n type: 'function' as const,\n function: {\n name: tool.name,\n description: tool.description,\n parameters: tool.parameters,\n },\n }))\n : undefined;\n return {\n model,\n messages: request.messages.slice() as Message[],\n ...(providerTools && { tools: providerTools }),\n ...(request.toolChoice !== undefined && { toolChoice: request.toolChoice }),\n ...(request.responseFormat !== undefined && { responseFormat: request.responseFormat }),\n ...(request.options !== undefined && { options: request.options }),\n };\n};\n\nexport async function* executeStepStream(\n config: ExecuteStepStreamConfig,\n): AsyncGenerator<StepStreamEvent> {\n const providerRequest = buildProviderRequest(config.model, config.request);\n const abortSignal = config.streamOptions?.signal;\n\n let contentBuffer = '';\n let finishReason = 'unknown';\n const assembledToolCalls = new Map<number, AssembledToolCall>();\n // Replaced, not summed: a usage frame is the running total for the call, and Groq sends\n // the same frame twice on some calls.\n let totalUsage = { inputTokens: 0, outputTokens: 0, totalTokens: 0, reported: false };\n\n try {\n for await (const delta of config.adapter.chatStream(providerRequest, abortSignal ? { signal: abortSignal } : undefined)) {\n if (abortSignal?.aborted) return;\n\n switch (delta.type) {\n case 'text':\n contentBuffer += delta.text;\n yield { type: 'text', text: delta.text };\n break;\n case 'reasoning':\n yield { type: 'reasoning', text: delta.text };\n break;\n case 'tool_call':\n assembleToolCall(assembledToolCalls, delta);\n yield {\n type: 'tool_call_delta',\n index: delta.index,\n ...(delta.id !== undefined && { id: delta.id }),\n ...(delta.name !== undefined && { name: delta.name }),\n argsText: delta.argsFragment ?? '',\n };\n break;\n case 'usage':\n totalUsage = {\n inputTokens: delta.inputTokens,\n outputTokens: delta.outputTokens,\n totalTokens: delta.totalTokens,\n reported: true,\n };\n break;\n case 'finish':\n finishReason = delta.finishReason;\n break;\n }\n }\n } catch (error) {\n // By the signal's state, not the error's type: the adapter wraps every iteration error\n // in a SignalError, so no AbortError arrives here.\n if (abortSignal?.aborted) return;\n throw error;\n }\n\n const toolCalls: StepToolCall[] = [...assembledToolCalls.values()].map((tc) => {\n let parsed: unknown = tc.args;\n if (typeof tc.args === 'string' && tc.args.length > 0) {\n try {\n parsed = JSON.parse(tc.args);\n } catch {\n parsed = tc.args;\n }\n }\n return { id: tc.id, name: tc.name, args: parsed };\n });\n\n const result: StepResult = {\n content: contentBuffer,\n toolCalls,\n usage: totalUsage.reported ? totalUsage : estimateUsage(providerRequest.messages, contentBuffer, toolCalls),\n finishReason,\n raw: null,\n };\n\n yield { type: 'done', result };\n}\n","// For the no-schema return only. There `T` is `string` by construction (`createSignal()`\n// starts as `Signal<string>` and only `.schema()` changes `T`), which a generic body cannot\n// prove from a runtime `!schema` check.\nexport const asOutput = <T>(content: string): T => content as unknown as T;\n","import type { ZodType } from 'zod';\nimport { SignalError, ErrorCode } from './errors';\nimport { bareSchemaPrompt, bareSchemaCorrection } from './transport/protocol';\nimport { asOutput } from './output-trust';\nimport type {\n Capabilities,\n Message,\n SignalMeta,\n SignalOptions,\n SignalResult,\n StepRequest,\n StepResult,\n StepStreamEvent,\n StreamEvent,\n StreamOptions,\n Tool,\n ToolCallRecord,\n} from './types';\n\nexport type RunDeps = {\n stepStream: (request: StepRequest, options?: StreamOptions) => AsyncIterable<StepStreamEvent>;\n model: string;\n capabilities: Capabilities;\n};\n\nexport type RunSpec = {\n messages: Message[];\n schema?: ZodType | undefined;\n tools?: Tool[] | undefined;\n retries: number;\n options?: SignalOptions | undefined;\n streamOptions?: StreamOptions | undefined;\n onRetry?: ((error: Error, attempt: number) => void) | undefined;\n onToolCall?: ((name: string, args: unknown) => void) | undefined;\n};\n\nconst MAX_TOOL_TURNS = 10;\n\nconst ZERO = { inputTokens: 0, outputTokens: 0, totalTokens: 0 };\n\nconst stringify = (value: unknown): string => {\n if (typeof value === 'string') return value;\n try {\n return JSON.stringify(value) ?? String(value);\n } catch {\n return String(value);\n }\n};\n\n// Converted by the schema's own zod, not by ours: the caller's schema may come from another\n// zod copy, whose metadata is not in our registry.\nconst toJsonSchema = (schema: ZodType): Record<string, unknown> =>\n schema['~standard'].jsonSchema.output({ target: 'draft-07' });\n\nconst buildRequest = (spec: RunSpec, caps: Capabilities): Omit<StepRequest, 'messages'> => {\n const tools = spec.tools ?? [];\n if (tools.length > 0 && !caps.nativeTools) {\n throw new SignalError(\n 'This provider has no native tool calling (capabilities.nativeTools) — tools are unavailable here.',\n ErrorCode.PROVIDER_ERROR,\n );\n }\n const descriptors = tools.map((tool) => ({\n name: tool.name,\n description: tool.description,\n parameters: toJsonSchema(tool.inputSchema),\n }));\n const grammarViable =\n spec.schema !== undefined &&\n caps.nativeJsonSchema &&\n (tools.length === 0 || caps.toolsWithStructuredOutput);\n return {\n ...(descriptors.length > 0 && { tools: descriptors }),\n ...(spec.schema && { output: { accept: spec.schema } }),\n ...(grammarViable && spec.schema\n ? {\n responseFormat: {\n type: 'json_schema' as const,\n jsonSchema: { name: 'output', strict: false, schema: toJsonSchema(spec.schema) },\n },\n }\n : spec.schema !== undefined && caps.nativeJsonMode && tools.length === 0\n ? { responseFormat: { type: 'json_object' as const } }\n : {}),\n ...(spec.options && { options: spec.options }),\n };\n};\n\nconst buildMeta = (\n model: string,\n usage: typeof ZERO,\n start: number,\n retries: number,\n toolCalls: ToolCallRecord[],\n raws: unknown[],\n): SignalMeta => ({\n model,\n usage,\n durationMs: Date.now() - start,\n retries,\n toolCalls,\n provider: { raw: raws.length === 1 ? raws[0] : raws, errors: [] },\n});\n\nexport async function* runStream<T>(spec: RunSpec, deps: RunDeps): AsyncGenerator<StreamEvent<T>> {\n const start = Date.now();\n const requestBase = buildRequest(spec, deps.capabilities);\n const toolMap = new Map((spec.tools ?? []).map((tool) => [tool.name, tool]));\n\n const messages: Message[] = [...spec.messages];\n if (spec.schema && requestBase.responseFormat?.type !== 'json_schema') {\n messages.push({ role: 'system', content: bareSchemaPrompt(JSON.stringify(toJsonSchema(spec.schema))) });\n }\n\n let usage = ZERO;\n let retries = 0;\n const records: ToolCallRecord[] = [];\n const raws: unknown[] = [];\n\n for (let turn = 0; turn < MAX_TOOL_TURNS + spec.retries; turn += 1) {\n let result: StepResult | undefined;\n for await (const event of deps.stepStream({ ...requestBase, messages }, spec.streamOptions)) {\n if (event.type === 'text') yield { type: 'text', text: event.text };\n if (event.type === 'done') result = event.result;\n }\n if (!result) throw new SignalError('stream ended without a done event', ErrorCode.PROVIDER_ERROR);\n usage = {\n inputTokens: usage.inputTokens + result.usage.inputTokens,\n outputTokens: usage.outputTokens + result.usage.outputTokens,\n totalTokens: usage.totalTokens + result.usage.totalTokens,\n };\n raws.push(result.raw);\n\n const calls = result.outcome?.kind === 'tool_calls' ? result.outcome.calls : spec.schema ? [] : result.toolCalls;\n if (calls.length > 0) {\n messages.push({\n role: 'assistant',\n content: result.content,\n toolCalls: calls.map((call) => ({ id: call.id, name: call.name, args: stringify(call.args) })),\n });\n for (const call of calls) {\n spec.onToolCall?.(call.name, call.args);\n yield { type: 'tool_start', name: call.name, args: call.args };\n const tool = toolMap.get(call.name);\n const parsed = tool?.inputSchema.safeParse(call.args);\n const started = Date.now();\n let output: unknown;\n if (!tool) output = `error: unknown tool \"${call.name}\"`;\n else if (parsed && !parsed.success) {\n output = `error: input_invalid: ${parsed.error.issues.map((i) => `${i.path.join('.')}: ${i.message}`).join('; ')}`;\n } else {\n try {\n output = await tool.execute(parsed?.data);\n } catch (cause) {\n output = `error: ${cause instanceof Error ? cause.message : String(cause)}`;\n }\n }\n records.push({ name: call.name, args: call.args, result: output, durationMs: Date.now() - started });\n yield { type: 'tool_end', name: call.name, result: output };\n messages.push({ role: 'tool', toolCallId: call.id, name: call.name, content: stringify(output) });\n }\n continue;\n }\n\n if (!spec.schema) {\n const history: Message[] = [...messages, { role: 'assistant', content: result.content }];\n yield {\n type: 'done',\n response: asOutput<T>(result.content),\n history,\n meta: buildMeta(deps.model, usage, start, retries, records, raws),\n };\n return;\n }\n if (result.outcome?.kind === 'output') {\n const parsed = spec.schema.safeParse(result.outcome.value);\n if (parsed.success) {\n const history: Message[] = [...messages, { role: 'assistant', content: result.content }];\n yield {\n type: 'done',\n response: parsed.data as T,\n history,\n meta: buildMeta(deps.model, usage, start, retries, records, raws),\n };\n return;\n }\n }\n\n const evidence = result.outcome?.kind === 'failed' ? result.outcome.evidence : 'output failed schema validation';\n retries += 1;\n const error = new SignalError(`Response failed schema validation: ${evidence}`, ErrorCode.VALIDATION_FAILED);\n spec.onRetry?.(error, retries);\n if (retries > spec.retries) {\n yield { type: 'error', error, recovered: false };\n return;\n }\n yield { type: 'retry', reason: evidence, attempt: retries };\n if (result.content.length > 0) messages.push({ role: 'assistant', content: result.content });\n messages.push({ role: 'system', content: bareSchemaCorrection(evidence) });\n }\n throw new SignalError('Max tool iterations reached', ErrorCode.MAX_ITERATIONS);\n}\n\nexport const runComplete = async <T>(spec: RunSpec, deps: RunDeps): Promise<SignalResult<T>> => {\n for await (const event of runStream<T>(spec, deps)) {\n if (event.type === 'done') return { response: event.response, history: event.history, meta: event.meta };\n if (event.type === 'error') throw event.error;\n }\n throw new SignalError('run ended without a result', ErrorCode.PROVIDER_ERROR);\n};\n","export type ExtractResult = { ok: true; value: unknown } | { ok: false };\n\n// BOM, zero-width space, non-joiner and joiner, word joiner.\nconst INVISIBLES = /[​‌‍⁠]/g;\n\nconst tryParse = (text: string): ExtractResult => {\n try {\n return { ok: true, value: JSON.parse(text) };\n } catch {\n return { ok: false };\n }\n};\n\nconst spanCandidates = (text: string, open: string, close: string): string[] => {\n const first = text.indexOf(open);\n if (first < 0) return [];\n const candidates: string[] = [];\n for (let last = text.lastIndexOf(close); last > first; last = text.lastIndexOf(close, last - 1)) {\n candidates.push(text.slice(first, last + 1));\n if (candidates.length >= 8) break;\n }\n return candidates;\n};\n\nexport const extractJson = (content: string): ExtractResult => {\n const cleaned = content.replace(INVISIBLES, '').trim();\n if (cleaned.length === 0) return { ok: false };\n\n const direct = tryParse(cleaned);\n if (direct.ok) return direct;\n\n const fence = cleaned.match(/```(?:json)?\\s*\\n?([\\s\\S]*?)\\n?```/);\n const body = fence?.[1] !== undefined ? fence[1].trim() : cleaned;\n if (body !== cleaned) {\n const fenced = tryParse(body);\n if (fenced.ok) return fenced;\n }\n\n for (const candidate of [...spanCandidates(body, '{', '}'), ...spanCandidates(body, '[', ']')]) {\n const parsed = tryParse(candidate);\n if (parsed.ok) return parsed;\n }\n return { ok: false };\n};\n\nexport const repairEscapeDamage = (text: string): string[] => {\n const candidates: string[] = [];\n const noQuoteEscapes = text.replace(/\\\\'/g, \"'\");\n if (noQuoteEscapes !== text) candidates.push(noQuoteEscapes);\n const unescaped = text.replace(/\\\\\"/g, '\"').replace(/\\\\\\\\/g, '\\\\');\n if (unescaped !== text) candidates.push(unescaped);\n return candidates;\n};\n\nexport const decodeJsonish = (value: unknown): unknown => {\n if (typeof value !== 'string') return value;\n const trimmed = value.trim();\n if (!trimmed.startsWith('{') && !trimmed.startsWith('[')) return value;\n const direct = tryParse(trimmed);\n if (direct.ok) return direct.value;\n for (const repaired of repairEscapeDamage(trimmed)) {\n const parsed = tryParse(repaired);\n if (parsed.ok) return parsed.value;\n }\n return value;\n};\n\n// Some models send a nested array or object inside tool-call arguments as a JSON string.\nexport const deepDecodeJsonish = (value: unknown): unknown => {\n if (typeof value === 'string') {\n const decoded = decodeJsonish(value);\n return decoded === value ? value : deepDecodeJsonish(decoded);\n }\n if (Array.isArray(value)) return value.map(deepDecodeJsonish);\n if (typeof value === 'object' && value !== null) {\n const out: Record<string, unknown> = {};\n for (const [key, entry] of Object.entries(value)) out[key] = deepDecodeJsonish(entry);\n return out;\n }\n return value;\n};\n\n// A boundary is a position where cutting the text and appending the closers of everything\n// still open yields valid JSON: right after a completed value or a closed container.\ntype Frame = { type: 'obj' | 'arr'; expectingValue: boolean };\n\ntype Scan = {\n openAtEnd: number;\n boundary?: { end: number; closers: string };\n};\n\nconst LITERAL_CHARS = /[0-9a-zA-Z.+\\-]/;\n\nconst isCompleteLiteral = (buf: string): boolean => {\n if (buf === 'true' || buf === 'false' || buf === 'null') return true;\n return buf.length > 0 && !Number.isNaN(Number(buf));\n};\n\nconst scan = (text: string): Scan | undefined => {\n const stack: Frame[] = [];\n let inString = false;\n let escape = false;\n let stringIsValue = false;\n let literal = '';\n let boundary: Scan['boundary'];\n let started = false;\n\n const closers = (): string =>\n [...stack].reverse().map((frame) => (frame.type === 'obj' ? '}' : ']')).join('');\n\n const markBoundary = (end: number): void => {\n boundary = { end, closers: closers() };\n };\n\n const valueDone = (end: number): void => {\n const top = stack[stack.length - 1];\n if (top) top.expectingValue = false;\n markBoundary(end);\n };\n\n const endLiteral = (end: number): void => {\n if (literal.length === 0) return;\n if (isCompleteLiteral(literal)) valueDone(end);\n literal = '';\n };\n\n for (let i = 0; i < text.length; i += 1) {\n const ch = text[i] as string;\n\n if (inString) {\n if (escape) {\n escape = false;\n continue;\n }\n if (ch === '\\\\') {\n escape = true;\n continue;\n }\n if (ch === '\"') {\n inString = false;\n if (stringIsValue) valueDone(i + 1);\n }\n continue;\n }\n\n if (literal.length > 0 && !LITERAL_CHARS.test(ch)) endLiteral(i);\n\n switch (ch) {\n case '{': {\n started = true;\n stack.push({ type: 'obj', expectingValue: false });\n break;\n }\n case '[': {\n started = true;\n stack.push({ type: 'arr', expectingValue: true });\n break;\n }\n case '}':\n case ']': {\n if (stack.length === 0) return undefined;\n stack.pop();\n valueDone(i + 1);\n break;\n }\n case '\"': {\n const top = stack[stack.length - 1];\n inString = true;\n escape = false;\n stringIsValue = top === undefined || top.type === 'arr' || top.expectingValue;\n break;\n }\n case ':': {\n const top = stack[stack.length - 1];\n if (top?.type === 'obj') top.expectingValue = true;\n break;\n }\n case ',':\n break;\n default: {\n if (LITERAL_CHARS.test(ch)) {\n started = true;\n literal += ch;\n }\n break;\n }\n }\n }\n if (!inString) endLiteral(text.length);\n if (!started) return undefined;\n return { openAtEnd: stack.length + (inString ? 1 : 0), ...(boundary && { boundary }) };\n};\n\n// The torn tail is dropped, not closed: a clipped string that validates would be invented\n// data, and a missing member is something the caller's schema can catch.\nexport const closeTruncated = (content: string): string | undefined => {\n const cleaned = content.replace(INVISIBLES, '').trim();\n if (!cleaned.startsWith('{') && !cleaned.startsWith('[')) return undefined;\n if (tryParse(cleaned).ok) return undefined;\n const result = scan(cleaned);\n if (!result?.boundary || result.openAtEnd === 0) return undefined;\n const candidate = cleaned.slice(0, result.boundary.end) + result.boundary.closers;\n return tryParse(candidate).ok ? candidate : undefined;\n};\n\nexport const isTruncatedJson = (content: string): boolean => {\n const cleaned = content.replace(INVISIBLES, '').trim();\n if (!cleaned.startsWith('{') && !cleaned.startsWith('[')) return false;\n if (tryParse(cleaned).ok) return false;\n return (scan(cleaned)?.openAtEnd ?? 0) > 0;\n};\n","import { closeTruncated, isTruncatedJson } from '../repair';\nimport { SignalError } from '../../errors';\nimport type { Rejection } from '../../types';\nimport type { ErrorWireStrategy } from './index';\n\n// Groq answers a tool call or a response_format that fails its own validation with a 400\n// that carries the model's attempt in `error.failed_generation`, cut off at Groq's body cap.\nconst RECOVERABLE_CODES = new Set(['tool_use_failed', 'json_validate_failed']);\n\nconst prop = (obj: unknown, key: string): unknown =>\n obj !== null && typeof obj === 'object' ? (obj as Record<string, unknown>)[key] : undefined;\n\nconst unwrap = (error: unknown): unknown =>\n error instanceof SignalError ? (error.context?.['raw'] ?? error) : error;\n\nconst errorCode = (error: unknown): string | undefined => {\n const direct = prop(error, 'code');\n if (typeof direct === 'string') return direct;\n const nested = prop(prop(error, 'error'), 'code');\n return typeof nested === 'string' ? nested : undefined;\n};\n\nconst failedGenerationOf = (error: unknown): string | undefined => {\n const gen = prop(prop(error, 'error'), 'failed_generation');\n return typeof gen === 'string' && gen.trim().length > 0 ? gen : undefined;\n};\n\ntype CallShape = { name: string; args?: unknown; argsText: string };\n\nconst asCallShape = (value: unknown): CallShape | undefined => {\n const name = prop(value, 'name');\n if (typeof name !== 'string' || name.length === 0) return undefined;\n const args = prop(value, 'arguments');\n if (args === undefined) return undefined;\n if (typeof args === 'string') return { name, argsText: args };\n return { name, args, argsText: JSON.stringify(args) };\n};\n\nconst recover = (error: unknown): Rejection | undefined => {\n const raw = failedGenerationOf(unwrap(error));\n // Groq sends some rejections with no attempt. Empty, not undefined: undefined would\n // rethrow the error, and this way the turn comes back as a typed failure.\n if (raw === undefined) return { argsText: '', truncated: false };\n\n try {\n const parsed: unknown = JSON.parse(raw);\n const call = asCallShape(parsed);\n if (call) return { name: call.name, ...(call.args !== undefined && { args: call.args }), argsText: call.argsText, truncated: false };\n return { args: parsed, argsText: raw, truncated: false };\n } catch {\n const truncated = isTruncatedJson(raw);\n const closed = closeTruncated(raw);\n if (closed !== undefined) {\n try {\n const call = asCallShape(JSON.parse(closed));\n if (call) return { name: call.name, ...(call.args !== undefined && { args: call.args }), argsText: call.argsText, truncated };\n } catch {}\n }\n return { argsText: raw, truncated };\n }\n};\n\nexport const failedGeneration: ErrorWireStrategy = {\n id: 'failed-generation',\n hook: 'error',\n matches: (error) => {\n const code = errorCode(unwrap(error));\n return code !== undefined && RECOVERABLE_CODES.has(code);\n },\n recover,\n};\n","import type { ResponseWireStrategy } from './index';\n\n// OpenAI's 4o models sometimes answer with one JSON object per line where one value was\n// asked for. Last line first: the final line is usually the answer.\nexport const jsonlLines: ResponseWireStrategy = {\n id: 'jsonl-lines',\n hook: 'response',\n candidates: (content) => {\n const lines = content\n .split(/\\r?\\n/)\n .map((line) => line.trim())\n .filter((line) => line.startsWith('{') || line.startsWith('['));\n return lines.length > 1 ? lines.reverse() : [];\n },\n};\n","import type { Rejection } from '../../types';\nimport { failedGeneration } from './failed-generation';\nimport { jsonlLines } from './jsonl-lines';\n\nexport type ErrorWireStrategy = {\n id: string;\n hook: 'error';\n matches: (error: unknown) => boolean;\n recover: (error: unknown) => Rejection | undefined;\n};\n\nexport type ResponseWireStrategy = {\n id: string;\n hook: 'response';\n candidates: (content: string) => string[];\n};\n\nexport type WireStrategy = ErrorWireStrategy | ResponseWireStrategy;\n\nconst REGISTRY: Record<string, WireStrategy> = {\n [failedGeneration.id]: failedGeneration,\n [jsonlLines.id]: jsonlLines,\n};\n\nexport const resolveWireStrategies = (ids: ReadonlyArray<string>): WireStrategy[] =>\n ids.map((id) => {\n const strategy = REGISTRY[id];\n if (!strategy) throw new Error(`Unknown wire strategy \"${id}\" — known: ${Object.keys(REGISTRY).join(', ')}`);\n return strategy;\n });\n\nexport const errorStrategies = (strategies: ReadonlyArray<WireStrategy>): ErrorWireStrategy[] =>\n strategies.filter((strategy): strategy is ErrorWireStrategy => strategy.hook === 'error');\n\nexport const responseStrategies = (strategies: ReadonlyArray<WireStrategy>): ResponseWireStrategy[] =>\n strategies.filter((strategy): strategy is ResponseWireStrategy => strategy.hook === 'response');\n\nexport const recoverRejection = (\n strategies: ReadonlyArray<WireStrategy>,\n error: unknown,\n): { strategy: string; rejection: Rejection } | undefined => {\n for (const strategy of errorStrategies(strategies)) {\n if (!strategy.matches(error)) continue;\n const rejection = strategy.recover(error);\n if (rejection) return { strategy: strategy.id, rejection };\n }\n return undefined;\n};\n\nexport { failedGeneration, jsonlLines };\n","import type { ZodType } from 'zod';\nimport { decodeJsonish, deepDecodeJsonish, extractJson, repairEscapeDamage, closeTruncated, isTruncatedJson } from './repair';\nimport type { Rejection, StepOutcome, StepToolCall, WireReport } from '../types';\nimport type { ResponseWireStrategy } from './strategies';\n\nexport type RouteRequest = {\n content: string;\n toolCalls: ReadonlyArray<StepToolCall>;\n declared: ReadonlySet<string>;\n outputTool?: string | undefined;\n accept?: ZodType | undefined;\n responseStrategies: ReadonlyArray<ResponseWireStrategy>;\n};\n\nexport type Routed = { outcome: StepOutcome; wire: WireReport };\n\nconst toolTurn = (calls: StepToolCall[], notes: string[]): Routed => ({\n outcome: { kind: 'tool_calls', calls },\n wire: notes.length > 0 ? { notes } : {},\n});\n\nconst output = (value: unknown, rung: string, note?: string): Routed => ({\n outcome: { kind: 'output', value },\n wire: note === undefined ? { rung } : { rung, notes: [note] },\n});\n\nconst failed = (evidence: string, flags: { truncated?: boolean } = {}): Routed => ({\n outcome: {\n kind: 'failed',\n evidence,\n ...(flags.truncated === true && { truncated: true }),\n },\n wire: {},\n});\n\ntype Candidate = { value: unknown; rung: string };\n\nconst tryParse = (text: string): { ok: true; value: unknown } | { ok: false; why: string } => {\n try {\n return { ok: true, value: JSON.parse(text) };\n } catch (error) {\n return { ok: false, why: error instanceof Error ? error.message : String(error) };\n }\n};\n\n// The untouched text only: every later rung parses text this file has altered, so its\n// complaint describes a repair and not what the model wrote.\nconst whyNotJson = (text: string): string | undefined => {\n const direct = tryParse(text.trim());\n return direct.ok ? undefined : direct.why;\n};\n\nfunction* ladder(text: string, strategies: ReadonlyArray<ResponseWireStrategy>): Generator<Candidate> {\n const trimmed = text.trim();\n if (trimmed.length === 0) return;\n\n const direct = tryParse(trimmed);\n if (direct.ok) yield { value: direct.value, rung: 'parse' };\n\n const extracted = extractJson(trimmed);\n if (extracted.ok) yield { value: extracted.value, rung: 'extract' };\n\n for (const repaired of repairEscapeDamage(trimmed)) {\n const parsed = tryParse(repaired);\n if (parsed.ok) yield { value: parsed.value, rung: 'repair-escapes' };\n }\n\n for (const strategy of strategies) {\n for (const candidateText of strategy.candidates(trimmed)) {\n const parsed = tryParse(candidateText);\n if (parsed.ok) yield { value: parsed.value, rung: strategy.id };\n }\n }\n\n const closed = closeTruncated(trimmed);\n if (closed !== undefined) {\n const parsed = tryParse(closed);\n if (parsed.ok) yield { value: parsed.value, rung: 'close-truncated' };\n }\n}\n\nconst firstAccepted = (\n candidates: Iterable<Candidate>,\n accept: ZodType,\n): { winner?: Candidate; nearMiss?: string } => {\n let nearMiss: string | undefined;\n for (const candidate of candidates) {\n const direct = accept.safeParse(candidate.value);\n if (direct.success) return { winner: candidate };\n const deep = deepDecodeJsonish(candidate.value);\n if (deep !== candidate.value && accept.safeParse(deep).success) {\n return { winner: { value: deep, rung: `${candidate.rung}+deep-decode` } };\n }\n nearMiss ??= direct.error.issues\n .map((issue) => `${issue.path.join('.') || '(root)'}: ${issue.message}`)\n .join('; ');\n }\n return { ...(nearMiss !== undefined && { nearMiss }) };\n};\n\nconst decodedCall = (call: StepToolCall): StepToolCall => ({ ...call, args: decodeJsonish(call.args) });\n\nconst finishAttempt = (call: StepToolCall, request: RouteRequest): Routed | undefined => {\n if (!request.accept) return undefined;\n const source: Iterable<Candidate> =\n typeof call.args === 'string'\n ? ladder(call.args, request.responseStrategies)\n : [{ value: call.args, rung: 'call-args' }];\n const { winner, nearMiss } = firstAccepted(source, request.accept);\n if (winner) {\n const note = call.name === request.outputTool ? undefined : `output arrived as a call to undeclared tool \"${call.name}\"`;\n return output(winner.value, winner.rung, note);\n }\n if (nearMiss !== undefined) {\n return failed(`the call to \"${call.name}\" carried an invalid output: ${nearMiss}`);\n }\n return undefined;\n};\n\nconst contentEvidence = (content: string, nearMiss: string | undefined): string => {\n if (nearMiss !== undefined) return nearMiss;\n const snippet = content.trim().slice(0, 160);\n if (snippet.length === 0) return 'the turn produced no output';\n const why = whyNotJson(content);\n return why === undefined\n ? `output is not valid JSON — it began: ${snippet}`\n : `output is not valid JSON: ${why}. It began: ${snippet}`;\n};\n\nconst contentTurn = (request: RouteRequest): Routed => {\n if (!request.accept) return failed('no acceptance schema for a content turn');\n const { winner, nearMiss } = firstAccepted(ladder(request.content, request.responseStrategies), request.accept);\n if (winner) return output(winner.value, winner.rung);\n return failed(contentEvidence(request.content, nearMiss), {\n truncated: isTruncatedJson(request.content),\n });\n};\n\nexport const routeResponse = (request: RouteRequest): Routed => {\n const isExit = (call: StepToolCall): boolean => call.name === request.outputTool;\n const domainCalls = request.toolCalls.filter((call) => request.declared.has(call.name) && !isExit(call));\n const attempts = request.toolCalls.filter((call) => !request.declared.has(call.name) || isExit(call));\n\n if (domainCalls.length > 0) {\n const dropped = attempts.map((call) => `dropped call to \"${call.name}\" in a mixed turn — finish attempts must come alone`);\n return toolTurn(domainCalls.map(decodedCall), dropped);\n }\n for (const call of attempts) {\n const routed = finishAttempt(call, request);\n if (routed) return routed;\n }\n if (attempts.length > 0) {\n return failed(`called unknown tool(s) ${attempts.map((call) => `\"${call.name}\"`).join(', ')}`);\n }\n return contentTurn(request);\n};\n\nlet recoveredCallCounter = 0;\n\nexport const routeRejection = (rejection: Rejection, request: Omit<RouteRequest, 'content' | 'toolCalls'>): Routed => {\n const name = rejection.name;\n if (name !== undefined && request.declared.has(name) && name !== request.outputTool) {\n recoveredCallCounter += 1;\n const args = rejection.args ?? decodeJsonish(rejection.argsText);\n return toolTurn([{ id: `recovered_${recoveredCallCounter}`, name, args }], []);\n }\n\n const call: StepToolCall = { id: '', name: name ?? '', args: rejection.args ?? rejection.argsText };\n const routed = finishAttempt(call, { ...request, content: '', toolCalls: [] });\n if (routed) {\n if (routed.outcome.kind === 'failed' && rejection.truncated) {\n return { ...routed, outcome: { ...routed.outcome, truncated: true } };\n }\n return routed;\n }\n return failed(\n rejection.argsText.length > 0\n ? `provider rejected the attempt${name !== undefined ? ` (call to unknown tool \"${name}\")` : ''} and nothing salvageable remained`\n : 'provider rejected the attempt; nothing was recovered',\n { truncated: rejection.truncated },\n );\n};\n","import { type ZodType } from 'zod';\nimport type {\n Message, ContentPart, Tool, SignalOptions, Capabilities, ReasoningEffort,\n SignalResult, StreamEvent, StepStreamEvent, StreamOptions,\n ProviderAdapter, ChatAdapter, DecisionAdapter, ProviderRequest, ProviderResponse, Rejection,\n StepRequest, StepResult, StepToolCall, CountInput,\n EmbedOptions, Questions, DecideRequest, DecideResult,\n} from './types';\nimport type { SignalConfig, CustomProviderConfig } from './config';\nimport { estimateUsage } from './utils/estimate-usage';\nimport { SignalError, ErrorCode } from './errors';\nimport { providerRegistry, modelEntry, resolveApiKey, UNMEASURED_MODEL, type ModelEntry, type ProviderEntry } from './registry';\nimport { createOpenAICompatibleAdapter } from './adapters/openai-compatible.adapter';\nimport { createAnthropicAdapter } from './adapters/anthropic.adapter';\nimport { createGoogleAdapter } from './adapters/google.adapter';\nimport { createSystemOneAdapter } from './adapters/systemone.adapter';\nimport { assertQuestions, acceptCalibrated, acceptUncalibrated, uncalibratedSchemaOf } from './decide/gate';\nimport { decisionEmulationPrompt } from './transport/protocol';\nimport { executeStepStream } from './stream/execute-step-stream';\nimport { runComplete, runStream } from './run';\nimport { resolveWireStrategies, responseStrategies, recoverRejection, type WireStrategy } from './wire/strategies';\nimport { routeResponse, routeRejection } from './wire/router';\n\nexport type Signal<T = string> = {\n apiKey: (key: string) => Signal<T>;\n model: (model: string) => Signal<T>;\n systemPrompt: (prompt: string) => Signal<T>;\n history: (messages: Message[]) => Signal<T>;\n schema: <U>(schema: ZodType<U>) => Signal<U>;\n tools: (tools: Tool[]) => Signal<T>;\n retries: (count: number) => Signal<T>;\n options: (opts: SignalOptions) => Signal<T>;\n onRetry: (handler: (error: Error, attempt: number) => void) => Signal<T>;\n onToolCall: (handler: (name: string, args: unknown) => void) => Signal<T>;\n\n complete: (input: string | ContentPart[]) => Promise<SignalResult<T>>;\n stream: (input: string | ContentPart[], options?: StreamOptions) => AsyncIterable<StreamEvent<T>>;\n\n describe: () => SignalDescription;\n\n step: (request: StepRequest) => Promise<StepResult>;\n stepStream: (request: StepRequest, options?: StreamOptions) => AsyncIterable<StepStreamEvent>;\n count: (input: CountInput) => Promise<number>;\n\n embed: {\n (input: string, options?: EmbedOptions): Promise<number[]>;\n (input: string[], options?: EmbedOptions): Promise<number[][]>;\n };\n\n decide: <const Qs extends Questions>(request: DecideRequest<Qs>) => Promise<DecideResult<Qs>>;\n};\n\nexport type SignalDescription = {\n provider: string; // registry name, or the custom baseUrl\n model: string | undefined;\n kind: ProviderAdapter['kind'];\n capabilities: Capabilities;\n modelKnown: boolean;\n};\n\ntype ResolvedProvider = {\n model: string;\n apiKey: string;\n baseUrl: string;\n adapterType: ProviderEntry['adapter'];\n reasoningRequest?: Record<string, unknown>;\n};\n\nconst resolveProvider = (config: SignalConfig): ResolvedProvider => {\n if (typeof config.provider === 'string') {\n const entry = providerRegistry[config.provider];\n if (!entry) throw new SignalError(`Unknown provider: ${config.provider}`, ErrorCode.PROVIDER_NOT_FOUND);\n const apiKey = resolveApiKey(entry.envKey, config.apiKey);\n if (!apiKey) throw new SignalError(`Missing API key for ${config.provider}. Set ${entry.envKey} or pass apiKey.`, ErrorCode.MISSING_API_KEY);\n return {\n model: config.model ?? entry.defaultModel,\n apiKey,\n baseUrl: entry.baseUrl,\n adapterType: entry.adapter,\n ...(entry.adapter !== 'systemone' && entry.reasoningRequest !== undefined && { reasoningRequest: entry.reasoningRequest }),\n };\n }\n\n const custom = config.provider;\n const apiKey = custom.apiKey ?? config.apiKey;\n if (!apiKey) throw new SignalError('Missing API key for custom provider', ErrorCode.MISSING_API_KEY);\n const model = config.model ?? custom.model;\n if (!model) throw new SignalError('Missing model for custom provider', ErrorCode.MISSING_MODEL);\n return { model, apiKey, baseUrl: custom.baseUrl, adapterType: custom.adapter ?? 'openai-compatible' };\n};\n\nconst FALLBACK_CAPABILITIES: Capabilities = {\n nativeTools: false,\n nativeJsonSchema: false,\n nativeJsonMode: false,\n toolsWithStructuredOutput: false,\n validatesToolArgs: false,\n manglesNestedToolArgs: false,\n multimodal: false,\n supportsEmbedding: false,\n};\n\n// Read without resolving a key: describe() must not throw for a missing one.\nconst adapterTypeOf = (config: SignalConfig): ProviderEntry['adapter'] | undefined =>\n typeof config.provider === 'string'\n ? providerRegistry[config.provider]?.adapter\n : config.provider.adapter ?? 'openai-compatible';\n\nconst kindOf = (adapterType: ProviderEntry['adapter'] | undefined): ProviderAdapter['kind'] =>\n adapterType === 'systemone' ? 'decisions' : 'chat';\n\nconst modelRowOf = (config: SignalConfig): { provider: string; model: string; row: ModelEntry | undefined } | undefined => {\n if (typeof config.provider !== 'string') return undefined;\n const entry = providerRegistry[config.provider];\n if (entry === undefined) return undefined;\n const model = config.model ?? entry.defaultModel;\n return { provider: config.provider, model, row: modelEntry(config.provider, model) };\n};\n\nconst resolveCapabilities = (config: SignalConfig): Capabilities => {\n if (typeof config.provider === 'string') {\n const entry = providerRegistry[config.provider];\n if (entry === undefined || entry.adapter === 'systemone') return FALLBACK_CAPABILITIES;\n return { ...entry.endpoint, ...(modelRowOf(config)?.row?.capabilities ?? UNMEASURED_MODEL) };\n }\n const declared = config.provider.adapter === 'systemone' ? {} : config.provider.capabilities;\n return { ...FALLBACK_CAPABILITIES, ...declared };\n};\n\nconst assertEffort = (config: SignalConfig, effort: ReasoningEffort | undefined): void => {\n if (effort === undefined) return;\n const resolved = modelRowOf(config);\n const row = resolved?.row;\n if (resolved === undefined || row === undefined || row.reasoningEfforts.includes(effort)) return;\n const accepted = row.reasoningEfforts.length === 0 ? 'nothing — it takes no reasoning effort' : row.reasoningEfforts.join(', ');\n throw new SignalError(\n `reasoningEffort \"${effort}\" is not accepted by ${resolved.provider} ${resolved.model} (accepts: ${accepted}; measured ${row.verified})`,\n ErrorCode.VALIDATION_FAILED,\n );\n};\n\nconst wireIdsOf = (config: SignalConfig): string[] => {\n const source = typeof config.provider === 'string' ? providerRegistry[config.provider] : config.provider;\n return source === undefined || source.adapter === 'systemone' ? [] : source.wire ?? [];\n};\n\nconst createAdapter = async (resolved: ResolvedProvider, client: unknown): Promise<ProviderAdapter> => {\n switch (resolved.adapterType) {\n case 'openai-compatible':\n return createOpenAICompatibleAdapter({ apiKey: resolved.apiKey, baseUrl: resolved.baseUrl, client, ...(resolved.reasoningRequest !== undefined && { reasoningRequest: resolved.reasoningRequest }) });\n case 'anthropic':\n return createAnthropicAdapter({ apiKey: resolved.apiKey, client });\n case 'google':\n return createGoogleAdapter({ apiKey: resolved.apiKey, client });\n case 'systemone':\n return createSystemOneAdapter({ apiKey: resolved.apiKey, baseUrl: resolved.baseUrl, client });\n }\n};\n\nconst buildMessages = (config: SignalConfig, input: string | ContentPart[]): Message[] => {\n const messages: Message[] = [];\n if (config.systemPrompt) messages.push({ role: 'system', content: config.systemPrompt });\n if (config.history) messages.push(...config.history);\n messages.push({ role: 'user', content: input });\n return messages;\n};\n\nconst recoveredStepResult = (\n recovered: { strategy: string; rejection: Rejection },\n routed: ReturnType<typeof routeRejection>,\n raw: unknown,\n sent: readonly Message[],\n): StepResult => ({\n content: '',\n toolCalls: routed.outcome.kind === 'tool_calls' ? routed.outcome.calls : [],\n // The provider bills a rejected generation and its 400 carries no usage.\n usage: estimateUsage(sent, recovered.rejection.argsText, routed.outcome.kind === 'tool_calls' ? routed.outcome.calls : []),\n finishReason: 'error_recovered',\n raw,\n outcome: routed.outcome,\n wire: {\n ...routed.wire,\n recovered: {\n strategy: recovered.strategy,\n ...(recovered.rejection.name !== undefined && { name: recovered.rejection.name }),\n truncated: recovered.rejection.truncated,\n },\n },\n});\n\nconst createSignalFromConfig = <T = string>(config: SignalConfig): Signal<T> => {\n let cachedAdapter: ProviderAdapter | undefined;\n let cachedAdapterKey: string | undefined;\n\n const wireStrategies: WireStrategy[] = resolveWireStrategies(wireIdsOf(config));\n\n assertEffort(config, config.options?.reasoningEffort);\n\n const getAdapter = async (): Promise<ProviderAdapter> => {\n const resolved = resolveProvider(config);\n const key = `${resolved.adapterType}:${resolved.baseUrl}:${resolved.apiKey}`;\n if (cachedAdapter && cachedAdapterKey === key) return cachedAdapter;\n cachedAdapter = await createAdapter(resolved, config.client);\n cachedAdapterKey = key;\n return cachedAdapter;\n };\n\n const getChatAdapter = async (verb: string): Promise<ChatAdapter> => {\n const adapter = await getAdapter();\n if (adapter.kind === 'chat') return adapter;\n throw new SignalError(\n `${verb}() is not available on a decision provider — it answers decide() and generates no text`,\n ErrorCode.VERB_NOT_SUPPORTED,\n { verb, adapter: adapter.id },\n );\n };\n\n const fork = <U = T>(override: Partial<SignalConfig>): Signal<U> =>\n createSignalFromConfig<U>({ ...config, ...override });\n\n const step = async (request: StepRequest): Promise<StepResult> => {\n const adapter = await getChatAdapter('step');\n const resolved = resolveProvider(config);\n const messages = request.messages.slice() as Message[];\n const providerTools = request.tools && request.tools.length > 0\n ? request.tools.map((tool) => ({\n type: 'function' as const,\n function: {\n name: tool.name,\n description: tool.description,\n parameters: tool.parameters,\n },\n }))\n : undefined;\n const providerRequest: ProviderRequest = {\n model: resolved.model,\n messages,\n ...(providerTools && { tools: providerTools }),\n ...(request.toolChoice !== undefined && { toolChoice: request.toolChoice }),\n ...(request.responseFormat !== undefined && { responseFormat: request.responseFormat }),\n ...((config.options !== undefined || request.options !== undefined) && {\n options: { ...config.options, ...request.options },\n }),\n };\n assertEffort(config, providerRequest.options?.reasoningEffort);\n const declared = new Set((request.tools ?? []).map((tool) => tool.name));\n let response: ProviderResponse;\n try {\n response = await adapter.chat(providerRequest);\n } catch (error) {\n const recovered = recoverRejection(wireStrategies, error);\n if (!recovered) throw error;\n const routed = routeRejection(recovered.rejection, {\n declared,\n ...(request.output && { accept: request.output.accept }),\n ...(request.output?.outputTool !== undefined && { outputTool: request.output.outputTool }),\n responseStrategies: responseStrategies(wireStrategies),\n });\n return recoveredStepResult(recovered, routed, error, providerRequest.messages);\n }\n const toolCalls: StepToolCall[] = (response.toolCalls ?? []).map((call) => {\n let parsed: unknown = call.args;\n if (typeof call.args === 'string') {\n try {\n parsed = JSON.parse(call.args);\n } catch {\n parsed = call.args;\n }\n }\n return { id: call.id, name: call.name, args: parsed };\n });\n const result: StepResult = {\n content: response.content,\n toolCalls,\n // A non-streaming body always carries usage, so a zero here is a reported zero.\n usage: { ...response.usage, reported: true },\n finishReason: response.finishReason,\n raw: response.raw,\n };\n if (!request.output) return result;\n const routed = routeResponse({\n content: result.content,\n toolCalls: result.toolCalls,\n declared,\n accept: request.output.accept,\n ...(request.output.outputTool !== undefined && { outputTool: request.output.outputTool }),\n responseStrategies: responseStrategies(wireStrategies),\n });\n return { ...result, outcome: routed.outcome, wire: routed.wire };\n };\n\n const stepStreamAs = (verb: string) => (request: StepRequest, streamOptions?: StreamOptions): AsyncIterable<StepStreamEvent> => {\n const run = async function* (): AsyncGenerator<StepStreamEvent> {\n const adapter = await getChatAdapter(verb);\n const resolved = resolveProvider(config);\n const declared = new Set((request.tools ?? []).map((tool) => tool.name));\n const merged: StepRequest =\n config.options !== undefined || request.options !== undefined\n ? { ...request, options: { ...config.options, ...request.options } }\n : request;\n assertEffort(config, merged.options?.reasoningEffort);\n try {\n for await (const event of executeStepStream({\n adapter,\n model: resolved.model,\n request: merged,\n ...(streamOptions && { streamOptions }),\n })) {\n if (event.type === 'done' && request.output) {\n const routed = routeResponse({\n content: event.result.content,\n toolCalls: event.result.toolCalls,\n declared,\n accept: request.output.accept,\n ...(request.output.outputTool !== undefined && { outputTool: request.output.outputTool }),\n responseStrategies: responseStrategies(wireStrategies),\n });\n yield { type: 'done', result: { ...event.result, outcome: routed.outcome, wire: routed.wire } };\n continue;\n }\n yield event;\n }\n } catch (error) {\n // A provider's 400 can land on the first chunk read, not only when the stream is\n // created, so the catch covers the iteration too.\n const recovered = recoverRejection(wireStrategies, error);\n if (!recovered) throw error;\n const routed = routeRejection(recovered.rejection, {\n declared,\n ...(request.output && { accept: request.output.accept }),\n ...(request.output?.outputTool !== undefined && { outputTool: request.output.outputTool }),\n responseStrategies: responseStrategies(wireStrategies),\n });\n yield { type: 'done', result: recoveredStepResult(recovered, routed, error, request.messages) };\n }\n };\n return run();\n };\n const stepStream = stepStreamAs('stepStream');\n\n const decideCalibrated = async <Qs extends Questions>(\n adapter: DecisionAdapter,\n model: string,\n request: DecideRequest<Qs>,\n started: number,\n ): Promise<DecideResult<Qs>> => {\n const response = await adapter.decide(\n { model, state: request.state, questions: request.questions },\n request.options?.signal !== undefined ? { signal: request.options.signal } : undefined,\n );\n const decisions = acceptCalibrated(request.questions, response.answers, response.raw);\n const inputTokens = response.usage?.inputTokens ?? 0;\n const outputTokens = response.usage?.outputTokens ?? 0;\n return {\n calibrated: true,\n decisions,\n meta: {\n model: response.model ?? model,\n usage: { inputTokens, outputTokens, totalTokens: inputTokens + outputTokens, reported: response.usage !== undefined },\n durationMs: Date.now() - started,\n provider: { raw: response.raw },\n },\n };\n };\n\n const decideEmulated = async <Qs extends Questions>(\n model: string,\n request: DecideRequest<Qs>,\n started: number,\n ): Promise<DecideResult<Qs>> => {\n const state = typeof request.state === 'string' ? request.state : JSON.stringify(request.state);\n const result = await runComplete<unknown>(\n {\n messages: [{ role: 'user', content: decisionEmulationPrompt(state) }],\n schema: uncalibratedSchemaOf(request.questions),\n tools: undefined,\n retries: config.retries ?? 2,\n options: config.options,\n ...(request.options?.signal !== undefined && { streamOptions: { signal: request.options.signal } }),\n },\n { stepStream, model, capabilities: resolveCapabilities(config) },\n );\n return {\n calibrated: false,\n decisions: acceptUncalibrated(request.questions, result.response, result.meta.provider.raw),\n meta: {\n model: result.meta.model,\n // complete() adds reported usage to estimated usage and does not say which.\n usage: { ...result.meta.usage, reported: false },\n durationMs: Date.now() - started,\n provider: { raw: result.meta.provider.raw },\n },\n };\n };\n\n return {\n apiKey: (key) => fork({ apiKey: key }),\n model: (m) => fork({ model: m }),\n systemPrompt: (prompt) => fork({ systemPrompt: prompt }),\n history: (msgs) => fork({ history: msgs }),\n schema: <U>(s: ZodType<U>) => fork<U>({ schema: s }),\n tools: (t) => fork({ tools: t }),\n retries: (count) => fork({ retries: count }),\n options: (opts) => fork({ options: { ...config.options, ...opts } }),\n onRetry: (handler) => fork({ onRetry: handler }),\n onToolCall: (handler) => fork({ onToolCall: handler }),\n\n describe: (): SignalDescription => {\n if (typeof config.provider === 'string') {\n const entry = providerRegistry[config.provider];\n return {\n provider: config.provider,\n model: config.model ?? entry?.defaultModel,\n kind: kindOf(adapterTypeOf(config)),\n capabilities: resolveCapabilities(config),\n modelKnown: modelRowOf(config)?.row !== undefined,\n };\n }\n return {\n provider: config.provider.baseUrl,\n model: config.model ?? config.provider.model,\n kind: kindOf(adapterTypeOf(config)),\n capabilities: resolveCapabilities(config),\n modelKnown: false,\n };\n },\n\n complete: async (input): Promise<SignalResult<T>> =>\n runComplete<T>(\n {\n messages: buildMessages(config, input),\n schema: config.schema,\n tools: config.tools,\n retries: config.retries ?? 2,\n options: config.options,\n onRetry: config.onRetry,\n onToolCall: config.onToolCall,\n },\n { stepStream: stepStreamAs('complete'), model: resolveProvider(config).model, capabilities: resolveCapabilities(config) },\n ),\n\n stream: (input, streamOptions) =>\n runStream<T>(\n {\n messages: buildMessages(config, input),\n schema: config.schema,\n tools: config.tools,\n retries: config.retries ?? 2,\n options: config.options,\n streamOptions,\n onRetry: config.onRetry,\n onToolCall: config.onToolCall,\n },\n { stepStream: stepStreamAs('stream'), model: resolveProvider(config).model, capabilities: resolveCapabilities(config) },\n ),\n\n step,\n stepStream,\n\n embed: (async (input: string | string[], options?: EmbedOptions): Promise<number[] | number[][]> => {\n const adapter = await getChatAdapter('embed');\n if (!adapter.embed) {\n throw new SignalError('This provider does not support embedding', ErrorCode.PROVIDER_ERROR);\n }\n const resolved = resolveProvider(config);\n const response = await adapter.embed({\n model: resolved.model,\n input,\n dimensions: options?.dimensions,\n });\n options?.onUsage?.(response.usage, resolved.model);\n if (typeof input === 'string') {\n const vector = response.embeddings[0];\n if (!vector) throw new SignalError('No embedding returned', ErrorCode.PROVIDER_ERROR);\n return vector;\n }\n return response.embeddings;\n }) as Signal<T>['embed'],\n\n decide: async <const Qs extends Questions>(request: DecideRequest<Qs>): Promise<DecideResult<Qs>> => {\n assertQuestions(request.questions);\n const started = Date.now();\n const adapter = await getAdapter();\n const model = resolveProvider(config).model;\n return adapter.kind === 'decisions'\n ? decideCalibrated(adapter, model, request, started)\n : decideEmulated(model, request, started);\n },\n\n count: async (input: CountInput): Promise<number> => {\n const CHARS_PER_TOKEN = 4;\n if (typeof input === 'string') {\n return Math.ceil(input.length / CHARS_PER_TOKEN);\n }\n let total = 0;\n for (const msg of input) {\n total += 4; // per-message overhead\n if (typeof msg.content === 'string') {\n total += Math.ceil(msg.content.length / CHARS_PER_TOKEN);\n continue;\n }\n for (const part of msg.content) {\n if (part.type === 'text') {\n total += Math.ceil(part.text.length / CHARS_PER_TOKEN);\n } else {\n total += 256;\n }\n }\n }\n return total;\n },\n };\n};\n\nexport const createSignal = (\n provider: string | CustomProviderConfig,\n options?: Partial<Omit<SignalConfig, 'provider'>>,\n): Signal<string> =>\n createSignalFromConfig<string>({ provider, ...options });\n","import type { z } from 'zod';\nimport type { Tool, ToolConfig } from '../types';\n\nexport const defineTool = <TInput>(config: ToolConfig<TInput>): Tool => ({\n name: config.name,\n description: config.description,\n inputSchema: config.input as z.ZodType,\n execute: config.execute as (input: unknown) => Promise<unknown> | unknown,\n});\n","import type { ZodType } from 'zod';\nimport type { Capabilities, ResponseFormat, StepToolDescriptor } from '../types';\nimport { SignalError, ErrorCode } from '../errors';\nimport { RESPOND_DESCRIPTION, corrections, finishProtocol, type ProtocolSpec } from './protocol';\n\nexport type OutputTransport = 'respond' | 'native' | 'emit';\n\nexport type ResponseMode = 'required' | 'optional';\n\nexport type TransportSpec = {\n wire: ZodType;\n looseWire: ZodType;\n responseMode: ResponseMode;\n hasData: boolean;\n hasTools: boolean;\n choice?: 'auto' | OutputTransport;\n forceTool?: boolean;\n};\n\nexport type ResolvedTransport = {\n transport: OutputTransport;\n responseMode: ResponseMode;\n respondDetail?: 'full' | 'loose' | 'permissive';\n respondDescriptor?: StepToolDescriptor;\n outputToolName?: string;\n responseFormat?: ResponseFormat;\n toolChoice?: 'required';\n injectSchemaDoc: boolean;\n finishProtocol: string;\n corrections: { termination: string; invalidOutput: string };\n};\n\nexport const RESPOND_TOOL_NAME = 'respond';\n\nconst FULL_PARAMS_MAX_CHARS = 8_192;\n\ntype SchemaAnalysis = { serialized: Record<string, unknown> | null; hasRef: boolean; size: number };\n\nconst analyzeWireSchema = (schema: ZodType): SchemaAnalysis => {\n try {\n const serialized = schema['~standard'].jsonSchema.output({ target: 'draft-07' });\n const text = JSON.stringify(serialized);\n return { serialized, hasRef: text.includes('\"$ref\"'), size: text.length };\n } catch {\n return { serialized: null, hasRef: false, size: Number.POSITIVE_INFINITY };\n }\n};\n\n// Converted by the schema's own zod, not by ours: the caller's schema may come from another\n// zod copy, whose metadata is not in our registry.\nconst toJsonSchemaRecord = (schema: ZodType): Record<string, unknown> => {\n const convert = schema['~standard'].jsonSchema.output;\n try {\n return convert({ target: 'draft-07' });\n } catch {\n return convert({ target: 'draft-07', libraryOptions: { unrepresentable: 'any' } });\n }\n};\n\n// A provider that validates tool arguments answers a mismatch with a 400 for the whole\n// request, which loses an attempt the repair ladder would have saved. So its params name\n// the envelope fields and constrain nothing.\nconst respondParams = (\n spec: TransportSpec,\n caps: Capabilities,\n analysis: SchemaAnalysis,\n fullIsViable: boolean,\n): { detail: 'full' | 'loose' | 'permissive'; parameters: Record<string, unknown> } => {\n if (caps.validatesToolArgs) {\n return {\n detail: 'permissive',\n parameters: {\n type: 'object',\n properties: spec.hasData ? { response: {}, data: {}, reasoning: {} } : { response: {}, reasoning: {} },\n },\n };\n }\n if (!spec.hasData || fullIsViable) {\n return { detail: 'full', parameters: analysis.serialized ?? toJsonSchemaRecord(spec.wire) };\n }\n return { detail: 'loose', parameters: toJsonSchemaRecord(spec.looseWire) };\n};\n\nconst protocolSpec = (transport: OutputTransport, spec: TransportSpec, injectSchemaDoc: boolean): ProtocolSpec => ({\n transport,\n responseMode: spec.responseMode,\n hasData: spec.hasData,\n hasTools: spec.hasTools,\n injectSchemaDoc,\n});\n\nexport const resolveTransport = (spec: TransportSpec, caps: Capabilities): ResolvedTransport => {\n const analysis = analyzeWireSchema(spec.wire);\n const fullIsViable = analysis.serialized !== null && !analysis.hasRef && analysis.size <= FULL_PARAMS_MAX_CHARS;\n\n const nativeIsViable = caps.nativeJsonSchema && fullIsViable && (!spec.hasTools || caps.toolsWithStructuredOutput);\n\n const choice = spec.choice ?? 'auto';\n if (choice === 'native' && !nativeIsViable) {\n throw new SignalError(\n spec.hasTools && !caps.toolsWithStructuredOutput\n ? 'transport \"native\" needs a provider that combines tools with response_format (capabilities.toolsWithStructuredOutput)'\n : 'transport \"native\" needs capabilities.nativeJsonSchema and a wire schema that serializes small and non-recursive',\n ErrorCode.VALIDATION_FAILED,\n );\n }\n\n // `respond` is picked only where its tool params enforce the contract. Anywhere else it\n // adds a synthetic tool and the contract rides the prompt, as it does under `emit`.\n const respondEnforces = !caps.validatesToolArgs && !caps.manglesNestedToolArgs && (!spec.hasData || fullIsViable);\n\n let transport: OutputTransport;\n if (choice !== 'auto') transport = choice;\n else if (nativeIsViable && spec.hasData) transport = 'native';\n else if (respondEnforces || spec.forceTool) transport = 'respond';\n else transport = 'emit';\n\n if (transport === 'emit' && spec.forceTool) {\n throw new SignalError(\n 'output.forceTool cannot combine with the emit transport — the final turn must be a content-only message',\n ErrorCode.VALIDATION_FAILED,\n );\n }\n\n if (transport === 'native') {\n const serialized = analysis.serialized ?? toJsonSchemaRecord(spec.wire);\n const injectSchemaDoc = false;\n return {\n transport,\n responseMode: spec.responseMode,\n responseFormat: {\n type: 'json_schema',\n // Strict mode rejects open records and several keywords; non-strict still constrains.\n jsonSchema: { name: 'envelope', strict: false, schema: serialized },\n },\n injectSchemaDoc,\n finishProtocol: finishProtocol(protocolSpec(transport, spec, injectSchemaDoc)),\n corrections: corrections(transport),\n };\n }\n\n if (transport === 'emit') {\n const injectSchemaDoc = spec.hasData;\n return {\n transport,\n responseMode: spec.responseMode,\n injectSchemaDoc,\n finishProtocol: finishProtocol(protocolSpec(transport, spec, injectSchemaDoc)),\n corrections: corrections(transport),\n };\n }\n\n const { detail: respondDetail, parameters } = respondParams(spec, caps, analysis, fullIsViable);\n const injectSchemaDoc = spec.hasData && respondDetail !== 'full';\n return {\n transport,\n responseMode: spec.responseMode,\n respondDetail,\n respondDescriptor: { name: RESPOND_TOOL_NAME, description: RESPOND_DESCRIPTION, parameters },\n outputToolName: RESPOND_TOOL_NAME,\n ...(spec.forceTool && { toolChoice: 'required' as const }),\n injectSchemaDoc,\n finishProtocol: finishProtocol(protocolSpec(transport, spec, injectSchemaDoc)),\n corrections: corrections(transport),\n };\n};\n","import type { z } from 'zod';\n\nexport type ImageSource =\n | { type: 'url'; url: string }\n | { type: 'base64'; mediaType: string; data: string };\n\nexport type ContentPart =\n | { type: 'text'; text: string }\n | { type: 'image'; source: ImageSource };\n\nexport type AssistantToolCall = {\n id: string;\n name: string;\n // A JSON string, as the OpenAI wire carries it.\n args: string;\n};\n\nexport type Message =\n | { role: 'system'; content: string }\n | { role: 'user'; content: string | ContentPart[] }\n | { role: 'assistant'; content: string; toolCalls?: AssistantToolCall[] }\n | { role: 'tool'; toolCallId: string; name: string; content: string };\n\nexport type ToolConfig<TInput = unknown> = {\n name: string;\n description: string;\n input: z.ZodType<TInput>;\n execute: (input: TInput) => Promise<unknown> | unknown;\n};\n\nexport type Tool = {\n name: string;\n description: string;\n inputSchema: z.ZodType;\n execute: (input: unknown) => Promise<unknown> | unknown;\n};\n\nexport type ToolCallRecord = {\n name: string;\n args: unknown;\n result: unknown;\n durationMs: number;\n};\n\nexport type EndpointCapabilities = {\n nativeTools: boolean;\n nativeJsonMode: boolean;\n validatesToolArgs: boolean;\n supportsEmbedding: boolean;\n};\n\nexport type ModelCapabilities = {\n nativeJsonSchema: boolean;\n toolsWithStructuredOutput: boolean;\n manglesNestedToolArgs: boolean;\n multimodal: boolean;\n};\n\nexport type Capabilities = EndpointCapabilities & ModelCapabilities;\n\n// Every value some provider accepts, not one provider's scale: `default` is Groq's for\n// Qwen, `xhigh` and `max` are OpenRouter's.\nexport const REASONING_EFFORTS = ['none', 'default', 'minimal', 'low', 'medium', 'high', 'xhigh', 'max'] as const;\nexport type ReasoningEffort = (typeof REASONING_EFFORTS)[number];\n\nexport type SignalOptions = {\n temperature?: number;\n maxTokens?: number;\n topP?: number;\n stopSequences?: string[];\n seed?: number;\n signal?: AbortSignal;\n reasoningEffort?: ReasoningEffort;\n};\n\nexport type ProviderError = {\n code: string;\n message: string;\n recovered: boolean;\n raw?: unknown;\n};\n\nexport type SignalMeta = {\n model: string;\n usage: {\n inputTokens: number;\n outputTokens: number;\n totalTokens: number;\n };\n durationMs: number;\n retries: number;\n toolCalls: ToolCallRecord[];\n provider: {\n raw: unknown;\n errors: ProviderError[];\n };\n};\n\nexport type SignalResult<T> = {\n response: T;\n history: Message[];\n meta: SignalMeta;\n};\n\nexport type StepToolCall = {\n id: string;\n name: string;\n args: unknown;\n};\n\nexport type StepInputMessage =\n | Message\n | {\n role: 'tool';\n toolCallId: string;\n name: string;\n content: string;\n };\n\nexport type Rejection = {\n name?: string;\n args?: unknown;\n argsText: string;\n truncated: boolean;\n};\n\nexport type StepOutcome =\n | { kind: 'tool_calls'; calls: StepToolCall[] }\n // `value` is the accepted candidate as it arrived, not the schema's parsed output: the\n // acceptance schema gates and does not transform.\n | { kind: 'output'; value: unknown }\n | { kind: 'failed'; evidence: string; truncated?: boolean };\n\nexport type WireReport = {\n rung?: string;\n recovered?: { strategy: string; name?: string; truncated: boolean };\n notes?: string[];\n};\n\nexport type StepToolDescriptor = {\n name: string;\n description: string;\n parameters: Record<string, unknown>;\n};\n\nexport type ResponseFormat =\n | {\n type: 'json_schema';\n jsonSchema: { name: string; strict: boolean; schema: Record<string, unknown> };\n }\n | { type: 'json_object' };\n\nexport type StepRequest = {\n messages: ReadonlyArray<StepInputMessage>;\n tools?: ReadonlyArray<StepToolDescriptor>;\n toolChoice?: 'auto' | 'none' | 'required' | { name: string };\n output?: { accept: z.ZodType; outputTool?: string };\n responseFormat?: ResponseFormat;\n options?: SignalOptions;\n};\n\nexport type StepResult = {\n content: string;\n toolCalls: StepToolCall[];\n // `reported: false` means the provider sent no usage and the numbers are an estimate:\n // OpenAI-compatible streams do not reliably send the usage frame.\n usage: {\n inputTokens: number;\n outputTokens: number;\n totalTokens: number;\n reported: boolean;\n };\n finishReason: string;\n raw: unknown;\n outcome?: StepOutcome;\n wire?: WireReport;\n};\n\nexport type CountInput = string | ReadonlyArray<StepInputMessage>;\n\nexport type EmbedOptions = {\n dimensions?: number;\n onUsage?: (usage: { inputTokens: number; totalTokens: number }, model: string) => void;\n};\n\nexport type EmbedRequest = {\n model: string;\n input: string | string[];\n dimensions?: number;\n};\n\nexport type EmbedResponse = {\n embeddings: number[][];\n usage: {\n inputTokens: number;\n totalTokens: number;\n };\n};\n\nexport type ChoiceQuestion<K extends string = string> = {\n type: 'choice';\n instructions: string;\n criteria: Record<K, string>;\n};\n\n// `criteria` lists the levels lowest first; a level is its index.\nexport type ScoreQuestion = {\n type: 'score';\n instructions: string;\n criteria: readonly string[];\n};\n\n// A yes/no, answered as the probability of yes.\nexport type NoulQuestion = {\n type: 'noul';\n instructions: string;\n criteria?: { true: string; false: string };\n};\n\nexport type Question = ChoiceQuestion | ScoreQuestion | NoulQuestion;\nexport type Questions = Record<string, Question>;\n\nexport type DecideState = string | Record<string, unknown> | readonly unknown[];\n\nexport type UncalibratedDecision<Q extends Question> =\n Q extends ChoiceQuestion<infer K> ? { choice: K }\n : Q extends ScoreQuestion ? { level: number }\n : { answer: boolean };\n\n// `level` is the most probable level and `score` the probability-weighted one; `answer`\n// is `noul >= 0.5`.\nexport type CalibratedDecision<Q extends Question> =\n Q extends ChoiceQuestion<infer K> ? { choice: K; probabilities: Record<K, number>; confidence: number }\n : Q extends ScoreQuestion ? { level: number; score: number; probabilities: number[]; confidence: number }\n : { answer: boolean; noul: number };\n\nexport type DecideRequest<Qs extends Questions> = {\n state: DecideState;\n questions: Qs;\n options?: { signal?: AbortSignal };\n};\n\nexport type DecideMeta = {\n model: string;\n usage: { inputTokens: number; outputTokens: number; totalTokens: number; reported: boolean };\n durationMs: number;\n provider: { raw: unknown };\n};\n\n// A text model returns picks and no probabilities. The uncalibrated branch has none\n// in its type: an invented 1.0 would clear every caller's threshold.\nexport type DecideResult<Qs extends Questions> =\n | { calibrated: true; decisions: { [N in keyof Qs]: CalibratedDecision<Qs[N]> }; meta: DecideMeta }\n | { calibrated: false; decisions: { [N in keyof Qs]: UncalibratedDecision<Qs[N]> }; meta: DecideMeta };\n\nexport type StreamEvent<T> =\n | { type: 'text'; text: string }\n | { type: 'tool_start'; name: string; args: unknown }\n | { type: 'tool_end'; name: string; result: unknown }\n | { type: 'retry'; reason: string; attempt: number }\n | { type: 'error'; error: Error; recovered: boolean }\n | { type: 'done'; response: T; history: Message[]; meta: SignalMeta };\n\nexport type StepStreamEvent =\n | { type: 'text'; text: string }\n | { type: 'reasoning'; text: string }\n | { type: 'tool_call_delta'; index: number; id?: string; name?: string; argsText: string }\n | { type: 'done'; result: StepResult };\n\nexport type StreamOptions = {\n signal?: AbortSignal;\n};\n\nexport type ProviderStreamDelta =\n | { type: 'text'; text: string }\n | { type: 'reasoning'; text: string }\n | { type: 'tool_call'; index: number; id?: string; name?: string; argsFragment?: string }\n | { type: 'usage'; inputTokens: number; outputTokens: number; totalTokens: number }\n | { type: 'finish'; finishReason: string };\n\nexport type ProviderRequest = {\n model: string;\n messages: Message[];\n responseFormat?: ResponseFormat;\n tools?: Array<{\n type: 'function';\n function: { name: string; description: string; parameters: Record<string, unknown> };\n }>;\n toolChoice?: 'auto' | 'none' | 'required' | { name: string };\n options?: SignalOptions;\n};\n\nexport type ProviderResponse = {\n content: string;\n toolCalls?: Array<{\n id: string;\n name: string;\n args: string;\n }>;\n usage: {\n inputTokens: number;\n outputTokens: number;\n totalTokens: number;\n };\n finishReason: string;\n raw: unknown;\n};\n\nexport type ChatAdapter = {\n kind: 'chat';\n id: string;\n chat: (request: ProviderRequest) => Promise<ProviderResponse>;\n chatStream: (request: ProviderRequest, options?: { signal?: AbortSignal }) => AsyncIterable<ProviderStreamDelta>;\n embed?: (request: EmbedRequest) => Promise<EmbedResponse>;\n};\n\nexport type DecisionAdapter = {\n kind: 'decisions';\n id: string;\n decide: (request: DecisionRequest, options?: { signal?: AbortSignal }) => Promise<DecisionResponse>;\n};\n\nexport type ProviderAdapter = ChatAdapter | DecisionAdapter;\n\nexport type DecisionRequest = {\n model: string;\n state: DecideState;\n questions: Questions;\n};\n\nexport type DecisionResponse = {\n model?: string;\n answers: unknown;\n usage?: { inputTokens: number; outputTokens: number };\n raw: unknown;\n};\n"]}
1
+ {"version":3,"sources":["../src/utils/estimate-usage.ts","../src/errors.ts","../src/registry.ts","../src/utils/sdk-loader.ts","../src/adapters/openai-compatible.adapter.ts","../src/adapters/anthropic.adapter.ts","../src/adapters/google.adapter.ts","../src/adapters/systemone.adapter.ts","../src/transport/protocol.ts","../src/decide/gate.ts","../src/stream/execute-step-stream.ts","../src/output-trust.ts","../src/run.ts","../src/wire/repair.ts","../src/wire/strategies/failed-generation.ts","../src/wire/strategies/jsonl-lines.ts","../src/wire/strategies/index.ts","../src/wire/router.ts","../src/signal.ts","../src/tools/define-tool.ts","../src/transport/resolve.ts","../src/types.ts"],"names":["fn","z","output","tryParse","apiKey","routed","CHARS_PER_TOKEN","injectSchemaDoc"],"mappings":"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","file":"index.cjs","sourcesContent":["import type { Message, StepToolCall } from '../types';\n\nconst CHARS_PER_TOKEN = 4;\nconst PER_MESSAGE = 4;\n\nconst lengthOf = (content: unknown): number => (typeof content === 'string' ? content.length : JSON.stringify(content ?? '').length);\n\nexport const estimateUsage = (\n messages: readonly Message[],\n content: string,\n toolCalls: readonly StepToolCall[] = [],\n): { inputTokens: number; outputTokens: number; totalTokens: number; reported: false } => {\n let inputTokens = 0;\n for (const message of messages) inputTokens += PER_MESSAGE + Math.ceil(lengthOf(message.content) / CHARS_PER_TOKEN);\n const emitted = content + toolCalls.map((call) => `${call.name}${JSON.stringify(call.args)}`).join('');\n const outputTokens = Math.ceil(emitted.length / CHARS_PER_TOKEN);\n return { inputTokens, outputTokens, totalTokens: inputTokens + outputTokens, reported: false };\n};\n","export const ErrorCode = {\n PROVIDER_NOT_FOUND: 'E_PROVIDER_NOT_FOUND',\n MISSING_API_KEY: 'E_MISSING_API_KEY',\n MISSING_MODEL: 'E_MISSING_MODEL',\n MISSING_SDK: 'E_MISSING_SDK',\n VALIDATION_FAILED: 'E_VALIDATION_FAILED',\n MAX_RETRIES: 'E_MAX_RETRIES',\n MAX_ITERATIONS: 'E_MAX_ITERATIONS',\n PROVIDER_ERROR: 'E_PROVIDER_ERROR',\n TOOL_NOT_FOUND: 'E_TOOL_NOT_FOUND',\n TOOL_EXECUTION: 'E_TOOL_EXECUTION',\n TOOL_VALIDATION: 'E_TOOL_VALIDATION',\n VERB_NOT_SUPPORTED: 'E_VERB_NOT_SUPPORTED',\n} as const;\n\nexport type ErrorCode = (typeof ErrorCode)[keyof typeof ErrorCode];\n\nexport class SignalError extends Error {\n readonly code: ErrorCode;\n readonly context?: Record<string, unknown>;\n\n constructor(message: string, code: ErrorCode, context?: Record<string, unknown>) {\n super(message);\n this.name = 'SignalError';\n this.code = code;\n this.context = context;\n }\n}\n","import type { EndpointCapabilities, ModelCapabilities, ReasoningEffort, SignalOptions } from './types';\n\ntype ProviderEntryBase = {\n id: string;\n baseUrl: string;\n envKey: string;\n defaultModel: string;\n};\n\nexport type ChatProviderEntry = ProviderEntryBase & {\n adapter: 'openai-compatible' | 'anthropic' | 'google';\n endpoint: EndpointCapabilities;\n wire?: string[];\n reasoningRequest?: Record<string, unknown>;\n};\n\nexport type DecisionProviderEntry = ProviderEntryBase & {\n adapter: 'systemone';\n};\n\nexport type ProviderEntry = ChatProviderEntry | DecisionProviderEntry;\n\nexport type ModelEntry = {\n capabilities: ModelCapabilities;\n reasoningEfforts: readonly ReasoningEffort[];\n verified: string;\n};\n\nexport const providerRegistry: Record<string, ProviderEntry> = {\n groq: {\n id: 'groq',\n baseUrl: 'https://api.groq.com/openai/v1',\n envKey: 'GROQ_API_KEY',\n defaultModel: 'qwen/qwen3.8-27b',\n endpoint: {\n nativeTools: true,\n nativeJsonMode: true,\n validatesToolArgs: true,\n supportsEmbedding: false,\n },\n adapter: 'openai-compatible',\n wire: ['failed-generation'],\n reasoningRequest: { reasoning_format: 'parsed' },\n },\n openai: {\n id: 'openai',\n baseUrl: 'https://api.openai.com/v1',\n envKey: 'OPENAI_API_KEY',\n defaultModel: 'gpt-4o',\n endpoint: {\n nativeTools: true,\n nativeJsonMode: true,\n validatesToolArgs: false,\n supportsEmbedding: true,\n },\n adapter: 'openai-compatible',\n wire: ['jsonl-lines'],\n },\n openrouter: {\n id: 'openrouter',\n baseUrl: 'https://openrouter.ai/api/v1',\n envKey: 'OPENROUTER_API_KEY',\n defaultModel: 'openai/gpt-4o',\n endpoint: {\n nativeTools: true,\n nativeJsonMode: true,\n validatesToolArgs: false,\n supportsEmbedding: false,\n },\n adapter: 'openai-compatible',\n reasoningRequest: { reasoning: { enabled: true } },\n },\n anthropic: {\n id: 'anthropic',\n baseUrl: 'https://api.anthropic.com/v1',\n envKey: 'ANTHROPIC_API_KEY',\n defaultModel: 'claude-sonnet-4-20250514',\n endpoint: {\n nativeTools: true,\n nativeJsonMode: true,\n validatesToolArgs: false,\n supportsEmbedding: false,\n },\n adapter: 'anthropic',\n },\n google: {\n id: 'google',\n baseUrl: 'https://generativelanguage.googleapis.com/v1beta',\n envKey: 'GOOGLE_API_KEY',\n defaultModel: 'gemini-2.0-flash',\n endpoint: {\n nativeTools: true,\n nativeJsonMode: true,\n validatesToolArgs: false,\n supportsEmbedding: false,\n },\n adapter: 'google',\n },\n typesafe: {\n id: 'typesafe',\n baseUrl: 'https://api.typesafe.ai/v1',\n envKey: 'TYPESAFE_API_KEY',\n defaultModel: 'jev-latest',\n adapter: 'systemone',\n },\n};\n\n// A row is the output of scripts/probe-model.ts, not typed by hand.\n// On OpenRouter, reasoningEfforts is what the proxy accepts, not what the routed model\n// honours: it passes `reasoning_effort` through even to non-reasoning models.\nexport const modelRegistry: Record<string, ModelEntry> = {\n 'groq/qwen/qwen3.8-27b': {\n capabilities: { nativeJsonSchema: false, toolsWithStructuredOutput: false, manglesNestedToolArgs: true, multimodal: true },\n reasoningEfforts: ['none', 'default', 'low', 'medium', 'high'],\n verified: '2026-09-24',\n },\n 'groq/openai/gpt-oss-120b': {\n capabilities: { nativeJsonSchema: true, toolsWithStructuredOutput: false, manglesNestedToolArgs: true, multimodal: false },\n reasoningEfforts: ['low', 'medium', 'high'],\n verified: '2026-09-24',\n },\n 'groq/openai/gpt-oss-20b': {\n capabilities: { nativeJsonSchema: true, toolsWithStructuredOutput: false, manglesNestedToolArgs: true, multimodal: false },\n reasoningEfforts: ['low', 'medium', 'high'],\n verified: '2026-09-24',\n },\n 'openai/gpt-4o': {\n capabilities: { nativeJsonSchema: true, toolsWithStructuredOutput: true, manglesNestedToolArgs: false, multimodal: true },\n reasoningEfforts: [],\n verified: '2026-09-24',\n },\n 'openai/gpt-4o-mini': {\n capabilities: { nativeJsonSchema: true, toolsWithStructuredOutput: true, manglesNestedToolArgs: false, multimodal: true },\n reasoningEfforts: [],\n verified: '2026-09-24',\n },\n 'openai/gpt-4.1-mini': {\n capabilities: { nativeJsonSchema: true, toolsWithStructuredOutput: true, manglesNestedToolArgs: false, multimodal: true },\n reasoningEfforts: [],\n verified: '2026-09-24',\n },\n 'openrouter/qwen/qwen3.8-27b': {\n capabilities: { nativeJsonSchema: true, toolsWithStructuredOutput: true, manglesNestedToolArgs: false, multimodal: true },\n reasoningEfforts: ['none', 'minimal', 'low', 'medium', 'high', 'xhigh', 'max'],\n verified: '2026-09-24',\n },\n 'openrouter/openai/gpt-4o': {\n capabilities: { nativeJsonSchema: true, toolsWithStructuredOutput: true, manglesNestedToolArgs: false, multimodal: true },\n reasoningEfforts: ['none', 'minimal', 'low', 'medium', 'high', 'xhigh', 'max'],\n verified: '2026-09-24',\n },\n 'openrouter/openai/gpt-4o-mini': {\n capabilities: { nativeJsonSchema: true, toolsWithStructuredOutput: true, manglesNestedToolArgs: false, multimodal: true },\n reasoningEfforts: ['none', 'minimal', 'low', 'medium', 'high', 'xhigh', 'max'],\n verified: '2026-09-24',\n },\n 'openrouter/openai/gpt-oss-120b': {\n capabilities: { nativeJsonSchema: false, toolsWithStructuredOutput: true, manglesNestedToolArgs: false, multimodal: false },\n reasoningEfforts: ['minimal', 'low', 'medium', 'high', 'xhigh', 'max'],\n verified: '2026-09-24',\n },\n 'openrouter/z-ai/glm-5.2': {\n capabilities: { nativeJsonSchema: true, toolsWithStructuredOutput: true, manglesNestedToolArgs: true, multimodal: false },\n reasoningEfforts: ['none', 'minimal', 'low', 'medium', 'high', 'xhigh', 'max'],\n verified: '2026-09-24',\n },\n 'openrouter/openai/gpt-5.6-luna': {\n capabilities: { nativeJsonSchema: true, toolsWithStructuredOutput: true, manglesNestedToolArgs: false, multimodal: true },\n reasoningEfforts: ['none', 'minimal', 'low', 'medium', 'high', 'xhigh', 'max'],\n verified: '2026-09-24',\n },\n 'openrouter/openai/gpt-oss-20b': {\n capabilities: { nativeJsonSchema: false, toolsWithStructuredOutput: true, manglesNestedToolArgs: false, multimodal: false },\n reasoningEfforts: ['minimal', 'low', 'medium', 'high', 'xhigh', 'max'],\n verified: '2026-09-24',\n },\n 'openrouter/meta-llama/llama-3.3-70b-instruct': {\n capabilities: { nativeJsonSchema: false, toolsWithStructuredOutput: true, manglesNestedToolArgs: true, multimodal: false },\n reasoningEfforts: ['none', 'minimal', 'low', 'medium', 'high', 'xhigh', 'max'],\n verified: '2026-09-24',\n },\n};\n\nexport const UNMEASURED_MODEL: ModelCapabilities = {\n nativeJsonSchema: false,\n toolsWithStructuredOutput: false,\n manglesNestedToolArgs: true,\n multimodal: false,\n};\n\nexport const modelKey = (provider: string, model: string): string => `${provider}/${model}`;\n\nexport const modelEntry = (provider: string, model: string): ModelEntry | undefined => modelRegistry[modelKey(provider, model)];\n\n// The options a request to a model gets when the caller sets none: what its maker recommends, or what the provider\n// needs. Typed from their documentation, beside the registry, whose rows stay the probe's output.\nexport type ModelDefaults = Pick<SignalOptions, 'temperature' | 'topP' | 'maxTokens'>;\n\n// OpenAI's sampling for gpt-oss: at temperature 0 its reasoning repeats one sentence until the budget runs out.\n// Groq ends a completion at 3,072 tokens unless asked for more, and reasoning alone can pass that.\nconst GPT_OSS_ON_GROQ: ModelDefaults = { temperature: 1, topP: 1, maxTokens: 16_384 };\n\nexport const modelDefaults: Record<string, ModelDefaults> = {\n 'groq/openai/gpt-oss-120b': GPT_OSS_ON_GROQ,\n 'groq/openai/gpt-oss-20b': GPT_OSS_ON_GROQ,\n};\n\nexport const resolveApiKey = (envKey: string, explicitKey?: string): string | undefined =>\n explicitKey ?? (typeof process !== 'undefined' ? process.env?.[envKey] : undefined);\n\nexport const chatProviderEntry = (id: string): ChatProviderEntry | undefined => {\n const entry = providerRegistry[id];\n return entry === undefined || entry.adapter === 'systemone' ? undefined : entry;\n};\n","import { SignalError, ErrorCode } from '../errors';\n\nexport const loadSdk = async (pkg: string): Promise<unknown> => {\n try {\n const mod = await import(/* @vite-ignore */ pkg);\n return mod.default ?? mod;\n } catch {\n throw new SignalError(\n `Missing dependency: ${pkg}. Install it with: pnpm add ${pkg}`,\n ErrorCode.MISSING_SDK,\n { package: pkg },\n );\n }\n};\n","import type { ChatAdapter, ProviderRequest, ProviderResponse, ProviderStreamDelta, EmbedRequest, EmbedResponse, Message, ContentPart } from '../types';\nimport { SignalError, ErrorCode } from '../errors';\nimport { loadSdk } from '../utils/sdk-loader';\n\ntype OpenAIMessage = {\n role: string;\n content: string | Array<{ type: string; text?: string; image_url?: { url: string } }> | null;\n tool_calls?: Array<{ id: string; type: string; function: { name: string; arguments: string } }>;\n tool_call_id?: string;\n};\n\ntype OpenAICompletion = {\n choices?: Array<{\n message?: {\n role: string;\n content?: string | null;\n tool_calls?: Array<{\n id: string;\n type: string;\n function: { name: string; arguments: string };\n }>;\n };\n finish_reason?: string;\n }>;\n usage?: {\n prompt_tokens?: number;\n completion_tokens?: number;\n total_tokens?: number;\n };\n};\n\ntype RequestOptions = { signal?: AbortSignal };\n\ntype ChatCreateFn = {\n (params: Record<string, unknown> & { stream: true }, options?: RequestOptions): Promise<OpenAIStream>;\n (params: Record<string, unknown>, options?: RequestOptions): Promise<OpenAICompletion>;\n};\n\ntype OpenAIStreamChunk = {\n choices?: Array<{\n delta?: {\n content?: string | null;\n // Neither is in the SDK's delta type. OpenRouter and Groq's gpt-oss send `reasoning`;\n // GLM and DeepSeek send `reasoning_content`.\n reasoning?: string | null;\n reasoning_content?: string | null;\n tool_calls?: Array<{\n index: number;\n id?: string;\n function?: { name?: string; arguments?: string };\n }>;\n };\n finish_reason?: string | null;\n }>;\n usage?: {\n prompt_tokens?: number;\n completion_tokens?: number;\n total_tokens?: number;\n };\n};\n\ntype OpenAIStream = AsyncIterable<OpenAIStreamChunk>;\n\ntype OpenAIEmbeddingResponse = {\n data?: Array<{ embedding: number[]; index: number }>;\n usage?: { prompt_tokens?: number; total_tokens?: number };\n};\n\ntype EmbedCreateFn = (params: Record<string, unknown>) => Promise<OpenAIEmbeddingResponse>;\n\nconst translateContentParts = (parts: ContentPart[]): Array<{ type: string; text?: string; image_url?: { url: string } }> =>\n parts.map((part) => {\n if (part.type === 'text') return { type: 'text', text: part.text };\n if (part.type === 'image') {\n const url = part.source.type === 'url'\n ? part.source.url\n : `data:${part.source.mediaType};base64,${part.source.data}`;\n return { type: 'image_url', image_url: { url } };\n }\n return { type: 'text', text: '' };\n });\n\nconst translateMessage = (msg: Message): OpenAIMessage => {\n switch (msg.role) {\n case 'system':\n return { role: 'system', content: msg.content };\n case 'user':\n return {\n role: 'user',\n content: typeof msg.content === 'string'\n ? msg.content\n : translateContentParts(msg.content),\n };\n case 'assistant': {\n const out: OpenAIMessage = { role: 'assistant', content: msg.content };\n if (msg.toolCalls && msg.toolCalls.length > 0) {\n out.tool_calls = msg.toolCalls.map((tc) => ({\n id: tc.id,\n type: 'function',\n function: { name: tc.name, arguments: tc.args },\n }));\n }\n return out;\n }\n case 'tool':\n return { role: 'tool', content: msg.content, tool_call_id: msg.toolCallId };\n default:\n return { role: 'user', content: '' };\n }\n};\n\nconst bindAt = <T>(obj: unknown, path: readonly string[]): T | undefined => {\n let parent: unknown;\n let current = obj;\n for (const key of path) {\n if (!current || typeof current !== 'object') return undefined;\n parent = current;\n current = (current as Record<string, unknown>)[key];\n }\n return typeof current === 'function' ? ((current as (...args: unknown[]) => unknown).bind(parent) as T) : undefined;\n};\n\nconst createSdkInstance = async (config: OpenAICompatibleConfig): Promise<unknown> => {\n const Sdk = await loadSdk('openai');\n const Constructor = (typeof Sdk === 'function' ? Sdk : (Sdk as Record<string, unknown>)['default']) as\n new (params: { apiKey?: string; baseURL?: string; dangerouslyAllowBrowser?: boolean }) => unknown;\n\n return new Constructor({\n apiKey: config.apiKey,\n baseURL: config.baseUrl,\n dangerouslyAllowBrowser: typeof globalThis.window !== 'undefined',\n });\n};\n\nconst loadSdkFn = async <T>(\n config: OpenAICompatibleConfig,\n path: readonly string[],\n missing: { message: string; code: ErrorCode },\n strictClient: boolean,\n): Promise<T> => {\n if (config.client) {\n const fn = bindAt<T>(config.client, path);\n if (fn) return fn;\n if (strictClient) {\n throw new SignalError(`Invalid client: expected client.${path.join('.')} to be a function`, ErrorCode.PROVIDER_ERROR);\n }\n }\n const fn = bindAt<T>(await createSdkInstance(config), path);\n if (!fn) throw new SignalError(missing.message, missing.code);\n return fn;\n};\n\nconst loadChatCreateFn = (config: OpenAICompatibleConfig): Promise<ChatCreateFn> =>\n loadSdkFn(config, ['chat', 'completions', 'create'], { message: 'Failed to initialize OpenAI SDK', code: ErrorCode.MISSING_SDK }, true);\n\nconst loadEmbedCreateFn = (config: OpenAICompatibleConfig): Promise<EmbedCreateFn> =>\n loadSdkFn(\n config,\n ['embeddings', 'create'],\n { message: 'Embedding is not supported by this provider or SDK', code: ErrorCode.PROVIDER_ERROR },\n false,\n );\n\nexport type OpenAICompatibleConfig = {\n apiKey: string;\n baseUrl: string;\n client?: unknown;\n reasoningRequest?: Record<string, unknown>;\n};\n\nexport const createOpenAICompatibleAdapter = async (\n config: OpenAICompatibleConfig,\n): Promise<ChatAdapter> => {\n const chatCreate = await loadChatCreateFn(config);\n\n const buildParams = (request: ProviderRequest): Record<string, unknown> => {\n const params: Record<string, unknown> = {\n model: request.model,\n messages: request.messages.map(translateMessage),\n };\n if (request.responseFormat) {\n params['response_format'] = request.responseFormat.type === 'json_schema'\n ? { type: 'json_schema', json_schema: request.responseFormat.jsonSchema }\n : { type: 'json_object' };\n }\n if (request.tools?.length) params['tools'] = request.tools;\n if (request.toolChoice !== undefined) {\n params['tool_choice'] = typeof request.toolChoice === 'string'\n ? request.toolChoice\n : { type: 'function', function: { name: request.toolChoice.name } };\n }\n if (request.options?.temperature !== undefined) params['temperature'] = request.options.temperature;\n if (request.options?.maxTokens !== undefined) params['max_completion_tokens'] = request.options.maxTokens;\n if (request.options?.topP !== undefined) params['top_p'] = request.options.topP;\n if (request.options?.stopSequences) params['stop'] = request.options.stopSequences;\n if (request.options?.seed !== undefined) params['seed'] = request.options.seed;\n if (request.options?.reasoningEffort !== undefined)\n params['reasoning_effort'] = request.options.reasoningEffort;\n return params;\n };\n\n const chat = async (request: ProviderRequest): Promise<ProviderResponse> => {\n const params = buildParams(request);\n\n let completion: OpenAICompletion;\n try {\n completion = await chatCreate(params);\n } catch (error) {\n throw new SignalError(\n `Provider error: ${error instanceof Error ? error.message : String(error)}`,\n ErrorCode.PROVIDER_ERROR,\n { raw: error },\n );\n }\n\n const choice = completion.choices?.[0];\n return {\n content: choice?.message?.content ?? '',\n toolCalls: choice?.message?.tool_calls?.map((tc) => ({\n id: tc.id,\n name: tc.function.name,\n args: tc.function.arguments,\n })),\n usage: {\n inputTokens: completion.usage?.prompt_tokens ?? 0,\n outputTokens: completion.usage?.completion_tokens ?? 0,\n totalTokens: completion.usage?.total_tokens ?? 0,\n },\n finishReason: choice?.finish_reason ?? 'unknown',\n raw: completion,\n };\n };\n\n async function* chatStream(request: ProviderRequest, options?: RequestOptions): AsyncIterable<ProviderStreamDelta> {\n const streamParams = {\n ...buildParams(request),\n // Only when the caller set reasoningEffort: Groq answers `reasoning_format` with a 400\n // on its non-reasoning models.\n ...(request.options?.reasoningEffort !== undefined && config.reasoningRequest !== undefined ? config.reasoningRequest : {}),\n stream: true as const,\n stream_options: { include_usage: true },\n };\n\n let sseStream: OpenAIStream;\n try {\n sseStream = await chatCreate(streamParams, options);\n } catch (error) {\n throw new SignalError(\n `Provider stream error: ${error instanceof Error ? error.message : String(error)}`,\n ErrorCode.PROVIDER_ERROR,\n { raw: error },\n );\n }\n\n try {\n for await (const chunk of sseStream) {\n const choice = chunk.choices?.[0];\n if (choice?.delta?.content) {\n yield { type: 'text', text: choice.delta.content };\n }\n const reasoning = choice?.delta?.reasoning ?? choice?.delta?.reasoning_content;\n if (reasoning) {\n yield { type: 'reasoning', text: reasoning };\n }\n if (choice?.delta?.tool_calls) {\n for (const tc of choice.delta.tool_calls) {\n yield {\n type: 'tool_call',\n index: tc.index,\n id: tc.id,\n name: tc.function?.name,\n argsFragment: tc.function?.arguments,\n };\n }\n }\n if (chunk.usage) {\n yield {\n type: 'usage',\n inputTokens: chunk.usage.prompt_tokens ?? 0,\n outputTokens: chunk.usage.completion_tokens ?? 0,\n totalTokens: chunk.usage.total_tokens ?? 0,\n };\n }\n if (choice?.finish_reason) {\n yield { type: 'finish', finishReason: choice.finish_reason };\n }\n }\n } catch (error) {\n if (error instanceof SignalError) throw error;\n throw new SignalError(\n `Provider stream error: ${error instanceof Error ? error.message : String(error)}`,\n ErrorCode.PROVIDER_ERROR,\n { raw: error },\n );\n }\n }\n\n let cachedEmbedCreate: EmbedCreateFn | undefined;\n\n const embed = async (request: EmbedRequest): Promise<EmbedResponse> => {\n if (!cachedEmbedCreate) cachedEmbedCreate = await loadEmbedCreateFn(config);\n\n const params: Record<string, unknown> = {\n model: request.model,\n input: request.input,\n };\n if (request.dimensions !== undefined) params['dimensions'] = request.dimensions;\n\n let response: OpenAIEmbeddingResponse;\n try {\n response = await cachedEmbedCreate(params);\n } catch (error) {\n throw new SignalError(\n `Embedding error: ${error instanceof Error ? error.message : String(error)}`,\n ErrorCode.PROVIDER_ERROR,\n { raw: error },\n );\n }\n\n const embeddings = (response.data ?? [])\n .sort((a, b) => a.index - b.index)\n .map(d => d.embedding);\n\n return {\n embeddings,\n usage: {\n inputTokens: response.usage?.prompt_tokens ?? 0,\n totalTokens: response.usage?.total_tokens ?? 0,\n },\n };\n };\n\n return { kind: 'chat', id: 'openai-compatible', chat, chatStream, embed };\n};\n","import type { ProviderAdapter } from '../types';\nimport { SignalError, ErrorCode } from '../errors';\n\nexport type AnthropicConfig = {\n apiKey: string;\n client?: unknown;\n};\n\nexport const createAnthropicAdapter = async (\n _config: AnthropicConfig,\n): Promise<ProviderAdapter> => {\n throw new SignalError(\n 'Anthropic adapter is not yet implemented. Use openai-compatible with OpenRouter for Anthropic models.',\n ErrorCode.PROVIDER_ERROR,\n );\n};\n","import type { ProviderAdapter } from '../types';\nimport { SignalError, ErrorCode } from '../errors';\n\nexport type GoogleConfig = {\n apiKey: string;\n client?: unknown;\n};\n\nexport const createGoogleAdapter = async (\n _config: GoogleConfig,\n): Promise<ProviderAdapter> => {\n throw new SignalError(\n 'Google adapter is not yet implemented. Use openai-compatible with OpenRouter for Google models.',\n ErrorCode.PROVIDER_ERROR,\n );\n};\n","import { z } from 'zod';\nimport type { DecisionAdapter, DecisionRequest, DecisionResponse } from '../types';\nimport { SignalError, ErrorCode } from '../errors';\n\nexport type SystemOneConfig = {\n apiKey: string;\n baseUrl: string;\n client?: unknown;\n};\n\nconst InjectedClientSchema = z.object({\n fetch: z.custom<typeof fetch>((value) => typeof value === 'function'),\n});\n\nconst BodySchema = z.object({\n model: z.string().optional(),\n answers: z.unknown(),\n usage: z.object({ input_tokens: z.number(), output_tokens: z.number() }).optional(),\n});\n\nconst sendOf = (client: unknown): typeof fetch => {\n if (client === undefined) return fetch;\n const injected = InjectedClientSchema.safeParse(client);\n if (!injected.success) {\n throw new SignalError('Invalid client: expected client.fetch to be a function', ErrorCode.PROVIDER_ERROR);\n }\n return injected.data.fetch;\n};\n\nconst jsonOrText = (text: string): unknown => {\n try {\n return JSON.parse(text);\n } catch {\n return text;\n }\n};\n\nconst providerError = (message: string, raw: unknown): SignalError =>\n new SignalError(`Provider error: ${message}`, ErrorCode.PROVIDER_ERROR, { raw });\n\nexport const createSystemOneAdapter = async (config: SystemOneConfig): Promise<DecisionAdapter> => {\n const send = sendOf(config.client);\n const url = `${config.baseUrl.replace(/\\/+$/, '')}/systemone`;\n\n const decide = async (request: DecisionRequest, options?: { signal?: AbortSignal }): Promise<DecisionResponse> => {\n let status: number;\n let body: unknown;\n try {\n const response = await send(url, {\n method: 'POST',\n headers: { authorization: `Bearer ${config.apiKey}`, 'content-type': 'application/json' },\n body: JSON.stringify({ model: request.model, state: request.state, questions: request.questions }),\n ...(options?.signal !== undefined && { signal: options.signal }),\n });\n status = response.status;\n body = jsonOrText(await response.text());\n } catch (error) {\n // An abort is wrapped too: the caller holds the signal and knows it fired.\n throw providerError(error instanceof Error ? error.message : String(error), error);\n }\n if (status < 200 || status >= 300) throw providerError(`HTTP ${status}`, { status, body });\n\n // Not thrown: the gate rejects a body of the wrong shape, with these bytes as evidence.\n const parsed = BodySchema.safeParse(body);\n if (!parsed.success) return { answers: undefined, raw: body };\n return {\n ...(parsed.data.model !== undefined && { model: parsed.data.model }),\n answers: parsed.data.answers,\n ...(parsed.data.usage !== undefined && {\n usage: { inputTokens: parsed.data.usage.input_tokens, outputTokens: parsed.data.usage.output_tokens },\n }),\n raw: body,\n };\n };\n\n return { kind: 'decisions', id: 'systemone', decide };\n};\n","import type { OutputTransport, ResponseMode } from './resolve';\nimport type { Question } from '../types';\n\nexport const RESPOND_DESCRIPTION =\n 'Finish the task. Call this EXACTLY ONCE, ALONE in its own turn, with your final envelope: ' +\n '{ response?: string (human-facing text), data (the payload), reasoning?: string (why) }. ' +\n 'Calling this ends the run.';\n\nexport type ProtocolSpec = {\n transport: OutputTransport;\n responseMode: ResponseMode;\n hasData: boolean;\n hasTools: boolean;\n injectSchemaDoc: boolean;\n};\n\nconst EMIT_WITH_TOOLS = (shape: string, note: string): string =>\n `FINISH PROTOCOL: Use your tools as needed. To finish, your ENTIRE final message must be ONLY the JSON envelope ${shape} — raw JSON, no prose around it, no code fences.${note} A message without tool calls is treated as your final envelope.`;\n\nconst EMIT_TOOLLESS = (shape: string, note: string): string =>\n `FINISH PROTOCOL: Your ENTIRE final message must be ONLY the JSON envelope ${shape} — raw JSON, no prose around it, no code fences.${note}`;\n\nconst NATIVE = (shape: string, note: string): string =>\n `FINISH PROTOCOL: To finish, reply with no tool calls; your reply is the JSON envelope ${shape}.${note}`;\n\nconst RESPOND = (shape: string, note: string): string =>\n `FINISH PROTOCOL: To finish, call the \\`respond\\` tool ALONE in its own turn with the envelope ${shape} as its arguments — or reply with ONLY that JSON envelope as your entire message.${note}`;\n\n// Key order matters: a model writes JSON in the order it is shown, so `reasoning` comes\n// first, before the answer it explains.\nconst envelopeShape = (spec: ProtocolSpec): string => {\n if (!spec.hasData) return '{ \"reasoning\"?: string, \"response\": string }';\n return spec.responseMode === 'required'\n ? '{ \"reasoning\"?: string, \"response\": string, \"data\": <the payload> }'\n : '{ \"reasoning\"?: string, \"response\"?: string, \"data\": <the payload> }';\n};\n\nexport const finishProtocol = (spec: ProtocolSpec): string => {\n const shape = envelopeShape(spec);\n const note = spec.hasData && spec.injectSchemaDoc ? ' `data` must match the OUTPUT SCHEMA above.' : '';\n switch (spec.transport) {\n case 'emit':\n return spec.hasTools ? EMIT_WITH_TOOLS(shape, note) : EMIT_TOOLLESS(shape, note);\n case 'native':\n return NATIVE(shape, note);\n case 'respond':\n return RESPOND(shape, note);\n }\n};\n\n// The caller replaces `{issues}` with the evidence.\nconst RESPOND_TERMINATION =\n 'You did not finish. Either call the `respond` tool with your final envelope ({ response?, data, reasoning? }), or reply with ONLY that JSON envelope as your entire message — no surrounding prose.';\n\nconst RESPOND_INVALID =\n 'Your output was invalid: {issues}. Either call `respond`, or reply with ONLY the corrected JSON envelope — no prose.';\n\nconst CONTENT_TERMINATION =\n 'You did not finish. Reply with ONLY the JSON envelope ({ response?, data, reasoning? }) as your entire message — no surrounding prose, no code fences.';\n\nconst CONTENT_INVALID =\n 'Your output was invalid: {issues}. Reply with ONLY the corrected JSON envelope as your entire message.';\n\nexport const corrections = (transport: OutputTransport): { termination: string; invalidOutput: string } =>\n transport === 'respond'\n ? { termination: RESPOND_TERMINATION, invalidOutput: RESPOND_INVALID }\n : { termination: CONTENT_TERMINATION, invalidOutput: CONTENT_INVALID };\n\nexport const bareSchemaPrompt = (jsonSchema: string): string =>\n `OUTPUT SCHEMA: your final reply must be ONLY a JSON value matching this schema — raw JSON, no prose, no code fences:\\n${jsonSchema}`;\n\nexport const bareSchemaCorrection = (issues: string): string =>\n `Your output was invalid: ${issues}. Reply with ONLY the corrected JSON value matching the OUTPUT SCHEMA.`;\n\nexport const decisionEmulationPrompt = (state: string): string =>\n `Answer every field of the OUTPUT SCHEMA about the STATE below. Each field's description is the question and lists everything you may answer with.\\nSTATE:\\n${state}`;\n\nexport const decisionQuestionDescription = (question: Question): string => {\n if (question.type === 'choice') return `${question.instructions} Options: ${JSON.stringify(question.criteria)}`;\n if (question.type === 'score') {\n return `${question.instructions} Answer with the index of the level that fits. Levels, lowest first: ${JSON.stringify(question.criteria)}`;\n }\n return question.criteria === undefined\n ? question.instructions\n : `${question.instructions} Meaning: ${JSON.stringify(question.criteria)}`;\n};\n","import { z, type ZodType } from 'zod';\nimport { SignalError, ErrorCode } from '../errors';\nimport { decisionQuestionDescription } from '../transport/protocol';\nimport type { Questions, Question, CalibratedDecision, UncalibratedDecision } from '../types';\n\nexport type CalibratedDecisions<Qs extends Questions> = { [N in keyof Qs]: CalibratedDecision<Qs[N]> };\nexport type UncalibratedDecisions<Qs extends Questions> = { [N in keyof Qs]: UncalibratedDecision<Qs[N]> };\n\nconst probability = z.number().min(0).max(1);\n\nconst enumOf = (name: string, options: readonly string[]) => {\n const [first, ...rest] = options;\n if (first === undefined) {\n throw new SignalError(`Question \"${name}\" offers nothing to answer with`, ErrorCode.VALIDATION_FAILED, { question: name });\n }\n return z.enum([first, ...rest]);\n};\n\nconst levelKeysOf = (question: { criteria: readonly string[] }): string[] =>\n question.criteria.map((_, level) => String(level));\n\nconst mostProbable = (probabilities: readonly number[]): number =>\n probabilities.reduce((best, value, level) => (value > (probabilities[best] ?? 0) ? level : best), 0);\n\nconst calibratedGate = (name: string, question: Question): ZodType => {\n if (question.type === 'choice') {\n const option = enumOf(name, Object.keys(question.criteria));\n return z.object({ choice: option, probabilities: z.record(option, probability), confidence: probability });\n }\n if (question.type === 'score') {\n const keys = levelKeysOf(question);\n const level = enumOf(name, keys);\n return z\n .object({\n score: z.number().min(0).max(keys.length - 1),\n probabilities: z.record(level, probability),\n confidence: probability,\n })\n .transform((answer) => {\n const probabilities = keys.map((key) => answer.probabilities[key] ?? 0);\n return { level: mostProbable(probabilities), score: answer.score, probabilities, confidence: answer.confidence };\n });\n }\n return z.object({ noul: probability }).transform((answer) => ({ answer: answer.noul >= 0.5, noul: answer.noul }));\n};\n\nconst uncalibratedField = (name: string, question: Question): ZodType => {\n const description = decisionQuestionDescription(question);\n if (question.type === 'choice') return enumOf(name, Object.keys(question.criteria)).describe(description);\n if (question.type === 'score') return z.number().int().min(0).max(question.criteria.length - 1).describe(description);\n return z.boolean().describe(description);\n};\n\nconst uncalibratedDecision = (question: Question, value: unknown): Record<string, unknown> => {\n if (question.type === 'choice') return { choice: value };\n if (question.type === 'score') return { level: value };\n return { answer: value };\n};\n\nconst assertAsked = (questions: Questions): void => {\n if (Object.keys(questions).length === 0) {\n throw new SignalError('decide() needs at least one question', ErrorCode.VALIDATION_FAILED);\n }\n};\n\n// Each entry was written by its question's own gate, so covering the names covers the type.\nconst answersEvery = <Out extends object>(questions: Questions, decisions: object): decisions is Out =>\n Object.keys(questions).every((name) => name in decisions);\n\nconst rejected = (issues: readonly string[], raw: unknown): SignalError =>\n new SignalError(`Decision rejected: ${issues.join('; ')}`, ErrorCode.VALIDATION_FAILED, { issues, raw });\n\nconst issuesOf = (name: string, error: z.ZodError): string[] =>\n error.issues.map((issue) => `${[name, ...issue.path].join('.')}: ${issue.message}`);\n\n// Builds each gate for its throw: a question that cannot be gated fails before the network.\nexport const assertQuestions = (questions: Questions): void => {\n assertAsked(questions);\n for (const [name, question] of Object.entries(questions)) calibratedGate(name, question);\n};\n\nexport const acceptCalibrated = <Qs extends Questions>(\n questions: Qs,\n answers: unknown,\n raw: unknown,\n): CalibratedDecisions<Qs> => {\n const arrived = z.record(z.string(), z.unknown()).safeParse(answers);\n if (!arrived.success) throw rejected(['the provider returned no answers'], raw);\n\n const decisions: Record<string, unknown> = {};\n const issues: string[] = [];\n for (const [name, question] of Object.entries(questions)) {\n if (!(name in arrived.data)) {\n issues.push(`${name}: not answered`);\n continue;\n }\n const gated = calibratedGate(name, question).safeParse(arrived.data[name]);\n if (gated.success) decisions[name] = gated.data;\n else issues.push(...issuesOf(name, gated.error));\n }\n if (issues.length > 0 || !answersEvery<CalibratedDecisions<Qs>>(questions, decisions)) throw rejected(issues, raw);\n return decisions;\n};\n\nexport const uncalibratedSchemaOf = (questions: Questions): ZodType<Record<string, unknown>> =>\n z.strictObject(\n Object.fromEntries(Object.entries(questions).map(([name, question]) => [name, uncalibratedField(name, question)])),\n );\n\nexport const acceptUncalibrated = <Qs extends Questions>(\n questions: Qs,\n value: unknown,\n raw: unknown,\n): UncalibratedDecisions<Qs> => {\n const gated = uncalibratedSchemaOf(questions).safeParse(value);\n if (!gated.success) throw rejected(issuesOf('decisions', gated.error), raw);\n\n const decisions: Record<string, unknown> = {};\n for (const [name, question] of Object.entries(questions)) decisions[name] = uncalibratedDecision(question, gated.data[name]);\n if (!answersEvery<UncalibratedDecisions<Qs>>(questions, decisions)) throw rejected(['a question went unanswered'], raw);\n return decisions;\n};\n","import type {\n Message, ChatAdapter, ProviderRequest, ProviderStreamDelta,\n StepRequest, StepResult, StepStreamEvent, StepToolCall, StreamOptions,\n} from '../types';\nimport { estimateUsage } from '../utils/estimate-usage';\n\nexport type ExecuteStepStreamConfig = {\n adapter: ChatAdapter;\n model: string;\n request: StepRequest;\n streamOptions?: StreamOptions;\n};\n\ntype AssembledToolCall = { id: string; name: string; args: string };\n\n\nconst assembleToolCall = (\n map: Map<number, AssembledToolCall>,\n delta: Extract<ProviderStreamDelta, { type: 'tool_call' }>,\n): void => {\n let tc = map.get(delta.index);\n if (!tc) {\n tc = { id: delta.id ?? '', name: delta.name ?? '', args: '' };\n map.set(delta.index, tc);\n }\n if (delta.id) tc.id = delta.id;\n if (delta.name) tc.name = delta.name;\n if (delta.argsFragment) tc.args += delta.argsFragment;\n};\n\nconst buildProviderRequest = (\n model: string,\n request: StepRequest,\n): ProviderRequest => {\n const providerTools = request.tools && request.tools.length > 0\n ? request.tools.map((tool) => ({\n type: 'function' as const,\n function: {\n name: tool.name,\n description: tool.description,\n parameters: tool.parameters,\n },\n }))\n : undefined;\n return {\n model,\n messages: request.messages.slice() as Message[],\n ...(providerTools && { tools: providerTools }),\n ...(request.toolChoice !== undefined && { toolChoice: request.toolChoice }),\n ...(request.responseFormat !== undefined && { responseFormat: request.responseFormat }),\n ...(request.options !== undefined && { options: request.options }),\n };\n};\n\nexport async function* executeStepStream(\n config: ExecuteStepStreamConfig,\n): AsyncGenerator<StepStreamEvent> {\n const providerRequest = buildProviderRequest(config.model, config.request);\n const abortSignal = config.streamOptions?.signal;\n\n let contentBuffer = '';\n let finishReason = 'unknown';\n const assembledToolCalls = new Map<number, AssembledToolCall>();\n // Replaced, not summed: a usage frame is the running total for the call, and Groq sends\n // the same frame twice on some calls.\n let totalUsage = { inputTokens: 0, outputTokens: 0, totalTokens: 0, reported: false };\n\n try {\n for await (const delta of config.adapter.chatStream(providerRequest, abortSignal ? { signal: abortSignal } : undefined)) {\n if (abortSignal?.aborted) return;\n\n switch (delta.type) {\n case 'text':\n contentBuffer += delta.text;\n yield { type: 'text', text: delta.text };\n break;\n case 'reasoning':\n yield { type: 'reasoning', text: delta.text };\n break;\n case 'tool_call':\n assembleToolCall(assembledToolCalls, delta);\n yield {\n type: 'tool_call_delta',\n index: delta.index,\n ...(delta.id !== undefined && { id: delta.id }),\n ...(delta.name !== undefined && { name: delta.name }),\n argsText: delta.argsFragment ?? '',\n };\n break;\n case 'usage':\n totalUsage = {\n inputTokens: delta.inputTokens,\n outputTokens: delta.outputTokens,\n totalTokens: delta.totalTokens,\n reported: true,\n };\n break;\n case 'finish':\n finishReason = delta.finishReason;\n break;\n }\n }\n } catch (error) {\n // By the signal's state, not the error's type: the adapter wraps every iteration error\n // in a SignalError, so no AbortError arrives here.\n if (abortSignal?.aborted) return;\n throw error;\n }\n\n const toolCalls: StepToolCall[] = [...assembledToolCalls.values()].map((tc) => {\n let parsed: unknown = tc.args;\n if (typeof tc.args === 'string' && tc.args.length > 0) {\n try {\n parsed = JSON.parse(tc.args);\n } catch {\n parsed = tc.args;\n }\n }\n return { id: tc.id, name: tc.name, args: parsed };\n });\n\n const result: StepResult = {\n content: contentBuffer,\n toolCalls,\n usage: totalUsage.reported ? totalUsage : estimateUsage(providerRequest.messages, contentBuffer, toolCalls),\n finishReason,\n raw: null,\n };\n\n yield { type: 'done', result };\n}\n","// For the no-schema return only. There `T` is `string` by construction (`createSignal()`\n// starts as `Signal<string>` and only `.schema()` changes `T`), which a generic body cannot\n// prove from a runtime `!schema` check.\nexport const asOutput = <T>(content: string): T => content as unknown as T;\n","import type { ZodType } from 'zod';\nimport { SignalError, ErrorCode } from './errors';\nimport { bareSchemaPrompt, bareSchemaCorrection } from './transport/protocol';\nimport { asOutput } from './output-trust';\nimport type {\n Capabilities,\n Message,\n SignalMeta,\n SignalOptions,\n SignalResult,\n StepRequest,\n StepResult,\n StepStreamEvent,\n StreamEvent,\n StreamOptions,\n Tool,\n ToolCallRecord,\n} from './types';\n\nexport type RunDeps = {\n stepStream: (request: StepRequest, options?: StreamOptions) => AsyncIterable<StepStreamEvent>;\n model: string;\n capabilities: Capabilities;\n};\n\nexport type RunSpec = {\n messages: Message[];\n schema?: ZodType | undefined;\n tools?: Tool[] | undefined;\n retries: number;\n options?: SignalOptions | undefined;\n streamOptions?: StreamOptions | undefined;\n onRetry?: ((error: Error, attempt: number) => void) | undefined;\n onToolCall?: ((name: string, args: unknown) => void) | undefined;\n};\n\nconst MAX_TOOL_TURNS = 10;\n\nconst ZERO = { inputTokens: 0, outputTokens: 0, totalTokens: 0 };\n\nconst stringify = (value: unknown): string => {\n if (typeof value === 'string') return value;\n try {\n return JSON.stringify(value) ?? String(value);\n } catch {\n return String(value);\n }\n};\n\n// Converted by the schema's own zod, not by ours: the caller's schema may come from another\n// zod copy, whose metadata is not in our registry.\nconst toJsonSchema = (schema: ZodType): Record<string, unknown> =>\n schema['~standard'].jsonSchema.output({ target: 'draft-07' });\n\nconst buildRequest = (spec: RunSpec, caps: Capabilities): Omit<StepRequest, 'messages'> => {\n const tools = spec.tools ?? [];\n if (tools.length > 0 && !caps.nativeTools) {\n throw new SignalError(\n 'This provider has no native tool calling (capabilities.nativeTools) — tools are unavailable here.',\n ErrorCode.PROVIDER_ERROR,\n );\n }\n const descriptors = tools.map((tool) => ({\n name: tool.name,\n description: tool.description,\n parameters: toJsonSchema(tool.inputSchema),\n }));\n const grammarViable =\n spec.schema !== undefined &&\n caps.nativeJsonSchema &&\n (tools.length === 0 || caps.toolsWithStructuredOutput);\n return {\n ...(descriptors.length > 0 && { tools: descriptors }),\n ...(spec.schema && { output: { accept: spec.schema } }),\n ...(grammarViable && spec.schema\n ? {\n responseFormat: {\n type: 'json_schema' as const,\n jsonSchema: { name: 'output', strict: false, schema: toJsonSchema(spec.schema) },\n },\n }\n : spec.schema !== undefined && caps.nativeJsonMode && tools.length === 0\n ? { responseFormat: { type: 'json_object' as const } }\n : {}),\n ...(spec.options && { options: spec.options }),\n };\n};\n\nconst buildMeta = (\n model: string,\n usage: typeof ZERO,\n start: number,\n retries: number,\n toolCalls: ToolCallRecord[],\n raws: unknown[],\n): SignalMeta => ({\n model,\n usage,\n durationMs: Date.now() - start,\n retries,\n toolCalls,\n provider: { raw: raws.length === 1 ? raws[0] : raws, errors: [] },\n});\n\nexport async function* runStream<T>(spec: RunSpec, deps: RunDeps): AsyncGenerator<StreamEvent<T>> {\n const start = Date.now();\n const requestBase = buildRequest(spec, deps.capabilities);\n const toolMap = new Map((spec.tools ?? []).map((tool) => [tool.name, tool]));\n\n const messages: Message[] = [...spec.messages];\n if (spec.schema && requestBase.responseFormat?.type !== 'json_schema') {\n messages.push({ role: 'system', content: bareSchemaPrompt(JSON.stringify(toJsonSchema(spec.schema))) });\n }\n\n let usage = ZERO;\n let retries = 0;\n const records: ToolCallRecord[] = [];\n const raws: unknown[] = [];\n\n for (let turn = 0; turn < MAX_TOOL_TURNS + spec.retries; turn += 1) {\n let result: StepResult | undefined;\n for await (const event of deps.stepStream({ ...requestBase, messages }, spec.streamOptions)) {\n if (event.type === 'text') yield { type: 'text', text: event.text };\n if (event.type === 'done') result = event.result;\n }\n if (!result) throw new SignalError('stream ended without a done event', ErrorCode.PROVIDER_ERROR);\n usage = {\n inputTokens: usage.inputTokens + result.usage.inputTokens,\n outputTokens: usage.outputTokens + result.usage.outputTokens,\n totalTokens: usage.totalTokens + result.usage.totalTokens,\n };\n raws.push(result.raw);\n\n const calls = result.outcome?.kind === 'tool_calls' ? result.outcome.calls : spec.schema ? [] : result.toolCalls;\n if (calls.length > 0) {\n messages.push({\n role: 'assistant',\n content: result.content,\n toolCalls: calls.map((call) => ({ id: call.id, name: call.name, args: stringify(call.args) })),\n });\n for (const call of calls) {\n spec.onToolCall?.(call.name, call.args);\n yield { type: 'tool_start', name: call.name, args: call.args };\n const tool = toolMap.get(call.name);\n const parsed = tool?.inputSchema.safeParse(call.args);\n const started = Date.now();\n let output: unknown;\n if (!tool) output = `error: unknown tool \"${call.name}\"`;\n else if (parsed && !parsed.success) {\n output = `error: input_invalid: ${parsed.error.issues.map((i) => `${i.path.join('.')}: ${i.message}`).join('; ')}`;\n } else {\n try {\n output = await tool.execute(parsed?.data);\n } catch (cause) {\n output = `error: ${cause instanceof Error ? cause.message : String(cause)}`;\n }\n }\n records.push({ name: call.name, args: call.args, result: output, durationMs: Date.now() - started });\n yield { type: 'tool_end', name: call.name, result: output };\n messages.push({ role: 'tool', toolCallId: call.id, name: call.name, content: stringify(output) });\n }\n continue;\n }\n\n if (!spec.schema) {\n const history: Message[] = [...messages, { role: 'assistant', content: result.content }];\n yield {\n type: 'done',\n response: asOutput<T>(result.content),\n history,\n meta: buildMeta(deps.model, usage, start, retries, records, raws),\n };\n return;\n }\n if (result.outcome?.kind === 'output') {\n const parsed = spec.schema.safeParse(result.outcome.value);\n if (parsed.success) {\n const history: Message[] = [...messages, { role: 'assistant', content: result.content }];\n yield {\n type: 'done',\n response: parsed.data as T,\n history,\n meta: buildMeta(deps.model, usage, start, retries, records, raws),\n };\n return;\n }\n }\n\n const evidence = result.outcome?.kind === 'failed' ? result.outcome.evidence : 'output failed schema validation';\n retries += 1;\n const error = new SignalError(`Response failed schema validation: ${evidence}`, ErrorCode.VALIDATION_FAILED);\n spec.onRetry?.(error, retries);\n if (retries > spec.retries) {\n yield { type: 'error', error, recovered: false };\n return;\n }\n yield { type: 'retry', reason: evidence, attempt: retries };\n if (result.content.length > 0) messages.push({ role: 'assistant', content: result.content });\n messages.push({ role: 'system', content: bareSchemaCorrection(evidence) });\n }\n throw new SignalError('Max tool iterations reached', ErrorCode.MAX_ITERATIONS);\n}\n\nexport const runComplete = async <T>(spec: RunSpec, deps: RunDeps): Promise<SignalResult<T>> => {\n for await (const event of runStream<T>(spec, deps)) {\n if (event.type === 'done') return { response: event.response, history: event.history, meta: event.meta };\n if (event.type === 'error') throw event.error;\n }\n throw new SignalError('run ended without a result', ErrorCode.PROVIDER_ERROR);\n};\n","export type ExtractResult = { ok: true; value: unknown } | { ok: false };\n\n// BOM, zero-width space, non-joiner and joiner, word joiner.\nconst INVISIBLES = /[​‌‍⁠]/g;\n\nconst tryParse = (text: string): ExtractResult => {\n try {\n return { ok: true, value: JSON.parse(text) };\n } catch {\n return { ok: false };\n }\n};\n\nconst spanCandidates = (text: string, open: string, close: string): string[] => {\n const first = text.indexOf(open);\n if (first < 0) return [];\n const candidates: string[] = [];\n for (let last = text.lastIndexOf(close); last > first; last = text.lastIndexOf(close, last - 1)) {\n candidates.push(text.slice(first, last + 1));\n if (candidates.length >= 8) break;\n }\n return candidates;\n};\n\nexport const extractJson = (content: string): ExtractResult => {\n const cleaned = content.replace(INVISIBLES, '').trim();\n if (cleaned.length === 0) return { ok: false };\n\n const direct = tryParse(cleaned);\n if (direct.ok) return direct;\n\n const fence = cleaned.match(/```(?:json)?\\s*\\n?([\\s\\S]*?)\\n?```/);\n const body = fence?.[1] !== undefined ? fence[1].trim() : cleaned;\n if (body !== cleaned) {\n const fenced = tryParse(body);\n if (fenced.ok) return fenced;\n }\n\n for (const candidate of [...spanCandidates(body, '{', '}'), ...spanCandidates(body, '[', ']')]) {\n const parsed = tryParse(candidate);\n if (parsed.ok) return parsed;\n }\n return { ok: false };\n};\n\nexport const repairEscapeDamage = (text: string): string[] => {\n const candidates: string[] = [];\n const noQuoteEscapes = text.replace(/\\\\'/g, \"'\");\n if (noQuoteEscapes !== text) candidates.push(noQuoteEscapes);\n const unescaped = text.replace(/\\\\\"/g, '\"').replace(/\\\\\\\\/g, '\\\\');\n if (unescaped !== text) candidates.push(unescaped);\n return candidates;\n};\n\nexport const decodeJsonish = (value: unknown): unknown => {\n if (typeof value !== 'string') return value;\n const trimmed = value.trim();\n if (!trimmed.startsWith('{') && !trimmed.startsWith('[')) return value;\n const direct = tryParse(trimmed);\n if (direct.ok) return direct.value;\n for (const repaired of repairEscapeDamage(trimmed)) {\n const parsed = tryParse(repaired);\n if (parsed.ok) return parsed.value;\n }\n return value;\n};\n\n// Some models send a nested array or object inside tool-call arguments as a JSON string.\nexport const deepDecodeJsonish = (value: unknown): unknown => {\n if (typeof value === 'string') {\n const decoded = decodeJsonish(value);\n return decoded === value ? value : deepDecodeJsonish(decoded);\n }\n if (Array.isArray(value)) return value.map(deepDecodeJsonish);\n if (typeof value === 'object' && value !== null) {\n const out: Record<string, unknown> = {};\n for (const [key, entry] of Object.entries(value)) out[key] = deepDecodeJsonish(entry);\n return out;\n }\n return value;\n};\n\n// A boundary is a position where cutting the text and appending the closers of everything\n// still open yields valid JSON: right after a completed value or a closed container.\ntype Frame = { type: 'obj' | 'arr'; expectingValue: boolean };\n\ntype Scan = {\n openAtEnd: number;\n boundary?: { end: number; closers: string };\n};\n\nconst LITERAL_CHARS = /[0-9a-zA-Z.+\\-]/;\n\nconst isCompleteLiteral = (buf: string): boolean => {\n if (buf === 'true' || buf === 'false' || buf === 'null') return true;\n return buf.length > 0 && !Number.isNaN(Number(buf));\n};\n\nconst scan = (text: string): Scan | undefined => {\n const stack: Frame[] = [];\n let inString = false;\n let escape = false;\n let stringIsValue = false;\n let literal = '';\n let boundary: Scan['boundary'];\n let started = false;\n\n const closers = (): string =>\n [...stack].reverse().map((frame) => (frame.type === 'obj' ? '}' : ']')).join('');\n\n const markBoundary = (end: number): void => {\n boundary = { end, closers: closers() };\n };\n\n const valueDone = (end: number): void => {\n const top = stack[stack.length - 1];\n if (top) top.expectingValue = false;\n markBoundary(end);\n };\n\n const endLiteral = (end: number): void => {\n if (literal.length === 0) return;\n if (isCompleteLiteral(literal)) valueDone(end);\n literal = '';\n };\n\n for (let i = 0; i < text.length; i += 1) {\n const ch = text[i] as string;\n\n if (inString) {\n if (escape) {\n escape = false;\n continue;\n }\n if (ch === '\\\\') {\n escape = true;\n continue;\n }\n if (ch === '\"') {\n inString = false;\n if (stringIsValue) valueDone(i + 1);\n }\n continue;\n }\n\n if (literal.length > 0 && !LITERAL_CHARS.test(ch)) endLiteral(i);\n\n switch (ch) {\n case '{': {\n started = true;\n stack.push({ type: 'obj', expectingValue: false });\n break;\n }\n case '[': {\n started = true;\n stack.push({ type: 'arr', expectingValue: true });\n break;\n }\n case '}':\n case ']': {\n if (stack.length === 0) return undefined;\n stack.pop();\n valueDone(i + 1);\n break;\n }\n case '\"': {\n const top = stack[stack.length - 1];\n inString = true;\n escape = false;\n stringIsValue = top === undefined || top.type === 'arr' || top.expectingValue;\n break;\n }\n case ':': {\n const top = stack[stack.length - 1];\n if (top?.type === 'obj') top.expectingValue = true;\n break;\n }\n case ',':\n break;\n default: {\n if (LITERAL_CHARS.test(ch)) {\n started = true;\n literal += ch;\n }\n break;\n }\n }\n }\n if (!inString) endLiteral(text.length);\n if (!started) return undefined;\n return { openAtEnd: stack.length + (inString ? 1 : 0), ...(boundary && { boundary }) };\n};\n\n// The torn tail is dropped, not closed: a clipped string that validates would be invented\n// data, and a missing member is something the caller's schema can catch.\nexport const closeTruncated = (content: string): string | undefined => {\n const cleaned = content.replace(INVISIBLES, '').trim();\n if (!cleaned.startsWith('{') && !cleaned.startsWith('[')) return undefined;\n if (tryParse(cleaned).ok) return undefined;\n const result = scan(cleaned);\n if (!result?.boundary || result.openAtEnd === 0) return undefined;\n const candidate = cleaned.slice(0, result.boundary.end) + result.boundary.closers;\n return tryParse(candidate).ok ? candidate : undefined;\n};\n\nexport const isTruncatedJson = (content: string): boolean => {\n const cleaned = content.replace(INVISIBLES, '').trim();\n if (!cleaned.startsWith('{') && !cleaned.startsWith('[')) return false;\n if (tryParse(cleaned).ok) return false;\n return (scan(cleaned)?.openAtEnd ?? 0) > 0;\n};\n","import { closeTruncated, isTruncatedJson } from '../repair';\nimport { SignalError } from '../../errors';\nimport type { Rejection } from '../../types';\nimport type { ErrorWireStrategy } from './index';\n\n// Groq answers a tool call or a response_format that fails its own validation with a 400\n// that carries the model's attempt in `error.failed_generation`, cut off at Groq's body cap.\nconst RECOVERABLE_CODES = new Set(['tool_use_failed', 'json_validate_failed']);\n\nconst prop = (obj: unknown, key: string): unknown =>\n obj !== null && typeof obj === 'object' ? (obj as Record<string, unknown>)[key] : undefined;\n\nconst unwrap = (error: unknown): unknown =>\n error instanceof SignalError ? (error.context?.['raw'] ?? error) : error;\n\nconst errorCode = (error: unknown): string | undefined => {\n const direct = prop(error, 'code');\n if (typeof direct === 'string') return direct;\n const nested = prop(prop(error, 'error'), 'code');\n return typeof nested === 'string' ? nested : undefined;\n};\n\nconst failedGenerationOf = (error: unknown): string | undefined => {\n const gen = prop(prop(error, 'error'), 'failed_generation');\n return typeof gen === 'string' && gen.trim().length > 0 ? gen : undefined;\n};\n\ntype CallShape = { name: string; args?: unknown; argsText: string };\n\nconst asCallShape = (value: unknown): CallShape | undefined => {\n const name = prop(value, 'name');\n if (typeof name !== 'string' || name.length === 0) return undefined;\n const args = prop(value, 'arguments');\n if (args === undefined) return undefined;\n if (typeof args === 'string') return { name, argsText: args };\n return { name, args, argsText: JSON.stringify(args) };\n};\n\nconst recover = (error: unknown): Rejection | undefined => {\n const raw = failedGenerationOf(unwrap(error));\n // Groq sends some rejections with no attempt. Empty, not undefined: undefined would\n // rethrow the error, and this way the turn comes back as a typed failure.\n if (raw === undefined) return { argsText: '', truncated: false };\n\n try {\n const parsed: unknown = JSON.parse(raw);\n const call = asCallShape(parsed);\n if (call) return { name: call.name, ...(call.args !== undefined && { args: call.args }), argsText: call.argsText, truncated: false };\n return { args: parsed, argsText: raw, truncated: false };\n } catch {\n const truncated = isTruncatedJson(raw);\n const closed = closeTruncated(raw);\n if (closed !== undefined) {\n try {\n const call = asCallShape(JSON.parse(closed));\n if (call) return { name: call.name, ...(call.args !== undefined && { args: call.args }), argsText: call.argsText, truncated };\n } catch {}\n }\n return { argsText: raw, truncated };\n }\n};\n\nexport const failedGeneration: ErrorWireStrategy = {\n id: 'failed-generation',\n hook: 'error',\n matches: (error) => {\n const code = errorCode(unwrap(error));\n return code !== undefined && RECOVERABLE_CODES.has(code);\n },\n recover,\n};\n","import type { ResponseWireStrategy } from './index';\n\n// OpenAI's 4o models sometimes answer with one JSON object per line where one value was\n// asked for. Last line first: the final line is usually the answer.\nexport const jsonlLines: ResponseWireStrategy = {\n id: 'jsonl-lines',\n hook: 'response',\n candidates: (content) => {\n const lines = content\n .split(/\\r?\\n/)\n .map((line) => line.trim())\n .filter((line) => line.startsWith('{') || line.startsWith('['));\n return lines.length > 1 ? lines.reverse() : [];\n },\n};\n","import type { Rejection } from '../../types';\nimport { failedGeneration } from './failed-generation';\nimport { jsonlLines } from './jsonl-lines';\n\nexport type ErrorWireStrategy = {\n id: string;\n hook: 'error';\n matches: (error: unknown) => boolean;\n recover: (error: unknown) => Rejection | undefined;\n};\n\nexport type ResponseWireStrategy = {\n id: string;\n hook: 'response';\n candidates: (content: string) => string[];\n};\n\nexport type WireStrategy = ErrorWireStrategy | ResponseWireStrategy;\n\nconst REGISTRY: Record<string, WireStrategy> = {\n [failedGeneration.id]: failedGeneration,\n [jsonlLines.id]: jsonlLines,\n};\n\nexport const resolveWireStrategies = (ids: ReadonlyArray<string>): WireStrategy[] =>\n ids.map((id) => {\n const strategy = REGISTRY[id];\n if (!strategy) throw new Error(`Unknown wire strategy \"${id}\" — known: ${Object.keys(REGISTRY).join(', ')}`);\n return strategy;\n });\n\nexport const errorStrategies = (strategies: ReadonlyArray<WireStrategy>): ErrorWireStrategy[] =>\n strategies.filter((strategy): strategy is ErrorWireStrategy => strategy.hook === 'error');\n\nexport const responseStrategies = (strategies: ReadonlyArray<WireStrategy>): ResponseWireStrategy[] =>\n strategies.filter((strategy): strategy is ResponseWireStrategy => strategy.hook === 'response');\n\nexport const recoverRejection = (\n strategies: ReadonlyArray<WireStrategy>,\n error: unknown,\n): { strategy: string; rejection: Rejection } | undefined => {\n for (const strategy of errorStrategies(strategies)) {\n if (!strategy.matches(error)) continue;\n const rejection = strategy.recover(error);\n if (rejection) return { strategy: strategy.id, rejection };\n }\n return undefined;\n};\n\nexport { failedGeneration, jsonlLines };\n","import type { ZodType } from 'zod';\nimport { decodeJsonish, deepDecodeJsonish, extractJson, repairEscapeDamage, closeTruncated, isTruncatedJson } from './repair';\nimport type { Rejection, StepOutcome, StepToolCall, WireReport } from '../types';\nimport type { ResponseWireStrategy } from './strategies';\n\nexport type RouteRequest = {\n content: string;\n toolCalls: ReadonlyArray<StepToolCall>;\n declared: ReadonlySet<string>;\n outputTool?: string | undefined;\n accept?: ZodType | undefined;\n responseStrategies: ReadonlyArray<ResponseWireStrategy>;\n};\n\nexport type Routed = { outcome: StepOutcome; wire: WireReport };\n\nconst toolTurn = (calls: StepToolCall[], notes: string[]): Routed => ({\n outcome: { kind: 'tool_calls', calls },\n wire: notes.length > 0 ? { notes } : {},\n});\n\nconst output = (value: unknown, rung: string, note?: string): Routed => ({\n outcome: { kind: 'output', value },\n wire: note === undefined ? { rung } : { rung, notes: [note] },\n});\n\nconst failed = (evidence: string, flags: { truncated?: boolean } = {}): Routed => ({\n outcome: {\n kind: 'failed',\n evidence,\n ...(flags.truncated === true && { truncated: true }),\n },\n wire: {},\n});\n\ntype Candidate = { value: unknown; rung: string };\n\nconst tryParse = (text: string): { ok: true; value: unknown } | { ok: false; why: string } => {\n try {\n return { ok: true, value: JSON.parse(text) };\n } catch (error) {\n return { ok: false, why: error instanceof Error ? error.message : String(error) };\n }\n};\n\n// The untouched text only: every later rung parses text this file has altered, so its\n// complaint describes a repair and not what the model wrote.\nconst whyNotJson = (text: string): string | undefined => {\n const direct = tryParse(text.trim());\n return direct.ok ? undefined : direct.why;\n};\n\nfunction* ladder(text: string, strategies: ReadonlyArray<ResponseWireStrategy>): Generator<Candidate> {\n const trimmed = text.trim();\n if (trimmed.length === 0) return;\n\n const direct = tryParse(trimmed);\n if (direct.ok) yield { value: direct.value, rung: 'parse' };\n\n const extracted = extractJson(trimmed);\n if (extracted.ok) yield { value: extracted.value, rung: 'extract' };\n\n for (const repaired of repairEscapeDamage(trimmed)) {\n const parsed = tryParse(repaired);\n if (parsed.ok) yield { value: parsed.value, rung: 'repair-escapes' };\n }\n\n for (const strategy of strategies) {\n for (const candidateText of strategy.candidates(trimmed)) {\n const parsed = tryParse(candidateText);\n if (parsed.ok) yield { value: parsed.value, rung: strategy.id };\n }\n }\n\n const closed = closeTruncated(trimmed);\n if (closed !== undefined) {\n const parsed = tryParse(closed);\n if (parsed.ok) yield { value: parsed.value, rung: 'close-truncated' };\n }\n}\n\nconst firstAccepted = (\n candidates: Iterable<Candidate>,\n accept: ZodType,\n): { winner?: Candidate; nearMiss?: string } => {\n let nearMiss: string | undefined;\n for (const candidate of candidates) {\n const direct = accept.safeParse(candidate.value);\n if (direct.success) return { winner: candidate };\n const deep = deepDecodeJsonish(candidate.value);\n if (deep !== candidate.value && accept.safeParse(deep).success) {\n return { winner: { value: deep, rung: `${candidate.rung}+deep-decode` } };\n }\n nearMiss ??= direct.error.issues\n .map((issue) => `${issue.path.join('.') || '(root)'}: ${issue.message}`)\n .join('; ');\n }\n return { ...(nearMiss !== undefined && { nearMiss }) };\n};\n\nconst decodedCall = (call: StepToolCall): StepToolCall => ({ ...call, args: decodeJsonish(call.args) });\n\nconst finishAttempt = (call: StepToolCall, request: RouteRequest): Routed | undefined => {\n if (!request.accept) return undefined;\n const source: Iterable<Candidate> =\n typeof call.args === 'string'\n ? ladder(call.args, request.responseStrategies)\n : [{ value: call.args, rung: 'call-args' }];\n const { winner, nearMiss } = firstAccepted(source, request.accept);\n if (winner) {\n const note = call.name === request.outputTool ? undefined : `output arrived as a call to undeclared tool \"${call.name}\"`;\n return output(winner.value, winner.rung, note);\n }\n if (nearMiss !== undefined) {\n return failed(`the call to \"${call.name}\" carried an invalid output: ${nearMiss}`);\n }\n return undefined;\n};\n\nconst contentEvidence = (content: string, nearMiss: string | undefined): string => {\n if (nearMiss !== undefined) return nearMiss;\n const snippet = content.trim().slice(0, 160);\n if (snippet.length === 0) return 'the turn produced no output';\n const why = whyNotJson(content);\n return why === undefined\n ? `output is not valid JSON — it began: ${snippet}`\n : `output is not valid JSON: ${why}. It began: ${snippet}`;\n};\n\nconst contentTurn = (request: RouteRequest): Routed => {\n if (!request.accept) return failed('no acceptance schema for a content turn');\n const { winner, nearMiss } = firstAccepted(ladder(request.content, request.responseStrategies), request.accept);\n if (winner) return output(winner.value, winner.rung);\n return failed(contentEvidence(request.content, nearMiss), {\n truncated: isTruncatedJson(request.content),\n });\n};\n\nexport const routeResponse = (request: RouteRequest): Routed => {\n const isExit = (call: StepToolCall): boolean => call.name === request.outputTool;\n const domainCalls = request.toolCalls.filter((call) => request.declared.has(call.name) && !isExit(call));\n const attempts = request.toolCalls.filter((call) => !request.declared.has(call.name) || isExit(call));\n\n if (domainCalls.length > 0) {\n const dropped = attempts.map((call) => `dropped call to \"${call.name}\" in a mixed turn — finish attempts must come alone`);\n return toolTurn(domainCalls.map(decodedCall), dropped);\n }\n for (const call of attempts) {\n const routed = finishAttempt(call, request);\n if (routed) return routed;\n }\n if (attempts.length > 0) {\n return failed(`called unknown tool(s) ${attempts.map((call) => `\"${call.name}\"`).join(', ')}`);\n }\n return contentTurn(request);\n};\n\nlet recoveredCallCounter = 0;\n\nexport const routeRejection = (rejection: Rejection, request: Omit<RouteRequest, 'content' | 'toolCalls'>): Routed => {\n const name = rejection.name;\n if (name !== undefined && request.declared.has(name) && name !== request.outputTool) {\n recoveredCallCounter += 1;\n const args = rejection.args ?? decodeJsonish(rejection.argsText);\n return toolTurn([{ id: `recovered_${recoveredCallCounter}`, name, args }], []);\n }\n\n const call: StepToolCall = { id: '', name: name ?? '', args: rejection.args ?? rejection.argsText };\n const routed = finishAttempt(call, { ...request, content: '', toolCalls: [] });\n if (routed) {\n if (routed.outcome.kind === 'failed' && rejection.truncated) {\n return { ...routed, outcome: { ...routed.outcome, truncated: true } };\n }\n return routed;\n }\n return failed(\n rejection.argsText.length > 0\n ? `provider rejected the attempt${name !== undefined ? ` (call to unknown tool \"${name}\")` : ''} and nothing salvageable remained`\n : 'provider rejected the attempt; nothing was recovered',\n { truncated: rejection.truncated },\n );\n};\n","import { type ZodType } from 'zod';\nimport type {\n Message, ContentPart, Tool, SignalOptions, Capabilities, ReasoningEffort,\n SignalResult, StreamEvent, StepStreamEvent, StreamOptions,\n ProviderAdapter, ChatAdapter, DecisionAdapter, ProviderRequest, ProviderResponse, Rejection,\n StepRequest, StepResult, StepToolCall, CountInput,\n EmbedOptions, Questions, DecideRequest, DecideResult,\n} from './types';\nimport type { SignalConfig, CustomProviderConfig } from './config';\nimport { estimateUsage } from './utils/estimate-usage';\nimport { SignalError, ErrorCode } from './errors';\nimport { providerRegistry, modelDefaults, modelEntry, modelKey, resolveApiKey, UNMEASURED_MODEL, type ModelDefaults, type ModelEntry, type ProviderEntry } from './registry';\nimport { createOpenAICompatibleAdapter } from './adapters/openai-compatible.adapter';\nimport { createAnthropicAdapter } from './adapters/anthropic.adapter';\nimport { createGoogleAdapter } from './adapters/google.adapter';\nimport { createSystemOneAdapter } from './adapters/systemone.adapter';\nimport { assertQuestions, acceptCalibrated, acceptUncalibrated, uncalibratedSchemaOf } from './decide/gate';\nimport { decisionEmulationPrompt } from './transport/protocol';\nimport { executeStepStream } from './stream/execute-step-stream';\nimport { runComplete, runStream } from './run';\nimport { resolveWireStrategies, responseStrategies, recoverRejection, type WireStrategy } from './wire/strategies';\nimport { routeResponse, routeRejection } from './wire/router';\n\nexport type Signal<T = string> = {\n apiKey: (key: string) => Signal<T>;\n model: (model: string) => Signal<T>;\n systemPrompt: (prompt: string) => Signal<T>;\n history: (messages: Message[]) => Signal<T>;\n schema: <U>(schema: ZodType<U>) => Signal<U>;\n tools: (tools: Tool[]) => Signal<T>;\n retries: (count: number) => Signal<T>;\n options: (opts: SignalOptions) => Signal<T>;\n onRetry: (handler: (error: Error, attempt: number) => void) => Signal<T>;\n onToolCall: (handler: (name: string, args: unknown) => void) => Signal<T>;\n\n complete: (input: string | ContentPart[]) => Promise<SignalResult<T>>;\n stream: (input: string | ContentPart[], options?: StreamOptions) => AsyncIterable<StreamEvent<T>>;\n\n describe: () => SignalDescription;\n\n step: (request: StepRequest) => Promise<StepResult>;\n stepStream: (request: StepRequest, options?: StreamOptions) => AsyncIterable<StepStreamEvent>;\n count: (input: CountInput) => Promise<number>;\n\n embed: {\n (input: string, options?: EmbedOptions): Promise<number[]>;\n (input: string[], options?: EmbedOptions): Promise<number[][]>;\n };\n\n decide: <const Qs extends Questions>(request: DecideRequest<Qs>) => Promise<DecideResult<Qs>>;\n};\n\nexport type SignalDescription = {\n provider: string; // registry name, or the custom baseUrl\n model: string | undefined;\n kind: ProviderAdapter['kind'];\n capabilities: Capabilities;\n modelKnown: boolean;\n};\n\ntype ResolvedProvider = {\n model: string;\n apiKey: string;\n baseUrl: string;\n adapterType: ProviderEntry['adapter'];\n reasoningRequest?: Record<string, unknown>;\n};\n\nconst resolveProvider = (config: SignalConfig): ResolvedProvider => {\n if (typeof config.provider === 'string') {\n const entry = providerRegistry[config.provider];\n if (!entry) throw new SignalError(`Unknown provider: ${config.provider}`, ErrorCode.PROVIDER_NOT_FOUND);\n const apiKey = resolveApiKey(entry.envKey, config.apiKey);\n if (!apiKey) throw new SignalError(`Missing API key for ${config.provider}. Set ${entry.envKey} or pass apiKey.`, ErrorCode.MISSING_API_KEY);\n return {\n model: config.model ?? entry.defaultModel,\n apiKey,\n baseUrl: entry.baseUrl,\n adapterType: entry.adapter,\n ...(entry.adapter !== 'systemone' && entry.reasoningRequest !== undefined && { reasoningRequest: entry.reasoningRequest }),\n };\n }\n\n const custom = config.provider;\n const apiKey = custom.apiKey ?? config.apiKey;\n if (!apiKey) throw new SignalError('Missing API key for custom provider', ErrorCode.MISSING_API_KEY);\n const model = config.model ?? custom.model;\n if (!model) throw new SignalError('Missing model for custom provider', ErrorCode.MISSING_MODEL);\n return { model, apiKey, baseUrl: custom.baseUrl, adapterType: custom.adapter ?? 'openai-compatible' };\n};\n\nconst FALLBACK_CAPABILITIES: Capabilities = {\n nativeTools: false,\n nativeJsonSchema: false,\n nativeJsonMode: false,\n toolsWithStructuredOutput: false,\n validatesToolArgs: false,\n manglesNestedToolArgs: false,\n multimodal: false,\n supportsEmbedding: false,\n};\n\n// Read without resolving a key: describe() must not throw for a missing one.\nconst adapterTypeOf = (config: SignalConfig): ProviderEntry['adapter'] | undefined =>\n typeof config.provider === 'string'\n ? providerRegistry[config.provider]?.adapter\n : config.provider.adapter ?? 'openai-compatible';\n\nconst kindOf = (adapterType: ProviderEntry['adapter'] | undefined): ProviderAdapter['kind'] =>\n adapterType === 'systemone' ? 'decisions' : 'chat';\n\nconst modelRowOf = (config: SignalConfig): { provider: string; model: string; row: ModelEntry | undefined } | undefined => {\n if (typeof config.provider !== 'string') return undefined;\n const entry = providerRegistry[config.provider];\n if (entry === undefined) return undefined;\n const model = config.model ?? entry.defaultModel;\n return { provider: config.provider, model, row: modelEntry(config.provider, model) };\n};\n\nconst defaultsOf = (config: SignalConfig): ModelDefaults | undefined => {\n const resolved = modelRowOf(config);\n return resolved === undefined ? undefined : modelDefaults[modelKey(resolved.provider, resolved.model)];\n};\n\nconst resolveCapabilities = (config: SignalConfig): Capabilities => {\n if (typeof config.provider === 'string') {\n const entry = providerRegistry[config.provider];\n if (entry === undefined || entry.adapter === 'systemone') return FALLBACK_CAPABILITIES;\n return { ...entry.endpoint, ...(modelRowOf(config)?.row?.capabilities ?? UNMEASURED_MODEL) };\n }\n const declared = config.provider.adapter === 'systemone' ? {} : config.provider.capabilities;\n return { ...FALLBACK_CAPABILITIES, ...declared };\n};\n\nconst assertEffort = (config: SignalConfig, effort: ReasoningEffort | undefined): void => {\n if (effort === undefined) return;\n const resolved = modelRowOf(config);\n const row = resolved?.row;\n if (resolved === undefined || row === undefined || row.reasoningEfforts.includes(effort)) return;\n const accepted = row.reasoningEfforts.length === 0 ? 'nothing — it takes no reasoning effort' : row.reasoningEfforts.join(', ');\n throw new SignalError(\n `reasoningEffort \"${effort}\" is not accepted by ${resolved.provider} ${resolved.model} (accepts: ${accepted}; measured ${row.verified})`,\n ErrorCode.VALIDATION_FAILED,\n );\n};\n\nconst wireIdsOf = (config: SignalConfig): string[] => {\n const source = typeof config.provider === 'string' ? providerRegistry[config.provider] : config.provider;\n return source === undefined || source.adapter === 'systemone' ? [] : source.wire ?? [];\n};\n\nconst createAdapter = async (resolved: ResolvedProvider, client: unknown): Promise<ProviderAdapter> => {\n switch (resolved.adapterType) {\n case 'openai-compatible':\n return createOpenAICompatibleAdapter({ apiKey: resolved.apiKey, baseUrl: resolved.baseUrl, client, ...(resolved.reasoningRequest !== undefined && { reasoningRequest: resolved.reasoningRequest }) });\n case 'anthropic':\n return createAnthropicAdapter({ apiKey: resolved.apiKey, client });\n case 'google':\n return createGoogleAdapter({ apiKey: resolved.apiKey, client });\n case 'systemone':\n return createSystemOneAdapter({ apiKey: resolved.apiKey, baseUrl: resolved.baseUrl, client });\n }\n};\n\nconst buildMessages = (config: SignalConfig, input: string | ContentPart[]): Message[] => {\n const messages: Message[] = [];\n if (config.systemPrompt) messages.push({ role: 'system', content: config.systemPrompt });\n if (config.history) messages.push(...config.history);\n messages.push({ role: 'user', content: input });\n return messages;\n};\n\nconst recoveredStepResult = (\n recovered: { strategy: string; rejection: Rejection },\n routed: ReturnType<typeof routeRejection>,\n raw: unknown,\n sent: readonly Message[],\n): StepResult => ({\n content: '',\n toolCalls: routed.outcome.kind === 'tool_calls' ? routed.outcome.calls : [],\n // The provider bills a rejected generation and its 400 carries no usage.\n usage: estimateUsage(sent, recovered.rejection.argsText, routed.outcome.kind === 'tool_calls' ? routed.outcome.calls : []),\n finishReason: 'error_recovered',\n raw,\n outcome: routed.outcome,\n wire: {\n ...routed.wire,\n recovered: {\n strategy: recovered.strategy,\n ...(recovered.rejection.name !== undefined && { name: recovered.rejection.name }),\n truncated: recovered.rejection.truncated,\n },\n },\n});\n\nconst createSignalFromConfig = <T = string>(config: SignalConfig): Signal<T> => {\n let cachedAdapter: ProviderAdapter | undefined;\n let cachedAdapterKey: string | undefined;\n\n const wireStrategies: WireStrategy[] = resolveWireStrategies(wireIdsOf(config));\n\n assertEffort(config, config.options?.reasoningEffort);\n // Under the caller's options: a model's defaults apply only to what the caller leaves unset.\n const defaults = defaultsOf(config);\n\n const getAdapter = async (): Promise<ProviderAdapter> => {\n const resolved = resolveProvider(config);\n const key = `${resolved.adapterType}:${resolved.baseUrl}:${resolved.apiKey}`;\n if (cachedAdapter && cachedAdapterKey === key) return cachedAdapter;\n cachedAdapter = await createAdapter(resolved, config.client);\n cachedAdapterKey = key;\n return cachedAdapter;\n };\n\n const getChatAdapter = async (verb: string): Promise<ChatAdapter> => {\n const adapter = await getAdapter();\n if (adapter.kind === 'chat') return adapter;\n throw new SignalError(\n `${verb}() is not available on a decision provider — it answers decide() and generates no text`,\n ErrorCode.VERB_NOT_SUPPORTED,\n { verb, adapter: adapter.id },\n );\n };\n\n const fork = <U = T>(override: Partial<SignalConfig>): Signal<U> =>\n createSignalFromConfig<U>({ ...config, ...override });\n\n const step = async (request: StepRequest): Promise<StepResult> => {\n const adapter = await getChatAdapter('step');\n const resolved = resolveProvider(config);\n const messages = request.messages.slice() as Message[];\n const providerTools = request.tools && request.tools.length > 0\n ? request.tools.map((tool) => ({\n type: 'function' as const,\n function: {\n name: tool.name,\n description: tool.description,\n parameters: tool.parameters,\n },\n }))\n : undefined;\n const providerRequest: ProviderRequest = {\n model: resolved.model,\n messages,\n ...(providerTools && { tools: providerTools }),\n ...(request.toolChoice !== undefined && { toolChoice: request.toolChoice }),\n ...(request.responseFormat !== undefined && { responseFormat: request.responseFormat }),\n ...((defaults !== undefined || config.options !== undefined || request.options !== undefined) && {\n options: { ...defaults, ...config.options, ...request.options },\n }),\n };\n assertEffort(config, providerRequest.options?.reasoningEffort);\n const declared = new Set((request.tools ?? []).map((tool) => tool.name));\n let response: ProviderResponse;\n try {\n response = await adapter.chat(providerRequest);\n } catch (error) {\n const recovered = recoverRejection(wireStrategies, error);\n if (!recovered) throw error;\n const routed = routeRejection(recovered.rejection, {\n declared,\n ...(request.output && { accept: request.output.accept }),\n ...(request.output?.outputTool !== undefined && { outputTool: request.output.outputTool }),\n responseStrategies: responseStrategies(wireStrategies),\n });\n return recoveredStepResult(recovered, routed, error, providerRequest.messages);\n }\n const toolCalls: StepToolCall[] = (response.toolCalls ?? []).map((call) => {\n let parsed: unknown = call.args;\n if (typeof call.args === 'string') {\n try {\n parsed = JSON.parse(call.args);\n } catch {\n parsed = call.args;\n }\n }\n return { id: call.id, name: call.name, args: parsed };\n });\n const result: StepResult = {\n content: response.content,\n toolCalls,\n // A non-streaming body always carries usage, so a zero here is a reported zero.\n usage: { ...response.usage, reported: true },\n finishReason: response.finishReason,\n raw: response.raw,\n };\n if (!request.output) return result;\n const routed = routeResponse({\n content: result.content,\n toolCalls: result.toolCalls,\n declared,\n accept: request.output.accept,\n ...(request.output.outputTool !== undefined && { outputTool: request.output.outputTool }),\n responseStrategies: responseStrategies(wireStrategies),\n });\n return { ...result, outcome: routed.outcome, wire: routed.wire };\n };\n\n const stepStreamAs = (verb: string) => (request: StepRequest, streamOptions?: StreamOptions): AsyncIterable<StepStreamEvent> => {\n const run = async function* (): AsyncGenerator<StepStreamEvent> {\n const adapter = await getChatAdapter(verb);\n const resolved = resolveProvider(config);\n const declared = new Set((request.tools ?? []).map((tool) => tool.name));\n const merged: StepRequest =\n defaults !== undefined || config.options !== undefined || request.options !== undefined\n ? { ...request, options: { ...defaults, ...config.options, ...request.options } }\n : request;\n assertEffort(config, merged.options?.reasoningEffort);\n try {\n for await (const event of executeStepStream({\n adapter,\n model: resolved.model,\n request: merged,\n ...(streamOptions && { streamOptions }),\n })) {\n if (event.type === 'done' && request.output) {\n const routed = routeResponse({\n content: event.result.content,\n toolCalls: event.result.toolCalls,\n declared,\n accept: request.output.accept,\n ...(request.output.outputTool !== undefined && { outputTool: request.output.outputTool }),\n responseStrategies: responseStrategies(wireStrategies),\n });\n yield { type: 'done', result: { ...event.result, outcome: routed.outcome, wire: routed.wire } };\n continue;\n }\n yield event;\n }\n } catch (error) {\n // A provider's 400 can land on the first chunk read, not only when the stream is\n // created, so the catch covers the iteration too.\n const recovered = recoverRejection(wireStrategies, error);\n if (!recovered) throw error;\n const routed = routeRejection(recovered.rejection, {\n declared,\n ...(request.output && { accept: request.output.accept }),\n ...(request.output?.outputTool !== undefined && { outputTool: request.output.outputTool }),\n responseStrategies: responseStrategies(wireStrategies),\n });\n yield { type: 'done', result: recoveredStepResult(recovered, routed, error, request.messages) };\n }\n };\n return run();\n };\n const stepStream = stepStreamAs('stepStream');\n\n const decideCalibrated = async <Qs extends Questions>(\n adapter: DecisionAdapter,\n model: string,\n request: DecideRequest<Qs>,\n started: number,\n ): Promise<DecideResult<Qs>> => {\n const response = await adapter.decide(\n { model, state: request.state, questions: request.questions },\n request.options?.signal !== undefined ? { signal: request.options.signal } : undefined,\n );\n const decisions = acceptCalibrated(request.questions, response.answers, response.raw);\n const inputTokens = response.usage?.inputTokens ?? 0;\n const outputTokens = response.usage?.outputTokens ?? 0;\n return {\n calibrated: true,\n decisions,\n meta: {\n model: response.model ?? model,\n usage: { inputTokens, outputTokens, totalTokens: inputTokens + outputTokens, reported: response.usage !== undefined },\n durationMs: Date.now() - started,\n provider: { raw: response.raw },\n },\n };\n };\n\n const decideEmulated = async <Qs extends Questions>(\n model: string,\n request: DecideRequest<Qs>,\n started: number,\n ): Promise<DecideResult<Qs>> => {\n const state = typeof request.state === 'string' ? request.state : JSON.stringify(request.state);\n const result = await runComplete<unknown>(\n {\n messages: [{ role: 'user', content: decisionEmulationPrompt(state) }],\n schema: uncalibratedSchemaOf(request.questions),\n tools: undefined,\n retries: config.retries ?? 2,\n options: config.options,\n ...(request.options?.signal !== undefined && { streamOptions: { signal: request.options.signal } }),\n },\n { stepStream, model, capabilities: resolveCapabilities(config) },\n );\n return {\n calibrated: false,\n decisions: acceptUncalibrated(request.questions, result.response, result.meta.provider.raw),\n meta: {\n model: result.meta.model,\n // complete() adds reported usage to estimated usage and does not say which.\n usage: { ...result.meta.usage, reported: false },\n durationMs: Date.now() - started,\n provider: { raw: result.meta.provider.raw },\n },\n };\n };\n\n return {\n apiKey: (key) => fork({ apiKey: key }),\n model: (m) => fork({ model: m }),\n systemPrompt: (prompt) => fork({ systemPrompt: prompt }),\n history: (msgs) => fork({ history: msgs }),\n schema: <U>(s: ZodType<U>) => fork<U>({ schema: s }),\n tools: (t) => fork({ tools: t }),\n retries: (count) => fork({ retries: count }),\n options: (opts) => fork({ options: { ...config.options, ...opts } }),\n onRetry: (handler) => fork({ onRetry: handler }),\n onToolCall: (handler) => fork({ onToolCall: handler }),\n\n describe: (): SignalDescription => {\n if (typeof config.provider === 'string') {\n const entry = providerRegistry[config.provider];\n return {\n provider: config.provider,\n model: config.model ?? entry?.defaultModel,\n kind: kindOf(adapterTypeOf(config)),\n capabilities: resolveCapabilities(config),\n modelKnown: modelRowOf(config)?.row !== undefined,\n };\n }\n return {\n provider: config.provider.baseUrl,\n model: config.model ?? config.provider.model,\n kind: kindOf(adapterTypeOf(config)),\n capabilities: resolveCapabilities(config),\n modelKnown: false,\n };\n },\n\n complete: async (input): Promise<SignalResult<T>> =>\n runComplete<T>(\n {\n messages: buildMessages(config, input),\n schema: config.schema,\n tools: config.tools,\n retries: config.retries ?? 2,\n options: config.options,\n onRetry: config.onRetry,\n onToolCall: config.onToolCall,\n },\n { stepStream: stepStreamAs('complete'), model: resolveProvider(config).model, capabilities: resolveCapabilities(config) },\n ),\n\n stream: (input, streamOptions) =>\n runStream<T>(\n {\n messages: buildMessages(config, input),\n schema: config.schema,\n tools: config.tools,\n retries: config.retries ?? 2,\n options: config.options,\n streamOptions,\n onRetry: config.onRetry,\n onToolCall: config.onToolCall,\n },\n { stepStream: stepStreamAs('stream'), model: resolveProvider(config).model, capabilities: resolveCapabilities(config) },\n ),\n\n step,\n stepStream,\n\n embed: (async (input: string | string[], options?: EmbedOptions): Promise<number[] | number[][]> => {\n const adapter = await getChatAdapter('embed');\n if (!adapter.embed) {\n throw new SignalError('This provider does not support embedding', ErrorCode.PROVIDER_ERROR);\n }\n const resolved = resolveProvider(config);\n const response = await adapter.embed({\n model: resolved.model,\n input,\n dimensions: options?.dimensions,\n });\n options?.onUsage?.(response.usage, resolved.model);\n if (typeof input === 'string') {\n const vector = response.embeddings[0];\n if (!vector) throw new SignalError('No embedding returned', ErrorCode.PROVIDER_ERROR);\n return vector;\n }\n return response.embeddings;\n }) as Signal<T>['embed'],\n\n decide: async <const Qs extends Questions>(request: DecideRequest<Qs>): Promise<DecideResult<Qs>> => {\n assertQuestions(request.questions);\n const started = Date.now();\n const adapter = await getAdapter();\n const model = resolveProvider(config).model;\n return adapter.kind === 'decisions'\n ? decideCalibrated(adapter, model, request, started)\n : decideEmulated(model, request, started);\n },\n\n count: async (input: CountInput): Promise<number> => {\n const CHARS_PER_TOKEN = 4;\n if (typeof input === 'string') {\n return Math.ceil(input.length / CHARS_PER_TOKEN);\n }\n let total = 0;\n for (const msg of input) {\n total += 4; // per-message overhead\n if (typeof msg.content === 'string') {\n total += Math.ceil(msg.content.length / CHARS_PER_TOKEN);\n continue;\n }\n for (const part of msg.content) {\n if (part.type === 'text') {\n total += Math.ceil(part.text.length / CHARS_PER_TOKEN);\n } else {\n total += 256;\n }\n }\n }\n return total;\n },\n };\n};\n\nexport const createSignal = (\n provider: string | CustomProviderConfig,\n options?: Partial<Omit<SignalConfig, 'provider'>>,\n): Signal<string> =>\n createSignalFromConfig<string>({ provider, ...options });\n","import type { z } from 'zod';\nimport type { Tool, ToolConfig } from '../types';\n\nexport const defineTool = <TInput>(config: ToolConfig<TInput>): Tool => ({\n name: config.name,\n description: config.description,\n inputSchema: config.input as z.ZodType,\n execute: config.execute as (input: unknown) => Promise<unknown> | unknown,\n});\n","import type { ZodType } from 'zod';\nimport type { Capabilities, ResponseFormat, StepToolDescriptor } from '../types';\nimport { SignalError, ErrorCode } from '../errors';\nimport { RESPOND_DESCRIPTION, corrections, finishProtocol, type ProtocolSpec } from './protocol';\n\nexport type OutputTransport = 'respond' | 'native' | 'emit';\n\nexport type ResponseMode = 'required' | 'optional';\n\nexport type TransportSpec = {\n wire: ZodType;\n looseWire: ZodType;\n responseMode: ResponseMode;\n hasData: boolean;\n hasTools: boolean;\n choice?: 'auto' | OutputTransport;\n forceTool?: boolean;\n};\n\nexport type ResolvedTransport = {\n transport: OutputTransport;\n responseMode: ResponseMode;\n respondDetail?: 'full' | 'loose' | 'permissive';\n respondDescriptor?: StepToolDescriptor;\n outputToolName?: string;\n responseFormat?: ResponseFormat;\n toolChoice?: 'required';\n injectSchemaDoc: boolean;\n finishProtocol: string;\n corrections: { termination: string; invalidOutput: string };\n};\n\nexport const RESPOND_TOOL_NAME = 'respond';\n\nconst FULL_PARAMS_MAX_CHARS = 8_192;\n\ntype SchemaAnalysis = { serialized: Record<string, unknown> | null; hasRef: boolean; size: number };\n\nconst analyzeWireSchema = (schema: ZodType): SchemaAnalysis => {\n try {\n const serialized = schema['~standard'].jsonSchema.output({ target: 'draft-07' });\n const text = JSON.stringify(serialized);\n return { serialized, hasRef: text.includes('\"$ref\"'), size: text.length };\n } catch {\n return { serialized: null, hasRef: false, size: Number.POSITIVE_INFINITY };\n }\n};\n\n// Converted by the schema's own zod, not by ours: the caller's schema may come from another\n// zod copy, whose metadata is not in our registry.\nconst toJsonSchemaRecord = (schema: ZodType): Record<string, unknown> => {\n const convert = schema['~standard'].jsonSchema.output;\n try {\n return convert({ target: 'draft-07' });\n } catch {\n return convert({ target: 'draft-07', libraryOptions: { unrepresentable: 'any' } });\n }\n};\n\n// A provider that validates tool arguments answers a mismatch with a 400 for the whole\n// request, which loses an attempt the repair ladder would have saved. So its params name\n// the envelope fields and constrain nothing.\nconst respondParams = (\n spec: TransportSpec,\n caps: Capabilities,\n analysis: SchemaAnalysis,\n fullIsViable: boolean,\n): { detail: 'full' | 'loose' | 'permissive'; parameters: Record<string, unknown> } => {\n if (caps.validatesToolArgs) {\n return {\n detail: 'permissive',\n parameters: {\n type: 'object',\n properties: spec.hasData ? { response: {}, data: {}, reasoning: {} } : { response: {}, reasoning: {} },\n },\n };\n }\n if (!spec.hasData || fullIsViable) {\n return { detail: 'full', parameters: analysis.serialized ?? toJsonSchemaRecord(spec.wire) };\n }\n return { detail: 'loose', parameters: toJsonSchemaRecord(spec.looseWire) };\n};\n\nconst protocolSpec = (transport: OutputTransport, spec: TransportSpec, injectSchemaDoc: boolean): ProtocolSpec => ({\n transport,\n responseMode: spec.responseMode,\n hasData: spec.hasData,\n hasTools: spec.hasTools,\n injectSchemaDoc,\n});\n\nexport const resolveTransport = (spec: TransportSpec, caps: Capabilities): ResolvedTransport => {\n const analysis = analyzeWireSchema(spec.wire);\n const fullIsViable = analysis.serialized !== null && !analysis.hasRef && analysis.size <= FULL_PARAMS_MAX_CHARS;\n\n const nativeIsViable = caps.nativeJsonSchema && fullIsViable && (!spec.hasTools || caps.toolsWithStructuredOutput);\n\n const choice = spec.choice ?? 'auto';\n if (choice === 'native' && !nativeIsViable) {\n throw new SignalError(\n spec.hasTools && !caps.toolsWithStructuredOutput\n ? 'transport \"native\" needs a provider that combines tools with response_format (capabilities.toolsWithStructuredOutput)'\n : 'transport \"native\" needs capabilities.nativeJsonSchema and a wire schema that serializes small and non-recursive',\n ErrorCode.VALIDATION_FAILED,\n );\n }\n\n // `respond` is picked only where its tool params enforce the contract. Anywhere else it\n // adds a synthetic tool and the contract rides the prompt, as it does under `emit`.\n const respondEnforces = !caps.validatesToolArgs && !caps.manglesNestedToolArgs && (!spec.hasData || fullIsViable);\n\n let transport: OutputTransport;\n if (choice !== 'auto') transport = choice;\n else if (nativeIsViable && spec.hasData) transport = 'native';\n else if (respondEnforces || spec.forceTool) transport = 'respond';\n else transport = 'emit';\n\n if (transport === 'emit' && spec.forceTool) {\n throw new SignalError(\n 'output.forceTool cannot combine with the emit transport — the final turn must be a content-only message',\n ErrorCode.VALIDATION_FAILED,\n );\n }\n\n if (transport === 'native') {\n const serialized = analysis.serialized ?? toJsonSchemaRecord(spec.wire);\n const injectSchemaDoc = false;\n return {\n transport,\n responseMode: spec.responseMode,\n responseFormat: {\n type: 'json_schema',\n // Strict mode rejects open records and several keywords; non-strict still constrains.\n jsonSchema: { name: 'envelope', strict: false, schema: serialized },\n },\n injectSchemaDoc,\n finishProtocol: finishProtocol(protocolSpec(transport, spec, injectSchemaDoc)),\n corrections: corrections(transport),\n };\n }\n\n if (transport === 'emit') {\n const injectSchemaDoc = spec.hasData;\n return {\n transport,\n responseMode: spec.responseMode,\n injectSchemaDoc,\n finishProtocol: finishProtocol(protocolSpec(transport, spec, injectSchemaDoc)),\n corrections: corrections(transport),\n };\n }\n\n const { detail: respondDetail, parameters } = respondParams(spec, caps, analysis, fullIsViable);\n const injectSchemaDoc = spec.hasData && respondDetail !== 'full';\n return {\n transport,\n responseMode: spec.responseMode,\n respondDetail,\n respondDescriptor: { name: RESPOND_TOOL_NAME, description: RESPOND_DESCRIPTION, parameters },\n outputToolName: RESPOND_TOOL_NAME,\n ...(spec.forceTool && { toolChoice: 'required' as const }),\n injectSchemaDoc,\n finishProtocol: finishProtocol(protocolSpec(transport, spec, injectSchemaDoc)),\n corrections: corrections(transport),\n };\n};\n","import type { z } from 'zod';\n\nexport type ImageSource =\n | { type: 'url'; url: string }\n | { type: 'base64'; mediaType: string; data: string };\n\nexport type ContentPart =\n | { type: 'text'; text: string }\n | { type: 'image'; source: ImageSource };\n\nexport type AssistantToolCall = {\n id: string;\n name: string;\n // A JSON string, as the OpenAI wire carries it.\n args: string;\n};\n\nexport type Message =\n | { role: 'system'; content: string }\n | { role: 'user'; content: string | ContentPart[] }\n | { role: 'assistant'; content: string; toolCalls?: AssistantToolCall[] }\n | { role: 'tool'; toolCallId: string; name: string; content: string };\n\nexport type ToolConfig<TInput = unknown> = {\n name: string;\n description: string;\n input: z.ZodType<TInput>;\n execute: (input: TInput) => Promise<unknown> | unknown;\n};\n\nexport type Tool = {\n name: string;\n description: string;\n inputSchema: z.ZodType;\n execute: (input: unknown) => Promise<unknown> | unknown;\n};\n\nexport type ToolCallRecord = {\n name: string;\n args: unknown;\n result: unknown;\n durationMs: number;\n};\n\nexport type EndpointCapabilities = {\n nativeTools: boolean;\n nativeJsonMode: boolean;\n validatesToolArgs: boolean;\n supportsEmbedding: boolean;\n};\n\nexport type ModelCapabilities = {\n nativeJsonSchema: boolean;\n toolsWithStructuredOutput: boolean;\n manglesNestedToolArgs: boolean;\n multimodal: boolean;\n};\n\nexport type Capabilities = EndpointCapabilities & ModelCapabilities;\n\n// Every value some provider accepts, not one provider's scale: `default` is Groq's for\n// Qwen, `xhigh` and `max` are OpenRouter's.\nexport const REASONING_EFFORTS = ['none', 'default', 'minimal', 'low', 'medium', 'high', 'xhigh', 'max'] as const;\nexport type ReasoningEffort = (typeof REASONING_EFFORTS)[number];\n\nexport type SignalOptions = {\n temperature?: number;\n maxTokens?: number;\n topP?: number;\n stopSequences?: string[];\n seed?: number;\n signal?: AbortSignal;\n reasoningEffort?: ReasoningEffort;\n};\n\nexport type ProviderError = {\n code: string;\n message: string;\n recovered: boolean;\n raw?: unknown;\n};\n\nexport type SignalMeta = {\n model: string;\n usage: {\n inputTokens: number;\n outputTokens: number;\n totalTokens: number;\n };\n durationMs: number;\n retries: number;\n toolCalls: ToolCallRecord[];\n provider: {\n raw: unknown;\n errors: ProviderError[];\n };\n};\n\nexport type SignalResult<T> = {\n response: T;\n history: Message[];\n meta: SignalMeta;\n};\n\nexport type StepToolCall = {\n id: string;\n name: string;\n args: unknown;\n};\n\nexport type StepInputMessage =\n | Message\n | {\n role: 'tool';\n toolCallId: string;\n name: string;\n content: string;\n };\n\nexport type Rejection = {\n name?: string;\n args?: unknown;\n argsText: string;\n truncated: boolean;\n};\n\nexport type StepOutcome =\n | { kind: 'tool_calls'; calls: StepToolCall[] }\n // `value` is the accepted candidate as it arrived, not the schema's parsed output: the\n // acceptance schema gates and does not transform.\n | { kind: 'output'; value: unknown }\n | { kind: 'failed'; evidence: string; truncated?: boolean };\n\nexport type WireReport = {\n rung?: string;\n recovered?: { strategy: string; name?: string; truncated: boolean };\n notes?: string[];\n};\n\nexport type StepToolDescriptor = {\n name: string;\n description: string;\n parameters: Record<string, unknown>;\n};\n\nexport type ResponseFormat =\n | {\n type: 'json_schema';\n jsonSchema: { name: string; strict: boolean; schema: Record<string, unknown> };\n }\n | { type: 'json_object' };\n\nexport type StepRequest = {\n messages: ReadonlyArray<StepInputMessage>;\n tools?: ReadonlyArray<StepToolDescriptor>;\n toolChoice?: 'auto' | 'none' | 'required' | { name: string };\n output?: { accept: z.ZodType; outputTool?: string };\n responseFormat?: ResponseFormat;\n options?: SignalOptions;\n};\n\nexport type StepResult = {\n content: string;\n toolCalls: StepToolCall[];\n // `reported: false` means the provider sent no usage and the numbers are an estimate:\n // OpenAI-compatible streams do not reliably send the usage frame.\n usage: {\n inputTokens: number;\n outputTokens: number;\n totalTokens: number;\n reported: boolean;\n };\n finishReason: string;\n raw: unknown;\n outcome?: StepOutcome;\n wire?: WireReport;\n};\n\nexport type CountInput = string | ReadonlyArray<StepInputMessage>;\n\nexport type EmbedOptions = {\n dimensions?: number;\n onUsage?: (usage: { inputTokens: number; totalTokens: number }, model: string) => void;\n};\n\nexport type EmbedRequest = {\n model: string;\n input: string | string[];\n dimensions?: number;\n};\n\nexport type EmbedResponse = {\n embeddings: number[][];\n usage: {\n inputTokens: number;\n totalTokens: number;\n };\n};\n\nexport type ChoiceQuestion<K extends string = string> = {\n type: 'choice';\n instructions: string;\n criteria: Record<K, string>;\n};\n\n// `criteria` lists the levels lowest first; a level is its index.\nexport type ScoreQuestion = {\n type: 'score';\n instructions: string;\n criteria: readonly string[];\n};\n\n// A yes/no, answered as the probability of yes.\nexport type NoulQuestion = {\n type: 'noul';\n instructions: string;\n criteria?: { true: string; false: string };\n};\n\nexport type Question = ChoiceQuestion | ScoreQuestion | NoulQuestion;\nexport type Questions = Record<string, Question>;\n\nexport type DecideState = string | Record<string, unknown> | readonly unknown[];\n\nexport type UncalibratedDecision<Q extends Question> =\n Q extends ChoiceQuestion<infer K> ? { choice: K }\n : Q extends ScoreQuestion ? { level: number }\n : { answer: boolean };\n\n// `level` is the most probable level and `score` the probability-weighted one; `answer`\n// is `noul >= 0.5`.\nexport type CalibratedDecision<Q extends Question> =\n Q extends ChoiceQuestion<infer K> ? { choice: K; probabilities: Record<K, number>; confidence: number }\n : Q extends ScoreQuestion ? { level: number; score: number; probabilities: number[]; confidence: number }\n : { answer: boolean; noul: number };\n\nexport type DecideRequest<Qs extends Questions> = {\n state: DecideState;\n questions: Qs;\n options?: { signal?: AbortSignal };\n};\n\nexport type DecideMeta = {\n model: string;\n usage: { inputTokens: number; outputTokens: number; totalTokens: number; reported: boolean };\n durationMs: number;\n provider: { raw: unknown };\n};\n\n// A text model returns picks and no probabilities. The uncalibrated branch has none\n// in its type: an invented 1.0 would clear every caller's threshold.\nexport type DecideResult<Qs extends Questions> =\n | { calibrated: true; decisions: { [N in keyof Qs]: CalibratedDecision<Qs[N]> }; meta: DecideMeta }\n | { calibrated: false; decisions: { [N in keyof Qs]: UncalibratedDecision<Qs[N]> }; meta: DecideMeta };\n\nexport type StreamEvent<T> =\n | { type: 'text'; text: string }\n | { type: 'tool_start'; name: string; args: unknown }\n | { type: 'tool_end'; name: string; result: unknown }\n | { type: 'retry'; reason: string; attempt: number }\n | { type: 'error'; error: Error; recovered: boolean }\n | { type: 'done'; response: T; history: Message[]; meta: SignalMeta };\n\nexport type StepStreamEvent =\n | { type: 'text'; text: string }\n | { type: 'reasoning'; text: string }\n | { type: 'tool_call_delta'; index: number; id?: string; name?: string; argsText: string }\n | { type: 'done'; result: StepResult };\n\nexport type StreamOptions = {\n signal?: AbortSignal;\n};\n\nexport type ProviderStreamDelta =\n | { type: 'text'; text: string }\n | { type: 'reasoning'; text: string }\n | { type: 'tool_call'; index: number; id?: string; name?: string; argsFragment?: string }\n | { type: 'usage'; inputTokens: number; outputTokens: number; totalTokens: number }\n | { type: 'finish'; finishReason: string };\n\nexport type ProviderRequest = {\n model: string;\n messages: Message[];\n responseFormat?: ResponseFormat;\n tools?: Array<{\n type: 'function';\n function: { name: string; description: string; parameters: Record<string, unknown> };\n }>;\n toolChoice?: 'auto' | 'none' | 'required' | { name: string };\n options?: SignalOptions;\n};\n\nexport type ProviderResponse = {\n content: string;\n toolCalls?: Array<{\n id: string;\n name: string;\n args: string;\n }>;\n usage: {\n inputTokens: number;\n outputTokens: number;\n totalTokens: number;\n };\n finishReason: string;\n raw: unknown;\n};\n\nexport type ChatAdapter = {\n kind: 'chat';\n id: string;\n chat: (request: ProviderRequest) => Promise<ProviderResponse>;\n chatStream: (request: ProviderRequest, options?: { signal?: AbortSignal }) => AsyncIterable<ProviderStreamDelta>;\n embed?: (request: EmbedRequest) => Promise<EmbedResponse>;\n};\n\nexport type DecisionAdapter = {\n kind: 'decisions';\n id: string;\n decide: (request: DecisionRequest, options?: { signal?: AbortSignal }) => Promise<DecisionResponse>;\n};\n\nexport type ProviderAdapter = ChatAdapter | DecisionAdapter;\n\nexport type DecisionRequest = {\n model: string;\n state: DecideState;\n questions: Questions;\n};\n\nexport type DecisionResponse = {\n model?: string;\n answers: unknown;\n usage?: { inputTokens: number; outputTokens: number };\n raw: unknown;\n};\n"]}