Feat/bankr provider (#888)
* feat(provider): add Bankr LLM Gateway support Add Bankr as an OpenAI-compatible provider preset with dedicated env vars: - BNKR_API_KEY, BANKR_BASE_URL, BANKR_MODEL - Uses X-API-Key header instead of Authorization Bearer - Base URL: https://llm.bankr.bot/v1 - Default model: claude-opus-4.6 Changes: - Add 'bankr' to VALID_PROVIDERS and provider flag handling - Add buildBankrProfileEnv() with env key registration - Add Bankr detection in startup screen and provider discovery - Map Bankr env vars to OpenAI-compatible vars in shim - Add Bankr preset to ProviderManager (alphabetical order) - Update PRESET_ORDER test to include Bankr Co-Authored-By: OpenClaude <openclaude@gitlawb.com> * fixup(provider): address Bankr PR review feedback 1. Map BNKR_API_KEY → OPENAI_API_KEY in providerFlag.ts so --provider bankr works with BNKR_API_KEY in non-interactive startup. 2. Remove unconditional BANKR_MODEL read from model.ts; it maps to OPENAI_MODEL via providerFlag.ts and openaiShim.ts, preventing cross-provider leakage. 3. Use X-API-Key for Bankr model discovery in openaiModelDiscovery.ts and providerDiscovery.ts, matching chat request auth. Co-Authored-By: OpenClaude <openclaude@gitlawb.com> --------- Co-authored-by: OpenClaude <openclaude@gitlawb.com>
This commit is contained in:
@@ -1594,10 +1594,18 @@ class OpenAIShimMessages {
|
||||
(hostname.includes('cognitiveservices') || hostname.includes('openai') || hostname.includes('services.ai'))
|
||||
} catch { /* malformed URL — not Azure */ }
|
||||
|
||||
let isBankr = false
|
||||
try {
|
||||
isBankr = request.baseUrl.toLowerCase().includes('bankr')
|
||||
} catch { /* malformed URL — not Bankr */ }
|
||||
|
||||
if (apiKey) {
|
||||
if (isAzure) {
|
||||
// Azure uses api-key header instead of Bearer token
|
||||
headers['api-key'] = apiKey
|
||||
} else if (isBankr) {
|
||||
// Bankr uses X-API-Key header instead of Bearer token
|
||||
headers['X-API-Key'] = apiKey
|
||||
} else {
|
||||
headers.Authorization = `Bearer ${apiKey}`
|
||||
}
|
||||
@@ -2152,6 +2160,17 @@ export function createOpenAIShimClient(options: {
|
||||
process.env.GITHUB_TOKEN ?? process.env.GH_TOKEN ?? ''
|
||||
}
|
||||
|
||||
// Map Bankr env vars to OpenAI-compatible ones when present
|
||||
if (process.env.BNKR_API_KEY && !process.env.OPENAI_API_KEY) {
|
||||
process.env.OPENAI_API_KEY = process.env.BNKR_API_KEY
|
||||
}
|
||||
if (process.env.BANKR_BASE_URL && !process.env.OPENAI_BASE_URL) {
|
||||
process.env.OPENAI_BASE_URL = process.env.BANKR_BASE_URL
|
||||
}
|
||||
if (process.env.BANKR_MODEL && !process.env.OPENAI_MODEL) {
|
||||
process.env.OPENAI_MODEL = process.env.BANKR_MODEL
|
||||
}
|
||||
|
||||
const beta = new OpenAIShimBeta({
|
||||
...(options.defaultHeaders ?? {}),
|
||||
}, options.reasoningEffort, options.providerOverride)
|
||||
|
||||
Reference in New Issue
Block a user