@yemi33/minions 0.1.1035 → 0.1.1037
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 +83 -0
- package/agents/lambert/charter.md +2 -2
- package/docs/auto-discovery.md +19 -22
- package/docs/command-center.md +3 -3
- package/package.json +1 -1
- package/playbooks/test.md +7 -6
- package/docs/verify-minions-2026-04-01-5.md +0 -32
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,88 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.1.1037 (2026-04-16)
|
|
4
|
+
|
|
5
|
+
### Features
|
|
6
|
+
- Doc-chat performance — debounced persistence, session TTL, smart disk reads (#1164)
|
|
7
|
+
- split getStatus() into fast/slow state tiers with separate TTLs (#1170)
|
|
8
|
+
- Cache _countWorktrees() with 30s TTL (#1166)
|
|
9
|
+
- Pre-cache gzipped status buffer alongside JSON cache (#1171)
|
|
10
|
+
- parallelize ADO and GitHub PR polling with Promise.allSettled (#1172)
|
|
11
|
+
- route implement items to dedicated implement playbook (#1115)
|
|
12
|
+
|
|
13
|
+
### Fixes
|
|
14
|
+
- allow test tasks to create PRs when files are modified
|
|
15
|
+
- sidecar oversized dispatch prompts to prevent dashboard OOM (closes #1167) (#1183)
|
|
16
|
+
- use locked write for failed-with-PR reconciliation in cleanup.js (#1169)
|
|
17
|
+
- prevent test from corrupting live meeting state
|
|
18
|
+
- scheduler enabled field falsy check treats undefined as disabled (#1160)
|
|
19
|
+
- update branch-dedup tests to use canonical PR IDs after merge with master (#1146)
|
|
20
|
+
- auto-review not firing for manually-linked PRs with autoObserve=true
|
|
21
|
+
- mark PR abandoned on 404 instead of silently retrying each tick
|
|
22
|
+
- replace undefined PROJECTS with config.projects in checkWatches (#1108)
|
|
23
|
+
- write permission for publish workflow
|
|
24
|
+
- run tests inline and post check runs for publish PRs
|
|
25
|
+
- add maxBuffer to all GitHub CLI spawns + paginate PR list (#1130)
|
|
26
|
+
- add required CI checks for PRs + update publish for auto-merge
|
|
27
|
+
- revert to PR merge now that stale status check is removed
|
|
28
|
+
- guard live review check against undefined vote/state values (#1132)
|
|
29
|
+
- push version bump directly to master instead of via PR
|
|
30
|
+
- add push-triggered CI for chore/publish branches
|
|
31
|
+
- publish workflow chore PRs failing to merge
|
|
32
|
+
- harden KB ordering
|
|
33
|
+
- harden audited state transitions
|
|
34
|
+
|
|
35
|
+
### Other
|
|
36
|
+
- docs(sched-weekly-docs-cleanup-1776355200664): weekly documentation cleanup (#1181)
|
|
37
|
+
- [E2E] Dashboard & engine perf: gzip cache, tiered status, lock backoff, polling parallelization (#1174)
|
|
38
|
+
- Fix doc chat session isolation
|
|
39
|
+
- test(pipeline): add unit tests for CRUD, stage execution, run lifecycle (#1162)
|
|
40
|
+
- chore: test publish after removing stale status check
|
|
41
|
+
- chore: trigger publish test
|
|
42
|
+
- chore: test publish workflow fix
|
|
43
|
+
- chore: trigger publish workflow test
|
|
44
|
+
|
|
45
|
+
## 0.1.1036 (2026-04-16)
|
|
46
|
+
|
|
47
|
+
### Features
|
|
48
|
+
- Doc-chat performance — debounced persistence, session TTL, smart disk reads (#1164)
|
|
49
|
+
- split getStatus() into fast/slow state tiers with separate TTLs (#1170)
|
|
50
|
+
- Cache _countWorktrees() with 30s TTL (#1166)
|
|
51
|
+
- Pre-cache gzipped status buffer alongside JSON cache (#1171)
|
|
52
|
+
- parallelize ADO and GitHub PR polling with Promise.allSettled (#1172)
|
|
53
|
+
- route implement items to dedicated implement playbook (#1115)
|
|
54
|
+
|
|
55
|
+
### Fixes
|
|
56
|
+
- allow test tasks to create PRs when files are modified
|
|
57
|
+
- sidecar oversized dispatch prompts to prevent dashboard OOM (closes #1167) (#1183)
|
|
58
|
+
- use locked write for failed-with-PR reconciliation in cleanup.js (#1169)
|
|
59
|
+
- prevent test from corrupting live meeting state
|
|
60
|
+
- scheduler enabled field falsy check treats undefined as disabled (#1160)
|
|
61
|
+
- update branch-dedup tests to use canonical PR IDs after merge with master (#1146)
|
|
62
|
+
- auto-review not firing for manually-linked PRs with autoObserve=true
|
|
63
|
+
- mark PR abandoned on 404 instead of silently retrying each tick
|
|
64
|
+
- replace undefined PROJECTS with config.projects in checkWatches (#1108)
|
|
65
|
+
- write permission for publish workflow
|
|
66
|
+
- run tests inline and post check runs for publish PRs
|
|
67
|
+
- add maxBuffer to all GitHub CLI spawns + paginate PR list (#1130)
|
|
68
|
+
- add required CI checks for PRs + update publish for auto-merge
|
|
69
|
+
- revert to PR merge now that stale status check is removed
|
|
70
|
+
- guard live review check against undefined vote/state values (#1132)
|
|
71
|
+
- push version bump directly to master instead of via PR
|
|
72
|
+
- add push-triggered CI for chore/publish branches
|
|
73
|
+
- publish workflow chore PRs failing to merge
|
|
74
|
+
- harden KB ordering
|
|
75
|
+
- harden audited state transitions
|
|
76
|
+
|
|
77
|
+
### Other
|
|
78
|
+
- [E2E] Dashboard & engine perf: gzip cache, tiered status, lock backoff, polling parallelization (#1174)
|
|
79
|
+
- Fix doc chat session isolation
|
|
80
|
+
- test(pipeline): add unit tests for CRUD, stage execution, run lifecycle (#1162)
|
|
81
|
+
- chore: test publish after removing stale status check
|
|
82
|
+
- chore: trigger publish test
|
|
83
|
+
- chore: test publish workflow fix
|
|
84
|
+
- chore: trigger publish workflow test
|
|
85
|
+
|
|
3
86
|
## 0.1.1035 (2026-04-16)
|
|
4
87
|
|
|
5
88
|
### Features
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
- Creating the structured PRD in JSON format
|
|
15
15
|
- Gap analysis: what was built vs. what the codebase instructions describe vs. what's missing
|
|
16
16
|
- Feature inventory: cataloguing existing agent capabilities, then identifying what's absent
|
|
17
|
-
- Producing `
|
|
17
|
+
- Producing PRD JSON files in `{{team_root}}/prd/` with structured feature records (one file per plan; filename matches the source plan slug)
|
|
18
18
|
- Flagging unknowns and ambiguities in the requirements
|
|
19
19
|
|
|
20
20
|
## PRD JSON Output Format
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
- Read Dallas's build summary from `{{team_root}}/notes/inbox/dallas-build-*.md`
|
|
44
44
|
- Cross-reference against all `docs/`, agent `CLAUDE.md` files, and prototype instructions
|
|
45
45
|
- Be exhaustive on missing features — better to over-document than under-document
|
|
46
|
-
- Output the JSON to `
|
|
46
|
+
- Output the JSON to `{{team_root}}/prd/<plan-slug>.json` (the engine's `materializePlansAsWorkItems()` reads from that directory)
|
|
47
47
|
|
|
48
48
|
## Boundaries
|
|
49
49
|
|
package/docs/auto-discovery.md
CHANGED
|
@@ -37,13 +37,13 @@ Skips PRs where `status !== "active"`.
|
|
|
37
37
|
|
|
38
38
|
### Source 2: PRD Gap Analysis (via `materializePlansAsWorkItems`)
|
|
39
39
|
|
|
40
|
-
PRD items flow through `materializePlansAsWorkItems()`, which scans `~/.minions/prd/*.json` for PRD files with `missing
|
|
40
|
+
PRD items flow through `materializePlansAsWorkItems()`, which scans `~/.minions/prd/*.json` for PRD files with `missing` / `updated` / `planned` items and creates work items in the target project's queue.
|
|
41
41
|
|
|
42
|
-
**Reads:** `<project>/docs/prd-gaps.json`
|
|
42
|
+
**Reads:** `~/.minions/prd/*.json` — the central PRD directory. (Legacy `<project>/docs/prd-gaps.json` paths are no longer scanned.)
|
|
43
43
|
|
|
44
44
|
| Item State | Action | Dispatch Type |
|
|
45
45
|
|------------|--------|---------------|
|
|
46
|
-
| `status: "missing"` or `"
|
|
46
|
+
| `status: "missing"` or `"updated"` | Queue implementation (re-opens any existing done WI) | `implement` |
|
|
47
47
|
| `estimated_complexity: "large"` | Routes to `implement:large` (prefers Rebecca) | `implement:large` |
|
|
48
48
|
|
|
49
49
|
### Source 3: Per-Project Work Items (`discoverFromWorkItems`)
|
|
@@ -165,14 +165,19 @@ Item found
|
|
|
165
165
|
`resolveAgent()` parses `routing.md` to pick the right agent:
|
|
166
166
|
|
|
167
167
|
```
|
|
168
|
-
routing.md table:
|
|
168
|
+
routing.md table (see the file for the authoritative list):
|
|
169
169
|
implement → dallas (fallback: ralph)
|
|
170
170
|
implement:large → rebecca (fallback: dallas)
|
|
171
171
|
review → ripley (fallback: lambert)
|
|
172
|
-
fix → _author_ (fallback:
|
|
173
|
-
|
|
172
|
+
fix → _author_ (fallback: _any_) ← routes to PR author, any idle as fallback
|
|
173
|
+
plan → ripley (fallback: rebecca)
|
|
174
|
+
plan-to-prd → lambert (fallback: rebecca)
|
|
174
175
|
explore → ripley (fallback: rebecca)
|
|
175
176
|
test → dallas (fallback: ralph)
|
|
177
|
+
ask → ripley (fallback: rebecca)
|
|
178
|
+
verify → dallas (fallback: ralph)
|
|
179
|
+
decompose → ripley (fallback: rebecca)
|
|
180
|
+
meeting → ripley (fallback: lambert)
|
|
176
181
|
```
|
|
177
182
|
|
|
178
183
|
Resolution order:
|
|
@@ -216,7 +221,7 @@ git worktree add <rootDir>/../worktrees/<branch> -b <branch> <mainBranch>
|
|
|
216
221
|
```
|
|
217
222
|
- Branch names are sanitized (alphanumeric, dots, hyphens, slashes only, max 200 chars)
|
|
218
223
|
- If worktree fails for implement/fix → item marked as error, moved to completed
|
|
219
|
-
- If worktree fails for review/
|
|
224
|
+
- If worktree fails for review/explore/ask → falls back to rootDir (read-only tasks)
|
|
220
225
|
|
|
221
226
|
### 3. Render Playbook
|
|
222
227
|
```
|
|
@@ -291,8 +296,8 @@ The dashboard exposes a unified input box at `http://localhost:7331` that parses
|
|
|
291
296
|
| `@agent` | Assigns to a specific agent (sets `item.agent`) |
|
|
292
297
|
| `@everyone` | Fan-out to all agents (sets `scope: 'fan-out'`) |
|
|
293
298
|
| `!high` / `!low` | Sets priority (default: medium) |
|
|
294
|
-
| `/
|
|
295
|
-
| `/
|
|
299
|
+
| `/note` | Writes a note to `notes/inbox/` for consolidation into `notes.md` |
|
|
300
|
+
| `/plan` | Creates a plan draft (appended to `plans/`) |
|
|
296
301
|
| `#project` | Targets a specific project queue |
|
|
297
302
|
|
|
298
303
|
Work type is auto-detected from keywords (fix, explore, test, review → implement as fallback). The `@agent` assignment flows through to the engine: `item.agent || resolveAgent(workType, config)`.
|
|
@@ -305,20 +310,20 @@ Work type is auto-detected from keywords (fix, explore, test, review → impleme
|
|
|
305
310
|
│
|
|
306
311
|
┌──────────┼──────────┐
|
|
307
312
|
▼ ▼ ▼
|
|
308
|
-
work-items
|
|
309
|
-
.json
|
|
313
|
+
work-items notes/ plans/
|
|
314
|
+
.json inbox/*.md *.md
|
|
310
315
|
|
|
311
316
|
Per-project sources: Central engine: Agents:
|
|
312
317
|
|
|
313
318
|
work-items.json ──┐
|
|
314
|
-
prd-gaps.json ────┤
|
|
315
319
|
pull-requests.json┤ discoverWork() dispatch.json
|
|
316
320
|
docs/**/*.md (specs)┤ (each tick) ┌──────────┐
|
|
317
321
|
│ │ │ pending │
|
|
318
322
|
~/.minions/ │ │ │ active │
|
|
319
323
|
work-items.json ┤ │ │ completed │
|
|
320
|
-
|
|
321
|
-
|
|
324
|
+
prd/*.json ─────┤ │ └─────┬────┘
|
|
325
|
+
plans/*.md ─────┘ ▼ │
|
|
326
|
+
addToDispatch()────────┘
|
|
322
327
|
│
|
|
323
328
|
ADO REST API ─── pollPrBuildStatus() ──► pull-requests.json
|
|
324
329
|
(every 6min) (buildStatus field) │
|
|
@@ -390,20 +395,12 @@ All discovery behavior is controlled via `config.json`:
|
|
|
390
395
|
"name": "MyProject",
|
|
391
396
|
"localPath": "C:/Users/you/MyProject",
|
|
392
397
|
"workSources": {
|
|
393
|
-
"prd": {
|
|
394
|
-
"enabled": true,
|
|
395
|
-
"path": "docs/prd-gaps.json",
|
|
396
|
-
"itemFilter": { "status": ["missing", "planned"] },
|
|
397
|
-
"cooldownMinutes": 30
|
|
398
|
-
},
|
|
399
398
|
"pullRequests": {
|
|
400
399
|
"enabled": true,
|
|
401
|
-
"path": "projects/<name>/pull-requests.json",
|
|
402
400
|
"cooldownMinutes": 30
|
|
403
401
|
},
|
|
404
402
|
"workItems": {
|
|
405
403
|
"enabled": true,
|
|
406
|
-
"path": "projects/<name>/work-items.json",
|
|
407
404
|
"cooldownMinutes": 0
|
|
408
405
|
}
|
|
409
406
|
}
|
package/docs/command-center.md
CHANGED
|
@@ -11,9 +11,9 @@ Click the **CC** button in the top-right header of the dashboard. A slide-out ch
|
|
|
11
11
|
CC maintains a true multi-turn session using Claude CLI's `--resume` flag. Unlike a typical stateless API call, each message resumes the same conversation — Claude retains full history including tool calls, intermediate reasoning, and file contents from prior turns.
|
|
12
12
|
|
|
13
13
|
**Session lifecycle:**
|
|
14
|
-
- **Created** on first message (or after
|
|
14
|
+
- **Created** on first message (or after the system prompt changes, or when you click **New Session**)
|
|
15
15
|
- **Resumed** on subsequent messages via `--resume <sessionId>`
|
|
16
|
-
- **
|
|
16
|
+
- **Invalidated** only when the CC system prompt changes — detected by hashing `CC_STATIC_SYSTEM_PROMPT` into `_ccPromptHash` and comparing on each call. There is no time-based expiry and no turn cap (`CC_SESSION_MAX_TURNS = Infinity`).
|
|
17
17
|
- **Persisted** to `engine/cc-session.json` — survives dashboard restarts
|
|
18
18
|
- **Frontend messages** saved to `localStorage` — survive page refresh
|
|
19
19
|
|
|
@@ -108,7 +108,7 @@ User message (CC panel, doc modal, or steer)
|
|
|
108
108
|
▼
|
|
109
109
|
POST /api/command-center (or /api/doc-chat, /api/steer-document)
|
|
110
110
|
│
|
|
111
|
-
├── Validate session (
|
|
111
|
+
├── Validate session (prompt-hash check — invalidate if `_ccPromptHash` drifted)
|
|
112
112
|
├── Build dynamic state preamble (buildCCStatePreamble)
|
|
113
113
|
├── callLLM() with sessionId (resume) or without (new)
|
|
114
114
|
│ model: sonnet
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yemi33/minions",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1037",
|
|
4
4
|
"description": "Multi-agent AI dev team that runs from ~/.minions/ — five autonomous agents share a single engine, dashboard, and knowledge base",
|
|
5
5
|
"bin": {
|
|
6
6
|
"minions": "bin/minions.js"
|
package/playbooks/test.md
CHANGED
|
@@ -17,14 +17,15 @@ Team root: {{team_root}}
|
|
|
17
17
|
|
|
18
18
|
## Instructions
|
|
19
19
|
|
|
20
|
-
This is a **test/build/run task**. Your goal is to build, run, test, or verify something
|
|
20
|
+
This is a **test/build/run task**. Your goal is to build, run, test, or verify something.
|
|
21
21
|
|
|
22
22
|
1. **Navigate** to the correct project directory
|
|
23
23
|
2. You are already in the correct working directory. If you need a specific branch, use `git checkout` — do NOT create additional worktrees.
|
|
24
24
|
3. **Build** the project — follow the repo's build instructions (check CLAUDE.md, package.json, README)
|
|
25
25
|
4. **Run** if the task asks for it (e.g., `yarn start`, `yarn dev`, docker-compose, etc.)
|
|
26
26
|
5. **Test** if the task asks for it (e.g., `yarn test`, `pytest`, etc.)
|
|
27
|
-
6. **
|
|
27
|
+
6. **Write tests** if the task asks you to add or improve test coverage — commit and open a PR when done
|
|
28
|
+
7. **Report results** — what worked, what failed, build output, test results, localhost URL if running
|
|
28
29
|
|
|
29
30
|
## Working Style
|
|
30
31
|
|
|
@@ -32,9 +33,9 @@ Use subagents only for genuinely parallel, independent tasks. For building, test
|
|
|
32
33
|
|
|
33
34
|
## Rules
|
|
34
35
|
|
|
35
|
-
- **Do NOT
|
|
36
|
-
- **
|
|
37
|
-
- **Do NOT
|
|
36
|
+
- **Do NOT modify production code** unless the task explicitly asks for a fix
|
|
37
|
+
- **Create a PR** if the task involves writing or modifying files (new tests, test fixes, etc.) — follow the same PR conventions as implement tasks
|
|
38
|
+
- **Do NOT push or create a PR** for pure build/run/verify tasks that make no file changes
|
|
38
39
|
- Use PowerShell for build commands on Windows if applicable
|
|
39
40
|
- If a build or test fails, report the error clearly — don't try to fix it unless asked
|
|
40
41
|
- If running a local server, report the URL (e.g., http://localhost:3000)
|
|
@@ -66,6 +67,6 @@ Include:
|
|
|
66
67
|
|
|
67
68
|
## When to Stop
|
|
68
69
|
|
|
69
|
-
Your task is complete once you have run the tests, written findings to the inbox file, and (if
|
|
70
|
+
Your task is complete once you have run the tests, written findings to the inbox file, and (if the task involved file changes) created and submitted a PR. Stop after writing findings.
|
|
70
71
|
|
|
71
72
|
Do NOT remove worktrees — the engine handles cleanup automatically.
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
# Verification: Fix silent state-loss bugs in dispatch persistence, lifecycle races, and checkpoint handling
|
|
2
|
-
|
|
3
|
-
**Plan:** minions-2026-04-01-5.json
|
|
4
|
-
**Date:** 2026-04-11
|
|
5
|
-
**Verified by:** Ripley
|
|
6
|
-
|
|
7
|
-
## Results Summary
|
|
8
|
-
|
|
9
|
-
| Item | PR | Verdict |
|
|
10
|
-
|------|-----|---------|
|
|
11
|
-
| P-b3c9e4f6: needs-human-review skip filter | PR-55 (merged) | PASS |
|
|
12
|
-
| P-f7a2d8e1: dispatch persistence gate | PR-57 (merged) | PASS |
|
|
13
|
-
| P-d5e1a7b3: TOCTOU races in lifecycle | PR-56 (merged) | PASS |
|
|
14
|
-
| P-a8f4c2d9: fan-out checkpoint handling | PR-58 (merged) | REGRESSION |
|
|
15
|
-
| P-e6b0d3a5: checkpoint cleanup + _pendingReason | PR-60 (merged) | REGRESSION |
|
|
16
|
-
| P-c1d7f9e8: resolveWiPath export | PR-59 (closed) | NOT MERGED |
|
|
17
|
-
|
|
18
|
-
**Tests:** 1463 passed, 0 failed, 2 skipped
|
|
19
|
-
|
|
20
|
-
## Regressions
|
|
21
|
-
|
|
22
|
-
Two items (P-a8f4c2d9, P-e6b0d3a5) were correctly merged but their changes were
|
|
23
|
-
subsequently lost during engine.js refactors that rewrote `discoverCentralWorkItems`
|
|
24
|
-
to use a mutations Map pattern. The original direct-item-mutation code was not carried
|
|
25
|
-
forward.
|
|
26
|
-
|
|
27
|
-
Affected features:
|
|
28
|
-
1. Fan-out checkpoint.json reading (engine.js:2484-2487 missing `worktreePath`)
|
|
29
|
-
2. Checkpoint file deletion after consumption (no `unlinkSync` calls remain)
|
|
30
|
-
3. `_pendingReason` clearing on fan-out/single-agent dispatch
|
|
31
|
-
|
|
32
|
-
See full report in `prd/guides/verify-minions-2026-04-01-5.md` (runtime, gitignored).
|