refactor!: rebrand CCAM to AgentHub

Clean break, no compatibility alias. Renames the product name, the CLI
binary (`ccam` -> `agenthub`), the env var prefix (`CCAM_` ->
`AGENTHUB_`), the Prometheus metric namespace (`ccam_*` ->
`agenthub_*`), the tmux session prefix (`ccam-lane-<id>` ->
`agenthub-lane-<id>`), the per-repo runtime profile directory
(`.ccam/profile` -> `.agenthub/profile`), the lanes state root
(`~/.claude/ccam-lanes` -> `~/.claude/agenthub-lanes`), the bundled
plugins (`plugins/ccam*` -> `plugins/agenthub*`) and their slash
commands (`/ccam-doctor` -> `/agenthub-doctor`, `/ccam:*` ->
`/agenthub:*`).

Because there is no alias, an existing install has to be updated by
hand: rename its `.ccam/profile` directory and any `CCAM_*` variables,
and reinstall the plugin under its new name.

Two other name families are deliberately left alone here, since they are
not just strings: the `Claude-Code-Monitor` repository/marketplace name,
and the `agent-dashboard` npm package plus its `~/.claude/agent-dashboard`
runtime directory, which holds the live database and needs a migration
rather than a rename.

Verified: server 1406/1406, client 459/459, `grep -i ccam` clean across
tracked files, `openapi.yaml` regenerated (95 paths, unchanged count).
This commit is contained in:
2026-09-07 12:09:15 +07:00
parent ae9b3dbcd5
commit 17d56d0e01
345 changed files with 2705 additions and 2727 deletions
@@ -147,12 +147,12 @@ produces zero diff against the currently committed file.
previously the only two mutating lane routes without it.
Checked both callers before changing anything:
- `bin/ccam.js`'s `post()` helper (backing `ccam lanes add` and `ccam stage`)
- `bin/agenthub.js`'s `post()` helper (backing `agenthub lanes add` and `agenthub stage`)
only ever sends a `Content-Type` header, never `Origin` or `Referer` — the
guard passes any request with no Origin header through unconditionally
(same rule already relied on by every other guarded lane route). Verified
end to end by re-running `server/__tests__/lanes-cli.test.js` (13/13) after
the change — both `ccam lanes add --repo` and the destructive-lifecycle
the change — both `agenthub lanes add --repo` and the destructive-lifecycle
CLI flows (which call `stage` indirectly via `clear`) still pass.
- `grep -rn "api/lanes" mcp/ scripts/` — no hits. Nothing else calls these
routes.
@@ -191,7 +191,7 @@ changed).
corrupt-`.git` case, so it was not inaccurate and editing it would have
been unrequested scope.
- Did not add a CLI-level test reproducing the corrupt-`.git` removal
through `ccam lanes remove` — the brief asked for "a test proving (a)"
through `agenthub lanes remove` — the brief asked for "a test proving (a)"
which the new `worktree.test.js` case already does directly against
`removeWorktree` (the same function the route and CLI both call); adding a
second, slower end-to-end CLI version would duplicate coverage without