diff --git a/agents/__tests__/base2.test.ts b/agents/__tests__/base2.test.ts index 112507a624..d4dd0aef24 100644 --- a/agents/__tests__/base2.test.ts +++ b/agents/__tests__/base2.test.ts @@ -398,6 +398,26 @@ describe('base2 provider routing', () => { }) describe('base2 optional tools', () => { + test('free mode omits follow-up cards by default without disabling questions', () => { + const free = createBase2('free') + + expect(free.toolNames).not.toContain('suggest_followups') + expect(free.toolNames).toContain('ask_user') + }) + + test('other modes keep follow-up cards, and free mode can opt back in', () => { + for (const mode of ['default', 'lite', 'max'] as const) { + expect(createBase2(mode).toolNames).toContain('suggest_followups') + } + + expect( + createBase2('free', { noFollowups: false }).toolNames, + ).toContain('suggest_followups') + expect( + createBase2('free', { noFollowups: true }).toolNames, + ).not.toContain('suggest_followups') + }) + test('omits gravity_index and its instruction together', () => { const base2 = createBase2('free', { noGravityIndex: true }) diff --git a/agents/base2/base2.ts b/agents/base2/base2.ts index dcf695bd65..0d571a0acd 100644 --- a/agents/base2/base2.ts +++ b/agents/base2/base2.ts @@ -76,7 +76,10 @@ export function createBase2( const { planOnly = false, noAskUser = false, - noFollowups = false, + // Follow-up cards can end a time-limited Freebuff turn while there is + // still work to do. Keep them off by default for free-mode roots; a + // variant that wants them can explicitly pass noFollowups: false. + noFollowups = mode === 'free', noReview = false, noGravityIndex = false, model: modelOverride,