import { input, select } from '@inquirer/prompts'; import { createTask, listTasks, getTask, claimTask, doneTask, reviewTask, reopenTask, assignTask } from '../../core/services/taskService.js'; import type { Task } from '../../core/schema.js'; export async function taskCreate(cwd: string, options: Partial = {}): Promise { const title = options.title ?? await input({ message: 'Task title:' }); const role = options.role ?? await select({ message: 'Role:', choices: [ { name: 'architect', value: 'architect' }, { name: 'implementer', value: 'implementer' }, { name: 'reviewer', value: 'reviewer' }, { name: 'tester', value: 'tester' }, ], }); const priority = options.priority ?? 'medium'; const task = createTask(cwd, { title, role, priority }); console.log(`AgentHub: Task created ${task.id} ${task.title}`); } export function taskList(cwd: string, filters?: { status?: string; role?: string }): void { const tasks = listTasks(cwd, filters); if (tasks.length === 0) { console.log('No tasks found.'); return; } for (const t of tasks) { console.log(`${t.id} [${t.status}] (${t.role ?? 'unassigned'}) ${t.title}`); } } export function taskShow(cwd: string, id: string): void { const { task, body } = getTask(cwd, id); console.log(`# ${task.title}`); console.log(`Status: ${task.status} | Role: ${task.role ?? '-'} | Priority: ${task.priority}`); console.log('\n' + body); } export function taskClaim(cwd: string, id: string, agentName: string): void { claimTask(cwd, id, agentName); console.log(`AgentHub: Task claimed ${id} by ${agentName}`); } export function taskDone( cwd: string, id: string, meta?: { tokens?: number; duration?: number; by?: string }, ): void { doneTask(cwd, id, { doneBy: meta?.by, doneTokens: meta?.tokens, doneDuration: meta?.duration, }); console.log(`AgentHub: Task done ${id}`); } export function taskReview(cwd: string, id: string): void { reviewTask(cwd, id); console.log(`AgentHub: Task review ${id} (awaiting architect review)`); } export function taskReopen(cwd: string, id: string): void { reopenTask(cwd, id); console.log(`AgentHub: Task reopened ${id}`); } export function taskAssign(cwd: string, id: string, agentName: string): void { assignTask(cwd, id, agentName); console.log(`AgentHub: Task assigned ${id} → ${agentName}`); }