Skip to content

Port missing CLI commands from original AO (read + lifecycle surface) #90

Description

@harshitsinghbhandari

Summary

Tracking issue for porting the missing CLI commands from the original ComposioHQ/agent-orchestrator into this Go rewrite. Scope is limited to commands whose backend is already wired in the rewrite, plus a small set of one-route additions. Frontend/dashboard-only commands and features that depend on absent subsystems (review queue, plugin registry, notifier port, agent-reporting workflow) are explicitly out of scope here.

Status (2026-06-02)

Done — all 7 ready-to-add commands have shipped:

Follow-up #94 filed during review for Agent vs Harness terminology normalization.

Next up (tomorrow): the backend-needing tier (session rename, session cleanup route, orchestrator ls). The user has explicitly excluded ao open and ao status --watch from this issue's scope.

Context

A gap analysis cross-referenced the original's CLI surface (27 top-level commands, source in + "packages/cli/src" + of the upstream repo) against the current rewrite's HTTP + service layer. The rewrite already exposes the routes needed for ~70% of day-to-day commands; they just don't have CLI wrappers yet.

The rewrite's CLI prior to this issue was: + "start, stop, status, daemon, doctor, spawn, send, project add, version, completion" + (see + "backend/internal/cli/" + ).

Ready to add — backend exists, pure CLI work

All session subcommands ship with + "-p/--project" + flag as required. + "ls" + also got + "--all" + , + "--include-terminated" + , + "--json" + ; + "get" + got + "--json" + . + "kill" + / + "restore" + validate project scope client-side and return exit code 2 on mismatch.

Needs a small backend addition first (next, tomorrow)

Each needs one route (and sometimes a thin service method) before the CLI wrapper makes sense.

  • + "ao session rename " + — + "PATCH /api/v1/sessions/{id}" + is registered as a 501 stub at + "backend/internal/httpd/controllers/sessions.go:114" + . Needs service method + store update.
  • + "ao session cleanup [--project ]" + — + "service/session.Cleanup(projectId)" + exists internally; needs an HTTP route to expose it.
  • + "ao orchestrator ls" + — + "POST /api/v1/orchestrators" + exists but there's no list route. Worth doing alongside + "session ls" + .
  • + "ao session claim-pr " + — PR data is recorded but unexposed. Needs + "GET /api/v1/sessions/{id}/pr" + + a write path for claim.
  • + "ao project set-default" + — no default-project concept in the domain today. Small but a design choice (config file vs DB column). Tracked as a design open question.

Enrich existing commands

  • Extend + "ao doctor" + to match the original's coverage: agent-harness binary presence (claude, codex, aider, opencode), git version, zellij version, GitHub token validity. — feat(cli): enrich ao doctor (#90) #99
  • Extend shell completions as new commands ship.

Explicitly out of scope (don't port)

Backend subsystem doesn't exist in the rewrite. Open separate issues if/when those land.

  • + "ao batch-spawn" + — no batch-spawn orchestration.
  • + "ao acknowledge" + , + "ao report" + , + "ao verify" + — Stage-3 agent reporting workflow; no reporting domain.
  • + "ao review {run,execute,send,list}" + , + "ao review-check" + — no review queue service/store.
  • + "ao notify test" + , + "ao setup {desktop,slack,discord,webhook,composio*,openclaw}" + — no notifier port/adapter.
  • + "ao plugin {list,search,create,install,update,uninstall}" + — rewrite uses compile-time adapters; no plugin loader.
  • + "ao events {list,search,stats}" + — + "changelog" + table exists, no FTS or query API.
  • + "ao update" + — self-updater; package-manager territory.
  • + "ao migrate-storage" + — migration from the TS-era JSON sessions; not relevant for a fresh rewrite.
  • + "ao config {set,get}" + — rewrite is env-only by design.
  • + "ao session remap" + — niche; defer until requested.

References

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions