Skip to content

Latest commit

 

History

History
85 lines (71 loc) · 4.08 KB

File metadata and controls

85 lines (71 loc) · 4.08 KB

agent-orchestrator status

Current main ships a working single-user local loop: the Go daemon and the Electron/React frontend both drive a live daemon over HTTP/SSE/WebSocket. The core GitHub flow works end-to-end: add project → spawn session/orchestrator → attach terminal → observe PR → merge.

This file tracks progress. For what the product is and how to run it, see the top-level README.md; for the backend mental model see architecture.md.

Build & test

The local gate is the backend Go build and race-enabled test suite:

cd backend && go build ./... && go test -race ./...

npm run lint (from the repo root) runs go test ./... plus golangci-lint. Frontend checks live under frontend/ (npm run typecheck, npm run build). See AGENTS.md for the regen workflow when touching the API surface (npm run sqlc, npm run api).

Shipped

Backend (Go daemon)

  • Loopback-only HTTP daemon (chi router, CORS, per-request timeout, /healthz / /readyz / /shutdown).
  • SQLite store with goose migrations and sqlc-generated queries; DB trigger-based change-data-capture into change_log.
  • CDC poller + broadcaster feeding in-process subscribers and the SSE stream at GET /api/v1/events (with Last-Event-ID replay).
  • Full session lifecycle over HTTP: list, get, spawn, kill, restore, rename, rollback, cleanup, send, activity, PR claim/list. Orchestrator routes (list/spawn/get) are wired too.
  • Project CRUD plus per-project config (PUT /projects/{id}/config).
  • PR action engine wired into the API: POST /prs/{id}/merge and /prs/{id}/resolve-comments.
  • Review routes registered: GET /reviews, POST /reviews/execute, POST /reviews/{id}/send.
  • SCM observer (internal/observe/scm) wired into the daemon: GitHub provider, lazy/non-blocking auth, per-PR polling with ETag guards and semantic diffing, feeding PR facts into lifecycle, which sends agent nudges for CI failures, review feedback, and merge conflicts (#75, #108, #109).
  • Terminal mux over WebSocket (/mux): per-client zellij attach PTY.
  • Lifecycle reducer plus reaper (internal/observe/reaper).
  • Agent adapter platform under internal/adapters/agent/ (23 adapters) with a registry and ao hooks activity dispatch.
  • OpenAPI spec generated from Go DTOs; frontend TS types generated from it and drift-checked in CI.

Frontend (Electron + React)

  • Electron + React 19 + TanStack Router/Query + Tailwind + shadcn primitives.
  • Real daemon wiring via the generated openapi-fetch typed client (src/api/schema.ts); mock data only in VITE_NO_ELECTRON web-preview mode.
  • Electron main handles daemon discovery, launch, and status reporting.
  • Shell: sidebar (projects + sessions, add/remove project), sessions board, session view + inspector, project settings, pull-requests page, spawn-orchestrator flow.
  • Terminal pane (xterm) over the mux WebSocket, with a live SSE events connection and port-rebind on daemon restart.

In flight / not yet a runtime feature

  • Tracker lane: GitHub tracker adapter exists, but there is no daemon observer loop or agent-lifecycle→issue mirroring yet, so the tracker does nothing at runtime (#112).
  • Notifications: design/in-flight only; no shipped backend notifier or UI center.
  • Live PR/tracker fact surfacing: the observer writes facts, but exposing the full pr_* / tracker_* CDC events to live consumers (#110) and in ao session get (#111) is still open.
  • CLI parity for PR/review actions: merge, resolve-comments, and review are HTTP-only (frontend-driven); there are no ao pr / ao review commands.

Tracking milestone: rewrite.