UNPKG

@tanstack/ai

Version:

Core TanStack AI library - Open source AI SDK

81 lines (80 loc) 2.37 kB
import { aiEventClient } from "@tanstack/ai-event-client"; import { streamGenerationResult } from "../stream-generation-result.js"; import { resolveDebugOption } from "../../logger/resolve.js"; const kind = "audio"; function createId(prefix) { return `${prefix}-${Date.now()}-${Math.random().toString(36).slice(2, 9)}`; } function generateAudio(options) { if (options.stream) { return streamGenerationResult( () => runGenerateAudio(options) ); } return runGenerateAudio(options); } async function runGenerateAudio(options) { const { adapter, stream: _stream, debug: _debug, ...rest } = options; const model = adapter.model; const requestId = createId("audio"); const startTime = Date.now(); const logger = resolveDebugOption(options.debug); const providerName = adapter.provider ?? adapter.name ?? "unknown"; aiEventClient.emit("audio:request:started", { requestId, provider: adapter.name, model, prompt: rest.prompt, duration: rest.duration, modelOptions: rest.modelOptions, timestamp: startTime }); logger.request(`activity=generateAudio provider=${providerName}`, { provider: providerName, model }); try { const result = await adapter.generateAudio({ ...rest, model, logger }); const elapsedMs = Date.now() - startTime; aiEventClient.emit("audio:request:completed", { requestId, provider: adapter.name, model, audio: result.audio, duration: elapsedMs, modelOptions: rest.modelOptions, timestamp: Date.now() }); logger.output(`activity=generateAudio provider=${providerName}`, { contentType: result.audio.contentType, audioDuration: result.audio.duration }); return result; } catch (error) { const elapsedMs = Date.now() - startTime; const err = error; aiEventClient.emit("audio:request:error", { requestId, provider: adapter.name, model, error: { message: err.message, name: err.name }, duration: elapsedMs, modelOptions: rest.modelOptions, timestamp: Date.now() }); logger.errors("generateAudio activity failed", { error, source: "generateAudio" }); throw error; } } function createAudioOptions(options) { return options; } export { createAudioOptions, generateAudio, kind }; //# sourceMappingURL=index.js.map