Files
copilotkit--copilotkit/packages/shared/src/transcription-errors.ts
T
2026-07-13 12:58:18 +08:00

100 lines
3.0 KiB
TypeScript

/**
* Error codes for transcription HTTP responses.
* Uses snake_case to align with existing CopilotKitCoreErrorCode pattern.
* These codes are returned by the runtime and parsed by the client.
*/
export enum TranscriptionErrorCode {
/** Transcription service not configured in runtime */
SERVICE_NOT_CONFIGURED = "service_not_configured",
/** Audio format not supported */
INVALID_AUDIO_FORMAT = "invalid_audio_format",
/** Audio file is too long */
AUDIO_TOO_LONG = "audio_too_long",
/** Audio file is empty or too short */
AUDIO_TOO_SHORT = "audio_too_short",
/** Rate limited by transcription provider */
RATE_LIMITED = "rate_limited",
/** Authentication failed with transcription provider */
AUTH_FAILED = "auth_failed",
/** Transcription provider returned an error */
PROVIDER_ERROR = "provider_error",
/** Network error during transcription */
NETWORK_ERROR = "network_error",
/** Invalid request format */
INVALID_REQUEST = "invalid_request",
}
/**
* Error response format returned by the transcription endpoint.
*/
export interface TranscriptionErrorResponse {
error: TranscriptionErrorCode;
message: string;
retryable?: boolean;
}
/**
* Helper functions to create transcription error responses.
* Used by the runtime to return consistent error responses.
*/
export const TranscriptionErrors = {
serviceNotConfigured: (): TranscriptionErrorResponse => ({
error: TranscriptionErrorCode.SERVICE_NOT_CONFIGURED,
message: "Transcription service is not configured",
retryable: false,
}),
invalidAudioFormat: (
format: string,
supported: string[],
): TranscriptionErrorResponse => ({
error: TranscriptionErrorCode.INVALID_AUDIO_FORMAT,
message: `Unsupported audio format: ${format}. Supported: ${supported.join(", ")}`,
retryable: false,
}),
invalidRequest: (details: string): TranscriptionErrorResponse => ({
error: TranscriptionErrorCode.INVALID_REQUEST,
message: details,
retryable: false,
}),
rateLimited: (): TranscriptionErrorResponse => ({
error: TranscriptionErrorCode.RATE_LIMITED,
message: "Rate limited. Please try again later.",
retryable: true,
}),
authFailed: (): TranscriptionErrorResponse => ({
error: TranscriptionErrorCode.AUTH_FAILED,
message: "Authentication failed with transcription provider",
retryable: false,
}),
providerError: (message: string): TranscriptionErrorResponse => ({
error: TranscriptionErrorCode.PROVIDER_ERROR,
message,
retryable: true,
}),
networkError: (
message: string = "Network error during transcription",
): TranscriptionErrorResponse => ({
error: TranscriptionErrorCode.NETWORK_ERROR,
message,
retryable: true,
}),
audioTooLong: (): TranscriptionErrorResponse => ({
error: TranscriptionErrorCode.AUDIO_TOO_LONG,
message: "Audio file is too long",
retryable: false,
}),
audioTooShort: (): TranscriptionErrorResponse => ({
error: TranscriptionErrorCode.AUDIO_TOO_SHORT,
message: "Audio is too short to transcribe",
retryable: false,
}),
};