#!/usr/bin/env node /** * Forgen — SubagentStart/Stop Hook * * 에이전트 생성/종료 추적. * - 활성 에이전트 수 모니터링 + 동시 실행 경고 (ADR-009 §4: 기본 16, workflow 면제) * - 에이전트 실행 이력 기록 * - ADR-009 §A: 상태 갱신을 file-lock 으로 보호 (동시 fanout lost-update 방지) */ /** * 동시 에이전트 경고 임계값. * ADR-009 §4: dynamic workflows 는 동시 16 까지 정상 사용하므로 기본값을 16 으로 * 올리고 env 로 조정 가능하게 한다. 과거 10 고정값은 workflow/team/swarm 실행마다 * 거짓 경고를 뱉었다. */ export declare function maxConcurrentAgents(): number; /** * 동시성 경고를 띄울지 결정 (순수 — 테스트 대상). * ADR-009 §4/§B: workflow-subagent 는 동시 16 이 정상이므로 면제. 그 외 에이전트가 * 임계값을 초과할 때만 경고. */ export declare function shouldWarnConcurrency(agentType: string, activeCount: number, max: number): boolean; export interface AgentEvent { sessionId: string; action: 'start' | 'stop'; agentId: string; agentType?: string; model?: string; } /** * 에이전트 이벤트를 file-lock 아래에서 적용한다 (ADR-009 §A). * * 락이 없던 시절에는 동시 SubagentStart (워크플로우 fanout) 가 같은 active-agents * 파일을 read-modify-write 하면서 lost-update 로 일부 에이전트가 누락됐다 (probe 에서 * 3개 중 1개 손실 관찰). 락 안에서 **fresh re-read** 후 mutate 해야 변경이 보존된다. * staleMs 는 hook fn 이 짧으므로 5s 로 단축. * * statePath 는 테스트 주입용 (기본은 sessionId 파생 경로). 반환값은 start 후 활성 * 에이전트 수 (경고 판정에 사용; stop 은 0). */ export declare function recordAgentEvent(ev: AgentEvent, statePath?: string): Promise<{ activeCount: number; }>;