seedproject-web/agents/console/server.mjs
Carlos Arias 542858b1ec framework(core): split console runner into host + pluggable agent modules
Phase 1 of the standalone agent framework. Pure refactor, behaviour identical:
- host.mjs: shared runtime (route registry, one runClaudeJson/runClaudeStream
  replacing 5 inline spawns, build/git/phpCli, SSE job model, scheduler, core
  /ping /auth /logout)
- agents/{in-page-console,project-builder,web-designer,qa}.mjs: each exports
  register(host), owns its routes/triggers/persona
- server.mjs: bootstrap that loads host + registers agents
- web-designer exposes host.drainTasks; qa autofix kicks it
Verified: QA pass, Web Designer queue task, heartbeat, all endpoints.
2026-07-24 07:50:26 -04:00

28 lines
1.1 KiB
JavaScript

#!/usr/bin/env node
/**
* AstroAgent console runner — bootstrap.
*
* Loads the generic host, registers the agent modules, and starts listening.
* Runs AS the confined agent user (systemd User=), binds 127.0.0.1 only, and is
* reached exclusively through nginx, which gates every request with auth_request
* against the PHP admin session — this process does not re-check that.
*
* The shared runtime lives in ./host.mjs; each capability is a module under
* ./agents/ exporting register(host). (Phase 3 will drive this roster from
* astroagent.config.json instead of the hardcoded list below.)
*
* Node built-ins only — no dependencies.
*/
import { host } from "./host.mjs";
import { register as registerInPageConsole } from "./agents/in-page-console.mjs";
import { register as registerProjectBuilder } from "./agents/project-builder.mjs";
import { register as registerWebDesigner } from "./agents/web-designer.mjs";
import { register as registerQa } from "./agents/qa.mjs";
registerInPageConsole(host);
registerProjectBuilder(host);
registerWebDesigner(host);
registerQa(host);
host.listen();