import { eq } from 'drizzle-orm'; import { getDb } from '../../db/client'; import { capabilities, modules } from '../../db/schema'; import type { CommandResult } from '../types'; /** * Handle capability list command * * Usage: celilo capability list * * @returns Command result with all registered capabilities */ export async function handleCapabilityList(): Promise { const db = getDb(); const rows = db .select({ capabilityName: capabilities.capabilityName, version: capabilities.version, moduleId: capabilities.moduleId, moduleState: modules.state, }) .from(capabilities) .innerJoin(modules, eq(capabilities.moduleId, modules.id)) .all(); if (rows.length === 0) { return { success: true, message: 'No capabilities registered\n\nCapabilities are registered when modules with "provides.capabilities" are imported.', }; } const lines = ['Registered capabilities:', '']; for (const row of rows) { lines.push( `${row.capabilityName} v${row.version} (provided by: ${row.moduleId}, state: ${row.moduleState})`, ); } return { success: true, message: lines.join('\n'), data: rows, }; }