From 2f3a0238d90b769370a80f49c51124201e100324 Mon Sep 17 00:00:00 2001 From: Peter <304086198+peter-research@users.noreply.github.com> Date: Wed, 14 Oct 2026 13:10:05 +0200 Subject: [PATCH 1/2] Disable follow-up cards by default for Freebuff roots --- agents/base2/base2.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) 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, From 2e5aec0a90ee3489dbe10505048bfecbe3d5fce6 Mon Sep 17 00:00:00 2001 From: Peter <304086198+peter-research@users.noreply.github.com> Date: Wed, 14 Oct 2026 13:10:07 +0200 Subject: [PATCH 2/2] Cover follow-up behavior in Freebuff base2 mode --- agents/__tests__/base2.test.ts | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) 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 })