mirror of
https://github.com/NanmiCoder/cc-haha
synced 2026-07-16 13:03:31 +08:00
- provider 配置写入 ~/.claude/cc-haha/settings.json,不再污染原版 settings.json - 子进程 env 剥离 PROVIDER_ENV_KEYS,防止残留 key 传递 - bin/claude-haha 在 CC_HAHA_SKIP_DOTENV=1 时用 --env-file=/dev/null 阻止 Bun 自动加载 .env - managedEnv.ts 增加 getCcHahaSettingsEnv() 读取隔离配置 - 新增 /api/providers/auth-status 端点,启动时检测认证状态 - AppShell 启动时无认证则跳转 provider 设置页
64 lines
1.7 KiB
TypeScript
64 lines
1.7 KiB
TypeScript
// desktop/src/api/providers.ts
|
|
|
|
import { api } from './client'
|
|
import type {
|
|
SavedProvider,
|
|
CreateProviderInput,
|
|
UpdateProviderInput,
|
|
TestProviderConfigInput,
|
|
ProviderTestResult,
|
|
} from '../types/provider'
|
|
import type { ProviderPreset } from '../config/providerPresets'
|
|
|
|
type ProvidersResponse = { providers: SavedProvider[]; activeId: string | null }
|
|
type ProviderResponse = { provider: SavedProvider }
|
|
type PresetsResponse = { presets: ProviderPreset[] }
|
|
type TestResultResponse = { result: ProviderTestResult }
|
|
type AuthStatusResponse = {
|
|
hasAuth: boolean
|
|
source: 'cc-haha-provider' | 'original-settings' | 'env' | 'none'
|
|
activeProvider?: string
|
|
}
|
|
|
|
export const providersApi = {
|
|
list() {
|
|
return api.get<ProvidersResponse>('/api/providers')
|
|
},
|
|
|
|
presets() {
|
|
return api.get<PresetsResponse>('/api/providers/presets')
|
|
},
|
|
|
|
authStatus() {
|
|
return api.get<AuthStatusResponse>('/api/providers/auth-status')
|
|
},
|
|
|
|
create(input: CreateProviderInput) {
|
|
return api.post<ProviderResponse>('/api/providers', input)
|
|
},
|
|
|
|
update(id: string, input: UpdateProviderInput) {
|
|
return api.put<ProviderResponse>(`/api/providers/${id}`, input)
|
|
},
|
|
|
|
delete(id: string) {
|
|
return api.delete<{ ok: true }>(`/api/providers/${id}`)
|
|
},
|
|
|
|
activate(id: string) {
|
|
return api.post<{ ok: true }>(`/api/providers/${id}/activate`)
|
|
},
|
|
|
|
activateOfficial() {
|
|
return api.post<{ ok: true }>('/api/providers/official')
|
|
},
|
|
|
|
test(id: string, overrides?: { baseUrl?: string; modelId?: string; apiFormat?: string }) {
|
|
return api.post<TestResultResponse>(`/api/providers/${id}/test`, overrides)
|
|
},
|
|
|
|
testConfig(input: TestProviderConfigInput) {
|
|
return api.post<TestResultResponse>('/api/providers/test', input)
|
|
},
|
|
}
|