Louis fe95031c6e
feat: migrate cortex models to llamacpp extension (#5838)
* feat: migrate cortex models to new llama.cpp extension

* test: add tests

* clean: remove duplicated import
2025-07-22 23:35:08 +07:00

89 lines
2.6 KiB
TypeScript

// Zustand proxy state structure
interface ProxyState {
proxyEnabled: boolean
proxyUrl: string
proxyUsername: string
proxyPassword: string
proxyIgnoreSSL: boolean
verifyProxySSL: boolean
verifyProxyHostSSL: boolean
verifyPeerSSL: boolean
verifyHostSSL: boolean
noProxy: string
}
export function getProxyConfig(): Record<
string,
string | string[] | boolean
> | null {
try {
// Retrieve proxy configuration from localStorage
const proxyConfigString = localStorage.getItem('setting-proxy-config')
if (!proxyConfigString) {
return null
}
const proxyConfigData = JSON.parse(proxyConfigString)
const proxyState: ProxyState = proxyConfigData?.state
// Only return proxy config if proxy is enabled
if (!proxyState || !proxyState.proxyEnabled || !proxyState.proxyUrl) {
return null
}
const proxyConfig: Record<string, string | string[] | boolean> = {
url: proxyState.proxyUrl,
}
// Add username/password if both are provided
if (proxyState.proxyUsername && proxyState.proxyPassword) {
proxyConfig.username = proxyState.proxyUsername
proxyConfig.password = proxyState.proxyPassword
}
// Parse no_proxy list if provided
if (proxyState.noProxy) {
const noProxyList = proxyState.noProxy
.split(',')
.map((s: string) => s.trim())
.filter((s: string) => s.length > 0)
if (noProxyList.length > 0) {
proxyConfig.no_proxy = noProxyList
}
}
// Add SSL verification settings
proxyConfig.ignore_ssl = proxyState.proxyIgnoreSSL
proxyConfig.verify_proxy_ssl = proxyState.verifyProxySSL
proxyConfig.verify_proxy_host_ssl = proxyState.verifyProxyHostSSL
proxyConfig.verify_peer_ssl = proxyState.verifyPeerSSL
proxyConfig.verify_host_ssl = proxyState.verifyHostSSL
// Log proxy configuration for debugging
console.log('Using proxy configuration:', {
url: proxyState.proxyUrl,
hasAuth: !!(proxyState.proxyUsername && proxyState.proxyPassword),
noProxyCount: proxyConfig.no_proxy
? (proxyConfig.no_proxy as string[]).length
: 0,
ignoreSSL: proxyState.proxyIgnoreSSL,
verifyProxySSL: proxyState.verifyProxySSL,
verifyProxyHostSSL: proxyState.verifyProxyHostSSL,
verifyPeerSSL: proxyState.verifyPeerSSL,
verifyHostSSL: proxyState.verifyHostSSL,
})
return proxyConfig
} catch (error) {
console.error('Failed to parse proxy configuration:', error)
if (error instanceof SyntaxError) {
// JSON parsing error - return null
return null
}
// Other errors (like missing state) - throw
throw error
}
}