/ src / server / settings / agent-backends.ts
agent-backends.ts
 1  import type { AgentBackendSettingsEntry } from '@/lib/shared/chat'
 2  import {
 3    getAgentBackendEnabledMap,
 4    listAgentBackends,
 5  } from '@/server/agents/runtime'
 6  
 7  export function listAgentBackendSettingsEntries(): AgentBackendSettingsEntry[] {
 8    const enabledMap = getAgentBackendEnabledMap()
 9    const backends = listAgentBackends({
10      includeDisabled: true,
11      enabledMap,
12    })
13  
14    const entries = backends.map((backend) => {
15      const capabilities = backend.capabilities()
16      const available = Object.values(capabilities).some(Boolean)
17      return {
18        id: backend.id,
19        label: backend.label,
20        aliases: backend.aliases,
21        enabled: enabledMap[backend.id] !== false,
22        available,
23        message: available
24          ? 'Available based on current runtime capabilities.'
25          : 'Unavailable: missing runtime capability prerequisites.',
26        capabilities,
27        details: null,
28      } satisfies AgentBackendSettingsEntry
29    })
30  
31    return entries.sort((left, right) => left.label.localeCompare(right.label))
32  }