diff --git a/.changeset/eager-lynx-munch.md b/.changeset/eager-lynx-munch.md new file mode 100644 index 000000000..fb7c7f608 --- /dev/null +++ b/.changeset/eager-lynx-munch.md @@ -0,0 +1,5 @@ +--- +type: Fixed +pr: 3462 +--- +**`/gsd-debug` session manager now dispatches via `Agent()`** — stale `Task()` invocation no longer collapses debugger work into inline execution. diff --git a/agents/gsd-debug-session-manager.md b/agents/gsd-debug-session-manager.md index 986d00f2a..645c87b07 100644 --- a/agents/gsd-debug-session-manager.md +++ b/agents/gsd-debug-session-manager.md @@ -83,7 +83,7 @@ goal: {goal} ``` ``` -Task( +Agent( prompt=filled_prompt, subagent_type="gsd-debugger", model="{debugger_model}", diff --git a/tests/debug-session-management.test.cjs b/tests/debug-session-management.test.cjs index d646df6ff..f900793c8 100644 --- a/tests/debug-session-management.test.cjs +++ b/tests/debug-session-management.test.cjs @@ -161,10 +161,15 @@ describe('debug skill dispatch and sub-orchestrator (#2148, #2151)', () => { test('gsd-debug-session-manager agent exists with correct tools', () => { const content = fs.readFileSync(path.join(process.cwd(), 'agents', 'gsd-debug-session-manager.md'), 'utf8'); - assert.ok(content.includes('Task'), 'gsd-debug-session-manager missing Task tool'); + assert.ok(content.includes('Agent'), 'gsd-debug-session-manager missing Agent tool'); assert.ok(content.includes('AskUserQuestion'), 'gsd-debug-session-manager missing AskUserQuestion tool'); }); + test('gsd-debug-session-manager spawns debugger with Agent() dispatcher', () => { + const content = fs.readFileSync(path.join(process.cwd(), 'agents', 'gsd-debug-session-manager.md'), 'utf8'); + assert.ok(content.includes('\nAgent('), 'session manager must dispatch debugger with Agent('); + }); + test('gsd-debug-session-manager uses DATA_START/DATA_END for checkpoint responses', () => { const content = fs.readFileSync(path.join(process.cwd(), 'agents', 'gsd-debug-session-manager.md'), 'utf8'); assert.ok(content.includes('DATA_START') && content.includes('DATA_END'),