agent-runtime-registry.test.ts
1 import { describe, expect, it } from 'vitest' 2 3 import { 4 getAgentBackend, 5 listAgentBackends, 6 resolveAgentBackendId, 7 } from '@/server/agents/runtime' 8 import { updateAppSettings } from '@/server/storage/app-settings' 9 10 describe('agent runtime registry', () => { 11 it('registers builtin backends and resolves aliases', () => { 12 const backendIds = listAgentBackends().map((backend) => backend.id) 13 expect(backendIds).toContain('codex-cli') 14 expect(backendIds).toContain('opencode') 15 expect(backendIds).toContain('jules') 16 17 expect(resolveAgentBackendId('codex')).toBe('codex-cli') 18 expect(resolveAgentBackendId('google-jules')).toBe('jules') 19 expect(resolveAgentBackendId('opencode')).toBe('opencode') 20 }) 21 22 it('throws for unknown backend lookups', () => { 23 expect(() => getAgentBackend('missing-backend')).toThrowError( 24 'Unknown agent backend: missing-backend', 25 ) 26 }) 27 28 it('filters disabled backends from active runtime operations', () => { 29 updateAppSettings({ 30 agentBackendsEnabled: { 31 opencode: false, 32 }, 33 }) 34 try { 35 const enabledBackendIds = listAgentBackends().map((backend) => backend.id) 36 expect(enabledBackendIds).not.toContain('opencode') 37 38 const allBackendIds = listAgentBackends({ 39 includeDisabled: true, 40 }).map((backend) => backend.id) 41 expect(allBackendIds).toContain('opencode') 42 expect(() => getAgentBackend('opencode')).toThrowError( 43 'Agent backend "opencode" is disabled.', 44 ) 45 expect(getAgentBackend('opencode', { allowDisabled: true }).id).toBe( 46 'opencode', 47 ) 48 } finally { 49 updateAppSettings({ 50 agentBackendsEnabled: { 51 opencode: true, 52 }, 53 }) 54 } 55 }) 56 })