014c442ed2
Supervisor replaces maxRounds as primary stop mechanism. Every N rounds (configurable via supervisorInterval, default 3), the engine calls a cheap LLM to evaluate thread progress and decide continue/stop. - New engine/supervisor.ts: runSupervisor + parseSupervisorDecisionText - Supervisor is opt-in: no models.supervisor configured = always continue - WorkflowConfig gains supervisorInterval (default 3, 0 to disable) - Engine calls supervisor after each supervisorInterval rounds - 256 tests pass, 14 new tests for supervisor logic Refs #110