/** * Agent Spawn Gate — Singleton (provider-agnostic) * * CENTRALIZED CONTROL for all agent process spawning across 0xRay * (OpenCode, Hermes, or any other MCP-compatible host). * * Purpose: * Prevent runaway recursive agent spawning. * * Design: * - Singleton instance shared across all modules * - Explicit enable/disable with state persistence * - Tracks all active spawned processes for cleanup * - Gates every spawn path: inference, orchestrator, scripts, tests * * Usage: * import { spawnGate } from "./agent-spawn-gate.js"; * * // Before spawning * spawnGate.assertAllowed("inference-cycle"); * * // Global disable (emergency brake) * spawnGate.disable("emergency: runaway processes detected"); */ declare class AgentSpawnGate { private static instance; private state; private constructor(); static getInstance(): AgentSpawnGate; /** Check if spawning is globally allowed */ isAllowed(): boolean; /** Enable spawning (opt-in, not default) */ enable(reason: string): void; /** Disable spawning globally */ disable(reason: string): void; /** Assert spawning is allowed or throw */ assertAllowed(module: string): void; /** Register a spawned process PID for tracking */ trackProcess(pid: number, module: string, description: string): void; /** Unregister a process when it exits */ untrackProcess(pid: number): void; /** Kill all tracked processes (emergency cleanup) */ killAllProcesses(signal?: NodeJS.Signals): Promise; /** Get current gate status */ getStatus(): { enabled: boolean; reason: string | undefined; disabledAt: number | undefined; activeProcesses: number; totalSpawned: number; totalBlocked: number; }; } /** Singleton export — use this everywhere (provider-agnostic) */ export declare const spawnGate: AgentSpawnGate; export default spawnGate;