import type { SqConfig } from '../config.js'; import type { AuthManager } from '../auth/manager.js'; /** * Multi-agent dispatch system. * * Dos flavours: * 1. `/dispatch` ad-hoc: parse `@model: prompt` lines y dispara en paralelo. * 2. `/squad NAME [task]` cargando plantilla de ~/.squeezr-code/squads.json, * con modo 'parallel' o 'sequential'. * * En paralelo: Promise.allSettled → cada agente con su modelo, errores aislados. * Secuencial: el result_N del agente N se inyecta como {{result_0..N-1}} * en el prompt del siguiente. Útil para "A implementa → B revisa la implementación de A". */ export interface SquadAgent { model: string; role: string; prompt: string; } export interface Squad { mode: 'parallel' | 'sequential'; agents: SquadAgent[]; } export declare function loadSquads(): Record; export declare function saveSquads(squads: Record): void; /** * Parsea el body de /dispatch a una lista de { model, prompt }. * Formato aceptado: * @modelName: prompt del agente * @otherModel: otro prompt * * Líneas vacías / sin @ se ignoran (pueden ser comentarios del user). */ export declare function parseDispatchBody(body: string): Array<{ model: string; prompt: string; }>; /** Expande placeholders `{{task}}`, `{{result_N}}`, `{{result_last}}` en un string. */ export declare function applyTemplate(tpl: string, task: string, results: string[]): string; /** * Ejecuta un squad. `runAgent` es un callback que recibe (model, prompt, role) * y devuelve la respuesta del sub-agente. El caller lo inyecta para no tener * que importar runSubAgent y meter dependencias circulares. */ export declare function runSquad(squad: Squad, task: string, runAgent: (model: string, prompt: string, role: string) => Promise): Promise>; export type SquadDispatcher = (cfg: SqConfig, auth: AuthManager, cwd: string, task: string, squadOrAgents: Squad | Array<{ model: string; prompt: string; }>) => Promise; //# sourceMappingURL=squads.d.ts.map