chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,99 @@
|
||||
/**
|
||||
* 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,
|
||||
}),
|
||||
};
|
||||
Reference in New Issue
Block a user