@mu-crew/mu 3.3.0 → 3.5.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.
Files changed (45) hide show
  1. package/README.md +45 -31
  2. package/dist/cli.js +812 -429
  3. package/dist/cli.js.map +1 -1
  4. package/dist/extension/mu-pi.js +221 -55
  5. package/dist/extension/mu-pi.js.map +1 -1
  6. package/dist/index.d.ts +33 -4
  7. package/dist/index.js +76 -5
  8. package/dist/index.js.map +1 -1
  9. package/docs/VISION.md +5 -1
  10. package/docs/VOCABULARY.md +4 -1
  11. package/docs/architecture/dag.md +3 -3
  12. package/docs/architecture/ops-log.md +26 -7
  13. package/docs/guide/cleanup.md +19 -0
  14. package/docs/guide/delegate.md +43 -4
  15. package/docs/reference/env.md +1 -0
  16. package/docs/reference/naming.md +18 -0
  17. package/docs/specs/2026-09-29-task-substates.md +1 -1
  18. package/package.json +1 -1
  19. package/prompts/mu-debug.md +8 -0
  20. package/prompts/mu-sweep.md +8 -0
  21. package/prompts/mu-until.md +8 -0
  22. package/prompts/ultrathink.md +2 -1
  23. package/skills/mu/SKILL.md +70 -31
  24. package/skills/mu/recipes/adversarial-review.md +27 -19
  25. package/skills/mu/recipes/{triage.md → backlog-triage.md} +9 -4
  26. package/skills/mu/recipes/codemode-driver.md +68 -20
  27. package/skills/mu/recipes/deep-research.md +23 -8
  28. package/skills/mu/recipes/fan-out.md +15 -11
  29. package/skills/mu/recipes/findings.md +103 -0
  30. package/skills/mu/recipes/hypothesis-panel.md +18 -13
  31. package/skills/mu/recipes/long-run.md +4 -4
  32. package/skills/mu/recipes/loop-until-done.md +7 -3
  33. package/skills/mu/recipes/orchestrator-loop.md +44 -27
  34. package/skills/mu/recipes/plan.md +8 -3
  35. package/skills/mu/recipes/recovery.md +5 -0
  36. package/skills/mu/recipes/refute.md +38 -36
  37. package/skills/mu/recipes/remote-workers.md +7 -2
  38. package/skills/mu/recipes/review-panel.md +36 -31
  39. package/skills/mu/recipes/rules-audit.md +30 -17
  40. package/skills/mu/recipes/tasks-or-calls.md +71 -0
  41. package/skills/mu/recipes/tournament.md +13 -10
  42. package/skills/mu/recipes/ultrathink.md +20 -11
  43. package/skills/mu/recipes/watcher.md +4 -1
  44. package/skills/mu/recipes/waves.md +6 -5
  45. package/skills/mu/recipes/worker.md +3 -1
package/README.md CHANGED
@@ -20,9 +20,9 @@ in-progress, and blocked tasks, the log tail, workspaces, and doctor.*
20
20
  socket inside each agent, so send, state, wait, and abort are exact,
21
21
  locally and over ssh. The pane stays pi's normal TUI.
22
22
 
23
- mu persists state and coordinates handoffs. It does not choose models,
24
- run your tests, or pass messages between agents. Every read path has
25
- `--json`, and every change goes through a typed CLI verb.
23
+ mu persists state and coordinates handoffs. Every read path has
24
+ `--json`, and every change goes through a typed CLI verb. See
25
+ [What mu is not](#what-mu-is-not).
26
26
 
27
27
  ## Install
28
28
 
@@ -71,24 +71,6 @@ For one helper, ask pi to delegate (`mu_delegate` ships with `mu link
71
71
  pi`), or spawn into the reserved `scratch` workstream:
72
72
  `mu agent spawn scout-1 -w scratch`.
73
73
 
74
- ## mu delegates vs hidden subagents
75
-
76
- Claude Code, Codex, and pi-subagents delegate to a hidden child process
77
- and return only its result. A mu delegate is an ordinary agent in a
78
- pane.
79
-
80
- | | Hidden subagent | mu delegate |
81
- | ----------------------- | ------------------------ | ----------- |
82
- | Visibility | none while it runs | a pane; attach and watch |
83
- | Steer mid-run | no | `mu agent send`; stop with `mu agent abort` |
84
- | Keep talking after it answers | no | yes, with `keep: true` |
85
- | Transcript | collapses into a result | a normal pi session log |
86
- | If the work grows | re-brief a new agent | same task DAG and workspaces |
87
- | Cost | light | one pane and one pi process |
88
-
89
- For many tiny calls, a hidden subagent is lighter. mu bets that seeing
90
- and steering agent work is worth a pane.
91
-
92
74
  ## Ultrathink, the mu way
93
75
 
94
76
  Long agent runs fail in two ways: the agent stops at 35 of 50 items and
@@ -98,19 +80,28 @@ agents, and have other agents try to refute each result before it
98
80
  counts. Claude Code's ultracode does this with a hidden script. mu does
99
81
  it in the open:
100
82
 
101
- - **The plan is the DAG.** Every unit, every review, and every round
83
+ - **The plan is the DAG.** Every unit, review gate, finding and round
102
84
  is a task before an agent spawns. `mu state` shows 35 of 50 done, so
103
85
  nobody can declare victory early.
104
- - **Reviews are tasks.** A `review_x` task is blocked by `x` and run by
105
- a fresh agent, ideally on another model, against criteria written
106
- up front. A rejection adds `fix_x` and a second review to the DAG
107
- instead of rewriting history.
86
+ - **Findings are tasks.** A reviewer records each problem as a task in
87
+ triage ([findings](skills/mu/recipes/findings.md)), and it blocks the
88
+ review until someone accepts it as work or closes it rejected or
89
+ duplicate. The graph holds the whole review.
90
+ - **Checks are calls.** Refuters, claim checkers and judges are
91
+ [delegate calls](skills/mu/recipes/tasks-or-calls.md): fresh agents,
92
+ ideally on another model, whose verdicts land on the task they
93
+ judged. A 50-unit run adds about 50 units, 50 review gates and the
94
+ findings that survive, not a task per check.
108
95
  - **Every agent is a pane.** Attach to any worker, reviewer, or judge
109
96
  mid-run and steer it.
110
97
  - **Nothing lives only in a context window.** Verdicts, evidence, and
111
98
  stop rules are task notes. The run survives compaction, crashes, and
112
99
  a new orchestrator.
113
100
 
101
+ Not every review needs a record. Reviewing someone's PR or a doc runs
102
+ as delegates only: findings come back in their answers, and nothing
103
+ lands in the ops log.
104
+
114
105
  Ask your orchestrator to *ultrathink* a job, and it follows
115
106
  [skills/mu/recipes/ultrathink.md](skills/mu/recipes/ultrathink.md).
116
107
  That recipe composes smaller ones you can also use on their own:
@@ -118,23 +109,46 @@ That recipe composes smaller ones you can also use on their own:
118
109
  | Recipe | Shape |
119
110
  | ------ | ----- |
120
111
  | [fan-out](skills/mu/recipes/fan-out.md) | one task per unit, merged as each closes |
121
- | [adversarial-review](skills/mu/recipes/adversarial-review.md) | a fresh agent tries to reject each unit before it ships |
122
- | [refute](skills/mu/recipes/refute.md) | finders, then one refuter per finding, then a report |
112
+ | [adversarial-review](skills/mu/recipes/adversarial-review.md) | a review gate per unit: a fresh agent tries to reject it before it ships |
113
+ | [refute](skills/mu/recipes/refute.md) | finders record findings, one refuter call per finding, report from the graph |
123
114
  | [hypothesis-panel](skills/mu/recipes/hypothesis-panel.md) | independent theories from separate evidence, each attacked |
124
115
  | [tournament](skills/mu/recipes/tournament.md) | competing attempts, judged in pairs |
125
116
  | [loop-until-done](skills/mu/recipes/loop-until-done.md) | rounds until a stop rule written up front holds |
126
- | [triage](skills/mu/recipes/triage.md) | quarantined readers classify, a trusted actor acts |
117
+ | [backlog-triage](skills/mu/recipes/backlog-triage.md) | quarantined readers classify, a trusted actor acts |
127
118
  | [deep-research](skills/mu/recipes/deep-research.md) | searchers by angle, one checker per claim, a cited report |
128
- | [review-panel](skills/mu/recipes/review-panel.md) | one reviewer per angle on a diff, refuted, then fixed or reported |
119
+ | [review-panel](skills/mu/recipes/review-panel.md) | one reviewer per angle on a diff; delegates by default, tasks when fixes follow |
129
120
  | [rules-audit](skills/mu/recipes/rules-audit.md) | one checker per AGENTS.md rule plus a skeptic; or mine repeated corrections into new rules |
130
121
 
131
122
  In pi, `mu link pi` adds them as commands: `/ultrathink <job>`,
132
123
  `/mu-research <question>`, `/mu-review [target]`, `/mu-refute <scope>`,
133
- `/mu-tournament <task>`, and `/mu-rules-audit [check <target> | mine]`.
124
+ `/mu-tournament <task>`, `/mu-rules-audit [check <target> | mine]`,
125
+ `/mu-debug <symptom>`, `/mu-sweep <change>`, and `/mu-until <stop rule>`.
134
126
 
135
127
  All recipes, including the orchestrator loop and remote workers, are
136
128
  in [skills/mu/recipes/](skills/mu/recipes/).
137
129
 
130
+ ## What mu is not
131
+
132
+ - **Not a hidden subagent.** Every agent, including a one-off
133
+ `mu_delegate` helper, is an ordinary agent in a pane: attach, steer,
134
+ abort, or keep talking to it. That costs a pane and a pi process per
135
+ agent; for many tiny calls a hidden subagent is lighter. See
136
+ [the comparison](docs/guide/delegate.md#delegates-vs-hidden-subagents).
137
+ - **Not a workflow engine.** No DSL, no hidden plan, no script runner.
138
+ The plan is the task DAG; recipes are instructions an agent follows,
139
+ and every step is a CLI verb.
140
+ - **Not a model router.** mu does not pick models, thinking levels, or
141
+ tools. Pass them in the spawn command (`--cli pi_big`).
142
+ - **Not a chat bus.** Agents coordinate through task notes, claims, and
143
+ the ops log, not messages to each other.
144
+ - **Not a daemon or a service.** No background process, config file, web
145
+ UI, or RPC. State is one SQLite file; sync rides on ordinary commands.
146
+ - **Not a test runner or a judge.** `--evidence` records what an agent
147
+ observed; checking it is the orchestrator's job, and the recipes say how.
148
+
149
+ The full list, with reasons: [VISION § What it is not](docs/VISION.md#what-it-is-not)
150
+ and [ROADMAP § Anti-feature pledges](docs/ROADMAP.md#anti-feature-pledges).
151
+
138
152
  ## Documentation
139
153
 
140
154
  - [Getting started](docs/guide/getting-started.md): the first