/** * Audio transcription entry point. * * Thin facade over `runCapability({ capability: 'audio' })` that: * 1. Builds the per-provider AudioTranscriptionRequest from * `cfg.tools.media.audio`. * 2. Resolves the api key / base URL / per-provider model from config + env. * 3. Returns a normalized `{ transcript, attempts }` shape so the agent / * channel layer doesn't see the registry plumbing. */ import type { CapabilityAttachmentInput, MediaUnderstandingDecision } from './types.js'; export type { AudioTranscriptionRequest, AudioTranscriptionResult } from './types.js'; export interface AudioProviderResolvedConfig { /** Provider id (must match a registered MediaUnderstandingProvider id). */ id: string; apiKey?: string; baseUrl?: string; model?: string; language?: string; prompt?: string; query?: Record; headers?: Record; /** Provider-specific extra fields preserved as-is. */ extra?: Record; } export interface RunAudioTranscriptionOptions { /** Pre-resolved provider configs in the order to try them. */ providers: readonly AudioProviderResolvedConfig[]; /** Audio buffers to transcribe. */ attachments: readonly CapabilityAttachmentInput[]; /** Hard timeout per provider call (ms). */ timeoutMs: number; signal?: AbortSignal; } export interface RunAudioTranscriptionResult { /** First successful transcript across attachments (joined when multiple). */ transcript?: string; /** Per-attachment outputs (preserves order). */ outputs: Array<{ attachmentIndex: number; text: string; provider: string; model?: string; }>; decision: MediaUnderstandingDecision; } export declare function runAudioTranscription(options: RunAudioTranscriptionOptions): Promise;