merge: planner runs — 编排器自动拆解 hard / 自动写方案 medium [planner; tsk_1dkswD5Ub7gT]

部署 planner 功能(此前实现在 planner 分支、测试绿,未合):编排器把 analyzing/speccing 也当可执行,派 planner run 自动拆解(hard→子任务+plan_review)/写方案(medium→spec+spec_review);in-flight 从 status 泛化为'有 started run';reap 区分 executor/planner。与 main 干净合并,typecheck + 201 测试全绿。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
wangjia
2026-06-13 23:10:12 +08:00
12 changed files with 501 additions and 46 deletions
+2 -2
View File
@@ -57,10 +57,10 @@ export const TERMINAL_STATUS: ReadonlySet<TaskStatus> = new Set<TaskStatus>(['do
/** 合法状态流转表:from → 允许的 to[] */
export const TRANSITIONS: Record<TaskStatus, TaskStatus[]> = {
init: ['analyzing', 'speccing', 'ready', 'cancelled'], // 按复杂度分流
analyzing: ['plan_review', 'cancelled', 'paused'],
analyzing: ['plan_review', 'needs_attention', 'cancelled', 'paused'], // planner 拆解 / 失败超限升级
plan_review: ['decomposed', 'analyzing', 'cancelled'], // accept / reject(+意见)
decomposed: ['done', 'analyzing', 'cancelled', 'paused'], // 子全 done / 重拆
speccing: ['spec_review', 'cancelled', 'paused'],
speccing: ['spec_review', 'needs_attention', 'cancelled', 'paused'], // planner 写方案 / 失败超限升级
spec_review: ['ready', 'speccing', 'cancelled'], // accept / reject(+意见)
ready: ['blocked', 'queued', 'speccing', 'analyzing', 'cancelled', 'paused'],
blocked: ['ready', 'cancelled', 'paused'],