feat(agents): Sage launch files, lead text across seat personas, lead decision record
- agents/sage/ launch files committed after Dewey's review (R1 revise, R2 approve). The launcher test now covers sage with its zai/glm-5.3 high pin. The README states the lead role and its limits, and the seat reads but never writes the old DYOR records under ~/.mosaic. - N6 (Dewey authored, Sage reviewed against pins): seat personas and the Rocko launcher name Sage as project lead and Darkwing as a collaborating engineering seat, per Jason's 2026-09-26 ruling. - docs/plans/2026-09-26_lead-decisions.md: the push, no merge into next and its conditions, the board restart, queue-as-data rulings, Gate F waiting on a T3 source, and what stays with Jason. Launcher tests 6/6 and 1/1, eight suites green. Not pushed. Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
@@ -11,7 +11,7 @@ const source = resolve(import.meta.dirname, '..');
|
||||
// forgets inherits these and fails instead of registering into a real data root.
|
||||
process.env.MOSAIC_CONFIG = join(tmpdir(), 'mosaic-launch-test-no-config.json');
|
||||
process.env.MOSAIC_LAUNCH_REGISTERED = '';
|
||||
for (const agent of ['darkwing', 'dewey', 'filbert', 'researcher']) test(`${agent} launch context, resources, session recovery, and refusals`, () => {
|
||||
for (const agent of ['darkwing', 'dewey', 'filbert', 'researcher', 'sage']) test(`${agent} launch context, resources, session recovery, and refusals`, () => {
|
||||
const root = mkdtempSync(join(tmpdir(), `${agent} launch `));
|
||||
try {
|
||||
for (const dir of ['agents', 'scripts', 'contracts', 'user', 'node_modules/.bin', 'extensions/goal']) {
|
||||
@@ -86,9 +86,10 @@ fs.writeFileSync('capture.json', JSON.stringify({args: process.argv.slice(2), ag
|
||||
assert.equal(record.sessionsDir, join(root, `.pi/state/${agent}/sessions`));
|
||||
assert.ok(Number.isInteger(record.pid) && record.pid > 0);
|
||||
const firstStart = record.startedAt;
|
||||
assert.equal(captured.args[captured.args.indexOf('--provider') + 1], agent === 'filbert' ? 'openai-codex' : 'test');
|
||||
assert.equal(captured.args[captured.args.indexOf('--model') + 1], agent === 'filbert' ? 'gpt-6-astra' : 'test-model');
|
||||
if (agent === 'filbert') assert.equal(captured.args[captured.args.indexOf('--thinking') + 1], 'low');
|
||||
const pinned = { filbert: ['openai-codex', 'gpt-6-astra', 'low'], sage: ['zai', 'glm-5.3', 'high'] }[agent];
|
||||
assert.equal(captured.args[captured.args.indexOf('--provider') + 1], pinned ? pinned[0] : 'test');
|
||||
assert.equal(captured.args[captured.args.indexOf('--model') + 1], pinned ? pinned[1] : 'test-model');
|
||||
if (pinned) assert.equal(captured.args[captured.args.indexOf('--thinking') + 1], pinned[2]);
|
||||
assert.equal(captured.args[captured.args.indexOf('--session-dir') + 1], join(root, `.pi/state/${agent}/sessions`));
|
||||
assert.equal(captured.args.includes('--continue'), false);
|
||||
assert.ok(captured.args.includes('--no-context-files'));
|
||||
|
||||
Reference in New Issue
Block a user