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:
+24
-91
@@ -1654,8 +1654,8 @@ components:
|
||||
properties:
|
||||
format:
|
||||
type: string
|
||||
description: Bundle format marker (always "ccam-export" for exports from this version).
|
||||
example: ccam-export
|
||||
description: Bundle format marker (always "agenthub-export" for exports from this version).
|
||||
example: agenthub-export
|
||||
version:
|
||||
type: integer
|
||||
description: Bundle schema version.
|
||||
@@ -1890,91 +1890,38 @@ components:
|
||||
type: string
|
||||
description: First 320 characters of the markdown body (after frontmatter).
|
||||
example: Review backend route and hook logic for regressions...
|
||||
CcConfigPluginItem:
|
||||
type: object
|
||||
description: One named artifact a plugin contributes - a skill, subagent, slash command or output style.
|
||||
required:
|
||||
- name
|
||||
- description
|
||||
- file
|
||||
properties:
|
||||
name:
|
||||
type: string
|
||||
description: Frontmatter `name` when the file declares one (that is what Claude Code addresses it by), else the filename without its .md extension.
|
||||
example: ship-feature-lane
|
||||
description:
|
||||
type: string
|
||||
nullable: true
|
||||
description: Frontmatter `description`, or null when the file declares none.
|
||||
example: Autonomous end-to-end feature pipeline for ONE CCAM lane.
|
||||
file:
|
||||
type: string
|
||||
description: Absolute path of the backing markdown file (SKILL.md for a skill).
|
||||
example: /Users/son/.claude/plugins/cache/sg/ccam/skills/ship-feature-lane/SKILL.md
|
||||
CcConfigPluginContributions:
|
||||
type: object
|
||||
nullable: true
|
||||
description: Counts of artifacts a plugin contributes, the same surfaces listed by name under `items`, plus its parsed .claude-plugin/plugin.json. Null when the plugin's installPath does not exist on disk.
|
||||
description: Counts of artifacts a plugin contributes, plus its parsed .claude-plugin/plugin.json. Null when the plugin's installPath does not exist on disk.
|
||||
required:
|
||||
- skills
|
||||
- agents
|
||||
- commands
|
||||
- outputStyles
|
||||
- hooks
|
||||
- items
|
||||
- pluginJson
|
||||
properties:
|
||||
skills:
|
||||
type: integer
|
||||
description: Number of skills the plugin contributes; always equals `items.skills.length`.
|
||||
description: Number of skill directories (containing SKILL.md) under the plugin.
|
||||
example: 3
|
||||
agents:
|
||||
type: integer
|
||||
description: Number of subagents the plugin contributes; always equals `items.agents.length`.
|
||||
description: Number of .md agent files under the plugin.
|
||||
example: 2
|
||||
commands:
|
||||
type: integer
|
||||
description: Number of slash commands the plugin contributes; always equals `items.commands.length`.
|
||||
description: Number of .md command files under the plugin.
|
||||
example: 5
|
||||
outputStyles:
|
||||
type: integer
|
||||
description: Number of output styles the plugin contributes; always equals `items.outputStyles.length`.
|
||||
description: Number of .md output-style files under the plugin.
|
||||
example: 0
|
||||
hooks:
|
||||
type: integer
|
||||
description: Number of files under the plugin's hooks/ directory. Has no `items` list - a plugin's hooks are matcher/command pairs declared inline in plugin.json, not named artifacts.
|
||||
description: Number of files under the plugin's hooks/ directory.
|
||||
example: 1
|
||||
items:
|
||||
type: object
|
||||
description: >-
|
||||
The contributed artifacts by name, so a client can show WHICH skills,
|
||||
subagents, commands and output styles a plugin ships. Each surface
|
||||
covers both the conventional directory (`skills/`, `agents/`,
|
||||
`commands/`, `output-styles/`) and any path plugin.json declares for
|
||||
that key; a declared path escaping the plugin's own install directory
|
||||
is ignored.
|
||||
required:
|
||||
- skills
|
||||
- agents
|
||||
- commands
|
||||
- outputStyles
|
||||
properties:
|
||||
skills:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/components/schemas/CcConfigPluginItem'
|
||||
agents:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/components/schemas/CcConfigPluginItem'
|
||||
commands:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/components/schemas/CcConfigPluginItem'
|
||||
outputStyles:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/components/schemas/CcConfigPluginItem'
|
||||
pluginJson:
|
||||
type: object
|
||||
nullable: true
|
||||
@@ -5021,12 +4968,12 @@ paths:
|
||||
schema:
|
||||
type: string
|
||||
example: |
|
||||
# HELP ccam_up 1 when the dashboard API is serving this scrape.
|
||||
# TYPE ccam_up gauge
|
||||
ccam_up 1
|
||||
# HELP ccam_sessions Number of sessions by lifecycle status.
|
||||
# TYPE ccam_sessions gauge
|
||||
ccam_sessions{status="active"} 3
|
||||
# HELP agenthub_up 1 when the dashboard API is serving this scrape.
|
||||
# TYPE agenthub_up gauge
|
||||
agenthub_up 1
|
||||
# HELP agenthub_sessions Number of sessions by lifecycle status.
|
||||
# TYPE agenthub_sessions gauge
|
||||
agenthub_sessions{status="active"} 3
|
||||
/api/analytics:
|
||||
get:
|
||||
tags:
|
||||
@@ -5900,7 +5847,7 @@ paths:
|
||||
tags:
|
||||
- Settings
|
||||
summary: Export all dashboard data as JSON
|
||||
description: 'Exports the entire dataset as a single versioned JSON document — all sessions, agents, events, token_usage rows, workflows, dashboard_runs, alert_rules, and model_pricing — stamped with `format: "ccam-export"`, `version`, and `exported_at`. Served with a `Content-Disposition: attachment` header (filename `agent-monitor-export-YYYY-MM-DD.json`) so browsers download it. Use it to back up before a destructive operation (clear-data / cleanup with purge_days) or to migrate/consolidate data across machines — the bundle is re-importable via POST /api/settings/import. Read-only; nothing is modified.'
|
||||
description: 'Exports the entire dataset as a single versioned JSON document — all sessions, agents, events, token_usage rows, workflows, dashboard_runs, alert_rules, and model_pricing — stamped with `format: "agenthub-export"`, `version`, and `exported_at`. Served with a `Content-Disposition: attachment` header (filename `agent-monitor-export-YYYY-MM-DD.json`) so browsers download it. Use it to back up before a destructive operation (clear-data / cleanup with purge_days) or to migrate/consolidate data across machines — the bundle is re-importable via POST /api/settings/import. Read-only; nothing is modified.'
|
||||
operationId: exportData
|
||||
responses:
|
||||
'200':
|
||||
@@ -5910,7 +5857,7 @@ paths:
|
||||
schema:
|
||||
$ref: '#/components/schemas/ExportResponse'
|
||||
example:
|
||||
format: ccam-export
|
||||
format: agenthub-export
|
||||
version: 1
|
||||
exported_at: '2026-06-26T01:12:44.913Z'
|
||||
sessions:
|
||||
@@ -7564,25 +7511,11 @@ paths:
|
||||
installPathExists: true
|
||||
enabled: true
|
||||
contributes:
|
||||
skills: 2
|
||||
agents: 1
|
||||
commands: 0
|
||||
skills: 3
|
||||
agents: 2
|
||||
commands: 5
|
||||
outputStyles: 0
|
||||
hooks: 1
|
||||
items:
|
||||
skills:
|
||||
- name: brainstorming
|
||||
description: Explores intent and design before implementation.
|
||||
file: /Users/son/.claude/plugins/superpowers/skills/brainstorming/SKILL.md
|
||||
- name: writing-plans
|
||||
description: Turns a spec into a step-by-step implementation plan.
|
||||
file: /Users/son/.claude/plugins/superpowers/skills/writing-plans/SKILL.md
|
||||
agents:
|
||||
- name: code-reviewer
|
||||
description: Reviews a diff for correctness regressions.
|
||||
file: /Users/son/.claude/plugins/superpowers/agents/code-reviewer.md
|
||||
commands: []
|
||||
outputStyles: []
|
||||
pluginJson:
|
||||
name: superpowers
|
||||
version: 1.2.0
|
||||
@@ -8921,7 +8854,7 @@ paths:
|
||||
tags:
|
||||
- Lanes
|
||||
summary: A lane's own application stack
|
||||
description: Slot, ports, per-service liveness, log paths and the last boot error. Recomputed on every call from pid files and port probes rather than cached, because a process can die to OOM or a stray kill without telling anyone. Read-only, so no same-origin guard. Kept out of GET /api/lanes because it opens a socket per declared port and stats every pid file. A lane whose repository declares no .ccam/profile returns available:false with HTTP 200 — most lanes never run a stack, which is a normal state, not a fault.
|
||||
description: Slot, ports, per-service liveness, log paths and the last boot error. Recomputed on every call from pid files and port probes rather than cached, because a process can die to OOM or a stray kill without telling anyone. Read-only, so no same-origin guard. Kept out of GET /api/lanes because it opens a socket per declared port and stats every pid file. A lane whose repository declares no .agenthub/profile returns available:false with HTTP 200 — most lanes never run a stack, which is a normal state, not a fault.
|
||||
operationId: getLaneRuntime
|
||||
parameters:
|
||||
- name: id
|
||||
@@ -8962,7 +8895,7 @@ paths:
|
||||
'202':
|
||||
description: Accepted; the boot runs in the background.
|
||||
'400':
|
||||
description: ENOPROFILE — no .ccam/profile, with the paths searched.
|
||||
description: ENOPROFILE — no .agenthub/profile, with the paths searched.
|
||||
'403':
|
||||
description: The browser request was not same-origin/loopback.
|
||||
'404':
|
||||
@@ -9896,7 +9829,7 @@ paths:
|
||||
tags:
|
||||
- Settings
|
||||
summary: Restore (import) a previously exported data bundle
|
||||
description: 'Restores a bundle produced by GET /api/settings/export. Supply it either as `multipart/form-data` with a single `file` field (browser upload) or as a JSON body `{ "path": "<absolute path>" }` (the server reads the file from disk — used by the `ccam import-data` CLI, and it also sidesteps the global 1 MB JSON body cap for large bundles). The restore is idempotent and NON-DESTRUCTIVE: it is session-atomic, so a session already present (matched by its UUID) is skipped whole together with its agents/events/token_usage/workflows, and independent config rows (dashboard_runs, alert_rules, model_pricing) are inserted only when absent. Nothing existing is overwritten — ideal for consolidating several machines into one dashboard. The response reports per-table counts.'
|
||||
description: 'Restores a bundle produced by GET /api/settings/export. Supply it either as `multipart/form-data` with a single `file` field (browser upload) or as a JSON body `{ "path": "<absolute path>" }` (the server reads the file from disk — used by the `agenthub import-data` CLI, and it also sidesteps the global 1 MB JSON body cap for large bundles). The restore is idempotent and NON-DESTRUCTIVE: it is session-atomic, so a session already present (matched by its UUID) is skipped whole together with its agents/events/token_usage/workflows, and independent config rows (dashboard_runs, alert_rules, model_pricing) are inserted only when absent. Nothing existing is overwritten — ideal for consolidating several machines into one dashboard. The response reports per-table counts.'
|
||||
operationId: importData
|
||||
requestBody:
|
||||
required: true
|
||||
@@ -9919,7 +9852,7 @@ paths:
|
||||
type: string
|
||||
description: Absolute path (server-side) to an export .json file. `~` is expanded.
|
||||
example:
|
||||
path: /Users/you/ccam-export-2026-06-26.json
|
||||
path: /Users/you/agenthub-export-2026-06-26.json
|
||||
responses:
|
||||
'200':
|
||||
description: Per-table restore counts
|
||||
@@ -9930,7 +9863,7 @@ paths:
|
||||
example:
|
||||
ok: true
|
||||
source: agent-monitor-export-2026-06-26.json
|
||||
format: ccam-export
|
||||
format: agenthub-export
|
||||
sessions_imported: 42
|
||||
sessions_skipped: 3
|
||||
agents: 96
|
||||
|
||||
Reference in New Issue
Block a user