baro-ai 0.18.1 → 0.20.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/README.md CHANGED
@@ -124,21 +124,86 @@ Options:
124
124
  --resume Resume from existing prd.json (also runs dry-run plans)
125
125
  --skip-context Skip CLAUDE.md auto-generation
126
126
  --cwd <path> Working directory (default: current)
127
+ --with-critic Enable live Critic — reviews each agent turn
128
+ against acceptance criteria via `claude --model haiku`
129
+ and injects corrective feedback (default: off)
130
+ --critic-model <name> Model for the Critic (default: haiku)
131
+ --no-librarian Disable cross-agent runtime memory (default: on)
132
+ --no-sentry Disable file-touch conflict detector (default: on)
133
+ --with-surgeon Enable adaptive DAG: drop / replace failing stories
134
+ at level boundaries instead of stalling (default: off)
135
+ --surgeon-use-llm Use `claude --model …` for richer Surgeon replans
136
+ (default: deterministic skip-only)
137
+ --surgeon-model <name> Model for Surgeon when --surgeon-use-llm is on
138
+ (default: opus)
127
139
  -h, --help Print help
128
140
  ```
129
141
 
142
+ ### Phase 2/3/4 observers (Mozaik bus)
143
+
144
+ baro 0.19+ runs every story through a TypeScript Mozaik orchestrator.
145
+ Stories on the same DAG level run truly in parallel and observers can
146
+ react to one another's bus events:
147
+
148
+ - **Librarian** (default ON) — when one agent reads a file or runs grep,
149
+ later agents in the run see the digest in their prompt and skip the
150
+ redundant exploration. Measurable token savings on multi-story runs.
151
+ - **Sentry** (default ON) — flags overlapping Edit/Write tool calls
152
+ across concurrent stories.
153
+ - **Critic** (`--with-critic`, default OFF) — Haiku evaluator reviews
154
+ each agent turn against acceptance criteria; on a fail verdict, an
155
+ inline corrective message lands as the agent's next turn so it
156
+ self-corrects before commit.
157
+ - **Surgeon** (`--with-surgeon`, default OFF) — when a story fails its
158
+ retry budget, a ReplanItem is emitted on the bus and the Conductor
159
+ recomputes the DAG at the next level boundary. The simplest mode just
160
+ drops failing stories so dependents unblock; with `--surgeon-use-llm`
161
+ Opus proposes splits, prerequisite inserts, or dependency rewires.
162
+
130
163
  ## Requirements
131
164
 
132
165
  - [Claude CLI](https://docs.anthropic.com/en/docs/claude-cli) installed and authenticated
133
166
  - macOS (arm64/x64), Linux (x64/arm64), or Windows (x64)
134
- - Node.js 18+ (only if using `--planner openai`)
167
+ - **Node.js 20+** (orchestrator runtime)
135
168
  - `gh` CLI (optional, for automatic PR creation)
136
169
 
137
170
  > **Windows note:** Windows 10+ is required. For best TUI experience, use [Windows Terminal](https://aka.ms/terminal) or another modern terminal emulator.
138
171
 
139
172
  ## Architecture
140
173
 
141
- Rust binary distributed via npm. TUI built with ratatui, async execution with tokio, one Claude CLI process per story.
174
+ Rust binary distributed via npm. TUI built with ratatui, async execution
175
+ with tokio. Each `baro` invocation spawns the bundled TypeScript
176
+ [Mozaik](https://github.com/jigjoy-ai/mozaik) orchestrator as a
177
+ subprocess; the orchestrator owns story execution and emits typed
178
+ events into a shared `AgenticEnvironment` bus. Each story is one
179
+ `claude` CLI subprocess (auth inherits from your Claude CLI session —
180
+ no API key needed).
181
+
182
+ The orchestrator is itself a Mozaik agentic environment: there is no
183
+ imperative `run()` method, no top-level `Promise.all` loop. The
184
+ **Conductor** is a state machine that reacts to typed bus events
185
+ (`RunStartRequest` → `LevelComputeRequest` → `StorySpawnRequest` →
186
+ `StoryResult` → `LevelCompleted` → …). Spawning a story, evaluating a
187
+ turn, and replanning the DAG are all reactions, not steps in a loop.
188
+
189
+ Ten participants share that bus:
190
+
191
+ | Participant | Role |
192
+ | --------------- | ----------------------------------------------------------------- |
193
+ | `Conductor` | Orchestration state machine — drives the run by reacting |
194
+ | `StoryFactory` | Spawns Story Agents on each `StorySpawnRequest` |
195
+ | `StoryAgent` | Runs one story via Claude CLI, with retries and timeout |
196
+ | `Librarian` | Cross-agent memory — indexes outputs of exploration tools |
197
+ | `Sentry` | Flags overlapping file writes across concurrent stories |
198
+ | `Critic` | Per-turn acceptance-criteria evaluator (opt-in: `--with-critic`) |
199
+ | `Surgeon` | Emits DAG replans when a story fails terminally (opt-in: `--with-surgeon`) |
200
+ | `Operator` | Bridges external user commands (TUI, web UI) into bus events |
201
+ | `Auditor` | JSONL log of every event on the bus |
202
+ | `Cartographer` | Translates bus events into UI frames for the Rust TUI |
203
+
204
+ The bus is open. New participants — CI deployers, Slack notifiers,
205
+ external ticket triggers — are subscribers and emitters with no changes
206
+ to the orchestrator.
142
207
 
143
208
  ## License
144
209