Files
maestro/test/adapt.test.ts
T
wangjia a59588a0ce fix(console): 侧栏项目 agent 徽标改用 s.running,修复 planner/spec 阶段徽标缺失 (tsk_0u7OP3RFBAqr)
侧栏项目 agent 计数徽标原绑定 s.executing(仅统计任务恰处 executing 状态),
与「运行中」青点(s.running)及 tooltip『N agents running』语义不一致。
当 Hard(analyzing/planner) 或 Medium(speccing) 任务有在途 agent 时,s.executing=0
导致徽标缺失(如 maestro 项目)。改取 s.running(runs.status=started,覆盖各阶段)。

新增 test/adapt.test.ts 锁定该映射。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-30 08:02:22 +08:00

32 lines
1.4 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { test } from 'node:test';
import assert from 'node:assert/strict';
// adapt.js 是前端纯函数适配层(app/src),用 node:test 直接校验项目摘要映射。
import { adaptProject } from '../app/src/adapt.js';
const baseProject = {
id: 'p1', name: 'maestro', repoPath: '/Users/x/dev/maestro', defaultBranch: 'main',
autonomy: 'auto-easy', concurrency: 2, status: 'active',
};
test('adaptProject: agents 徽标取 s.running(实际在途 agent),而非 s.executing', () => {
// planner/spec 阶段:有真实在途 runrunning>0)但没有 executing 任务 → 徽标必须仍显示 agent 数
const p = adaptProject({ ...baseProject, summary: { running: 1, executing: 0, blocked: 0, attention: 0 } });
assert.equal(p.agents, 1, 'analyzing/speccing 阶段也应计入 agent 徽标');
assert.equal(p.state, 'running');
});
test('adaptProject: 无在途 run 时 agents 徽标为 0(即使有 executing 任务计数错位)', () => {
const p = adaptProject({ ...baseProject, summary: { running: 0, executing: 0, blocked: 2, attention: 1 } });
assert.equal(p.agents, 0);
assert.equal(p.blocked, 2);
assert.equal(p.pending, 1);
assert.equal(p.state, 'blocked');
});
test('adaptProject: summary 缺省时各计数回退 0', () => {
const p = adaptProject({ ...baseProject });
assert.equal(p.agents, 0);
assert.equal(p.pending, 0);
assert.equal(p.blocked, 0);
});