@ai-sdk/assemblyai 2.0.41 → 2.0.43

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/assemblyai-provider.ts","../src/assemblyai-transcription-model.ts","../src/assemblyai-error.ts","../src/version.ts"],"sourcesContent":["export { createAssemblyAI, assemblyai } from './assemblyai-provider';\nexport type {\n AssemblyAIProvider,\n AssemblyAIProviderSettings,\n} from './assemblyai-provider';\nexport type { AssemblyAITranscriptionModelOptions } from './assemblyai-transcription-model';\nexport { VERSION } from './version';\n","import {\n NoSuchModelError,\n type TranscriptionModelV3,\n type ProviderV3,\n} from '@ai-sdk/provider';\nimport {\n loadApiKey,\n withUserAgentSuffix,\n type FetchFunction,\n} from '@ai-sdk/provider-utils';\nimport { AssemblyAITranscriptionModel } from './assemblyai-transcription-model';\nimport type { AssemblyAITranscriptionModelId } from './assemblyai-transcription-settings';\nimport { VERSION } from './version';\n\nexport interface AssemblyAIProvider extends ProviderV3 {\n (\n modelId: 'best',\n settings?: {},\n ): {\n transcription: AssemblyAITranscriptionModel;\n };\n\n /**\n * Creates a model for transcription.\n */\n transcription(modelId: AssemblyAITranscriptionModelId): TranscriptionModelV3;\n\n /**\n * @deprecated Use `embeddingModel` instead.\n */\n textEmbeddingModel(modelId: string): never;\n}\n\nexport interface AssemblyAIProviderSettings {\n /**\n * API key for authenticating requests.\n */\n apiKey?: string;\n\n /**\n * Custom headers to include in the requests.\n */\n headers?: Record<string, string>;\n\n /**\n * Custom fetch implementation. You can use it as a middleware to intercept requests,\n * or to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n}\n\n/**\n * Create an AssemblyAI provider instance.\n */\nexport function createAssemblyAI(\n options: AssemblyAIProviderSettings = {},\n): AssemblyAIProvider {\n const getHeaders = () =>\n withUserAgentSuffix(\n {\n authorization: loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'ASSEMBLYAI_API_KEY',\n description: 'AssemblyAI',\n }),\n ...options.headers,\n },\n `ai-sdk/assemblyai/${VERSION}`,\n );\n\n const createTranscriptionModel = (modelId: AssemblyAITranscriptionModelId) =>\n new AssemblyAITranscriptionModel(modelId, {\n provider: `assemblyai.transcription`,\n url: ({ path }) => `https://api.assemblyai.com${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const provider = function (modelId: AssemblyAITranscriptionModelId) {\n return {\n transcription: createTranscriptionModel(modelId),\n };\n };\n\n provider.specificationVersion = 'v3' as const;\n provider.transcription = createTranscriptionModel;\n provider.transcriptionModel = createTranscriptionModel;\n\n provider.languageModel = () => {\n throw new NoSuchModelError({\n modelId: 'unknown',\n modelType: 'languageModel',\n message: 'AssemblyAI does not provide language models',\n });\n };\n\n provider.embeddingModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'embeddingModel' });\n };\n provider.textEmbeddingModel = provider.embeddingModel;\n\n provider.imageModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'imageModel' });\n };\n\n return provider as AssemblyAIProvider;\n}\n\n/**\n * Default AssemblyAI provider instance.\n */\nexport const assemblyai = createAssemblyAI();\n","import type { TranscriptionModelV3, SharedV3Warning } from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createJsonResponseHandler,\n extractResponseHeaders,\n parseProviderOptions,\n postJsonToApi,\n postToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport type { AssemblyAIConfig } from './assemblyai-config';\nimport { assemblyaiFailedResponseHandler } from './assemblyai-error';\nimport type { AssemblyAITranscriptionModelId } from './assemblyai-transcription-settings';\nimport type { AssemblyAITranscriptionAPITypes } from './assemblyai-api-types';\n\n// https://www.assemblyai.com/docs/api-reference/transcripts/submit\nconst assemblyaiTranscriptionModelOptionsSchema = z.object({\n /**\n * End time of the audio in milliseconds.\n */\n audioEndAt: z.number().int().nullish(),\n /**\n * Start time of the audio in milliseconds.\n */\n audioStartFrom: z.number().int().nullish(),\n /**\n * Whether to automatically generate chapters for the transcription.\n */\n autoChapters: z.boolean().nullish(),\n /**\n * Whether to automatically generate highlights for the transcription.\n */\n autoHighlights: z.boolean().nullish(),\n /**\n * Boost parameter for the transcription.\n * Allowed values: 'low', 'default', 'high'.\n */\n boostParam: z.string().nullish(),\n /**\n * Whether to enable content safety filtering.\n */\n contentSafety: z.boolean().nullish(),\n /**\n * Confidence threshold for content safety filtering (25-100).\n */\n contentSafetyConfidence: z.number().int().min(25).max(100).nullish(),\n /**\n * Custom spelling rules for the transcription.\n */\n customSpelling: z\n .array(\n z.object({\n from: z.array(z.string()),\n to: z.string(),\n }),\n )\n .nullish(),\n /**\n * Whether to include filler words (um, uh, etc.) in the transcription.\n */\n disfluencies: z.boolean().nullish(),\n /**\n * Whether to enable entity detection.\n */\n entityDetection: z.boolean().nullish(),\n /**\n * Whether to filter profanity from the transcription.\n */\n filterProfanity: z.boolean().nullish(),\n /**\n * Whether to format text with punctuation and capitalization.\n */\n formatText: z.boolean().nullish(),\n /**\n * Whether to enable IAB categories detection.\n */\n iabCategories: z.boolean().nullish(),\n /**\n * Language code for the transcription.\n */\n languageCode: z.union([z.literal('en'), z.string()]).nullish(),\n /**\n * Confidence threshold for language detection.\n */\n languageConfidenceThreshold: z.number().nullish(),\n /**\n * Whether to enable language detection.\n */\n languageDetection: z.boolean().nullish(),\n /**\n * Whether to process audio as multichannel.\n */\n multichannel: z.boolean().nullish(),\n /**\n * Whether to add punctuation to the transcription.\n */\n punctuate: z.boolean().nullish(),\n /**\n * Whether to redact personally identifiable information (PII).\n */\n redactPii: z.boolean().nullish(),\n /**\n * Whether to redact PII in the audio file.\n */\n redactPiiAudio: z.boolean().nullish(),\n /**\n * Audio format for PII redaction.\n */\n redactPiiAudioQuality: z.string().nullish(),\n /**\n * List of PII types to redact.\n */\n redactPiiPolicies: z.array(z.string()).nullish(),\n /**\n * Substitution method for redacted PII.\n */\n redactPiiSub: z.string().nullish(),\n /**\n * Whether to enable sentiment analysis.\n */\n sentimentAnalysis: z.boolean().nullish(),\n /**\n * Whether to identify different speakers in the audio.\n */\n speakerLabels: z.boolean().nullish(),\n /**\n * Number of speakers expected in the audio.\n */\n speakersExpected: z.number().int().nullish(),\n /**\n * Threshold for speech detection (0-1).\n */\n speechThreshold: z.number().min(0).max(1).nullish(),\n /**\n * Whether to generate a summary of the transcription.\n */\n summarization: z.boolean().nullish(),\n /**\n * Model to use for summarization.\n */\n summaryModel: z.string().nullish(),\n /**\n * Type of summary to generate.\n */\n summaryType: z.string().nullish(),\n /**\n * Name of the authentication header for webhook requests.\n */\n webhookAuthHeaderName: z.string().nullish(),\n /**\n * Value of the authentication header for webhook requests.\n */\n webhookAuthHeaderValue: z.string().nullish(),\n /**\n * URL to send webhook notifications to.\n */\n webhookUrl: z.string().nullish(),\n /**\n * List of words to boost recognition for.\n */\n wordBoost: z.array(z.string()).nullish(),\n});\n\nexport type AssemblyAITranscriptionModelOptions = z.infer<\n typeof assemblyaiTranscriptionModelOptionsSchema\n>;\n\ninterface AssemblyAITranscriptionModelConfig extends AssemblyAIConfig {\n _internal?: {\n currentDate?: () => Date;\n };\n /**\n * The polling interval for checking transcript status in milliseconds.\n */\n pollingInterval?: number;\n}\n\nexport class AssemblyAITranscriptionModel implements TranscriptionModelV3 {\n readonly specificationVersion = 'v3';\n private readonly POLLING_INTERVAL_MS = 3000;\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(\n readonly modelId: AssemblyAITranscriptionModelId,\n private readonly config: AssemblyAITranscriptionModelConfig,\n ) {}\n\n private async getArgs({\n providerOptions,\n }: Parameters<TranscriptionModelV3['doGenerate']>[0]) {\n const warnings: SharedV3Warning[] = [];\n\n // Parse provider options\n const assemblyaiOptions = await parseProviderOptions({\n provider: 'assemblyai',\n providerOptions,\n schema: assemblyaiTranscriptionModelOptionsSchema,\n });\n\n const body: Omit<AssemblyAITranscriptionAPITypes, 'audio_url'> = {\n speech_model: this.modelId,\n };\n\n // Add provider-specific options\n if (assemblyaiOptions) {\n body.audio_end_at = assemblyaiOptions.audioEndAt ?? undefined;\n body.audio_start_from = assemblyaiOptions.audioStartFrom ?? undefined;\n body.auto_chapters = assemblyaiOptions.autoChapters ?? undefined;\n body.auto_highlights = assemblyaiOptions.autoHighlights ?? undefined;\n body.boost_param = (assemblyaiOptions.boostParam as never) ?? undefined;\n body.content_safety = assemblyaiOptions.contentSafety ?? undefined;\n body.content_safety_confidence =\n assemblyaiOptions.contentSafetyConfidence ?? undefined;\n body.custom_spelling =\n (assemblyaiOptions.customSpelling as never) ?? undefined;\n body.disfluencies = assemblyaiOptions.disfluencies ?? undefined;\n body.entity_detection = assemblyaiOptions.entityDetection ?? undefined;\n body.filter_profanity = assemblyaiOptions.filterProfanity ?? undefined;\n body.format_text = assemblyaiOptions.formatText ?? undefined;\n body.iab_categories = assemblyaiOptions.iabCategories ?? undefined;\n body.language_code =\n (assemblyaiOptions.languageCode as never) ?? undefined;\n body.language_confidence_threshold =\n assemblyaiOptions.languageConfidenceThreshold ?? undefined;\n body.language_detection =\n assemblyaiOptions.languageDetection ?? undefined;\n body.multichannel = assemblyaiOptions.multichannel ?? undefined;\n body.punctuate = assemblyaiOptions.punctuate ?? undefined;\n body.redact_pii = assemblyaiOptions.redactPii ?? undefined;\n body.redact_pii_audio = assemblyaiOptions.redactPiiAudio ?? undefined;\n body.redact_pii_audio_quality =\n (assemblyaiOptions.redactPiiAudioQuality as never) ?? undefined;\n body.redact_pii_policies =\n (assemblyaiOptions.redactPiiPolicies as never) ?? undefined;\n body.redact_pii_sub =\n (assemblyaiOptions.redactPiiSub as never) ?? undefined;\n body.sentiment_analysis =\n assemblyaiOptions.sentimentAnalysis ?? undefined;\n body.speaker_labels = assemblyaiOptions.speakerLabels ?? undefined;\n body.speakers_expected = assemblyaiOptions.speakersExpected ?? undefined;\n body.speech_threshold = assemblyaiOptions.speechThreshold ?? undefined;\n body.summarization = assemblyaiOptions.summarization ?? undefined;\n body.summary_model =\n (assemblyaiOptions.summaryModel as never) ?? undefined;\n body.summary_type = (assemblyaiOptions.summaryType as never) ?? undefined;\n body.webhook_auth_header_name =\n assemblyaiOptions.webhookAuthHeaderName ?? undefined;\n body.webhook_auth_header_value =\n assemblyaiOptions.webhookAuthHeaderValue ?? undefined;\n body.webhook_url = assemblyaiOptions.webhookUrl ?? undefined;\n body.word_boost = assemblyaiOptions.wordBoost ?? undefined;\n }\n\n return {\n body,\n warnings,\n };\n }\n\n /**\n * Polls the given transcript until we have a status other than `processing` or `queued`.\n *\n * @see https://www.assemblyai.com/docs/getting-started/transcribe-an-audio-file#step-33\n */\n private async waitForCompletion(\n transcriptId: string,\n headers: Record<string, string | undefined> | undefined,\n abortSignal?: AbortSignal,\n ): Promise<{\n transcript: z.infer<typeof assemblyaiTranscriptionResponseSchema>;\n responseHeaders: Record<string, string>;\n }> {\n const pollingInterval =\n this.config.pollingInterval ?? this.POLLING_INTERVAL_MS;\n\n while (true) {\n if (abortSignal?.aborted) {\n throw new Error('Transcription request was aborted');\n }\n\n const response = await fetch(\n this.config.url({\n path: `/v2/transcript/${transcriptId}`,\n modelId: this.modelId,\n }),\n {\n method: 'GET',\n headers: combineHeaders(\n this.config.headers(),\n headers,\n ) as HeadersInit,\n signal: abortSignal,\n },\n );\n\n if (!response.ok) {\n throw await assemblyaiFailedResponseHandler({\n response,\n url: this.config.url({\n path: `/v2/transcript/${transcriptId}`,\n modelId: this.modelId,\n }),\n requestBodyValues: {},\n });\n }\n\n const transcript = assemblyaiTranscriptionResponseSchema.parse(\n await response.json(),\n );\n\n if (transcript.status === 'completed') {\n return {\n transcript,\n responseHeaders: extractResponseHeaders(response),\n };\n }\n\n if (transcript.status === 'error') {\n throw new Error(\n `Transcription failed: ${transcript.error ?? 'Unknown error'}`,\n );\n }\n\n await new Promise(resolve => setTimeout(resolve, pollingInterval));\n }\n }\n\n async doGenerate(\n options: Parameters<TranscriptionModelV3['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<TranscriptionModelV3['doGenerate']>>> {\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n\n const { value: uploadResponse } = await postToApi({\n url: this.config.url({\n path: '/v2/upload',\n modelId: '',\n }),\n headers: {\n 'Content-Type': 'application/octet-stream',\n ...combineHeaders(this.config.headers(), options.headers),\n },\n body: {\n content: options.audio,\n values: options.audio,\n },\n failedResponseHandler: assemblyaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n assemblyaiUploadResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const { body, warnings } = await this.getArgs(options);\n\n const { value: submitResponse } = await postJsonToApi({\n url: this.config.url({\n path: '/v2/transcript',\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), options.headers),\n body: {\n ...body,\n audio_url: uploadResponse.upload_url,\n },\n failedResponseHandler: assemblyaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n assemblyaiSubmitResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const { transcript, responseHeaders } = await this.waitForCompletion(\n submitResponse.id,\n options.headers,\n options.abortSignal,\n );\n\n return {\n text: transcript.text ?? '',\n segments:\n transcript.words?.map(word => ({\n text: word.text,\n startSecond: word.start,\n endSecond: word.end,\n })) ?? [],\n language: transcript.language_code ?? undefined,\n durationInSeconds:\n transcript.audio_duration ?? transcript.words?.at(-1)?.end ?? undefined,\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders, // Headers from final GET request\n body: transcript, // Raw response from final GET request\n },\n };\n }\n}\n\nconst assemblyaiUploadResponseSchema = z.object({\n upload_url: z.string(),\n});\n\nconst assemblyaiSubmitResponseSchema = z.object({\n id: z.string(),\n status: z.enum(['queued', 'processing', 'completed', 'error']),\n});\n\nconst assemblyaiTranscriptionResponseSchema = z.object({\n id: z.string(),\n status: z.enum(['queued', 'processing', 'completed', 'error']),\n text: z.string().nullish(),\n language_code: z.string().nullish(),\n words: z\n .array(\n z.object({\n start: z.number(),\n end: z.number(),\n text: z.string(),\n }),\n )\n .nullish(),\n audio_duration: z.number().nullish(),\n error: z.string().nullish(),\n});\n","import { z } from 'zod/v4';\nimport { createJsonErrorResponseHandler } from '@ai-sdk/provider-utils';\n\nexport const assemblyaiErrorDataSchema = z.object({\n error: z.object({\n message: z.string(),\n code: z.number(),\n }),\n});\n\nexport type AssemblyAIErrorData = z.infer<typeof assemblyaiErrorDataSchema>;\n\nexport const assemblyaiFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: assemblyaiErrorDataSchema,\n errorToMessage: data => data.error.message,\n});\n","// Version string of this package injected at build time.\ndeclare const __PACKAGE_VERSION__: string | undefined;\nexport const VERSION: string =\n typeof __PACKAGE_VERSION__ !== 'undefined'\n ? __PACKAGE_VERSION__\n : '0.0.0-test';\n"],"mappings":"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","names":["import_provider_utils","import_provider_utils","import_v4"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/assemblyai-provider.ts","../src/assemblyai-transcription-model.ts","../src/assemblyai-error.ts","../src/version.ts"],"sourcesContent":["export { createAssemblyAI, assemblyai } from './assemblyai-provider';\nexport type {\n AssemblyAIProvider,\n AssemblyAIProviderSettings,\n} from './assemblyai-provider';\nexport type { AssemblyAITranscriptionModelOptions } from './assemblyai-transcription-model';\nexport { VERSION } from './version';\n","import {\n NoSuchModelError,\n type TranscriptionModelV3,\n type ProviderV3,\n} from '@ai-sdk/provider';\nimport {\n loadApiKey,\n withUserAgentSuffix,\n type FetchFunction,\n} from '@ai-sdk/provider-utils';\nimport { AssemblyAITranscriptionModel } from './assemblyai-transcription-model';\nimport type { AssemblyAITranscriptionModelId } from './assemblyai-transcription-settings';\nimport { VERSION } from './version';\n\nexport interface AssemblyAIProvider extends ProviderV3 {\n (\n modelId: AssemblyAITranscriptionModelId,\n settings?: {},\n ): {\n transcription: AssemblyAITranscriptionModel;\n };\n\n /**\n * Creates a model for transcription.\n */\n transcription(modelId: AssemblyAITranscriptionModelId): TranscriptionModelV3;\n\n /**\n * @deprecated Use `embeddingModel` instead.\n */\n textEmbeddingModel(modelId: string): never;\n}\n\nexport interface AssemblyAIProviderSettings {\n /**\n * API key for authenticating requests.\n */\n apiKey?: string;\n\n /**\n * Custom headers to include in the requests.\n */\n headers?: Record<string, string>;\n\n /**\n * Custom fetch implementation. You can use it as a middleware to intercept requests,\n * or to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n}\n\n/**\n * Create an AssemblyAI provider instance.\n */\nexport function createAssemblyAI(\n options: AssemblyAIProviderSettings = {},\n): AssemblyAIProvider {\n const getHeaders = () =>\n withUserAgentSuffix(\n {\n authorization: loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'ASSEMBLYAI_API_KEY',\n description: 'AssemblyAI',\n }),\n ...options.headers,\n },\n `ai-sdk/assemblyai/${VERSION}`,\n );\n\n const createTranscriptionModel = (modelId: AssemblyAITranscriptionModelId) =>\n new AssemblyAITranscriptionModel(modelId, {\n provider: `assemblyai.transcription`,\n url: ({ path }) => `https://api.assemblyai.com${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const provider = function (modelId: AssemblyAITranscriptionModelId) {\n return {\n transcription: createTranscriptionModel(modelId),\n };\n };\n\n provider.specificationVersion = 'v3' as const;\n provider.transcription = createTranscriptionModel;\n provider.transcriptionModel = createTranscriptionModel;\n\n provider.languageModel = () => {\n throw new NoSuchModelError({\n modelId: 'unknown',\n modelType: 'languageModel',\n message: 'AssemblyAI does not provide language models',\n });\n };\n\n provider.embeddingModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'embeddingModel' });\n };\n provider.textEmbeddingModel = provider.embeddingModel;\n\n provider.imageModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'imageModel' });\n };\n\n return provider as AssemblyAIProvider;\n}\n\n/**\n * Default AssemblyAI provider instance.\n */\nexport const assemblyai = createAssemblyAI();\n","import type {\n TranscriptionModelV3,\n SharedV3Warning,\n SharedV3ProviderMetadata,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createJsonResponseHandler,\n extractResponseHeaders,\n parseProviderOptions,\n postJsonToApi,\n postToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport type { AssemblyAIConfig } from './assemblyai-config';\nimport { assemblyaiFailedResponseHandler } from './assemblyai-error';\nimport type { AssemblyAITranscriptionModelId } from './assemblyai-transcription-settings';\nimport type { AssemblyAITranscriptionAPITypes } from './assemblyai-api-types';\n\n// https://www.assemblyai.com/docs/api-reference/transcripts/submit\nconst assemblyaiTranscriptionModelOptionsSchema = z.object({\n /**\n * End time of the audio in milliseconds.\n */\n audioEndAt: z.number().int().nullish(),\n /**\n * Start time of the audio in milliseconds.\n */\n audioStartFrom: z.number().int().nullish(),\n /**\n * Whether to automatically generate chapters for the transcription.\n */\n autoChapters: z.boolean().nullish(),\n /**\n * Whether to automatically generate highlights for the transcription.\n */\n autoHighlights: z.boolean().nullish(),\n /**\n * Boost parameter for word boost (used with `wordBoost`).\n * Allowed values: 'low', 'default', 'high'.\n *\n * @deprecated Only applies to the deprecated `wordBoost` option. Use\n * `keytermsPrompt` instead, which works with the recommended `universal-*`\n * models.\n */\n boostParam: z.string().nullish(),\n /**\n * Whether to enable content safety filtering.\n */\n contentSafety: z.boolean().nullish(),\n /**\n * Confidence threshold for content safety filtering (25-100).\n */\n contentSafetyConfidence: z.number().int().min(25).max(100).nullish(),\n /**\n * Custom spelling rules for the transcription.\n */\n customSpelling: z\n .array(\n z.object({\n from: z.array(z.string()),\n to: z.string(),\n }),\n )\n .nullish(),\n /**\n * Whether to include filler words (um, uh, etc.) in the transcription.\n */\n disfluencies: z.boolean().nullish(),\n /**\n * Enable a domain-specific model to improve accuracy for specialized\n * terminology. Currently supports `'medical-v1'` (Medical Mode).\n */\n domain: z.string().nullish(),\n /**\n * Whether to enable entity detection.\n */\n entityDetection: z.boolean().nullish(),\n /**\n * Whether to filter profanity from the transcription.\n */\n filterProfanity: z.boolean().nullish(),\n /**\n * Whether to format text with punctuation and capitalization.\n */\n formatText: z.boolean().nullish(),\n /**\n * Whether to enable IAB categories detection.\n */\n iabCategories: z.boolean().nullish(),\n /**\n * Domain-specific keyterms to boost recognition for (max 6 words per phrase).\n * Replaces `wordBoost` for newer models: supported by `universal-3-pro` /\n * `universal-3-5-pro` and `slam-1` (and `universal-2` when metaphone is\n * enabled for the account).\n */\n keytermsPrompt: z.array(z.string()).nullish(),\n /**\n * Language code for the transcription.\n */\n languageCode: z.union([z.literal('en'), z.string()]).nullish(),\n /**\n * Confidence threshold for language detection.\n */\n languageConfidenceThreshold: z.number().nullish(),\n /**\n * Whether to enable language detection.\n */\n languageDetection: z.boolean().nullish(),\n /**\n * Options for automatic language detection.\n */\n languageDetectionOptions: z\n .object({\n /** List of languages expected in the audio file. */\n expectedLanguages: z.array(z.string()).nullish(),\n /** Fallback language if the detected language is not expected. */\n fallbackLanguage: z.string().nullish(),\n /** Whether code switching should be detected. */\n codeSwitching: z.boolean().nullish(),\n /** Confidence threshold for code switching detection (0-1). */\n codeSwitchingConfidenceThreshold: z.number().min(0).max(1).nullish(),\n })\n .nullish(),\n /**\n * Whether to process audio as multichannel.\n */\n multichannel: z.boolean().nullish(),\n /**\n * Provide natural-language context (up to 1,500 words) to steer the model.\n * Only supported by `universal-3-pro` / `universal-3-5-pro` and `slam-1`.\n */\n prompt: z.string().nullish(),\n /**\n * Whether to add punctuation to the transcription.\n */\n punctuate: z.boolean().nullish(),\n /**\n * Whether to redact personally identifiable information (PII).\n */\n redactPii: z.boolean().nullish(),\n /**\n * Whether to redact PII in the audio file.\n */\n redactPiiAudio: z.boolean().nullish(),\n /**\n * Options for PII-redacted audio files. Requires `redactPiiAudio`.\n */\n redactPiiAudioOptions: z\n .object({\n /** Return redacted audio even for files without detected speech. */\n returnRedactedNoSpeechAudio: z.boolean().nullish(),\n /** Redaction method; set to `'silence'` to replace PII with silence. */\n overrideAudioRedactionMethod: z.enum(['silence']).nullish(),\n })\n .nullish(),\n /**\n * Audio format for PII redaction.\n */\n redactPiiAudioQuality: z.string().nullish(),\n /**\n * List of PII types to redact.\n */\n redactPiiPolicies: z.array(z.string()).nullish(),\n /**\n * Return the original unredacted transcript alongside the redacted one.\n * Requires `redactPii`.\n */\n redactPiiReturnUnredacted: z.boolean().nullish(),\n /**\n * Substitution method for redacted PII.\n */\n redactPiiSub: z.string().nullish(),\n /**\n * Map of user-defined labels to exact terms to redact, e.g.\n * `{ INTERNAL_TOOL: ['Bearclaw'] }`. Applied on top of standard PII redaction\n * using `redactPiiSub`. Requires `redactPii`.\n */\n redactStaticEntities: z.record(z.string(), z.array(z.string())).nullish(),\n /**\n * Remove inline annotations from rich transcripts. `'all'` removes all inline\n * annotations; `'speaker'` removes only speaker cues. Universal-3 Pro models.\n */\n removeAudioTags: z.enum(['all', 'speaker']).nullish(),\n /**\n * Whether to enable sentiment analysis.\n */\n sentimentAnalysis: z.boolean().nullish(),\n /**\n * Whether to identify different speakers in the audio.\n */\n speakerLabels: z.boolean().nullish(),\n /**\n * Options for speaker diarization, e.g. a range of possible speakers.\n */\n speakerOptions: z\n .object({\n /** Minimum number of speakers expected in the audio file. */\n minSpeakersExpected: z.number().int().nullish(),\n /** Maximum number of speakers expected in the audio file. */\n maxSpeakersExpected: z.number().int().nullish(),\n })\n .nullish(),\n /**\n * Number of speakers expected in the audio.\n */\n speakersExpected: z.number().int().nullish(),\n /**\n * Threshold for speech detection (0-1).\n */\n speechThreshold: z.number().min(0).max(1).nullish(),\n /**\n * Whether to generate a summary of the transcription.\n */\n summarization: z.boolean().nullish(),\n /**\n * Model to use for summarization.\n */\n summaryModel: z.string().nullish(),\n /**\n * Type of summary to generate.\n */\n summaryType: z.string().nullish(),\n /**\n * Sampling temperature (0-1) controlling randomness. Universal-3 Pro models.\n */\n temperature: z.number().min(0).max(1).nullish(),\n /**\n * Name of the authentication header for webhook requests.\n */\n webhookAuthHeaderName: z.string().nullish(),\n /**\n * Value of the authentication header for webhook requests.\n */\n webhookAuthHeaderValue: z.string().nullish(),\n /**\n * URL to send webhook notifications to.\n */\n webhookUrl: z.string().nullish(),\n /**\n * List of words to boost recognition for.\n *\n * @deprecated `wordBoost` is rejected by `universal-3-pro` /\n * `universal-3-5-pro` and `slam-1` (it only works on `universal-2`/`best`).\n * Use `keytermsPrompt` instead.\n */\n wordBoost: z.array(z.string()).nullish(),\n});\n\nexport type AssemblyAITranscriptionModelOptions = z.infer<\n typeof assemblyaiTranscriptionModelOptionsSchema\n>;\n\ninterface AssemblyAITranscriptionModelConfig extends AssemblyAIConfig {\n _internal?: {\n currentDate?: () => Date;\n };\n /**\n * The polling interval for checking transcript status in milliseconds.\n */\n pollingInterval?: number;\n}\n\nexport class AssemblyAITranscriptionModel implements TranscriptionModelV3 {\n readonly specificationVersion = 'v3';\n private readonly POLLING_INTERVAL_MS = 3000;\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(\n readonly modelId: AssemblyAITranscriptionModelId,\n private readonly config: AssemblyAITranscriptionModelConfig,\n ) {}\n\n private async getArgs({\n providerOptions,\n }: Parameters<TranscriptionModelV3['doGenerate']>[0]) {\n const warnings: SharedV3Warning[] = [];\n\n // Parse provider options\n const assemblyaiOptions = await parseProviderOptions({\n provider: 'assemblyai',\n providerOptions,\n schema: assemblyaiTranscriptionModelOptionsSchema,\n });\n\n const body: Omit<AssemblyAITranscriptionAPITypes, 'audio_url'> = {};\n\n // The legacy `best` model is selected via the deprecated singular\n // `speech_model` parameter. All other models (e.g. `universal-2`,\n // `universal-3-pro`, `universal-3-5-pro`) are only accessible via the\n // `speech_models` array and are rejected by `speech_model`.\n // See https://www.assemblyai.com/docs/pre-recorded-audio/select-the-speech-model\n if (this.modelId === 'best') {\n body.speech_model = this.modelId as 'best';\n warnings.push({\n type: 'other',\n message:\n \"The 'best' model is a legacy AssemblyAI model. Use 'universal-3-5-pro' instead. See documentation: https://www.assemblyai.com/docs/pre-recorded-audio/select-the-speech-model\",\n });\n } else {\n body.speech_models = [this.modelId];\n\n // Forward-looking nudge: universal-3-5-pro is AssemblyAI's latest\n // flagship and is set to replace universal-3-pro. Not a deprecation —\n // both models still work — so this is an informational warning only.\n if (\n this.modelId === 'universal-3-pro' ||\n this.modelId === 'universal-2'\n ) {\n const docsUrl =\n 'https://www.assemblyai.com/docs/pre-recorded-audio/select-the-speech-model';\n warnings.push({\n type: 'other',\n message:\n this.modelId === 'universal-3-pro'\n ? `'universal-3-5-pro' is AssemblyAI's latest flagship model and is set to replace 'universal-3-pro'. See ${docsUrl}`\n : `'universal-3-5-pro' is AssemblyAI's latest flagship model. See ${docsUrl}`,\n });\n }\n }\n\n // Add provider-specific options\n if (assemblyaiOptions) {\n body.audio_end_at = assemblyaiOptions.audioEndAt ?? undefined;\n body.audio_start_from = assemblyaiOptions.audioStartFrom ?? undefined;\n body.auto_chapters = assemblyaiOptions.autoChapters ?? undefined;\n body.auto_highlights = assemblyaiOptions.autoHighlights ?? undefined;\n body.boost_param = (assemblyaiOptions.boostParam as never) ?? undefined;\n body.content_safety = assemblyaiOptions.contentSafety ?? undefined;\n body.content_safety_confidence =\n assemblyaiOptions.contentSafetyConfidence ?? undefined;\n body.custom_spelling =\n (assemblyaiOptions.customSpelling as never) ?? undefined;\n body.disfluencies = assemblyaiOptions.disfluencies ?? undefined;\n body.entity_detection = assemblyaiOptions.entityDetection ?? undefined;\n body.filter_profanity = assemblyaiOptions.filterProfanity ?? undefined;\n body.format_text = assemblyaiOptions.formatText ?? undefined;\n body.iab_categories = assemblyaiOptions.iabCategories ?? undefined;\n body.language_code =\n (assemblyaiOptions.languageCode as never) ?? undefined;\n body.language_confidence_threshold =\n assemblyaiOptions.languageConfidenceThreshold ?? undefined;\n body.language_detection =\n assemblyaiOptions.languageDetection ?? undefined;\n body.multichannel = assemblyaiOptions.multichannel ?? undefined;\n body.punctuate = assemblyaiOptions.punctuate ?? undefined;\n body.redact_pii = assemblyaiOptions.redactPii ?? undefined;\n body.redact_pii_audio = assemblyaiOptions.redactPiiAudio ?? undefined;\n body.redact_pii_audio_quality =\n (assemblyaiOptions.redactPiiAudioQuality as never) ?? undefined;\n body.redact_pii_policies =\n (assemblyaiOptions.redactPiiPolicies as never) ?? undefined;\n body.redact_pii_sub =\n (assemblyaiOptions.redactPiiSub as never) ?? undefined;\n body.sentiment_analysis =\n assemblyaiOptions.sentimentAnalysis ?? undefined;\n body.speaker_labels = assemblyaiOptions.speakerLabels ?? undefined;\n body.speakers_expected = assemblyaiOptions.speakersExpected ?? undefined;\n body.speech_threshold = assemblyaiOptions.speechThreshold ?? undefined;\n body.summarization = assemblyaiOptions.summarization ?? undefined;\n body.summary_model =\n (assemblyaiOptions.summaryModel as never) ?? undefined;\n body.summary_type = (assemblyaiOptions.summaryType as never) ?? undefined;\n body.webhook_auth_header_name =\n assemblyaiOptions.webhookAuthHeaderName ?? undefined;\n body.webhook_auth_header_value =\n assemblyaiOptions.webhookAuthHeaderValue ?? undefined;\n body.webhook_url = assemblyaiOptions.webhookUrl ?? undefined;\n body.word_boost = assemblyaiOptions.wordBoost ?? undefined;\n body.keyterms_prompt = assemblyaiOptions.keytermsPrompt ?? undefined;\n body.prompt = assemblyaiOptions.prompt ?? undefined;\n body.temperature = assemblyaiOptions.temperature ?? undefined;\n body.remove_audio_tags = assemblyaiOptions.removeAudioTags ?? undefined;\n body.domain = assemblyaiOptions.domain ?? undefined;\n body.redact_pii_return_unredacted =\n assemblyaiOptions.redactPiiReturnUnredacted ?? undefined;\n body.redact_static_entities =\n assemblyaiOptions.redactStaticEntities ?? undefined;\n\n if (assemblyaiOptions.speakerOptions) {\n body.speaker_options = {\n min_speakers_expected:\n assemblyaiOptions.speakerOptions.minSpeakersExpected ?? undefined,\n max_speakers_expected:\n assemblyaiOptions.speakerOptions.maxSpeakersExpected ?? undefined,\n };\n }\n\n if (assemblyaiOptions.languageDetectionOptions) {\n body.language_detection_options = {\n expected_languages:\n assemblyaiOptions.languageDetectionOptions.expectedLanguages ??\n undefined,\n fallback_language:\n assemblyaiOptions.languageDetectionOptions.fallbackLanguage ??\n undefined,\n code_switching:\n assemblyaiOptions.languageDetectionOptions.codeSwitching ??\n undefined,\n code_switching_confidence_threshold:\n assemblyaiOptions.languageDetectionOptions\n .codeSwitchingConfidenceThreshold ?? undefined,\n };\n }\n\n if (assemblyaiOptions.redactPiiAudioOptions) {\n body.redact_pii_audio_options = {\n return_redacted_no_speech_audio:\n assemblyaiOptions.redactPiiAudioOptions\n .returnRedactedNoSpeechAudio ?? undefined,\n override_audio_redaction_method:\n assemblyaiOptions.redactPiiAudioOptions\n .overrideAudioRedactionMethod ?? undefined,\n };\n }\n\n const deprecatedBoostOptions: string[] = [];\n if (assemblyaiOptions.wordBoost != null) {\n deprecatedBoostOptions.push('wordBoost');\n }\n if (assemblyaiOptions.boostParam != null) {\n deprecatedBoostOptions.push('boostParam');\n }\n if (deprecatedBoostOptions.length > 0) {\n warnings.push({\n type: 'other',\n message: `${deprecatedBoostOptions.join(', ')} ${\n deprecatedBoostOptions.length > 1 ? 'are' : 'is'\n } deprecated and rejected by 'universal-3-pro' / 'universal-3-5-pro' and 'slam-1'. Use 'keytermsPrompt' instead.`,\n });\n }\n\n // The following options only take effect alongside a prerequisite\n // option; without it AssemblyAI either rejects the request (400) or\n // silently ignores the option. Warn rather than mutate user input.\n if (\n (assemblyaiOptions.redactPiiReturnUnredacted != null ||\n assemblyaiOptions.redactStaticEntities != null) &&\n !assemblyaiOptions.redactPii\n ) {\n warnings.push({\n type: 'other',\n message:\n \"'redactPiiReturnUnredacted' and 'redactStaticEntities' require 'redactPii' to be enabled; AssemblyAI rejects the request otherwise.\",\n });\n }\n if (\n assemblyaiOptions.redactPiiAudioOptions != null &&\n !assemblyaiOptions.redactPiiAudio\n ) {\n warnings.push({\n type: 'other',\n message:\n \"'redactPiiAudioOptions' only applies when 'redactPiiAudio' is enabled; it is otherwise ignored.\",\n });\n }\n if (\n assemblyaiOptions.languageCode != null &&\n assemblyaiOptions.languageDetection\n ) {\n warnings.push({\n type: 'other',\n message:\n \"'languageDetection' cannot be combined with an explicit 'languageCode'; AssemblyAI rejects requests that set both.\",\n });\n }\n }\n\n return {\n body,\n warnings,\n };\n }\n\n /**\n * Polls the given transcript until we have a status other than `processing` or `queued`.\n *\n * @see https://www.assemblyai.com/docs/getting-started/transcribe-an-audio-file#step-33\n */\n private async waitForCompletion(\n transcriptId: string,\n headers: Record<string, string | undefined> | undefined,\n abortSignal?: AbortSignal,\n ): Promise<{\n transcript: z.infer<typeof assemblyaiTranscriptionResponseSchema>;\n rawTranscript: unknown;\n responseHeaders: Record<string, string>;\n }> {\n const pollingInterval =\n this.config.pollingInterval ?? this.POLLING_INTERVAL_MS;\n\n // Honor a caller-provided fetch (proxy, auth injection, tests) for the\n // polling GETs, matching the upload/submit calls that use config.fetch.\n const fetchImpl = this.config.fetch ?? globalThis.fetch;\n\n while (true) {\n if (abortSignal?.aborted) {\n throw new Error('Transcription request was aborted');\n }\n\n const response = await fetchImpl(\n this.config.url({\n path: `/v2/transcript/${transcriptId}`,\n modelId: this.modelId,\n }),\n {\n method: 'GET',\n headers: combineHeaders(\n this.config.headers(),\n headers,\n ) as HeadersInit,\n signal: abortSignal,\n },\n );\n\n if (!response.ok) {\n throw await assemblyaiFailedResponseHandler({\n response,\n url: this.config.url({\n path: `/v2/transcript/${transcriptId}`,\n modelId: this.modelId,\n }),\n requestBodyValues: {},\n });\n }\n\n const rawTranscript = await response.json();\n const transcript =\n assemblyaiTranscriptionResponseSchema.parse(rawTranscript);\n\n if (transcript.status === 'completed') {\n return {\n transcript,\n rawTranscript,\n responseHeaders: extractResponseHeaders(response),\n };\n }\n\n if (transcript.status === 'error') {\n throw new Error(\n `Transcription failed: ${transcript.error ?? 'Unknown error'}`,\n );\n }\n\n await new Promise(resolve => setTimeout(resolve, pollingInterval));\n }\n }\n\n async doGenerate(\n options: Parameters<TranscriptionModelV3['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<TranscriptionModelV3['doGenerate']>>> {\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n\n const { value: uploadResponse } = await postToApi({\n url: this.config.url({\n path: '/v2/upload',\n modelId: '',\n }),\n headers: {\n 'Content-Type': 'application/octet-stream',\n ...combineHeaders(this.config.headers(), options.headers),\n },\n body: {\n content: options.audio,\n values: options.audio,\n },\n failedResponseHandler: assemblyaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n assemblyaiUploadResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const { body, warnings } = await this.getArgs(options);\n\n const { value: submitResponse } = await postJsonToApi({\n url: this.config.url({\n path: '/v2/transcript',\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), options.headers),\n body: {\n ...body,\n audio_url: uploadResponse.upload_url,\n },\n failedResponseHandler: assemblyaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n assemblyaiSubmitResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const { transcript, rawTranscript, responseHeaders } =\n await this.waitForCompletion(\n submitResponse.id,\n options.headers,\n options.abortSignal,\n );\n\n // Surface diarization and audio-intelligence results that the AI SDK's\n // `segments` shape can't represent, keyed under `assemblyai`. Presence is\n // gated on the parsed transcript, but values are taken from the raw\n // response so no fields are stripped by the schema.\n //\n // NOTE: timings inside these objects (e.g. `utterances[].start`) are in\n // milliseconds, matching the AssemblyAI API — unlike the top-level\n // `segments`, whose `startSecond`/`endSecond` are in seconds.\n const raw = (rawTranscript ?? {}) as Record<string, unknown>;\n const assemblyaiMetadata: Record<string, unknown> = {};\n if (transcript.utterances != null) {\n assemblyaiMetadata.utterances = raw.utterances;\n }\n if (transcript.sentiment_analysis_results != null) {\n assemblyaiMetadata.sentimentAnalysisResults =\n raw.sentiment_analysis_results;\n }\n if (transcript.entities != null) {\n assemblyaiMetadata.entities = raw.entities;\n }\n if (transcript.content_safety_labels != null) {\n assemblyaiMetadata.contentSafetyLabels = raw.content_safety_labels;\n }\n if (transcript.iab_categories_result != null) {\n assemblyaiMetadata.iabCategoriesResult = raw.iab_categories_result;\n }\n if (transcript.auto_highlights_result != null) {\n assemblyaiMetadata.autoHighlightsResult = raw.auto_highlights_result;\n }\n\n const lastWordEndMs = transcript.words?.at(-1)?.end;\n\n return {\n text: transcript.text ?? '',\n // AssemblyAI returns word timings in milliseconds; the AI SDK reports\n // segment timings in seconds.\n segments:\n transcript.words?.map(word => ({\n text: word.text,\n startSecond: word.start / 1000,\n endSecond: word.end / 1000,\n })) ?? [],\n language: transcript.language_code ?? undefined,\n durationInSeconds:\n transcript.audio_duration ??\n (lastWordEndMs != null ? lastWordEndMs / 1000 : undefined),\n warnings,\n ...(Object.keys(assemblyaiMetadata).length > 0 && {\n providerMetadata: {\n assemblyai: assemblyaiMetadata,\n } as SharedV3ProviderMetadata,\n }),\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders, // Headers from final GET request\n body: rawTranscript, // Full raw response from final GET request\n },\n };\n }\n}\n\nconst assemblyaiUploadResponseSchema = z.object({\n upload_url: z.string(),\n});\n\nconst assemblyaiSubmitResponseSchema = z.object({\n id: z.string(),\n status: z.enum(['queued', 'processing', 'completed', 'error']),\n});\n\nconst assemblyaiWordSchema = z.object({\n start: z.number(),\n end: z.number(),\n text: z.string(),\n confidence: z.number().nullish(),\n // Speaker label (e.g. 'A', 'B') when speaker diarization is enabled, else null.\n speaker: z.string().nullish(),\n channel: z.string().nullish(),\n});\n\nconst assemblyaiTranscriptionResponseSchema = z.object({\n id: z.string(),\n status: z.enum(['queued', 'processing', 'completed', 'error']),\n text: z.string().nullish(),\n language_code: z.string().nullish(),\n speech_model_used: z.string().nullish(),\n words: z.array(assemblyaiWordSchema).nullish(),\n // Speaker-diarized utterances (present when `speaker_labels` is enabled).\n utterances: z\n .array(\n z.object({\n start: z.number(),\n end: z.number(),\n text: z.string(),\n confidence: z.number().nullish(),\n speaker: z.string().nullish(),\n channel: z.string().nullish(),\n words: z.array(assemblyaiWordSchema).nullish(),\n }),\n )\n .nullish(),\n // Audio-intelligence results, present only when the matching feature is\n // enabled. Kept intentionally permissive (the full structures are also\n // available on the raw `response.body`).\n sentiment_analysis_results: z\n .array(\n z.object({\n text: z.string(),\n start: z.number().nullish(),\n end: z.number().nullish(),\n sentiment: z.string(),\n confidence: z.number().nullish(),\n speaker: z.string().nullish(),\n }),\n )\n .nullish(),\n entities: z\n .array(\n z.object({\n entity_type: z.string(),\n text: z.string(),\n start: z.number().nullish(),\n end: z.number().nullish(),\n }),\n )\n .nullish(),\n content_safety_labels: z.record(z.string(), z.any()).nullish(),\n iab_categories_result: z.record(z.string(), z.any()).nullish(),\n auto_highlights_result: z.record(z.string(), z.any()).nullish(),\n audio_duration: z.number().nullish(),\n error: z.string().nullish(),\n});\n","import { z } from 'zod/v4';\nimport { createJsonErrorResponseHandler } from '@ai-sdk/provider-utils';\n\nexport const assemblyaiErrorDataSchema = z.object({\n error: z.object({\n message: z.string(),\n code: z.number(),\n }),\n});\n\nexport type AssemblyAIErrorData = z.infer<typeof assemblyaiErrorDataSchema>;\n\nexport const assemblyaiFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: assemblyaiErrorDataSchema,\n errorToMessage: data => data.error.message,\n});\n","// Version string of this package injected at build time.\ndeclare const __PACKAGE_VERSION__: string | undefined;\nexport const VERSION: string =\n typeof __PACKAGE_VERSION__ !== 'undefined'\n ? __PACKAGE_VERSION__\n : '0.0.0-test';\n"],"mappings":"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","names":["import_provider_utils","import_provider_utils","import_v4"]}
package/dist/index.mjs CHANGED
@@ -51,8 +51,12 @@ var assemblyaiTranscriptionModelOptionsSchema = z2.object({
51
51
  */
52
52
  autoHighlights: z2.boolean().nullish(),
53
53
  /**
54
- * Boost parameter for the transcription.
54
+ * Boost parameter for word boost (used with `wordBoost`).
55
55
  * Allowed values: 'low', 'default', 'high'.
56
+ *
57
+ * @deprecated Only applies to the deprecated `wordBoost` option. Use
58
+ * `keytermsPrompt` instead, which works with the recommended `universal-*`
59
+ * models.
56
60
  */
57
61
  boostParam: z2.string().nullish(),
58
62
  /**
@@ -76,6 +80,11 @@ var assemblyaiTranscriptionModelOptionsSchema = z2.object({
76
80
  * Whether to include filler words (um, uh, etc.) in the transcription.
77
81
  */
78
82
  disfluencies: z2.boolean().nullish(),
83
+ /**
84
+ * Enable a domain-specific model to improve accuracy for specialized
85
+ * terminology. Currently supports `'medical-v1'` (Medical Mode).
86
+ */
87
+ domain: z2.string().nullish(),
79
88
  /**
80
89
  * Whether to enable entity detection.
81
90
  */
@@ -92,6 +101,13 @@ var assemblyaiTranscriptionModelOptionsSchema = z2.object({
92
101
  * Whether to enable IAB categories detection.
93
102
  */
94
103
  iabCategories: z2.boolean().nullish(),
104
+ /**
105
+ * Domain-specific keyterms to boost recognition for (max 6 words per phrase).
106
+ * Replaces `wordBoost` for newer models: supported by `universal-3-pro` /
107
+ * `universal-3-5-pro` and `slam-1` (and `universal-2` when metaphone is
108
+ * enabled for the account).
109
+ */
110
+ keytermsPrompt: z2.array(z2.string()).nullish(),
95
111
  /**
96
112
  * Language code for the transcription.
97
113
  */
@@ -104,10 +120,28 @@ var assemblyaiTranscriptionModelOptionsSchema = z2.object({
104
120
  * Whether to enable language detection.
105
121
  */
106
122
  languageDetection: z2.boolean().nullish(),
123
+ /**
124
+ * Options for automatic language detection.
125
+ */
126
+ languageDetectionOptions: z2.object({
127
+ /** List of languages expected in the audio file. */
128
+ expectedLanguages: z2.array(z2.string()).nullish(),
129
+ /** Fallback language if the detected language is not expected. */
130
+ fallbackLanguage: z2.string().nullish(),
131
+ /** Whether code switching should be detected. */
132
+ codeSwitching: z2.boolean().nullish(),
133
+ /** Confidence threshold for code switching detection (0-1). */
134
+ codeSwitchingConfidenceThreshold: z2.number().min(0).max(1).nullish()
135
+ }).nullish(),
107
136
  /**
108
137
  * Whether to process audio as multichannel.
109
138
  */
110
139
  multichannel: z2.boolean().nullish(),
140
+ /**
141
+ * Provide natural-language context (up to 1,500 words) to steer the model.
142
+ * Only supported by `universal-3-pro` / `universal-3-5-pro` and `slam-1`.
143
+ */
144
+ prompt: z2.string().nullish(),
111
145
  /**
112
146
  * Whether to add punctuation to the transcription.
113
147
  */
@@ -120,6 +154,15 @@ var assemblyaiTranscriptionModelOptionsSchema = z2.object({
120
154
  * Whether to redact PII in the audio file.
121
155
  */
122
156
  redactPiiAudio: z2.boolean().nullish(),
157
+ /**
158
+ * Options for PII-redacted audio files. Requires `redactPiiAudio`.
159
+ */
160
+ redactPiiAudioOptions: z2.object({
161
+ /** Return redacted audio even for files without detected speech. */
162
+ returnRedactedNoSpeechAudio: z2.boolean().nullish(),
163
+ /** Redaction method; set to `'silence'` to replace PII with silence. */
164
+ overrideAudioRedactionMethod: z2.enum(["silence"]).nullish()
165
+ }).nullish(),
123
166
  /**
124
167
  * Audio format for PII redaction.
125
168
  */
@@ -128,10 +171,26 @@ var assemblyaiTranscriptionModelOptionsSchema = z2.object({
128
171
  * List of PII types to redact.
129
172
  */
130
173
  redactPiiPolicies: z2.array(z2.string()).nullish(),
174
+ /**
175
+ * Return the original unredacted transcript alongside the redacted one.
176
+ * Requires `redactPii`.
177
+ */
178
+ redactPiiReturnUnredacted: z2.boolean().nullish(),
131
179
  /**
132
180
  * Substitution method for redacted PII.
133
181
  */
134
182
  redactPiiSub: z2.string().nullish(),
183
+ /**
184
+ * Map of user-defined labels to exact terms to redact, e.g.
185
+ * `{ INTERNAL_TOOL: ['Bearclaw'] }`. Applied on top of standard PII redaction
186
+ * using `redactPiiSub`. Requires `redactPii`.
187
+ */
188
+ redactStaticEntities: z2.record(z2.string(), z2.array(z2.string())).nullish(),
189
+ /**
190
+ * Remove inline annotations from rich transcripts. `'all'` removes all inline
191
+ * annotations; `'speaker'` removes only speaker cues. Universal-3 Pro models.
192
+ */
193
+ removeAudioTags: z2.enum(["all", "speaker"]).nullish(),
135
194
  /**
136
195
  * Whether to enable sentiment analysis.
137
196
  */
@@ -140,6 +199,15 @@ var assemblyaiTranscriptionModelOptionsSchema = z2.object({
140
199
  * Whether to identify different speakers in the audio.
141
200
  */
142
201
  speakerLabels: z2.boolean().nullish(),
202
+ /**
203
+ * Options for speaker diarization, e.g. a range of possible speakers.
204
+ */
205
+ speakerOptions: z2.object({
206
+ /** Minimum number of speakers expected in the audio file. */
207
+ minSpeakersExpected: z2.number().int().nullish(),
208
+ /** Maximum number of speakers expected in the audio file. */
209
+ maxSpeakersExpected: z2.number().int().nullish()
210
+ }).nullish(),
143
211
  /**
144
212
  * Number of speakers expected in the audio.
145
213
  */
@@ -160,6 +228,10 @@ var assemblyaiTranscriptionModelOptionsSchema = z2.object({
160
228
  * Type of summary to generate.
161
229
  */
162
230
  summaryType: z2.string().nullish(),
231
+ /**
232
+ * Sampling temperature (0-1) controlling randomness. Universal-3 Pro models.
233
+ */
234
+ temperature: z2.number().min(0).max(1).nullish(),
163
235
  /**
164
236
  * Name of the authentication header for webhook requests.
165
237
  */
@@ -174,6 +246,10 @@ var assemblyaiTranscriptionModelOptionsSchema = z2.object({
174
246
  webhookUrl: z2.string().nullish(),
175
247
  /**
176
248
  * List of words to boost recognition for.
249
+ *
250
+ * @deprecated `wordBoost` is rejected by `universal-3-pro` /
251
+ * `universal-3-5-pro` and `slam-1` (it only works on `universal-2`/`best`).
252
+ * Use `keytermsPrompt` instead.
177
253
  */
178
254
  wordBoost: z2.array(z2.string()).nullish()
179
255
  });
@@ -190,16 +266,30 @@ var AssemblyAITranscriptionModel = class {
190
266
  async getArgs({
191
267
  providerOptions
192
268
  }) {
193
- var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _A, _B, _C, _D, _E, _F, _G, _H;
269
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _A, _B, _C, _D, _E, _F, _G, _H, _I, _J, _K, _L, _M, _N, _O, _P, _Q, _R, _S, _T, _U, _V, _W;
194
270
  const warnings = [];
195
271
  const assemblyaiOptions = await parseProviderOptions({
196
272
  provider: "assemblyai",
197
273
  providerOptions,
198
274
  schema: assemblyaiTranscriptionModelOptionsSchema
199
275
  });
200
- const body = {
201
- speech_model: this.modelId
202
- };
276
+ const body = {};
277
+ if (this.modelId === "best") {
278
+ body.speech_model = this.modelId;
279
+ warnings.push({
280
+ type: "other",
281
+ message: "The 'best' model is a legacy AssemblyAI model. Use 'universal-3-5-pro' instead. See documentation: https://www.assemblyai.com/docs/pre-recorded-audio/select-the-speech-model"
282
+ });
283
+ } else {
284
+ body.speech_models = [this.modelId];
285
+ if (this.modelId === "universal-3-pro" || this.modelId === "universal-2") {
286
+ const docsUrl = "https://www.assemblyai.com/docs/pre-recorded-audio/select-the-speech-model";
287
+ warnings.push({
288
+ type: "other",
289
+ message: this.modelId === "universal-3-pro" ? `'universal-3-5-pro' is AssemblyAI's latest flagship model and is set to replace 'universal-3-pro'. See ${docsUrl}` : `'universal-3-5-pro' is AssemblyAI's latest flagship model. See ${docsUrl}`
290
+ });
291
+ }
292
+ }
203
293
  if (assemblyaiOptions) {
204
294
  body.audio_end_at = (_a = assemblyaiOptions.audioEndAt) != null ? _a : void 0;
205
295
  body.audio_start_from = (_b = assemblyaiOptions.audioStartFrom) != null ? _b : void 0;
@@ -235,6 +325,64 @@ var AssemblyAITranscriptionModel = class {
235
325
  body.webhook_auth_header_value = (_F = assemblyaiOptions.webhookAuthHeaderValue) != null ? _F : void 0;
236
326
  body.webhook_url = (_G = assemblyaiOptions.webhookUrl) != null ? _G : void 0;
237
327
  body.word_boost = (_H = assemblyaiOptions.wordBoost) != null ? _H : void 0;
328
+ body.keyterms_prompt = (_I = assemblyaiOptions.keytermsPrompt) != null ? _I : void 0;
329
+ body.prompt = (_J = assemblyaiOptions.prompt) != null ? _J : void 0;
330
+ body.temperature = (_K = assemblyaiOptions.temperature) != null ? _K : void 0;
331
+ body.remove_audio_tags = (_L = assemblyaiOptions.removeAudioTags) != null ? _L : void 0;
332
+ body.domain = (_M = assemblyaiOptions.domain) != null ? _M : void 0;
333
+ body.redact_pii_return_unredacted = (_N = assemblyaiOptions.redactPiiReturnUnredacted) != null ? _N : void 0;
334
+ body.redact_static_entities = (_O = assemblyaiOptions.redactStaticEntities) != null ? _O : void 0;
335
+ if (assemblyaiOptions.speakerOptions) {
336
+ body.speaker_options = {
337
+ min_speakers_expected: (_P = assemblyaiOptions.speakerOptions.minSpeakersExpected) != null ? _P : void 0,
338
+ max_speakers_expected: (_Q = assemblyaiOptions.speakerOptions.maxSpeakersExpected) != null ? _Q : void 0
339
+ };
340
+ }
341
+ if (assemblyaiOptions.languageDetectionOptions) {
342
+ body.language_detection_options = {
343
+ expected_languages: (_R = assemblyaiOptions.languageDetectionOptions.expectedLanguages) != null ? _R : void 0,
344
+ fallback_language: (_S = assemblyaiOptions.languageDetectionOptions.fallbackLanguage) != null ? _S : void 0,
345
+ code_switching: (_T = assemblyaiOptions.languageDetectionOptions.codeSwitching) != null ? _T : void 0,
346
+ code_switching_confidence_threshold: (_U = assemblyaiOptions.languageDetectionOptions.codeSwitchingConfidenceThreshold) != null ? _U : void 0
347
+ };
348
+ }
349
+ if (assemblyaiOptions.redactPiiAudioOptions) {
350
+ body.redact_pii_audio_options = {
351
+ return_redacted_no_speech_audio: (_V = assemblyaiOptions.redactPiiAudioOptions.returnRedactedNoSpeechAudio) != null ? _V : void 0,
352
+ override_audio_redaction_method: (_W = assemblyaiOptions.redactPiiAudioOptions.overrideAudioRedactionMethod) != null ? _W : void 0
353
+ };
354
+ }
355
+ const deprecatedBoostOptions = [];
356
+ if (assemblyaiOptions.wordBoost != null) {
357
+ deprecatedBoostOptions.push("wordBoost");
358
+ }
359
+ if (assemblyaiOptions.boostParam != null) {
360
+ deprecatedBoostOptions.push("boostParam");
361
+ }
362
+ if (deprecatedBoostOptions.length > 0) {
363
+ warnings.push({
364
+ type: "other",
365
+ message: `${deprecatedBoostOptions.join(", ")} ${deprecatedBoostOptions.length > 1 ? "are" : "is"} deprecated and rejected by 'universal-3-pro' / 'universal-3-5-pro' and 'slam-1'. Use 'keytermsPrompt' instead.`
366
+ });
367
+ }
368
+ if ((assemblyaiOptions.redactPiiReturnUnredacted != null || assemblyaiOptions.redactStaticEntities != null) && !assemblyaiOptions.redactPii) {
369
+ warnings.push({
370
+ type: "other",
371
+ message: "'redactPiiReturnUnredacted' and 'redactStaticEntities' require 'redactPii' to be enabled; AssemblyAI rejects the request otherwise."
372
+ });
373
+ }
374
+ if (assemblyaiOptions.redactPiiAudioOptions != null && !assemblyaiOptions.redactPiiAudio) {
375
+ warnings.push({
376
+ type: "other",
377
+ message: "'redactPiiAudioOptions' only applies when 'redactPiiAudio' is enabled; it is otherwise ignored."
378
+ });
379
+ }
380
+ if (assemblyaiOptions.languageCode != null && assemblyaiOptions.languageDetection) {
381
+ warnings.push({
382
+ type: "other",
383
+ message: "'languageDetection' cannot be combined with an explicit 'languageCode'; AssemblyAI rejects requests that set both."
384
+ });
385
+ }
238
386
  }
239
387
  return {
240
388
  body,
@@ -247,13 +395,14 @@ var AssemblyAITranscriptionModel = class {
247
395
  * @see https://www.assemblyai.com/docs/getting-started/transcribe-an-audio-file#step-33
248
396
  */
249
397
  async waitForCompletion(transcriptId, headers, abortSignal) {
250
- var _a, _b;
398
+ var _a, _b, _c;
251
399
  const pollingInterval = (_a = this.config.pollingInterval) != null ? _a : this.POLLING_INTERVAL_MS;
400
+ const fetchImpl = (_b = this.config.fetch) != null ? _b : globalThis.fetch;
252
401
  while (true) {
253
402
  if (abortSignal == null ? void 0 : abortSignal.aborted) {
254
403
  throw new Error("Transcription request was aborted");
255
404
  }
256
- const response = await fetch(
405
+ const response = await fetchImpl(
257
406
  this.config.url({
258
407
  path: `/v2/transcript/${transcriptId}`,
259
408
  modelId: this.modelId
@@ -277,25 +426,25 @@ var AssemblyAITranscriptionModel = class {
277
426
  requestBodyValues: {}
278
427
  });
279
428
  }
280
- const transcript = assemblyaiTranscriptionResponseSchema.parse(
281
- await response.json()
282
- );
429
+ const rawTranscript = await response.json();
430
+ const transcript = assemblyaiTranscriptionResponseSchema.parse(rawTranscript);
283
431
  if (transcript.status === "completed") {
284
432
  return {
285
433
  transcript,
434
+ rawTranscript,
286
435
  responseHeaders: extractResponseHeaders(response)
287
436
  };
288
437
  }
289
438
  if (transcript.status === "error") {
290
439
  throw new Error(
291
- `Transcription failed: ${(_b = transcript.error) != null ? _b : "Unknown error"}`
440
+ `Transcription failed: ${(_c = transcript.error) != null ? _c : "Unknown error"}`
292
441
  );
293
442
  }
294
443
  await new Promise((resolve) => setTimeout(resolve, pollingInterval));
295
444
  }
296
445
  }
297
446
  async doGenerate(options) {
298
- var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k;
447
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j;
299
448
  const currentDate = (_c = (_b = (_a = this.config._internal) == null ? void 0 : _a.currentDate) == null ? void 0 : _b.call(_a)) != null ? _c : /* @__PURE__ */ new Date();
300
449
  const { value: uploadResponse } = await postToApi({
301
450
  url: this.config.url({
@@ -335,28 +484,56 @@ var AssemblyAITranscriptionModel = class {
335
484
  abortSignal: options.abortSignal,
336
485
  fetch: this.config.fetch
337
486
  });
338
- const { transcript, responseHeaders } = await this.waitForCompletion(
487
+ const { transcript, rawTranscript, responseHeaders } = await this.waitForCompletion(
339
488
  submitResponse.id,
340
489
  options.headers,
341
490
  options.abortSignal
342
491
  );
492
+ const raw = rawTranscript != null ? rawTranscript : {};
493
+ const assemblyaiMetadata = {};
494
+ if (transcript.utterances != null) {
495
+ assemblyaiMetadata.utterances = raw.utterances;
496
+ }
497
+ if (transcript.sentiment_analysis_results != null) {
498
+ assemblyaiMetadata.sentimentAnalysisResults = raw.sentiment_analysis_results;
499
+ }
500
+ if (transcript.entities != null) {
501
+ assemblyaiMetadata.entities = raw.entities;
502
+ }
503
+ if (transcript.content_safety_labels != null) {
504
+ assemblyaiMetadata.contentSafetyLabels = raw.content_safety_labels;
505
+ }
506
+ if (transcript.iab_categories_result != null) {
507
+ assemblyaiMetadata.iabCategoriesResult = raw.iab_categories_result;
508
+ }
509
+ if (transcript.auto_highlights_result != null) {
510
+ assemblyaiMetadata.autoHighlightsResult = raw.auto_highlights_result;
511
+ }
512
+ const lastWordEndMs = (_e = (_d = transcript.words) == null ? void 0 : _d.at(-1)) == null ? void 0 : _e.end;
343
513
  return {
344
- text: (_d = transcript.text) != null ? _d : "",
345
- segments: (_f = (_e = transcript.words) == null ? void 0 : _e.map((word) => ({
514
+ text: (_f = transcript.text) != null ? _f : "",
515
+ // AssemblyAI returns word timings in milliseconds; the AI SDK reports
516
+ // segment timings in seconds.
517
+ segments: (_h = (_g = transcript.words) == null ? void 0 : _g.map((word) => ({
346
518
  text: word.text,
347
- startSecond: word.start,
348
- endSecond: word.end
349
- }))) != null ? _f : [],
350
- language: (_g = transcript.language_code) != null ? _g : void 0,
351
- durationInSeconds: (_k = (_j = transcript.audio_duration) != null ? _j : (_i = (_h = transcript.words) == null ? void 0 : _h.at(-1)) == null ? void 0 : _i.end) != null ? _k : void 0,
519
+ startSecond: word.start / 1e3,
520
+ endSecond: word.end / 1e3
521
+ }))) != null ? _h : [],
522
+ language: (_i = transcript.language_code) != null ? _i : void 0,
523
+ durationInSeconds: (_j = transcript.audio_duration) != null ? _j : lastWordEndMs != null ? lastWordEndMs / 1e3 : void 0,
352
524
  warnings,
525
+ ...Object.keys(assemblyaiMetadata).length > 0 && {
526
+ providerMetadata: {
527
+ assemblyai: assemblyaiMetadata
528
+ }
529
+ },
353
530
  response: {
354
531
  timestamp: currentDate,
355
532
  modelId: this.modelId,
356
533
  headers: responseHeaders,
357
534
  // Headers from final GET request
358
- body: transcript
359
- // Raw response from final GET request
535
+ body: rawTranscript
536
+ // Full raw response from final GET request
360
537
  }
361
538
  };
362
539
  }
@@ -368,24 +545,64 @@ var assemblyaiSubmitResponseSchema = z2.object({
368
545
  id: z2.string(),
369
546
  status: z2.enum(["queued", "processing", "completed", "error"])
370
547
  });
548
+ var assemblyaiWordSchema = z2.object({
549
+ start: z2.number(),
550
+ end: z2.number(),
551
+ text: z2.string(),
552
+ confidence: z2.number().nullish(),
553
+ // Speaker label (e.g. 'A', 'B') when speaker diarization is enabled, else null.
554
+ speaker: z2.string().nullish(),
555
+ channel: z2.string().nullish()
556
+ });
371
557
  var assemblyaiTranscriptionResponseSchema = z2.object({
372
558
  id: z2.string(),
373
559
  status: z2.enum(["queued", "processing", "completed", "error"]),
374
560
  text: z2.string().nullish(),
375
561
  language_code: z2.string().nullish(),
376
- words: z2.array(
562
+ speech_model_used: z2.string().nullish(),
563
+ words: z2.array(assemblyaiWordSchema).nullish(),
564
+ // Speaker-diarized utterances (present when `speaker_labels` is enabled).
565
+ utterances: z2.array(
377
566
  z2.object({
378
567
  start: z2.number(),
379
568
  end: z2.number(),
380
- text: z2.string()
569
+ text: z2.string(),
570
+ confidence: z2.number().nullish(),
571
+ speaker: z2.string().nullish(),
572
+ channel: z2.string().nullish(),
573
+ words: z2.array(assemblyaiWordSchema).nullish()
574
+ })
575
+ ).nullish(),
576
+ // Audio-intelligence results, present only when the matching feature is
577
+ // enabled. Kept intentionally permissive (the full structures are also
578
+ // available on the raw `response.body`).
579
+ sentiment_analysis_results: z2.array(
580
+ z2.object({
581
+ text: z2.string(),
582
+ start: z2.number().nullish(),
583
+ end: z2.number().nullish(),
584
+ sentiment: z2.string(),
585
+ confidence: z2.number().nullish(),
586
+ speaker: z2.string().nullish()
587
+ })
588
+ ).nullish(),
589
+ entities: z2.array(
590
+ z2.object({
591
+ entity_type: z2.string(),
592
+ text: z2.string(),
593
+ start: z2.number().nullish(),
594
+ end: z2.number().nullish()
381
595
  })
382
596
  ).nullish(),
597
+ content_safety_labels: z2.record(z2.string(), z2.any()).nullish(),
598
+ iab_categories_result: z2.record(z2.string(), z2.any()).nullish(),
599
+ auto_highlights_result: z2.record(z2.string(), z2.any()).nullish(),
383
600
  audio_duration: z2.number().nullish(),
384
601
  error: z2.string().nullish()
385
602
  });
386
603
 
387
604
  // src/version.ts
388
- var VERSION = true ? "2.0.41" : "0.0.0-test";
605
+ var VERSION = true ? "2.0.43" : "0.0.0-test";
389
606
 
390
607
  // src/assemblyai-provider.ts
391
608
  function createAssemblyAI(options = {}) {