@growthub/cli 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +165 -0
- package/dist/index.js +12602 -0
- package/dist/index.js.map +7 -0
- package/package.json +45 -0
package/README.md
ADDED
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
# growthub-core — Agent Swarm Command Center
|
|
2
|
+
|
|
3
|
+
> Growthub is a full-featured DX platform for orchestrating AI agent swarms across sequential ticket pipelines.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Install
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npx create-growthub-local --profile dx
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
Later:
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
npx create-growthub-local --profile gtm
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## What this is
|
|
20
|
+
|
|
21
|
+
**growthub-core** is an opinionated, self-hosted developer experience platform that treats every unit of work as a **Ticket** — a sequential pipeline of stages (planning → execution → review → qa → human) — where each stage is owned by a specific AI agent. Designed for **parallel multi-ticket execution** with real-time agent status, live heartbeat tracking, and full pipeline control from a single command center dashboard.
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## Architecture
|
|
26
|
+
|
|
27
|
+
```
|
|
28
|
+
┌──────────────────────────────────────────────────────────┐
|
|
29
|
+
│ growthub-core │
|
|
30
|
+
│ │
|
|
31
|
+
│ ┌───────────────────────────────────────────────────┐ │
|
|
32
|
+
│ │ Ticket Command Center (Dashboard) │ │
|
|
33
|
+
│ │ Kanban │ List │ Roadmap (Week / Month) │ │
|
|
34
|
+
│ └───────────────────────────────────────────────────┘ │
|
|
35
|
+
│ │ │
|
|
36
|
+
│ ┌──────────┴─────────┐ │
|
|
37
|
+
│ │ Ticket TKT-N │ │
|
|
38
|
+
│ │ stageOrder[] │ │
|
|
39
|
+
│ │ currentStage │ │
|
|
40
|
+
│ └──────────┬─────────┘ │
|
|
41
|
+
│ │ │
|
|
42
|
+
│ ┌──────────────────┼──────────────────┐ │
|
|
43
|
+
│ │ │ │ │
|
|
44
|
+
│ Planning Execution Review / QA │
|
|
45
|
+
│ Agent Codex / Claude / │
|
|
46
|
+
│ (pm role) Claude Code Codex │
|
|
47
|
+
│ │ │
|
|
48
|
+
│ Issues (GRO-NNN) per stage │
|
|
49
|
+
│ assigned to specific agents │
|
|
50
|
+
│ │
|
|
51
|
+
│ ┌───────────────────────────────────────────────────┐ │
|
|
52
|
+
│ │ Embedded PostgreSQL (port 54329) │ │
|
|
53
|
+
│ │ Drizzle ORM — auto-migration on startup │ │
|
|
54
|
+
│ │ TanStack Query + queryKeys registry │ │
|
|
55
|
+
│ │ Vite dev middleware + tsx watch hot-reload │ │
|
|
56
|
+
│ └───────────────────────────────────────────────────┘ │
|
|
57
|
+
└──────────────────────────────────────────────────────────┘
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### Stack
|
|
61
|
+
|
|
62
|
+
| Layer | Technology |
|
|
63
|
+
|---|---|
|
|
64
|
+
| Server | Node.js + Fastify, TypeScript, `tsx` watch |
|
|
65
|
+
| Database | Embedded PostgreSQL via `embedded-postgres` (port 54329) |
|
|
66
|
+
| ORM | Drizzle ORM — SQL migrations in `packages/db/src/migrations/` |
|
|
67
|
+
| UI | React 18, Vite, TailwindCSS, shadcn/ui |
|
|
68
|
+
| Data fetching | TanStack Query v5 — single `queryKeys.ts` registry |
|
|
69
|
+
| Agents | Claude Code (local), Codex (local), HTTP adapter |
|
|
70
|
+
| Auth | Local trusted mode (no auth wall in dev) |
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## Ticket Pipeline
|
|
75
|
+
|
|
76
|
+
Tickets are the primary organizing unit. Each ticket has a fully user-configurable `stageOrder` array:
|
|
77
|
+
|
|
78
|
+
```
|
|
79
|
+
planning → execution → review → qa → human
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
- Stage **colors** are assigned by index position in `stageOrder` — never keyed by name
|
|
83
|
+
- **Issues** (tasks) are spawned per stage and assigned to specific agents
|
|
84
|
+
- Pipeline is **sequential** — only the active stage has live work; future stages are "up next"
|
|
85
|
+
- **Advancing** moves `currentStage` forward; completed stages remain as history
|
|
86
|
+
- Stage names, colors, and order are **fully editable inline** from the ticket detail page
|
|
87
|
+
|
|
88
|
+
| Status | Meaning |
|
|
89
|
+
|---|---|
|
|
90
|
+
| `active` | Work in progress |
|
|
91
|
+
| `paused` | Manually paused |
|
|
92
|
+
| `done` | All stages completed |
|
|
93
|
+
| `cancelled` | Abandoned |
|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
## Canonical Agents
|
|
98
|
+
|
|
99
|
+
| Agent | Role | Adapter | Purpose |
|
|
100
|
+
|---|---|---|---|
|
|
101
|
+
| **Planning Agent** | `pm` | `claude_local` | Breaks tickets into issues, writes specs |
|
|
102
|
+
| **Execution — Codex** | `general` | `codex_local` | Implements features from issues |
|
|
103
|
+
| **Execution — Claude Code** | `general` | `claude_local` | Implements features, debugging |
|
|
104
|
+
| **Review — Claude** | `qa` | `claude_local` | Code review, correctness checks |
|
|
105
|
+
| **QA/Debugger — Codex** | `qa` | `codex_local` | Test runs, regression debugging |
|
|
106
|
+
|
|
107
|
+
All agents have `canCreateAgents: true` and `canAssignTasks: true` for sub-agent spawning.
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
## Running locally
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
pnpm install
|
|
115
|
+
npm run dev
|
|
116
|
+
# Server + UI: http://localhost:3100
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
**No manual migrations.** Auto-migrates on every startup. To add a migration: create a `.sql` file in `packages/db/src/migrations/` and update `_journal.json` — never run `drizzle-kit push`.
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
## Key directories
|
|
124
|
+
|
|
125
|
+
```
|
|
126
|
+
packages/
|
|
127
|
+
db/src/
|
|
128
|
+
schema/ Drizzle table definitions
|
|
129
|
+
migrations/ SQL files (hand-written, never generated)
|
|
130
|
+
shared/src/
|
|
131
|
+
types/ TypeScript types (Ticket, Issue, Agent, ...)
|
|
132
|
+
validators/ Zod schemas
|
|
133
|
+
constants.ts TICKET_STAGES, TICKET_STATUSES, ...
|
|
134
|
+
|
|
135
|
+
server/src/
|
|
136
|
+
routes/ Fastify route handlers
|
|
137
|
+
services/ Business logic
|
|
138
|
+
app.ts Route registration
|
|
139
|
+
|
|
140
|
+
ui/src/
|
|
141
|
+
pages/ React pages (Dashboard, TicketDetail, Tickets, Archive, ...)
|
|
142
|
+
components/ Shared UI (NewTicketModal, Sidebar, ...)
|
|
143
|
+
api/ API client (tickets.ts, issues.ts, agents.ts, ...)
|
|
144
|
+
lib/
|
|
145
|
+
queryKeys.ts Single source of truth for all query keys
|
|
146
|
+
company-routes.ts Route prefix logic
|
|
147
|
+
|
|
148
|
+
agents/ Agent config markdown files
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
---
|
|
152
|
+
|
|
153
|
+
## Archive
|
|
154
|
+
|
|
155
|
+
Issues support soft-delete via `hiddenAt`. `/archive` page supports bulk archive and restore.
|
|
156
|
+
|
|
157
|
+
## GitHub PR binding
|
|
158
|
+
|
|
159
|
+
New Ticket modal fetches open PRs from your GitHub repos and binds them to tickets. PR context is stored in `ticket.metadata.pr` and surfaced to agents as part of ticket instructions.
|
|
160
|
+
|
|
161
|
+
---
|
|
162
|
+
|
|
163
|
+
## Contributing
|
|
164
|
+
|
|
165
|
+
See [CONTRIBUTING.md](./CONTRIBUTING.md).
|