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 }