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>
This commit is contained in:
ismeth
2026-03-14 15:54:31 +01:00
committed by YeonGyu-Kim
parent 77d929a3ab
commit 9c226948d3
2 changed files with 3 additions and 0 deletions
+1
View File
@@ -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
@@ -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 }