Frontmatter
| id | 9842 |
| title | feat: Implement Autonomous Agent Orchestrator with Golden Path Directive Injection |
| state | Closed |
| labels | enhancementaiarchitecture |
| assignees | tobiu |
| createdAt | Apr 10, 2026, 9:16 AM |
| updatedAt | Apr 12, 2026, 3:20 PM |
| githubUrl | https://github.com/neomjs/neo/issues/9842 |
| author | tobiu |
| commentsCount | 0 |
| parentIssue | null |
| subIssues | [] |
| subIssuesCompleted | 0 |
| subIssuesTotal | 0 |
| blockedBy | [] |
| blocking | [ ] 9843 feat: Implement Quantitative Reward Signal for Golden Path Edge Reinforcement, [ ] 9844 feat: Implement Safe Commit Pipeline for Autonomous Agent Execution |
| closedAt | Apr 12, 2026, 3:20 PM |
feat: Implement Autonomous Agent Orchestrator with Golden Path Directive Injection
tobiu cross-referenced by #9844 on Apr 10, 2026, 9:17 AM
tobiu assigned to @tobiu on Apr 10, 2026, 9:17 AM
tobiu marked this issue as blocking #9844 on Apr 10, 2026, 9:17 AM
tobiu marked this issue as blocking #9843 on Apr 10, 2026, 9:18 AM
tobiu cross-referenced by PR #9918 on Apr 12, 2026, 2:48 PM
tobiu closed this issue on Apr 12, 2026, 3:20 PM
Problem (A2A Context — Claude Opus 4.6 via Antigravity)
The Neo.mjs Agent infrastructure (
ai/Agent.mjs,ai/agent/Loop.mjs,ai/agent/Scheduler.mjs) implements a complete "Perceive → Reason → Act → Reflect" cognitive cycle with sub-agent delegation (Librarian, QA, Browser). The DreamService synthesizes a mathematically weighted Golden Path intosandman_handoff.md. However, no orchestrator exists to connect them.The autonomous loop currently requires a human to:
This is the single highest-leverage gap. A trivial runner script transforms the architecture from "80% self-evolving" to "90% self-evolving."
Solution
Create
buildScripts/ai/runAgent.mjs— a headless runner that:sandman_handoff.mdto extract the top-N Golden Path directivesNeo.ai.Agentwith the appropriate MCP server connections{type: 'system:golden-path', priority: 'high'}event into the Scheduleragent.loop.start()and processes until the Scheduler is emptysetIntervalcan restart itKey Design Constraints:
node buildScripts/ai/runAgent.mjs(no browser required)sandman_handoff.mdformat (markdown with numbered list)knowledge-base,file-system, andgithub-workflowMCP servers--dry-runflag that logs directives without executingmaxSubAgentLifespanto a conservative value (e.g., 20) for the first iterationnpm run ai:agentscript topackage.jsonIntegration Point: A separate cron/launchd plist or
while true; sleep 3600; do node buildScripts/ai/runAgent.mjs; donewrapper is intentionally out of scope for this ticket — the runner should be a single idempotent execution.Architectural Context
ai/Agent.mjs(L97-144):initAsync()connects MCP clients and boots the Loopai/agent/Loop.mjs(L271-290):tick()pollsscheduler.next()and processes eventsai/agent/Scheduler.mjs(L43-54):add()accepts{type, priority, data}eventsbuildScripts/ai/runSandman.mjs: Existing pattern for headless Neo.mjs daemon runnersai/daemons/DreamService.mjs(L1003-1012): Golden Path markdown formatAvoided Pitfalls
--auto-commitflag (safety boundary)sandman_handoff.mdshould be defensive (regex-based, tolerant of format drift)Verification
test/playwright/unit/ai/Orchestrator.spec.mjs--dry-runproduces output without executing tools