/ tests / agent-runtime-registry.test.ts
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  })