mirror of
https://github.com/Ark0N/Codeman.git
synced 2026-10-09 00:49:41 +02:00
feat: add Orchestrator Loop — phased plan execution with team agents
Adds a new autonomous loop that accepts high-level goals, generates phased execution plans via AI, and executes them step-by-step with verification gates between phases. Core components: - OrchestratorLoop: state machine (idle→planning→approval→executing→verifying→completed) - OrchestratorPlanner: plan generation via PlanOrchestrator, Kahn's algorithm phase grouping - OrchestratorVerifier: phase verification (strict/moderate/lenient modes) - Prompt templates for phase execution, team delegation, verification, replanning API (10 endpoints): - POST start/approve/reject/pause/resume/stop - GET status/plan - POST phase/:id/skip, phase/:id/retry Frontend: orchestrator-panel.js with SSE-driven state, phase progress, task tracking Tests: 22 tests (18 route + 4 unit), all passing. Typecheck/lint/format clean. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -580,3 +580,31 @@ export type RespawnEnableInput = z.infer<typeof RespawnEnableSchema>;
|
||||
export type PushSubscribeInput = z.infer<typeof PushSubscribeSchema>;
|
||||
export type PushPreferencesUpdateInput = z.infer<typeof PushPreferencesUpdateSchema>;
|
||||
export type RalphLoopStartInput = z.infer<typeof RalphLoopStartSchema>;
|
||||
|
||||
// ========== Orchestrator Loop ==========
|
||||
|
||||
/** POST /api/orchestrator/start */
|
||||
export const OrchestratorStartSchema = z.object({
|
||||
goal: z.string().min(1).max(100000),
|
||||
config: z
|
||||
.object({
|
||||
plannerModel: z.string().max(100).optional(),
|
||||
researchEnabled: z.boolean().optional(),
|
||||
autoApprove: z.boolean().optional(),
|
||||
maxPhaseRetries: z.number().int().min(1).max(10).optional(),
|
||||
phaseTimeoutMs: z.number().int().min(60000).max(7200000).optional(),
|
||||
enableTeamAgents: z.boolean().optional(),
|
||||
maxParallelSessions: z.number().int().min(1).max(10).optional(),
|
||||
verificationMode: z.enum(['strict', 'moderate', 'lenient']).optional(),
|
||||
compactBetweenPhases: z.boolean().optional(),
|
||||
})
|
||||
.optional(),
|
||||
});
|
||||
|
||||
/** POST /api/orchestrator/reject */
|
||||
export const OrchestratorRejectSchema = z.object({
|
||||
feedback: z.string().min(1).max(10000),
|
||||
});
|
||||
|
||||
export type OrchestratorStartInput = z.infer<typeof OrchestratorStartSchema>;
|
||||
export type OrchestratorRejectInput = z.infer<typeof OrchestratorRejectSchema>;
|
||||
|
||||
Reference in New Issue
Block a user