2026-09-22 21:35:30 -04:00
|
|
|
# NestQuest foreground orchestrator
|
2026-09-22 11:18:23 -04:00
|
|
|
|
2026-09-22 21:35:30 -04:00
|
|
|
OpenCode 1.18.32 loads the named agents from `.opencode/agents/`. Their
|
|
|
|
|
models match the current NestQuest CTXD prompt: DeepSeek V4.1 Flash for the
|
|
|
|
|
foreground orchestrator and approver, and GLM 5.3 Flash for development.
|
|
|
|
|
Run orchestration directly from a shell:
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
nq-orchestrate
|
|
|
|
|
nq-orchestrate mission.md
|
|
|
|
|
cat mission.md | nq-orchestrate -
|
|
|
|
|
nq-orchestrate --print-prompt > nestquest-orchestrator.md
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
The launcher renders the project prompt with the foreground terminal runtime,
|
|
|
|
|
stops the dormant legacy service, refuses immediately when another NestQuest
|
|
|
|
|
TUI is open, and then replaces itself with OpenCode using
|
|
|
|
|
`terminal-orchestrator`. There is no background polling process and no wait
|
|
|
|
|
for a controller tick. Exit or interrupt the TUI to stop the foreground run;
|
|
|
|
|
resume that OpenCode session when a host-forced yield needs continuation.
|
2026-09-22 11:18:23 -04:00
|
|
|
|
|
|
|
|
`scripts/nq-agent` launches developer and approver sessions with fixed agent
|
|
|
|
|
definitions and no `--auto` flag. Headless OpenCode runs use `--pure` so the
|
|
|
|
|
global idle-notification plugin does not notify on every controller tick.
|
|
|
|
|
The approver's shell permission permits only the installed
|
|
|
|
|
`nq-approve-merge` broker for Gitea. That broker requires exact-head
|
|
|
|
|
Claude approval evidence, an exact-head Gitea approval by `review_agent`,
|
|
|
|
|
the `dev` target, a mergeable PR, and passing configured checks before it
|
|
|
|
|
requests a squash merge with Gitea's atomic `head_commit_id` guard.
|
|
|
|
|
`scripts/nq-review` launches the independent
|
|
|
|
|
Claude review in a noninteractive read-only session in the task worktree,
|
|
|
|
|
checks the head again afterward, saves
|
|
|
|
|
the output under `/tmp/opencode`, and posts the Gitea approval.
|
|
|
|
|
The approver verifies the reviewed head again before a merge.
|
|
|
|
|
|
2026-09-22 21:35:30 -04:00
|
|
|
The terminal launcher uses a stable copy of this configuration and scripts
|
2026-09-22 11:18:23 -04:00
|
|
|
at `/home/overseer/.local/share/nestquest-controller`; it does not depend on
|
|
|
|
|
which task branch is checked out in the primary NestQuest directory. Install
|
2026-09-22 21:35:30 -04:00
|
|
|
that copy, run `scripts/nq-controller --check`, and verify the OpenCode
|
|
|
|
|
agents (terminal-orchestrator, developer, and approver)
|
2026-09-22 11:18:23 -04:00
|
|
|
with `opencode debug agent <name>` while `OPENCODE_CONFIG_DIR` points at the
|
2026-09-22 21:35:30 -04:00
|
|
|
installed `.opencode` directory. Install `scripts/nq-orchestrate` in
|
|
|
|
|
`~/.local/bin/`. For the global slash command, also install
|
|
|
|
|
`.opencode/agents/terminal-orchestrator.md` under
|
|
|
|
|
`~/.config/opencode/agents/` and
|
|
|
|
|
`deploy/opencode-global-commands/start-nestquest-development.md` under
|
|
|
|
|
`~/.config/opencode/commands/`. The old `nestquest-controller.service` remains static and
|
|
|
|
|
inactive only for migration safety; foreground launch stops it.
|
2026-09-22 11:46:40 -04:00
|
|
|
|
2026-09-22 21:35:30 -04:00
|
|
|
Inside an already-open OpenCode TUI, `/start-development` (or the global
|
|
|
|
|
`/start-nestquest-development`) switches to the same foreground
|
|
|
|
|
`terminal-orchestrator` behavior immediately. The shell launcher is the
|
|
|
|
|
preferred entry point when supplying a mission prompt file.
|
2026-09-22 11:46:40 -04:00
|
|
|
|
|
|
|
|
`templates/ORCHESTRATOR-PROMPT.template.md` and
|
|
|
|
|
`templates/nestquest.profile.json` make the current CTXD cycle prompt
|
|
|
|
|
adaptable to another project. See `templates/README.md` before publishing a
|
|
|
|
|
rendered prompt for a new project.
|
2026-09-22 11:18:23 -04:00
|
|
|
|
|
|
|
|
The CTXD preflight reads the configured HTTP/MCP server's NestQuest prompt.
|
|
|
|
|
It deliberately does not inspect `/home/overseer/.ctx/ctxd.db`, which belongs
|
|
|
|
|
to a different local store and lacks this project.
|
|
|
|
|
|
|
|
|
|
All four agent credentials are currently readable by the same Unix account.
|
|
|
|
|
The Gitea review and merge gates enforce normal workflow sequencing, but
|
|
|
|
|
they are not a hard isolation boundary against a process running as that
|
|
|
|
|
account. Strong isolation requires separate OS identities and protected
|
|
|
|
|
credentials for the controller, reviewer, and approver.
|
|
|
|
|
|
2026-09-22 21:35:30 -04:00
|
|
|
The terminal runtime repeatedly executes CONTROLLER_TICK within the foreground
|
|
|
|
|
session. Neither a feature merge nor a progress report ends the run while
|
|
|
|
|
eligible work remains. A host-forced yield returns a continuation checkpoint
|
|
|
|
|
that can be resumed in the same OpenCode session.
|
2026-09-22 11:18:23 -04:00
|
|
|
|
|
|
|
|
Do not put tokens in this repository or in unit files. Existing OpenCode MCP
|
|
|
|
|
connections supply CTXD and Maestro. Rotate those MCP tokens as a coordinated
|
|
|
|
|
operation across every consumer before revoking the old values.
|