Parent: #1235
Blocked by: #1236
Summary
Implement LLM-based task decomposition — converts a user goal into a validated TaskGraph.
Branch: feat/m33/orchestration-planner
Deliverables
New files
crates/zeph-core/src/orchestration/planner.rs — Planner trait + LlmPlanner impl
Details
- Prompt template with JSON schema and agent catalog injection
- String-based
task_id in LLM output, parsed to internal TaskId(u32) indices
- JSON response parsing with retry-on-malformed (single retry)
- Validation of planner output via
dag::validate
max_tasks enforcement (reject if LLM exceeds limit)
planner_model config: use configured model or fall back to agent's primary model
planner_max_tokens config for response budget
Planner prompt design
Structured prompt includes:
- Available agent catalog (name + description + tools)
- JSON schema for output format
- Instructions: prefer fewer/larger tasks, use string task_ids, declare dependencies
Tests (~15)
Dependencies
Blocked by: Phase 1 (#1236)
Can run in parallel with: Phase 3 (#1238)
Parent: #1235
Blocked by: #1236
Summary
Implement LLM-based task decomposition — converts a user goal into a validated
TaskGraph.Branch:
feat/m33/orchestration-plannerDeliverables
New files
crates/zeph-core/src/orchestration/planner.rs—Plannertrait +LlmPlannerimplDetails
task_idin LLM output, parsed to internalTaskId(u32)indicesdag::validatemax_tasksenforcement (reject if LLM exceeds limit)planner_modelconfig: use configured model or fall back to agent's primary modelplanner_max_tokensconfig for response budgetPlanner prompt design
Structured prompt includes:
Tests (~15)
Dependencies
Blocked by: Phase 1 (#1236)
Can run in parallel with: Phase 3 (#1238)