Merge pull request #107 from rithulkamesh/main

feat: GitHub Models provider + interactive onboard (keychain-backed)
This commit is contained in:
Kevin Codex
2026-04-02 20:14:51 +08:00
committed by GitHub
24 changed files with 1064 additions and 44 deletions

View File

@@ -46,7 +46,22 @@ function isLocalProviderUrl(baseUrl: string | undefined): boolean {
}
function validateProviderEnvOrExit(): void {
if (!isEnvTruthy(process.env.CLAUDE_CODE_USE_OPENAI)) {
const useOpenAI = isEnvTruthy(process.env.CLAUDE_CODE_USE_OPENAI)
const useGithub = isEnvTruthy(process.env.CLAUDE_CODE_USE_GITHUB)
if (useGithub && !useOpenAI) {
const token =
(process.env.GITHUB_TOKEN?.trim() || process.env.GH_TOKEN?.trim()) ?? ''
if (!token) {
console.error(
'GITHUB_TOKEN or GH_TOKEN is required when CLAUDE_CODE_USE_GITHUB=1.',
)
process.exit(1)
}
return
}
if (!useOpenAI) {
return
}
@@ -77,8 +92,15 @@ function validateProviderEnvOrExit(): void {
}
if (!process.env.OPENAI_API_KEY && !isLocalProviderUrl(request.baseUrl)) {
console.error('OPENAI_API_KEY is required when CLAUDE_CODE_USE_OPENAI=1 and OPENAI_BASE_URL is not local.')
process.exit(1)
const hasGithubToken = !!(
process.env.GITHUB_TOKEN?.trim() || process.env.GH_TOKEN?.trim()
)
if (!(useGithub && hasGithubToken)) {
console.error(
'OPENAI_API_KEY is required when CLAUDE_CODE_USE_OPENAI=1 and OPENAI_BASE_URL is not local. When CLAUDE_CODE_USE_GITHUB=1, GITHUB_TOKEN or GH_TOKEN may be used instead.',
)
process.exit(1)
}
}
}
@@ -98,6 +120,15 @@ async function main(): Promise<void> {
return;
}
{
const { enableConfigs } = await import('../utils/config.js')
enableConfigs()
const { applySafeConfigEnvironmentVariables } = await import('../utils/managedEnv.js')
applySafeConfigEnvironmentVariables()
const { hydrateGithubModelsTokenFromSecureStorage } = await import('../utils/githubModelsCredentials.js')
hydrateGithubModelsTokenFromSecureStorage()
}
validateProviderEnvOrExit()
// Print the gradient startup screen before the Ink UI loads