feat(backends): add codex/gemini external runners and wire backend selection

This commit is contained in:
William Valentin
2026-02-17 09:26:21 -08:00
parent 2273ffd020
commit 1d59becfa5
4 changed files with 95 additions and 0 deletions
+32
View File
@@ -196,6 +196,38 @@ describe('configSchema — server', () => {
});
});
describe('configSchema — backends', () => {
const minimalConfig = {
telegram: { bot_token: 'test', allowed_chat_ids: [1] },
models: { default: { provider: 'anthropic', model: 'claude-3' } },
};
it('defaults backend flags to native enabled and externals disabled', () => {
const result = configSchema.parse(minimalConfig);
expect(result.backends.native.enabled).toBe(true);
expect(result.backends.claude_code.enabled).toBe(false);
expect(result.backends.opencode.enabled).toBe(false);
expect(result.backends.codex.enabled).toBe(false);
expect(result.backends.gemini.enabled).toBe(false);
});
it('accepts explicit external backend configs', () => {
const result = configSchema.parse({
...minimalConfig,
backends: {
native: { enabled: false },
codex: { enabled: true, path: '/usr/local/bin/codex' },
gemini: { enabled: true, path: '/usr/local/bin/gemini' },
},
});
expect(result.backends.native.enabled).toBe(false);
expect(result.backends.codex.enabled).toBe(true);
expect(result.backends.codex.path).toBe('/usr/local/bin/codex');
expect(result.backends.gemini.enabled).toBe(true);
expect(result.backends.gemini.path).toBe('/usr/local/bin/gemini');
});
});
describe('configSchema — browser', () => {
const minimalConfig = {
telegram: { bot_token: 'test', allowed_chat_ids: [1] },