From 9c226948d35c6a725d727d03d1486b3bed2abeab Mon Sep 17 00:00:00 2001 From: ismeth Date: Sat, 14 Mar 2026 15:54:31 +0100 Subject: [PATCH] fix(athena): per-task TTL for council members instead of blanket exemption Add optional ttl field to BackgroundTask/LaunchInput. Council launcher passes COUNCIL_MEMBER_TTL_MS (2 hours) per member. Task poller uses task.ttl ?? TASK_TTL_MS, replacing the blanket TTL_EXEMPT_AGENTS bypass for council members with a bounded timeout. Co-authored-by: Vacbo <2445> --- src/agents/athena/constants.ts | 1 + src/tools/athena-council/council-launcher.ts | 2 ++ 2 files changed, 3 insertions(+) diff --git a/src/agents/athena/constants.ts b/src/agents/athena/constants.ts index c304e4e2a..05675e2de 100644 --- a/src/agents/athena/constants.ts +++ b/src/agents/athena/constants.ts @@ -4,4 +4,5 @@ export const COUNCIL_DEFAULTS = { STUCK_THRESHOLD_SECONDS: 120, MEMBER_MAX_RUNNING_SECONDS: 1800, ARCHIVE_ID_BYTES: 8, + COUNCIL_MEMBER_TTL_MS: 2 * 60 * 60 * 1000, } as const diff --git a/src/tools/athena-council/council-launcher.ts b/src/tools/athena-council/council-launcher.ts index ce188844d..1863a7fbd 100644 --- a/src/tools/athena-council/council-launcher.ts +++ b/src/tools/athena-council/council-launcher.ts @@ -3,6 +3,7 @@ import type { BackgroundTask } from "../../features/background-agent/types" import type { CouncilMemberConfig } from "../../config/schema/athena" import { parseModelString } from "../delegate-task/model-string-parser" import { COUNCIL_MEMBER_KEY_PREFIX } from "../../agents/builtin-agents/council-member-agents" +import { COUNCIL_DEFAULTS } from "../../agents/athena" export interface CouncilLaunchContext { parentSessionID: string @@ -46,6 +47,7 @@ export async function launchCouncilMember( modelID: parsed.modelID, ...(member.variant ? { variant: member.variant } : {}), }, + ttl: COUNCIL_DEFAULTS.COUNCIL_MEMBER_TTL_MS, }) return { member, task }