feat: release OpsXShell 2.1.0 native Tauri edition

This commit is contained in:
Logan.Li committed 2026-07-30 23:32:51 +08:00
1 parent e9a0d21758
commit a3dba0c6ed
311 files changed
+31748 -14897

No files matched your search

+93
View File
@@ -0,0 +1,93 @@
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
}