/**
 * ISupervisorAgent — Output port for the supervisor evaluator (spec 093).
 *
 * The supervisor observes events emitted on the agent collaboration fabric
 * (approval-gate transitions, agent questions, inter-agent messages) and
 * returns a {@link SupervisorDecision}. The decision is later persisted by
 * {@link EvaluateSupervisorDecisionUseCase} and mirrored to the audit log.
 *
 * The port is intentionally narrow: a single `evaluate(event)` method that
 * receives a discriminated event union. Concrete adapters MAY use a stateful
 * graph (LangGraph) under the hood and MUST resolve any LLM call through
 * `IAgentExecutorProvider` to honor the agent-agnostic rule.
 *
 * Implementations MUST:
 *  - Return a decision within the configured evaluator timeout (research
 *    NFR-2 budget — 25s soft, 30s hard); on timeout, emit a `verdict:
 *    'escalate'` decision with `rationale: 'timeout'` so the human path
 *    proceeds (FR-22 fail-safe).
 *  - Snapshot `modelId` and `promptVersion` on every decision so audit is
 *    reproducible across model rotations.
 *  - Treat any payload field on the input event as untrusted user content.
 *
 * The port itself does NOT persist decisions — that is the use case's
 * responsibility (separation of concerns).
 */
/** Default soft timeout for evaluator execution (research perf section). */
export const SUPERVISOR_EVALUATOR_SOFT_TIMEOUT_MS = 25_000;
