compound-agent 2.6.1 → 2.7.0
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 +43 -33
- package/README.md +19 -9
- package/package.json +7 -7
package/CHANGELOG.md
CHANGED
|
@@ -7,7 +7,49 @@ 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
|
-
## [
|
|
10
|
+
## [2.7.0] - 2026-04-09
|
|
11
|
+
|
|
12
|
+
### Changed
|
|
13
|
+
|
|
14
|
+
- **Artifact consolidation**: All runtime artifacts (loop scripts, agent logs, phase state files) now live under `.compound-agent/` instead of being scattered across the project root and `.claude/`. The `ca setup` command auto-migrates legacy locations with conflict detection (skips if both old and new exist).
|
|
15
|
+
- **Root `.gitignore` management**: `ca setup` now maintains a marker-delimited block in the root `.gitignore` for `.compound-agent/` entries, replacing individual pattern lines.
|
|
16
|
+
|
|
17
|
+
### Fixed
|
|
18
|
+
|
|
19
|
+
- **Retrocompatibility**: `GetPhaseState()` now falls back to the legacy `.claude/.ca-phase-state.json` path when the new `.compound-agent/` path is missing, and auto-migrates on first access. Repos upgrading without re-running `ca init` no longer lose active cook-it sessions.
|
|
20
|
+
- **Failure tracker on fresh repos**: `writeFailureState()` now auto-creates the `.compound-agent/` directory, fixing silent `post-tool-failure` hook regression on repos that haven't run `ca init`.
|
|
21
|
+
- **Stale path references**: Updated all `./infinity-loop.sh`, `./polish-loop.sh`, `./improvement-loop.sh` references to `.compound-agent/` prefix in GOTCHA.md, infinity-loop README, review-fleet.md, and generated script headers.
|
|
22
|
+
- **`.claude/.gitignore` cleanup**: Removed stale `.ca-*-state.json` patterns (files moved to `.compound-agent/`), added `.ca-hints-shown` and `skills/compound/skills_index.json`.
|
|
23
|
+
|
|
24
|
+
## [2.6.2] - 2026-04-05
|
|
25
|
+
|
|
26
|
+
### Added
|
|
27
|
+
|
|
28
|
+
- **Loop monitoring protocol**: Loop-launcher skill now includes a structured health check protocol (post-launch verification, stall detection, progress table with ETA), plus a log file map for all `agent_logs/` artifacts.
|
|
29
|
+
- **Windows loop support references**: WSL2+tmux setup guide (recommended path) and native PowerShell infinity-loop reference template under `loop-launcher/references/windows/`. PS1 template is a structural translation of the bash infinity loop with documented Windows gaps.
|
|
30
|
+
- **CLI documentation**: Added `ca info`, `ca health`, `ca polish`, `ca feedback` commands to CLI_REFERENCE.md, README, and shipped docs quick reference.
|
|
31
|
+
|
|
32
|
+
### Fixed
|
|
33
|
+
|
|
34
|
+
- **P0: `--epics` syntax in docs**: CLI_REFERENCE.md and epic-ordering.md incorrectly showed space-separated `--epics` syntax; fixed to comma-separated (`--epics "id1,id2,id3"`).
|
|
35
|
+
- **P0: Duplicate `setupTestRepo`**: Renamed duplicate function in `integration_test.go` to `setupEmptyTestRepo` to prevent build bomb with integration tag.
|
|
36
|
+
- **PruneEvents performance**: Added row count guard — telemetry pruning now skips the full-table DELETE when table has fewer rows than the threshold.
|
|
37
|
+
- **Lesson search DB reuse**: `makeLessonSearchFunc` now reuses the caller's DB handle instead of opening a new connection per search call.
|
|
38
|
+
- **`openURL` error handling**: Browser open command errors are now logged to stderr instead of silently discarded.
|
|
39
|
+
- **`outcomeToSuccess` default**: Unknown telemetry outcomes now map to failure (0) instead of success (1).
|
|
40
|
+
- **Phase state atomic writes**: `WritePhaseState` now uses temp+rename pattern to prevent JSON corruption on crash.
|
|
41
|
+
- **`knowledgeNeedsRebuild` locking**: Added `busy_timeout` pragma to prevent indefinite blocking when another process holds the write lock.
|
|
42
|
+
- **`HydrateChunks` performance**: Replaced O(n^2) string concatenation with `strings.Builder` for IN-clause placeholders.
|
|
43
|
+
- **`formatInfoPhase` display**: Fixed "phase 6/5" display in architect mode by clamping total to actual phase index.
|
|
44
|
+
- **`lockedOpenKnowledgeDB` DSN**: Now uses shared `buildDSN()` instead of hardcoded DSN string.
|
|
45
|
+
- **Redundant TOCTOU check**: Removed redundant `os.Stat` before `OpenRepoDB` in info command.
|
|
46
|
+
- **WSL2 guide**: Fixed credential helper backslash escaping, updated to modern Git path, added Claude Code auth step and `bd` prerequisite.
|
|
47
|
+
- **PS1 template**: Fixed 6-backtick comment, `Get-Command` resolution, crash handler variable, symlink HardLink fallback, added `-Encoding utf8`, optimized JSONL extraction with `switch -File`.
|
|
48
|
+
- **SKILL.md monitoring**: Fixed `readlink` basename path, replaced hardcoded session names with `.beads/loop-session-name`, added epoch delta calculation example and ETA disclaimer.
|
|
49
|
+
- **Stale docs**: Removed orphaned TypeScript-era CHANGELOG entries, fixed `npx ca` references in lessons-reviewer, removed stale TS path in lint-classifier, updated GOTCHA.md Windows statement.
|
|
50
|
+
- **README alignment**: Fixed `--review-model` default, Node.js version (>=18), `--epics` variadic notation.
|
|
51
|
+
- **Test improvements**: Removed duplicate `TestOpenDB_SchemaVersionIs7`, added error checking to PRAGMA test calls, added `testing.Short()` guard to telemetry overhead test (threshold raised to 100ms), added `t.Parallel()` to 13 storage tests, fixed `writePhaseState` test helper error handling.
|
|
52
|
+
- **`publish-platforms.cjs`**: Fixed Buffer-to-string coercion in error output handling.
|
|
11
53
|
|
|
12
54
|
## [2.6.1] - 2026-04-03
|
|
13
55
|
|
|
@@ -245,38 +287,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
245
287
|
- **Weekly npm token health check**: Scheduled workflow verifies `NPM_TOKEN` validity every Monday.
|
|
246
288
|
- **Platform publish script**: `scripts/publish-platforms.cjs` handles creating and publishing `@syottos/*` packages during releases. Idempotent — safe to re-run.
|
|
247
289
|
|
|
248
|
-
## [Unreleased]
|
|
249
|
-
|
|
250
|
-
### Changed
|
|
251
|
-
|
|
252
|
-
- **Replace node-llama-cpp with Transformers.js**: Swap EmbeddingGemma-300M (node-llama-cpp, 431MB RSS) for nomic-embed-text-v1.5 (@huggingface/transformers, 23MB RSS) — 95% memory reduction (E5b).
|
|
253
|
-
- **Remove all node-llama-cpp residue**: Update setup templates, doctor diagnostics, comments, and vitest config to reference Transformers.js and onnxruntime-node instead of node-llama-cpp (E5c).
|
|
254
|
-
- **Gemini adapter is now opt-in**: `installGeminiAdapter()` no longer runs automatically during setup. Users enable it explicitly via `npx ca setup gemini` (sets `gemini: true` in `compound-agent.json`). Use `npx ca setup gemini --disable` / `cleanGeminiCompoundFiles()` for clean removal.
|
|
255
|
-
- **Stale cleanup refactored**: Removed hardcoded deprecation lists from upgrade logic, replaced with `cleanStaleArtifacts()` pattern that declaratively defines what to remove.
|
|
256
|
-
|
|
257
|
-
### Added
|
|
258
|
-
|
|
259
|
-
- **Research-specialist shipped agent**: New general-purpose research subagent (`research-specialist.md`) shipped via `npx ca init`. Has full tool access (Read, Write, Edit, Bash, Glob, Grep, WebSearch, WebFetch) so it can conduct deep PhD-level research, write survey papers, run experiments, and validate claims with code. Referenced by the `get-a-phd` workflow for parallel research execution.
|
|
260
|
-
- **`model-info.ts` module**: Extracted embedding model metadata (name, repo, dimensions, file) into a standalone module with zero native imports, decoupling the import graph so that CLI entry points no longer transitively load `node-llama-cpp` or `better-sqlite3` at parse time.
|
|
261
|
-
- **Architect decomposition spec**: Added specification for embedding memory pressure remediation (`embedding-memory-pressure-remediation.md`).
|
|
262
|
-
- **Hypothesis validation protocol**: Added to spec-dev skill — specs can now define falsifiable hypotheses with validation criteria.
|
|
263
|
-
- **`cleanStaleArtifacts` and `cleanStaleGeminiArtifacts`**: New setup utilities that remove deprecated files and directories during upgrades instead of relying on hardcoded deprecation lists.
|
|
264
|
-
- **LinkedIn architecture diagrams**: Integrated visual architecture diagrams into README (`docs/assets/`).
|
|
265
|
-
- **Independent reviews**: Added Opus and Sonnet independent review documents for embedding memory pressure analysis.
|
|
266
|
-
- **Embedding memory pressure investigation**: Added root-cause analysis, measurement data, and proposal documents in `docs/research/`.
|
|
267
|
-
|
|
268
|
-
### Fixed
|
|
269
|
-
|
|
270
|
-
- **Managed repo artifact upgrades**: `ca setup` now reconciles existing managed compound-agent files during upgrades instead of only creating missing files, so already-initialized repos receive updated templates and metadata.
|
|
271
|
-
- **Retired managed template cleanup**: Setup upgrades now remove stale files and directories that are no longer shipped from managed `compound/` directories under `.claude/commands/`, `.claude/skills/`, `.claude/agents/`, and `docs/`.
|
|
272
|
-
- **Nested phase reference cleanup**: Setup upgrades now prune retired nested files and directories inside phase skill `references/` trees, preventing removed or renamed reference docs from lingering after reruns.
|
|
273
|
-
- **Embedding memory pressure remediation**: Lazy-load native modules (@huggingface/transformers (onnxruntime-node), better-sqlite3) behind dynamic `import()`, reducing CLI cold-start RSS. Singleton embedding model uses explicit `dispose()`. Added RSS measurement script and integration tests for memory lifecycle.
|
|
274
|
-
- **Review phase resilience**: Fixed jq stdin pipe handling, added auth health checks, and improved error isolation in loop review templates.
|
|
275
|
-
- **Quality-filter-before-storage test ordering**: Resolved flaky test ordering in compound skill tests.
|
|
276
|
-
- **Merged worktree review findings**: Addressed Opus/Sonnet review findings for worktree merges (loop-review-templates, stale-cleanup tests).
|
|
277
|
-
- **Knowledge index integration tests**: Fixed test configuration for embedding integration tests in vitest workspace.
|
|
278
|
-
|
|
279
|
-
|
|
280
290
|
## [1.8.0] - 2026-03-15
|
|
281
291
|
|
|
282
292
|
### Added
|
package/README.md
CHANGED
|
@@ -130,7 +130,7 @@ For systems too large for a single feature cycle. `/compound:architect` decompos
|
|
|
130
130
|
|
|
131
131
|
# Step 2: generate and run the loop
|
|
132
132
|
ca loop --reviewers claude-sonnet --review-every 3
|
|
133
|
-
|
|
133
|
+
./.compound-agent/infinity-loop.sh
|
|
134
134
|
# → Processes each epic in dependency order: spec-dev → plan → work → review → compound
|
|
135
135
|
# → Captures lessons after every cycle, improving subsequent cycles
|
|
136
136
|
```
|
|
@@ -151,10 +151,10 @@ ca loop
|
|
|
151
151
|
ca loop --reviewers claude-sonnet --review-every 3
|
|
152
152
|
|
|
153
153
|
# Target specific epics
|
|
154
|
-
ca loop --epics beads-abc
|
|
154
|
+
ca loop --epics "beads-abc,beads-def,beads-ghi" --max-retries 2
|
|
155
155
|
|
|
156
156
|
# Run it
|
|
157
|
-
|
|
157
|
+
./.compound-agent/infinity-loop.sh
|
|
158
158
|
```
|
|
159
159
|
|
|
160
160
|
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.
|
|
@@ -180,10 +180,10 @@ ca improve --topics lint tests --max-iters 3
|
|
|
180
180
|
ca improve --dry-run
|
|
181
181
|
|
|
182
182
|
# Run the generated script
|
|
183
|
-
|
|
183
|
+
./.compound-agent/improvement-loop.sh
|
|
184
184
|
|
|
185
185
|
# Preview without executing Claude sessions
|
|
186
|
-
IMPROVE_DRY_RUN=1
|
|
186
|
+
IMPROVE_DRY_RUN=1 ./.compound-agent/improvement-loop.sh
|
|
187
187
|
```
|
|
188
188
|
|
|
189
189
|
Each iteration makes one focused improvement, commits it, and moves on. If an iteration finds nothing to improve or fails validation, it reverts cleanly and moves to the next topic. The loop tracks consecutive no-improvement results and stops early to avoid diminishing returns.
|
|
@@ -235,7 +235,7 @@ npx ca setup
|
|
|
235
235
|
|
|
236
236
|
### Requirements
|
|
237
237
|
|
|
238
|
-
- Node.js >=
|
|
238
|
+
- Node.js >= 18 (for `npx` wrapper — the CLI itself is a Go binary)
|
|
239
239
|
- ~278MB disk space for the embedding model (one-time download, shared across projects)
|
|
240
240
|
- Embedding runs via `ca-embed` Rust daemon (nomic-embed-text-v1.5 ONNX)
|
|
241
241
|
|
|
@@ -302,15 +302,15 @@ The CLI binary is `ca` (alias: `compound-agent`).
|
|
|
302
302
|
| Command | Description |
|
|
303
303
|
|---------|-------------|
|
|
304
304
|
| `ca loop` | Generate infinity loop script for autonomous epic processing |
|
|
305
|
-
| `ca loop --epics
|
|
306
|
-
| `ca loop -o <path>` | Custom output path (default:
|
|
305
|
+
| `ca loop --epics "id1,id2,id3"` | Target specific epic IDs (comma-separated) |
|
|
306
|
+
| `ca loop -o <path>` | Custom output path (default: `./.compound-agent/infinity-loop.sh`) |
|
|
307
307
|
| `ca loop --max-retries <n>` | Max retries per epic on failure (default: 1) |
|
|
308
308
|
| `ca loop --force` | Overwrite existing script |
|
|
309
309
|
| `ca loop --reviewers <names...>` | Enable review phase with specified reviewers (claude-sonnet, claude-opus, gemini, codex) |
|
|
310
310
|
| `ca loop --review-every <n>` | Review every N completed epics (0 = end-only, default: 0) |
|
|
311
311
|
| `ca loop --max-review-cycles <n>` | Max review/fix iterations (default: 3) |
|
|
312
312
|
| `ca loop --review-blocking` | Fail loop if review not approved after max cycles |
|
|
313
|
-
| `ca loop --review-model <model>` | Model for implementer fix sessions (default: claude-opus-4-6) |
|
|
313
|
+
| `ca loop --review-model <model>` | Model for implementer fix sessions (default: claude-opus-4-6[1m]) |
|
|
314
314
|
| `ca improve` | Generate improvement loop script from `improve/*.md` programs |
|
|
315
315
|
| `ca improve --topics <names...>` | Run only specific topics |
|
|
316
316
|
| `ca improve --max-iters <n>` | Max iterations per topic (default: 5) |
|
|
@@ -322,6 +322,16 @@ The CLI binary is `ca` (alias: `compound-agent`).
|
|
|
322
322
|
| `ca watch --epic <id>` | Watch a specific epic trace |
|
|
323
323
|
| `ca watch --improve` | Watch improvement loop traces |
|
|
324
324
|
| `ca watch --no-follow` | Print existing trace and exit (no live tail) |
|
|
325
|
+
| `ca polish` | Generate polish loop script for iterative refinement |
|
|
326
|
+
| `ca polish --spec-file <path>` | Specify the spec file for polish review |
|
|
327
|
+
| `ca polish --reviewers <names>` | Comma-separated reviewer models |
|
|
328
|
+
| `ca polish --cycles <n>` | Number of polish cycles (default: 1) |
|
|
329
|
+
| `ca polish --force` | Overwrite existing script |
|
|
330
|
+
| `ca info` | Show project status, phase, and telemetry summary |
|
|
331
|
+
| `ca info --open` | Open project dashboard in browser |
|
|
332
|
+
| `ca info --json` | Output as JSON |
|
|
333
|
+
| `ca health` | Check project health and dependencies |
|
|
334
|
+
| `ca feedback` | Submit feedback about compound-agent |
|
|
325
335
|
|
|
326
336
|
### Knowledge
|
|
327
337
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "compound-agent",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.7.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Learning system for Claude Code — avoids repeating mistakes across sessions",
|
|
6
6
|
"bin": {
|
|
@@ -51,12 +51,12 @@
|
|
|
51
51
|
"knowledge-management"
|
|
52
52
|
],
|
|
53
53
|
"optionalDependencies": {
|
|
54
|
-
"@syottos/darwin-arm64": "2.
|
|
55
|
-
"@syottos/darwin-x64": "2.
|
|
56
|
-
"@syottos/linux-arm64": "2.
|
|
57
|
-
"@syottos/linux-x64": "2.
|
|
58
|
-
"@syottos/win32-x64": "2.
|
|
59
|
-
"@syottos/win32-arm64": "2.
|
|
54
|
+
"@syottos/darwin-arm64": "2.7.0",
|
|
55
|
+
"@syottos/darwin-x64": "2.7.0",
|
|
56
|
+
"@syottos/linux-arm64": "2.7.0",
|
|
57
|
+
"@syottos/linux-x64": "2.7.0",
|
|
58
|
+
"@syottos/win32-x64": "2.7.0",
|
|
59
|
+
"@syottos/win32-arm64": "2.7.0"
|
|
60
60
|
},
|
|
61
61
|
"author": "Nathan Delacrétaz",
|
|
62
62
|
"license": "MIT",
|