export enum AiProviderType { SNOWFLAKE_CORTEX = 'snowflake_cortex', DATABRICKS_AI_GATEWAY = 'databricks_ai_gateway' } export const AI_PROVIDER_CREDENTIAL_STATUSES = ['untested', 'passing', 'failing'] as const; export type AiProviderCredentialStatus = (typeof AI_PROVIDER_CREDENTIAL_STATUSES)[number]; export interface SnowflakeCortexBYOCredentials { account: string; username: string; role?: string; pat: string; } export interface DatabricksAiGatewayBYOCredentials { gatewayHost: string; pat: string; } export type BYOCredentials = SnowflakeCortexBYOCredentials | DatabricksAiGatewayBYOCredentials; export interface AiProviderCredentialDto { id: string; provider: AiProviderType; displayName: string; providerMetadata?: Record; status: AiProviderCredentialStatus; statusMessage?: string | null; statusCheckedAt?: string | null; isActive: boolean; useManagedFallback: boolean; fingerprint: string; created: string; updated: string; } export interface CreateAiProviderCredentialRequest { provider: AiProviderType; displayName: string; credentials: BYOCredentials; useManagedFallback?: boolean; } export interface UpdateAiProviderCredentialRequest { displayName?: string; credentials?: Partial; isActive?: boolean; useManagedFallback?: boolean; } export interface TestAiProviderCredentialConfigurationRequest { provider: AiProviderType; credentials: BYOCredentials; } export interface AiProviderCredentialTestResult { valid: boolean; error?: string; checkedAt: string; }