52 lines
1.8 KiB
TypeScript
52 lines
1.8 KiB
TypeScript
export const AI_MODEL_STAGES = ['analysis', 'copy', 'image'] as const
|
|
export type AiModelStage = typeof AI_MODEL_STAGES[number]
|
|
export type AiModelDefaults = Record<AiModelStage, string | null>
|
|
export interface AiModelCapabilities {
|
|
kind: 'text' | 'vision' | 'image' | 'other' | 'unknown'
|
|
allowedStages: AiModelStage[]
|
|
source: 'upstream' | 'verified' | 'unknown'
|
|
reason: string
|
|
}
|
|
export interface AiModelCatalogEntry {
|
|
key: string
|
|
id: string
|
|
enabled: boolean
|
|
stages: AiModelStage[]
|
|
present: boolean
|
|
compatibility: 'confirmed' | 'unconfirmed'
|
|
capabilities: AiModelCapabilities
|
|
}
|
|
export interface AiModelProvider {
|
|
id: string
|
|
name: string
|
|
baseUrl: string
|
|
enabled: boolean
|
|
credentialSource: 'encrypted' | 'environment'
|
|
hasApiKey: boolean
|
|
revision: number
|
|
syncedAt: string | null
|
|
models: AiModelCatalogEntry[]
|
|
}
|
|
export interface AiModelAdminState {
|
|
providers: AiModelProvider[]
|
|
defaults: AiModelDefaults
|
|
revision: number
|
|
encryptionConfigured: boolean
|
|
legacyAvailable: boolean
|
|
}
|
|
export interface AiModelConfigurationInput {
|
|
revision: number
|
|
defaults: AiModelDefaults
|
|
providers: Array<{ id: string; revision: number; models: Array<{ key: string; enabled: boolean; stages: AiModelStage[]; compatibility: 'confirmed' | 'unconfirmed' }> }>
|
|
}
|
|
export interface AiModelChoice { value: string; label: string; providerName: string }
|
|
export interface AiModelRuntimeState {
|
|
configured: boolean
|
|
models: Record<AiModelStage, string[]>
|
|
defaults: Record<AiModelStage, string>
|
|
modelOptions: Record<AiModelStage, AiModelChoice[]>
|
|
legacyModels: Record<AiModelStage, string[]>
|
|
}
|
|
export interface AiModelBinding { providerId: string; modelKey: string; modelId: string; providerName: string; baseUrl: string; revision: number }
|
|
export type AiModelBindings = Record<AiModelStage, AiModelBinding>
|