Files
opsxshell/shared/types/ai.types.ts
T

94 lines
2.1 KiB
TypeScript

export type AiProtocol = 'openai-chat' | 'openai-responses' | 'anthropic'
export type AiAuthStyle = 'bearer' | 'x-api-key' | 'both' | 'none'
export type AiBillingMode = 'payg' | 'plan' | 'local'
export type AiModelCapability = 'chat' | 'reasoning' | 'plan'
export interface AiModelConfig {
/** Stable UI identity. Multiple routes may point at the same upstream model id. */
id: string
/** Exact model id sent to the provider. */
model: string
label: string
capability: AiModelCapability
billing: AiBillingMode
/** Optional per-model route overrides for subscription/plan endpoints. */
protocol?: AiProtocol
baseUrl?: string
}
export interface AiProviderConfig {
id: string
name: string
presetId?: string
protocol: AiProtocol
authStyle: AiAuthStyle
baseUrl: string
allowInsecureHttp: boolean
models: AiModelConfig[]
defaultModelId: string
enabled: boolean
/** Runtime-only flag. The API key itself never leaves the Rust process after saving. */
hasApiKey?: boolean
}
export type AiAssistantAction = 'explain' | 'command' | 'diagnose' | 'execute'
export interface AiTerminalContext {
selection: string
viewport: string
}
export interface AiCompleteRequest {
provider: AiProviderConfig
model: AiModelConfig
action: AiAssistantAction
prompt: string
context: string
}
export interface AiCompleteResponse {
success: boolean
text?: string
model?: string
redactedCount?: number
error?: string
}
export interface AiModelListResponse {
success: boolean
models?: string[]
error?: string
}
/** Connection test credentials are transient and are never persisted by the test command. */
export interface AiProviderTestRequest {
provider: AiProviderConfig
model: AiModelConfig
apiKey?: string
}
export interface AiProviderTestResponse {
success: boolean
status?: number
model?: string
latencyMs?: number
answer?: string
error?: string
}
export interface AiCatalogDocument {
source: string
data: unknown
}
export interface AiCatalogFetchResponse {
success: boolean
documents?: AiCatalogDocument[]
errors?: string[]
error?: string
}