compound-agent 1.7.4 → 1.7.6
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/CHANGELOG.md +35 -0
- package/README.md +173 -60
- package/dist/cli.js +105 -49
- package/dist/cli.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,41 @@ All notable changes to this project will be documented in this file.
|
|
|
7
7
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
8
8
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
9
9
|
|
|
10
|
+
## [1.7.6] - 2026-03-12
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- **`ca install-beads` command**: Standalone subcommand to install the beads CLI via the official script. Includes a platform guard (skips on Windows with `exitCode 1`), an "already installed" short-circuit, a `--yes` flag to bypass the confirmation hint (safe: never runs `curl | bash` without explicit opt-in), `spawnSync` with a 60-second timeout, and a post-install shell-reload warning. Non-TTY mode without `--yes` prints the install command as a copy-pasteable hint rather than silently doing nothing.
|
|
15
|
+
|
|
16
|
+
### Fixed
|
|
17
|
+
|
|
18
|
+
- **Beads hint display**: `printBeadsFullStatus` was silently swallowing the install hint message when the beads CLI was not found. The curl install command is now printed below the "not found" line.
|
|
19
|
+
- **Beads hint text**: `checkBeadsAvailable` now returns the actual `curl -sSL ... | bash` install command in its message instead of a bare repo URL.
|
|
20
|
+
- **Doctor fix message**: `ca doctor` now shows `Run: ca install-beads` for the missing-beads check instead of pointing to a URL.
|
|
21
|
+
- **`ca knowledge` description**: Reframed from "Ask the project docs any question" to "Semantic search over project docs — use keyword phrases, not questions" in both the live prime template and the setup template, reflecting the underlying embedding RAG retrieval mechanism.
|
|
22
|
+
|
|
23
|
+
## [1.7.5] - 2026-03-12
|
|
24
|
+
|
|
25
|
+
### Added
|
|
26
|
+
|
|
27
|
+
- **`ca feedback` command**: Surfaces the GitHub Discussions URL for bug reports and feature requests. `ca feedback --open` opens the page directly in the browser. Cross-platform (macOS `open`, Windows `start`, Linux `xdg-open`).
|
|
28
|
+
- **Star and feedback prompt in `ca about`**: TTY sessions now see a star-us link and the GitHub Discussions URL after the changelog output.
|
|
29
|
+
|
|
30
|
+
### Changed
|
|
31
|
+
|
|
32
|
+
- **README overhaul**: Complete rewrite to present compound-agent as a full agentic development environment rather than a memory plugin.
|
|
33
|
+
- New thesis-driven one-liner that names category, mechanism, and benefit
|
|
34
|
+
- "What gets installed" inventory table (15 commands, 24 agent role skills, 7 hooks, 5 phase skills, 5 docs)
|
|
35
|
+
- Three principles section mapping each architecture layer to the problem it solves (Memory / Feedback Loops / Navigable Structure)
|
|
36
|
+
- "Agents are interchangeable" design principle explained in the overview
|
|
37
|
+
- Levels of use replacing flat Quick Start: memory-only, structured workflow, and factory mode with code examples
|
|
38
|
+
- `/compound:architect` promoted to its own section with 4-phase description and context-window motivation
|
|
39
|
+
- Infinity loop elevated from CLI table row to its own section with full flag examples and honest maturity note
|
|
40
|
+
- Automatic hooks table with per-hook descriptions
|
|
41
|
+
- Architecture diagram updated to reflect three-principle mapping and accurate counts
|
|
42
|
+
- Compound loop diagram updated with architect as optional upstream entry point
|
|
43
|
+
- "Open with an AI agent" entry point in the Documentation section
|
|
44
|
+
|
|
10
45
|
## [1.7.4] - 2026-03-11
|
|
11
46
|
|
|
12
47
|
### Added
|
package/README.md
CHANGED
|
@@ -1,51 +1,79 @@
|
|
|
1
1
|
# Compound Agent
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
> compound-agent is a Claude Code plugin that ships a self-improving development factory into your repository — persistent memory, structured multi-agent workflows, and autonomous loop execution. Fully local. Everything in git.
|
|
4
4
|
|
|
5
5
|
[](https://www.npmjs.com/package/compound-agent)
|
|
6
6
|
[](LICENSE)
|
|
7
7
|
[](https://www.typescriptlang.org/)
|
|
8
8
|
|
|
9
|
-
-
|
|
10
|
-
- **Knowledge** -- hybrid vector search over your project docs
|
|
11
|
-
- **Structure** -- 5-phase workflows with 35+ specialized agents
|
|
12
|
-
- **Accountability** -- git-tracked issues, multi-agent reviews, quality gates
|
|
9
|
+
AI coding agents forget everything between sessions. Each session starts with whatever context was prepared for it — nothing more. Because agents carry no persistent state, that state must live in the codebase itself, and any agent that reads the same well-structured context should be able to pick up where another left off. Compound Agent implements this: it captures mistakes once, retrieves them precisely when relevant, and can hand entire systems to an autonomous loop that processes epic by epic with no human intervention.
|
|
13
10
|
|
|
14
|
-
|
|
11
|
+
## What gets installed
|
|
15
12
|
|
|
16
|
-
|
|
13
|
+
`npx ca setup` injects a complete development environment into your repository:
|
|
17
14
|
|
|
18
|
-
|
|
15
|
+
| Component | What ships |
|
|
16
|
+
|-----------|-----------|
|
|
17
|
+
| 15 slash commands | `/compound:architect`, `cook-it`, `spec-dev`, `plan`, `work`, `review`, `compound`, `learn-that`, `check-that`, and more |
|
|
18
|
+
| 24 agent role skills | Security reviewers, TDD pair, decomposition convoy, spec writers, test analysers, drift detectors, and more |
|
|
19
|
+
| 7 automatic hooks | Fire on session start, prompt submit, tool use, tool failure, pre-compact, phase guard, and session stop |
|
|
20
|
+
| 5 phase skill files | Full workflow instructions for `architect`, `spec-dev`, `cook-it`, `work`, and `review` |
|
|
21
|
+
| 5 deployed docs | Workflow reference, CLI reference, skills guide, integration guide, and overview |
|
|
22
|
+
|
|
23
|
+
This is not a memory plugin bolted onto a text editor. It is the environment your agents run inside.
|
|
24
|
+
|
|
25
|
+
## How it works
|
|
19
26
|
|
|
20
27
|
```mermaid
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
+
flowchart TD
|
|
29
|
+
A["/compound:architect\nDecompose large system\ninto epics via DDD"] -->|produces epics| L
|
|
30
|
+
|
|
31
|
+
subgraph L["Compound Loop — one cycle per epic"]
|
|
32
|
+
direction LR
|
|
33
|
+
S[SPEC-DEV] --> P[PLAN]
|
|
34
|
+
P --> W[WORK]
|
|
35
|
+
W --> R[REVIEW]
|
|
36
|
+
R --> C[COMPOUND]
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
C -->|writes lessons| M[(MEMORY\nJSONL + SQLite\n+ embeddings)]
|
|
40
|
+
M -->|injects context| P
|
|
28
41
|
|
|
29
42
|
style M fill:#f9f,stroke:#333
|
|
43
|
+
style A fill:#e8f4fd,stroke:#4a9ede
|
|
30
44
|
```
|
|
31
45
|
|
|
46
|
+
Each cycle through the loop makes the next one smarter. The architect step is optional — use it for systems too large for a single feature cycle.
|
|
47
|
+
|
|
32
48
|
```mermaid
|
|
33
49
|
block-beta
|
|
34
50
|
columns 1
|
|
35
|
-
block:L3["Workflows"]
|
|
36
|
-
A["
|
|
51
|
+
block:L3["Workflows · Feedback Loops"]
|
|
52
|
+
A["15 slash commands"] B["24 specialized agents"] C["Autonomous loop"]
|
|
37
53
|
end
|
|
38
|
-
block:L2["Semantic Memory"]
|
|
39
|
-
D["Vector search"] E["Hybrid retrieval"] F["Cross-
|
|
54
|
+
block:L2["Semantic Memory · Codebase Memory"]
|
|
55
|
+
D["Vector search"] E["Hybrid retrieval"] F["Cross-session persistence"]
|
|
40
56
|
end
|
|
41
|
-
block:L1["Foundation"]
|
|
42
|
-
G["Issue tracking"] H["Git-backed sync"] I["
|
|
57
|
+
block:L1["Beads Foundation · Navigable Structure"]
|
|
58
|
+
G["Issue tracking"] H["Git-backed sync"] I["Dependency graphs"]
|
|
43
59
|
end
|
|
44
60
|
|
|
45
61
|
L3 --> L2
|
|
46
62
|
L2 --> L1
|
|
47
63
|
```
|
|
48
64
|
|
|
65
|
+
## Three principles
|
|
66
|
+
|
|
67
|
+
These constraints follow from how AI agents work, and each one maps to a layer of the architecture.
|
|
68
|
+
|
|
69
|
+
| Principle | Without it | Layer |
|
|
70
|
+
|-----------|-----------|-------|
|
|
71
|
+
| **Memory** | Same mistakes every session. Architectural decisions re-derived from scratch. Knowledge locked in human heads where agents cannot reach it. | Semantic Memory |
|
|
72
|
+
| **Feedback loops** | Agents cannot verify their own work. Manual review is the only quality gate. Drift is the default at agent-scale output. | Structured Workflows |
|
|
73
|
+
| **Navigable structure** | Context windows fill with orientation work. Agents make unverifiable assumptions about dependencies and ordering. | Beads Foundation |
|
|
74
|
+
|
|
75
|
+
The three are not independent. Memory without feedback loops is unreliable. Feedback without navigable structure fires blindly. The system works as a whole or not at all.
|
|
76
|
+
|
|
49
77
|
## Is this for you?
|
|
50
78
|
|
|
51
79
|
**"It keeps making the same mistake every session."**
|
|
@@ -54,20 +82,130 @@ Capture it once. Compound Agent surfaces it automatically before the agent repea
|
|
|
54
82
|
**"I explained our auth pattern three sessions ago. Now it's reimplementing from scratch."**
|
|
55
83
|
Architectural decisions persist as searchable lessons. Next session, they inject into context before planning starts.
|
|
56
84
|
|
|
57
|
-
**"My agent uses pandas when we
|
|
85
|
+
**"My agent uses pandas when we standardised on Polars months ago."**
|
|
58
86
|
Preferences survive across sessions and projects. Once captured, they appear at the right moment.
|
|
59
87
|
|
|
60
88
|
**"Code reviews keep catching the same class of bugs."**
|
|
61
|
-
|
|
89
|
+
24 specialised review agents (security, performance, architecture, test coverage) run in parallel. Findings feed back as lessons that become test requirements in future work.
|
|
62
90
|
|
|
63
91
|
**"I have no idea what my agent actually learned or if it's reliable."**
|
|
64
|
-
`ca list` shows all captured knowledge. `ca stats` shows health. `ca wrong <id>` invalidates bad lessons. Everything is git-tracked JSONL
|
|
92
|
+
`ca list` shows all captured knowledge. `ca stats` shows health. `ca wrong <id>` invalidates bad lessons. Everything is git-tracked JSONL — you can read, diff, and audit it.
|
|
65
93
|
|
|
66
94
|
**"I want structured phases, not just 'go build this'."**
|
|
67
95
|
Five workflow phases (spec-dev, plan, work, review, compound) with mandatory gates between them. Each phase searches memory and docs for relevant context before starting.
|
|
68
96
|
|
|
69
97
|
**"My agent doesn't read the project docs before making decisions."**
|
|
70
|
-
`ca knowledge "auth flow"` runs hybrid search (vector + keyword) over your indexed docs. Agents query it automatically during planning
|
|
98
|
+
`ca knowledge "auth flow"` runs hybrid search (vector + keyword) over your indexed docs. Agents query it automatically during planning — ADRs, specs, and standards surface before code gets written.
|
|
99
|
+
|
|
100
|
+
**"I want to hand a large system spec to the machine and walk away."**
|
|
101
|
+
`/compound:architect` decomposes it into epics. `ca loop` processes them autonomously.
|
|
102
|
+
|
|
103
|
+
## Levels of use
|
|
104
|
+
|
|
105
|
+
### Level 1 — Memory only
|
|
106
|
+
|
|
107
|
+
Two minutes to set up. Works in any session without changing your existing workflow.
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
# Capture a mistake or preference
|
|
111
|
+
ca learn "Always use Polars, not pandas in this project" --severity high
|
|
112
|
+
ca learn "Auth 401 fix: add X-Request-ID header" --type solution
|
|
113
|
+
|
|
114
|
+
# Search manually anytime
|
|
115
|
+
ca search "polars"
|
|
116
|
+
|
|
117
|
+
# Or let hooks surface it automatically — no command needed
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
### Level 2 — Structured workflow
|
|
121
|
+
|
|
122
|
+
One command runs all five phases on a single feature: spec-dev, plan, work (TDD + agent team), review (24 agents), and compound (capture lessons).
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
/compound:cook-it "Add rate limiting to the API"
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
Run phases individually when you want more control:
|
|
129
|
+
|
|
130
|
+
```bash
|
|
131
|
+
/compound:spec-dev "Add rate limiting" # Socratic dialogue → EARS spec → Mermaid diagrams
|
|
132
|
+
/compound:plan # Tasks enriched by memory search
|
|
133
|
+
/compound:work # TDD with agent team
|
|
134
|
+
/compound:review # 24 parallel agents with severity gates
|
|
135
|
+
/compound:compound # Capture what was learned
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
### Level 3 — Factory mode
|
|
139
|
+
|
|
140
|
+
For systems too large for a single feature cycle. `/compound:architect` decomposes the system; `ca loop` processes the resulting epics autonomously.
|
|
141
|
+
|
|
142
|
+
```bash
|
|
143
|
+
# Step 1: decompose the system into epics
|
|
144
|
+
/compound:architect "Multi-tenant SaaS: auth, billing, API, admin dashboard"
|
|
145
|
+
# → Socratic dialogue → system-level EARS spec → DDD decomposition
|
|
146
|
+
# → N epics with dependency graph, interface contracts, and scope boundaries
|
|
147
|
+
|
|
148
|
+
# Step 2: generate and run the loop
|
|
149
|
+
ca loop --reviewers claude-sonnet --review-every 3
|
|
150
|
+
./infinity-loop.sh
|
|
151
|
+
# → Processes each epic in dependency order: spec-dev → plan → work → review → compound
|
|
152
|
+
# → Captures lessons after every cycle, improving subsequent cycles
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
## The infinity loop
|
|
156
|
+
|
|
157
|
+
`ca loop` generates a bash script that processes your beads epics sequentially, running the full cook-it cycle on each one. No human intervention required between epics.
|
|
158
|
+
|
|
159
|
+
```bash
|
|
160
|
+
# Generate script for all ready epics
|
|
161
|
+
ca loop
|
|
162
|
+
|
|
163
|
+
# With periodic review every 3 epics
|
|
164
|
+
ca loop --reviewers claude-sonnet --review-every 3
|
|
165
|
+
|
|
166
|
+
# Target specific epics
|
|
167
|
+
ca loop --epics beads-abc beads-def beads-ghi --max-retries 2
|
|
168
|
+
|
|
169
|
+
# Run it
|
|
170
|
+
./infinity-loop.sh
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
The loop respects beads dependency graphs — it only processes epics whose dependencies are complete. If an epic fails after `--max-retries` attempts, it stops and reports before proceeding.
|
|
174
|
+
|
|
175
|
+
**Current maturity**: the loop works and has been used to ship real projects, including compound-agent itself. Two things still required human involvement: specifications had to be written before the loop started, and a human applied fixes after the first review pass surfaced real problems (missing error handling, a migration gap, insufficient test coverage). Fully unattended long-duration runs across many epics are the current area of hardening.
|
|
176
|
+
|
|
177
|
+
## Automatic hooks
|
|
178
|
+
|
|
179
|
+
Once installed, seven Claude Code hooks fire without any commands:
|
|
180
|
+
|
|
181
|
+
| Hook | When it fires | What it does |
|
|
182
|
+
|------|--------------|--------------|
|
|
183
|
+
| `SessionStart` | Every new session | Loads high-severity lessons into context before you type anything |
|
|
184
|
+
| `PreCompact` | Before context compression | Saves phase state so cook-it survives compaction |
|
|
185
|
+
| `UserPromptSubmit` | Every prompt | Injects relevant memory items into context |
|
|
186
|
+
| `PreToolUse` | During cook-it | Enforces phase gates — prevents jumping ahead |
|
|
187
|
+
| `PostToolUse` | After tool success | Clears failure tracking state |
|
|
188
|
+
| `PostToolUseFailure` | After tool failure | Tracks failures; suggests memory search after repeated errors |
|
|
189
|
+
| `Stop` | Session end | Audits session for uncaptured lessons and unclosed issues |
|
|
190
|
+
|
|
191
|
+
No configuration needed. `npx ca setup` wires them into your `.claude/settings.json`.
|
|
192
|
+
|
|
193
|
+
## `/compound:architect`
|
|
194
|
+
|
|
195
|
+
AI agents work best on well-scoped problems. When a task exceeds what fits comfortably in one context window, quality degrades — not from lack of capability but from too many competing concerns pulling in different directions.
|
|
196
|
+
|
|
197
|
+
`/compound:architect` addresses this before the cook-it cycle begins. It takes a large system description and produces cook-it-ready epics via a structured 4-phase process:
|
|
198
|
+
|
|
199
|
+
1. **Socratic** — builds a domain glossary and discovery mindmap; classifies decisions by reversibility
|
|
200
|
+
2. **Spec** — produces system-level EARS requirements, C4 architecture diagrams, and a scenario table
|
|
201
|
+
3. **Decompose** — runs 6 parallel subagents (bounded context mapping, dependency analysis, scope sizing, interface design, STPA hazard analysis, structural-semantic gap analysis) then synthesises into a proposed epic structure
|
|
202
|
+
4. **Materialise** — creates beads epics with scope boundaries, interface contracts, and wired dependencies
|
|
203
|
+
|
|
204
|
+
Three human approval gates separate the phases. Each output epic is sized for one cook-it cycle and includes an EARS subset for traceability back to the system spec.
|
|
205
|
+
|
|
206
|
+
```bash
|
|
207
|
+
/compound:architect "Build a data pipeline: ingestion, transformation, storage, and API layer"
|
|
208
|
+
```
|
|
71
209
|
|
|
72
210
|
## Installation
|
|
73
211
|
|
|
@@ -104,36 +242,6 @@ If you prefer to configure manually, add to your `package.json`:
|
|
|
104
242
|
|
|
105
243
|
Then run `pnpm install`.
|
|
106
244
|
|
|
107
|
-
## Quick Start
|
|
108
|
-
|
|
109
|
-
The five-phase workflow:
|
|
110
|
-
|
|
111
|
-
```
|
|
112
|
-
1. /compound:spec-dev --> Develop precise specifications
|
|
113
|
-
2. /compound:plan --> Create tasks enriched by memory search
|
|
114
|
-
3. /compound:work --> Execute with agent teams + TDD
|
|
115
|
-
4. /compound:review --> Multi-agent review with inter-communication
|
|
116
|
-
5. /compound:compound --> Capture what was learned into memory
|
|
117
|
-
```
|
|
118
|
-
|
|
119
|
-
Or run all phases sequentially:
|
|
120
|
-
|
|
121
|
-
```
|
|
122
|
-
/compound:cook-it "Add auth to API"
|
|
123
|
-
```
|
|
124
|
-
|
|
125
|
-
Additional commands:
|
|
126
|
-
|
|
127
|
-
```
|
|
128
|
-
/compound:learn-that --> Capture a lesson from conversation context
|
|
129
|
-
/compound:check-that --> Search lessons and apply to current work
|
|
130
|
-
/compound:get-a-phd --> Deep research to build agent knowledge
|
|
131
|
-
/compound:agentic-audit --> Score codebase against agentic manifesto
|
|
132
|
-
/compound:agentic-setup --> Audit then set up agentic infrastructure
|
|
133
|
-
```
|
|
134
|
-
|
|
135
|
-
Each phase searches memory for relevant past knowledge and injects it into agent context. The compound phase captures new knowledge, closing the loop.
|
|
136
|
-
|
|
137
245
|
## CLI Reference
|
|
138
246
|
|
|
139
247
|
The CLI binary is `ca` (alias: `compound-agent`).
|
|
@@ -210,7 +318,7 @@ The CLI binary is `ca` (alias: `compound-agent`).
|
|
|
210
318
|
| `ca setup` | One-shot setup (hooks + git pre-commit + model) |
|
|
211
319
|
| `ca setup --skip-model` | Setup without model download |
|
|
212
320
|
| `ca setup --uninstall` | Remove all generated files |
|
|
213
|
-
| `ca setup --update` | Regenerate files (preserves user
|
|
321
|
+
| `ca setup --update` | Regenerate files (preserves user customisations) |
|
|
214
322
|
| `ca setup --status` | Show installation status |
|
|
215
323
|
| `ca setup --dry-run` | Show what would change without changing |
|
|
216
324
|
| `ca setup claude --status` | Check Claude Code integration health |
|
|
@@ -243,7 +351,7 @@ confirmation_boost: confirmed=1.3, unconfirmed=1.0
|
|
|
243
351
|
## FAQ
|
|
244
352
|
|
|
245
353
|
**Q: How is this different from mem0?**
|
|
246
|
-
A: mem0 is a cloud memory layer for general AI agents. Compound Agent is local-first with git-tracked storage and local embeddings
|
|
354
|
+
A: mem0 is a cloud memory layer for general AI agents. Compound Agent is local-first with git-tracked storage and local embeddings — no API keys or cloud services needed. It also goes beyond memory with structured workflows, multi-agent review, and issue tracking.
|
|
247
355
|
|
|
248
356
|
**Q: Does this work offline?**
|
|
249
357
|
A: Yes, completely. Embeddings run locally via node-llama-cpp. No network requests after the initial model download.
|
|
@@ -257,6 +365,9 @@ A: The CLI (`ca`) works standalone with any tool. Full hook integration is avail
|
|
|
257
365
|
**Q: What happens if the embedding model isn't available?**
|
|
258
366
|
A: Search gracefully falls back to keyword-only mode. Other commands that require embeddings will tell you what's missing. Run `npx ca doctor` to diagnose issues.
|
|
259
367
|
|
|
368
|
+
**Q: Is the loop production-ready?**
|
|
369
|
+
A: The loop works and has been used to ship real projects, including compound-agent itself. Long-duration autonomous runs across many epics are the current area of hardening. For 3–5 epic sequences, it is reliable today.
|
|
370
|
+
|
|
260
371
|
## Development
|
|
261
372
|
|
|
262
373
|
```bash
|
|
@@ -297,13 +408,15 @@ pnpm lint # Type check + ESLint
|
|
|
297
408
|
| [CHANGELOG.md](https://github.com/Nathandela/compound-agent/blob/main/CHANGELOG.md) | Version history |
|
|
298
409
|
| [AGENTS.md](https://github.com/Nathandela/compound-agent/blob/main/AGENTS.md) | Agent workflow instructions |
|
|
299
410
|
|
|
411
|
+
The most direct way to explore the system is to open this repository with an AI agent and ask it to walk you through the design — the project is structured precisely for that.
|
|
412
|
+
|
|
300
413
|
## Acknowledgments
|
|
301
414
|
|
|
302
415
|
Compound Agent builds on ideas and patterns from these projects:
|
|
303
416
|
|
|
304
417
|
| Project | Influence |
|
|
305
418
|
|---------|-----------|
|
|
306
|
-
| [Compound Engineering Plugin](https://github.com/EveryInc/compound-engineering-plugin) | The "compound" philosophy
|
|
419
|
+
| [Compound Engineering Plugin](https://github.com/EveryInc/compound-engineering-plugin) | The "compound" philosophy — each unit of work makes subsequent units easier. Multi-agent review workflows and skills as encoded knowledge. |
|
|
307
420
|
| [Beads](https://github.com/steveyegge/beads) | Git-backed JSONL + SQLite hybrid storage model, hash-based conflict-free IDs, dependency graphs |
|
|
308
421
|
| [OpenClaw](https://github.com/openclaw/openclaw) | Claude Code integration patterns and hook-based workflow architecture |
|
|
309
422
|
|
|
@@ -311,10 +424,10 @@ Also informed by research into [Reflexion](https://arxiv.org/abs/2303.11366) (ve
|
|
|
311
424
|
|
|
312
425
|
## Contributing
|
|
313
426
|
|
|
314
|
-
Bug reports and feature requests are welcome via [Issues](https://github.com/Nathandela/compound-agent/issues). Pull requests are not accepted at this time
|
|
427
|
+
Bug reports and feature requests are welcome via [Issues](https://github.com/Nathandela/compound-agent/issues). Pull requests are not accepted at this time — see [CONTRIBUTING.md](CONTRIBUTING.md) for details.
|
|
315
428
|
|
|
316
429
|
## License
|
|
317
430
|
|
|
318
|
-
MIT
|
|
431
|
+
MIT — see [LICENSE](LICENSE) for details.
|
|
319
432
|
|
|
320
433
|
> The embedding model (EmbeddingGemma-300M) is downloaded on-demand and subject to Google's [Gemma Terms of Use](https://ai.google.dev/gemma/terms). See [THIRD-PARTY-LICENSES.md](THIRD-PARTY-LICENSES.md) for full dependency license information.
|
package/dist/cli.js
CHANGED
|
@@ -8,7 +8,7 @@ import { z } from 'zod';
|
|
|
8
8
|
import * as fs from 'fs/promises';
|
|
9
9
|
import { readFile, mkdir, appendFile, writeFile, chmod, rm, rename, readdir } from 'fs/promises';
|
|
10
10
|
import { createRequire } from 'module';
|
|
11
|
-
import { execSync, execFileSync, spawn } from 'child_process';
|
|
11
|
+
import { execSync, spawnSync, execFileSync, spawn } from 'child_process';
|
|
12
12
|
import { fileURLToPath } from 'url';
|
|
13
13
|
import { Command } from 'commander';
|
|
14
14
|
import chalk5 from 'chalk';
|
|
@@ -3132,7 +3132,7 @@ function checkBeadsAvailable() {
|
|
|
3132
3132
|
} catch {
|
|
3133
3133
|
return {
|
|
3134
3134
|
available: false,
|
|
3135
|
-
message: "Beads CLI not found. Recommended for full workflow (issue tracking, deps, TDD pipeline)
|
|
3135
|
+
message: "Beads CLI not found. Recommended for full workflow (issue tracking, deps, TDD pipeline).\nInstall: curl -sSL https://raw.githubusercontent.com/steveyegge/beads/main/scripts/install.sh | bash\nOr run: ca install-beads"
|
|
3136
3136
|
};
|
|
3137
3137
|
}
|
|
3138
3138
|
}
|
|
@@ -3313,7 +3313,7 @@ This project uses compound-agent for session memory via **CLI commands**.
|
|
|
3313
3313
|
| Command | Purpose |
|
|
3314
3314
|
|---------|---------|
|
|
3315
3315
|
| \`npx ca search "query"\` | Search lessons - MUST call before architectural decisions; use anytime you need context |
|
|
3316
|
-
| \`npx ca knowledge "query"\` |
|
|
3316
|
+
| \`npx ca knowledge "query"\` | Semantic search over project docs - MUST call before architectural decisions; use keyword phrases, not questions |
|
|
3317
3317
|
| \`npx ca learn "insight"\` | Capture lessons - use AFTER corrections or discoveries |
|
|
3318
3318
|
| \`npx ca list\` | List all stored lessons |
|
|
3319
3319
|
| \`npx ca show <id>\` | Show details of a specific lesson |
|
|
@@ -3680,6 +3680,8 @@ function printBeadsFullStatus(check) {
|
|
|
3680
3680
|
if (check.initialized) {
|
|
3681
3681
|
console.log(` Beads health: ${check.healthy ? "OK" : `issues found${check.healthMessage ? ` \u2014 ${check.healthMessage}` : ""}`}`);
|
|
3682
3682
|
}
|
|
3683
|
+
} else if (check.healthMessage) {
|
|
3684
|
+
console.log(` ${check.healthMessage}`);
|
|
3683
3685
|
}
|
|
3684
3686
|
}
|
|
3685
3687
|
function printScopeStatus(scope) {
|
|
@@ -9651,7 +9653,7 @@ async function runDoctor(repoRoot) {
|
|
|
9651
9653
|
checks.push(pnpmCheck);
|
|
9652
9654
|
}
|
|
9653
9655
|
const beadsResult = checkBeadsAvailable();
|
|
9654
|
-
checks.push(beadsResult.available ? { name: "Beads CLI", status: "pass" } : { name: "Beads CLI", status: "warn", fix: "
|
|
9656
|
+
checks.push(beadsResult.available ? { name: "Beads CLI", status: "pass" } : { name: "Beads CLI", status: "warn", fix: "Run: ca install-beads" });
|
|
9655
9657
|
checks.push(checkGitignoreHealth(repoRoot) ? { name: ".gitignore health", status: "pass" } : { name: ".gitignore health", status: "warn", fix: "Run: npx ca setup --update" });
|
|
9656
9658
|
const docPath = join(repoRoot, "docs", "compound", "README.md");
|
|
9657
9659
|
checks.push(existsSync(docPath) ? { name: "Usage documentation", status: "pass" } : { name: "Usage documentation", status: "warn", fix: "Run: npx ca setup" });
|
|
@@ -10067,7 +10069,7 @@ var TRUST_LANGUAGE_TEMPLATE = `# Compound Agent Active
|
|
|
10067
10069
|
| Command | Purpose |
|
|
10068
10070
|
|---------|---------|
|
|
10069
10071
|
| \`npx ca search "query"\` | Search lessons - MUST call before architectural decisions; use anytime you need context |
|
|
10070
|
-
| \`npx ca knowledge "query"\` |
|
|
10072
|
+
| \`npx ca knowledge "query"\` | Semantic search over project docs - MUST call before architectural decisions; use keyword phrases, not questions |
|
|
10071
10073
|
| \`npx ca learn "insight"\` | Capture lessons - call AFTER corrections or discoveries |
|
|
10072
10074
|
|
|
10073
10075
|
## Core Constraints
|
|
@@ -10905,70 +10907,63 @@ function registerVerifyGatesCommand(program) {
|
|
|
10905
10907
|
}
|
|
10906
10908
|
|
|
10907
10909
|
// src/changelog-data.ts
|
|
10908
|
-
var CHANGELOG_RECENT = `## [1.7.
|
|
10910
|
+
var CHANGELOG_RECENT = `## [1.7.6] - 2026-03-12
|
|
10909
10911
|
|
|
10910
10912
|
### Added
|
|
10911
10913
|
|
|
10912
|
-
-
|
|
10913
|
-
- **Architect**: reversibility analysis (Baldwin & Clark), change volatility, 6-subagent convoy (added STPA control structure analyst + structural-semantic gap analyst), implicit interface contracts (threading, backpressure, delivery guarantees), organizational alignment (Team Topologies), multi-criteria validation gate (structural/semantic/organizational/economic), assumption capture with fitness functions and re-decomposition triggers
|
|
10914
|
-
- **Spec-dev**: Cynefin classification (Clear/Complicated/Complex), composition EARS templates (timeout/retry interactions), change volatility assessment
|
|
10915
|
-
- **Plan**: boundary stability check, Last Responsible Moment identification, change coupling prevention
|
|
10916
|
-
- **Work**: Fowler technical debt quadrant (only Prudent/Deliberate accepted), composition boundary verification with metastable failure checks
|
|
10917
|
-
- **Review**: composition-specific reviewers (boundary-reviewer, control-structure-reviewer, observability-reviewer), architect assumption validation
|
|
10918
|
-
- **Compound**: decomposition quality assessment, assumption tracking (predicted vs actual), emergence root cause classification (Garlan/STPA/phase transition)
|
|
10919
|
-
- **Lint graduation in compound phase**: The compound phase (step 10) now spawns a \`lint-classifier\` subagent that classifies each captured insight as LINTABLE, PARTIAL, or NOT_LINTABLE. High-confidence lintable insights are promoted to beads tasks under a "Linting Improvement" epic with self-contained rule specifications. Two rule classes: Class A (native \`rules.json\` \u2014 regex/glob) and Class B (external linter \u2014 AST analysis).
|
|
10920
|
-
- **Linter detection module** (\`src/lint/\`): Scans repos for ESLint (flat + legacy configs including TypeScript variants), Ruff (including \`pyproject.toml\`), Clippy, golangci-lint, ast-grep, and Semgrep. Exported from the package as \`detectLinter()\`, \`LinterInfoSchema\`, \`LinterNameSchema\`.
|
|
10921
|
-
- **Lint-classifier agent template**: Ships via \`npx ca init\` to \`.claude/agents/compound/lint-classifier.md\`. Includes 7 few-shot examples, Class A/B routing, and linter-aware task creation.
|
|
10914
|
+
- **\`ca install-beads\` command**: Standalone subcommand to install the beads CLI via the official script. Includes a platform guard (skips on Windows with \`exitCode 1\`), an "already installed" short-circuit, a \`--yes\` flag to bypass the confirmation hint (safe: never runs \`curl | bash\` without explicit opt-in), \`spawnSync\` with a 60-second timeout, and a post-install shell-reload warning. Non-TTY mode without \`--yes\` prints the install command as a copy-pasteable hint rather than silently doing nothing.
|
|
10922
10915
|
|
|
10923
10916
|
### Fixed
|
|
10924
10917
|
|
|
10925
|
-
- **
|
|
10918
|
+
- **Beads hint display**: \`printBeadsFullStatus\` was silently swallowing the install hint message when the beads CLI was not found. The curl install command is now printed below the "not found" line.
|
|
10919
|
+
- **Beads hint text**: \`checkBeadsAvailable\` now returns the actual \`curl -sSL ... | bash\` install command in its message instead of a bare repo URL.
|
|
10920
|
+
- **Doctor fix message**: \`ca doctor\` now shows \`Run: ca install-beads\` for the missing-beads check instead of pointing to a URL.
|
|
10921
|
+
- **\`ca knowledge\` description**: Reframed from "Ask the project docs any question" to "Semantic search over project docs \u2014 use keyword phrases, not questions" in both the live prime template and the setup template, reflecting the underlying embedding RAG retrieval mechanism.
|
|
10926
10922
|
|
|
10927
|
-
## [1.7.
|
|
10923
|
+
## [1.7.5] - 2026-03-12
|
|
10928
10924
|
|
|
10929
10925
|
### Added
|
|
10930
10926
|
|
|
10931
|
-
-
|
|
10927
|
+
- **\`ca feedback\` command**: Surfaces the GitHub Discussions URL for bug reports and feature requests. \`ca feedback --open\` opens the page directly in the browser. Cross-platform (macOS \`open\`, Windows \`start\`, Linux \`xdg-open\`).
|
|
10928
|
+
- **Star and feedback prompt in \`ca about\`**: TTY sessions now see a star-us link and the GitHub Discussions URL after the changelog output.
|
|
10932
10929
|
|
|
10933
|
-
###
|
|
10934
|
-
|
|
10935
|
-
- **Spec-dev epic type**: \`bd create\` in spec-dev Phase 4 now explicitly uses \`--type=epic\`, preventing epics from defaulting to task type. Plan phase also validates the epic type and corrects it if needed.
|
|
10936
|
-
- **Update-check hardening**: Added explicit \`res.ok\` check in \`fetchLatestVersion\`, removed dead \`checkedAt\` cache field, removed redundant type cast.
|
|
10930
|
+
### Changed
|
|
10937
10931
|
|
|
10938
|
-
|
|
10932
|
+
- **README overhaul**: Complete rewrite to present compound-agent as a full agentic development environment rather than a memory plugin.
|
|
10933
|
+
- New thesis-driven one-liner that names category, mechanism, and benefit
|
|
10934
|
+
- "What gets installed" inventory table (15 commands, 24 agent role skills, 7 hooks, 5 phase skills, 5 docs)
|
|
10935
|
+
- Three principles section mapping each architecture layer to the problem it solves (Memory / Feedback Loops / Navigable Structure)
|
|
10936
|
+
- "Agents are interchangeable" design principle explained in the overview
|
|
10937
|
+
- Levels of use replacing flat Quick Start: memory-only, structured workflow, and factory mode with code examples
|
|
10938
|
+
- \`/compound:architect\` promoted to its own section with 4-phase description and context-window motivation
|
|
10939
|
+
- Infinity loop elevated from CLI table row to its own section with full flag examples and honest maturity note
|
|
10940
|
+
- Automatic hooks table with per-hook descriptions
|
|
10941
|
+
- Architecture diagram updated to reflect three-principle mapping and accurate counts
|
|
10942
|
+
- Compound loop diagram updated with architect as optional upstream entry point
|
|
10943
|
+
- "Open with an AI agent" entry point in the Documentation section
|
|
10944
|
+
|
|
10945
|
+
## [1.7.4] - 2026-03-11
|
|
10939
10946
|
|
|
10940
10947
|
### Added
|
|
10941
10948
|
|
|
10942
|
-
- **
|
|
10949
|
+
- **Research-enriched phase skills**: Applied insights from 3 PhD-level research documents (Science of Decomposition, Architecture Under Uncertainty, Emergent Behavior in Composed Systems) across all 6 core phase skills:
|
|
10950
|
+
- **Architect**: reversibility analysis (Baldwin & Clark), change volatility, 6-subagent convoy (added STPA control structure analyst + structural-semantic gap analyst), implicit interface contracts (threading, backpressure, delivery guarantees), organizational alignment (Team Topologies), multi-criteria validation gate (structural/semantic/organizational/economic), assumption capture with fitness functions and re-decomposition triggers
|
|
10951
|
+
- **Spec-dev**: Cynefin classification (Clear/Complicated/Complex), composition EARS templates (timeout/retry interactions), change volatility assessment
|
|
10952
|
+
- **Plan**: boundary stability check, Last Responsible Moment identification, change coupling prevention
|
|
10953
|
+
- **Work**: Fowler technical debt quadrant (only Prudent/Deliberate accepted), composition boundary verification with metastable failure checks
|
|
10954
|
+
- **Review**: composition-specific reviewers (boundary-reviewer, control-structure-reviewer, observability-reviewer), architect assumption validation
|
|
10955
|
+
- **Compound**: decomposition quality assessment, assumption tracking (predicted vs actual), emergence root cause classification (Garlan/STPA/phase transition)
|
|
10956
|
+
- **Lint graduation in compound phase**: The compound phase (step 10) now spawns a \`lint-classifier\` subagent that classifies each captured insight as LINTABLE, PARTIAL, or NOT_LINTABLE. High-confidence lintable insights are promoted to beads tasks under a "Linting Improvement" epic with self-contained rule specifications. Two rule classes: Class A (native \`rules.json\` \u2014 regex/glob) and Class B (external linter \u2014 AST analysis).
|
|
10957
|
+
- **Linter detection module** (\`src/lint/\`): Scans repos for ESLint (flat + legacy configs including TypeScript variants), Ruff (including \`pyproject.toml\`), Clippy, golangci-lint, ast-grep, and Semgrep. Exported from the package as \`detectLinter()\`, \`LinterInfoSchema\`, \`LinterNameSchema\`.
|
|
10958
|
+
- **Lint-classifier agent template**: Ships via \`npx ca init\` to \`.claude/agents/compound/lint-classifier.md\`. Includes 7 few-shot examples, Class A/B routing, and linter-aware task creation.
|
|
10943
10959
|
|
|
10944
10960
|
### Fixed
|
|
10945
10961
|
|
|
10946
|
-
- **
|
|
10947
|
-
- **Security: shell injection in \`ca doctor\`**: Replaced \`execSync(cmd, {shell})\` with \`execFileSync('bd', ['doctor'])\` to avoid shell interpretation.
|
|
10948
|
-
- **Portable timeout for macOS**: Generated loop scripts now use a \`portable_timeout()\` wrapper that tries GNU \`timeout\`, then \`gtimeout\` (Homebrew coreutils), then a shell-based kill/watchdog fallback. Previously failed silently on macOS.
|
|
10949
|
-
- **Session ID python3 fallback**: Review phase session ID management now falls back to python3 when \`jq\` is unavailable, with a centralized \`read_session_id()\` helper.
|
|
10950
|
-
- **Git diff window stability**: Replaced fragile \`HEAD~$N..HEAD\` commit-count arithmetic with SHA-based \`$REVIEW_BASE_SHA..HEAD\` diff ranges, immune to rebases and cherry-picks.
|
|
10951
|
-
- **ID collision risk**: Memory item IDs now use 64-bit entropy (16 hex chars) instead of 32-bit (8 hex chars).
|
|
10952
|
-
- **JSONL resilience**: Malformed lines in JSONL files are now skipped with try/catch per line instead of crashing the entire read.
|
|
10953
|
-
- **Stdin timeout leak**: \`clearTimeout\` now called in \`finally\` block for stdin reads in retrieval and hooks.
|
|
10954
|
-
- **Double JSONL read eliminated**: \`readMemoryItems()\` now returns \`deletedIds\` set, removing the need for a separate \`wasLessonDeleted()\` file read.
|
|
10955
|
-
- **FTS5 trigger optimization**: SQLite update trigger now scoped to FTS-indexed columns only, reducing unnecessary FTS rebuilds.
|
|
10956
|
-
- **Clustering noise accuracy**: Single-item clusters now correctly returned as \`noise\` instead of an always-empty noise array.
|
|
10957
|
-
- **Embed-worker path validation**: \`embed-worker\` command now validates that \`repoRoot\` exists and is a directory before proceeding.
|
|
10958
|
-
- **Script check timeout**: Rule-based script checks now have a 30-second default timeout, configurable via \`check.timeout\`.
|
|
10959
|
-
|
|
10960
|
-
### Changed
|
|
10961
|
-
|
|
10962
|
-
- **Anchored approval detection**: Review loop now uses \`^REVIEW_APPROVED\` anchored grep to prevent false positives from partial-line matches.
|
|
10963
|
-
- **Numeric option validation**: \`--review-every\` and \`--max-review-cycles\` now reject NaN, negative, and non-integer values.
|
|
10964
|
-
- **\`isModelUsable()\` replaced**: \`compound\` command now uses lightweight \`isModelAvailable()\` (fs check) instead of loading the 278MB model just to probe.
|
|
10965
|
-
- **Dead code removed**: \`addCompoundAgentHook()\`, back-compat hook aliases (\`CLAUDE_READ_TRACKER_HOOK_CONFIG\`, \`CLAUDE_STOP_AUDIT_HOOK_CONFIG\`), and \`wasLessonDeleted()\` removed.
|
|
10966
|
-
- **Hardcoded model extracted**: Five occurrences of \`'claude-opus-4-6'\` in loop.ts extracted to \`DEFAULT_MODEL\` constant.
|
|
10967
|
-
- **EPIC_ID_PATTERN deduplicated**: \`watch.ts\` now imports \`LOOP_EPIC_ID_PATTERN\` from \`loop.ts\` instead of maintaining a duplicate.
|
|
10968
|
-
- **\`warn()\` output corrected**: \`shared.ts\` warn helper now writes to \`stderr\` instead of \`stdout\`.
|
|
10969
|
-
- **Templates import fixed**: \`templates.ts\` now imports \`VERSION\` from \`../version.js\` instead of barrel re-export.`;
|
|
10962
|
+
- **PhD research output path**: \`/compound:get-a-phd\` now writes user-generated research to \`docs/research/\` instead of \`docs/compound/research/\`. The \`docs/compound/\` directory is reserved for shipped library content; project-specific research no longer pollutes it. Overlap scanning checks both directories.`;
|
|
10970
10963
|
|
|
10971
10964
|
// src/commands/about.ts
|
|
10965
|
+
var REPO_URL = "https://github.com/Nathandela/compound-agent";
|
|
10966
|
+
var DISCUSSIONS_URL = `${REPO_URL}/discussions`;
|
|
10972
10967
|
function registerAboutCommand(program) {
|
|
10973
10968
|
program.command("about").description("Show version, animation, and recent changelog").action(async () => {
|
|
10974
10969
|
if (process.stdout.isTTY) {
|
|
@@ -10978,6 +10973,30 @@ function registerAboutCommand(program) {
|
|
|
10978
10973
|
}
|
|
10979
10974
|
console.log("");
|
|
10980
10975
|
console.log(CHANGELOG_RECENT);
|
|
10976
|
+
if (process.stdout.isTTY) {
|
|
10977
|
+
console.log("");
|
|
10978
|
+
console.log(`Find this useful? Star us: ${REPO_URL}`);
|
|
10979
|
+
console.log(`Feedback & discussions: ${DISCUSSIONS_URL}`);
|
|
10980
|
+
}
|
|
10981
|
+
});
|
|
10982
|
+
}
|
|
10983
|
+
var REPO_URL2 = "https://github.com/Nathandela/compound-agent";
|
|
10984
|
+
var DISCUSSIONS_URL2 = `${REPO_URL2}/discussions`;
|
|
10985
|
+
function openUrl(url) {
|
|
10986
|
+
const opener = process.platform === "darwin" ? "open" : process.platform === "win32" ? "start" : "xdg-open";
|
|
10987
|
+
spawn(opener, [url], { detached: true, stdio: "ignore" }).unref();
|
|
10988
|
+
}
|
|
10989
|
+
function registerFeedbackCommand(program) {
|
|
10990
|
+
program.command("feedback").description("Open GitHub Discussions to share feedback or report issues").option("--open", "Open the Discussions page in your browser").action((opts) => {
|
|
10991
|
+
console.log(`Feedback & discussions: ${DISCUSSIONS_URL2}`);
|
|
10992
|
+
console.log(`Repository: ${REPO_URL2}`);
|
|
10993
|
+
if (opts.open && process.stdout.isTTY) {
|
|
10994
|
+
openUrl(DISCUSSIONS_URL2);
|
|
10995
|
+
console.log("Opening in browser...");
|
|
10996
|
+
} else if (!opts.open) {
|
|
10997
|
+
console.log("");
|
|
10998
|
+
console.log("Run `ca feedback --open` to open in your browser.");
|
|
10999
|
+
}
|
|
10981
11000
|
});
|
|
10982
11001
|
}
|
|
10983
11002
|
|
|
@@ -11264,6 +11283,41 @@ async function cleanLessonsAction() {
|
|
|
11264
11283
|
function registerCleanLessonsCommand(program) {
|
|
11265
11284
|
program.command("clean-lessons").description("Analyze lessons for semantic duplicates and contradictions").action(cleanLessonsAction);
|
|
11266
11285
|
}
|
|
11286
|
+
var INSTALL_SCRIPT_URL = "https://raw.githubusercontent.com/steveyegge/beads/main/scripts/install.sh";
|
|
11287
|
+
var INSTALL_CMD = `curl -sSL ${INSTALL_SCRIPT_URL} | bash`;
|
|
11288
|
+
function registerInstallBeadsCommand(program) {
|
|
11289
|
+
program.command("install-beads").description("Install the beads CLI via the official install script").option("--yes", "Skip confirmation prompt and install immediately").action((opts) => {
|
|
11290
|
+
if (process.platform === "win32") {
|
|
11291
|
+
console.error("Beads installation is not supported on Windows.");
|
|
11292
|
+
process.exitCode = 1;
|
|
11293
|
+
return;
|
|
11294
|
+
}
|
|
11295
|
+
if (checkBeadsAvailable().available) {
|
|
11296
|
+
console.log("Beads CLI (bd) is already installed.");
|
|
11297
|
+
return;
|
|
11298
|
+
}
|
|
11299
|
+
console.log(`Install script: ${INSTALL_SCRIPT_URL}`);
|
|
11300
|
+
if (!opts.yes) {
|
|
11301
|
+
console.log(`Run manually: ${INSTALL_CMD}`);
|
|
11302
|
+
return;
|
|
11303
|
+
}
|
|
11304
|
+
const result = spawnSync("bash", ["-c", INSTALL_CMD], {
|
|
11305
|
+
stdio: "inherit",
|
|
11306
|
+
timeout: 6e4
|
|
11307
|
+
});
|
|
11308
|
+
if (result.error) {
|
|
11309
|
+
console.error(`Installation error: ${result.error.message}`);
|
|
11310
|
+
process.exitCode = 1;
|
|
11311
|
+
return;
|
|
11312
|
+
}
|
|
11313
|
+
if (result.status !== 0) {
|
|
11314
|
+
console.error(`Install error: process exited with code ${result.status}.`);
|
|
11315
|
+
process.exitCode = 1;
|
|
11316
|
+
return;
|
|
11317
|
+
}
|
|
11318
|
+
console.log("Restart your shell or run: source ~/.bashrc");
|
|
11319
|
+
});
|
|
11320
|
+
}
|
|
11267
11321
|
|
|
11268
11322
|
// src/commands/capture.ts
|
|
11269
11323
|
function createLessonFromFlags(trigger, insight, confirmed) {
|
|
@@ -11879,9 +11933,11 @@ function registerManagementCommands(program) {
|
|
|
11879
11933
|
registerTestSummaryCommand(program);
|
|
11880
11934
|
registerVerifyGatesCommand(program);
|
|
11881
11935
|
registerAboutCommand(program);
|
|
11936
|
+
registerFeedbackCommand(program);
|
|
11882
11937
|
registerKnowledgeCommand(program);
|
|
11883
11938
|
registerKnowledgeIndexCommand(program);
|
|
11884
11939
|
registerCleanLessonsCommand(program);
|
|
11940
|
+
registerInstallBeadsCommand(program);
|
|
11885
11941
|
program.command("worktree").description("(removed) Use Claude Code native worktree support").action(() => {
|
|
11886
11942
|
console.error("ca worktree has been removed. Use Claude Code's native EnterWorktree support instead.");
|
|
11887
11943
|
process.exitCode = 1;
|