bmalph 2.4.0 → 2.6.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 +93 -47
- package/dist/cli.js +17 -2
- package/dist/cli.js.map +1 -0
- package/dist/commands/check-updates.js +2 -17
- package/dist/commands/check-updates.js.map +1 -0
- package/dist/commands/doctor.js +6 -57
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/implement.js +6 -4
- package/dist/commands/implement.js.map +1 -0
- package/dist/commands/init.js +28 -47
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/reset.js +7 -10
- package/dist/commands/reset.js.map +1 -0
- package/dist/commands/run.js +46 -0
- package/dist/commands/run.js.map +1 -0
- package/dist/commands/status.js +18 -3
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/upgrade.js +7 -10
- package/dist/commands/upgrade.js.map +1 -0
- package/dist/commands/watch.js +19 -0
- package/dist/commands/watch.js.map +1 -0
- package/dist/installer.js +11 -38
- package/dist/installer.js.map +1 -0
- package/dist/platform/aider.js +7 -63
- package/dist/platform/aider.js.map +1 -0
- package/dist/platform/claude-code.js +5 -39
- package/dist/platform/claude-code.js.map +1 -0
- package/dist/platform/codex.js +7 -59
- package/dist/platform/codex.js.map +1 -0
- package/dist/platform/copilot.js +10 -65
- package/dist/platform/copilot.js.map +1 -0
- package/dist/platform/cursor.js +7 -63
- package/dist/platform/cursor.js.map +1 -0
- package/dist/platform/detect.js +2 -1
- package/dist/platform/detect.js.map +1 -0
- package/dist/platform/doctor-checks.js +61 -0
- package/dist/platform/doctor-checks.js.map +1 -0
- package/dist/platform/index.js +1 -0
- package/dist/platform/index.js.map +1 -0
- package/dist/platform/instructions-snippet.js +75 -0
- package/dist/platform/instructions-snippet.js.map +1 -0
- package/dist/platform/registry.js +7 -0
- package/dist/platform/registry.js.map +1 -0
- package/dist/platform/resolve.js +1 -0
- package/dist/platform/resolve.js.map +1 -0
- package/dist/platform/types.js +1 -0
- package/dist/platform/types.js.map +1 -0
- package/dist/platform/windsurf.js +7 -63
- package/dist/platform/windsurf.js.map +1 -0
- package/dist/reset.js +6 -20
- package/dist/reset.js.map +1 -0
- package/dist/run/ralph-process.js +89 -0
- package/dist/run/ralph-process.js.map +1 -0
- package/dist/run/run-dashboard.js +104 -0
- package/dist/run/run-dashboard.js.map +1 -0
- package/dist/run/types.js +2 -0
- package/dist/run/types.js.map +1 -0
- package/dist/transition/artifact-scan.js +3 -2
- package/dist/transition/artifact-scan.js.map +1 -0
- package/dist/transition/artifacts.js +2 -28
- package/dist/transition/artifacts.js.map +1 -0
- package/dist/transition/context.js +1 -0
- package/dist/transition/context.js.map +1 -0
- package/dist/transition/fix-plan.js +1 -0
- package/dist/transition/fix-plan.js.map +1 -0
- package/dist/transition/index.js +2 -1
- package/dist/transition/index.js.map +1 -0
- package/dist/transition/orchestration.js +3 -2
- package/dist/transition/orchestration.js.map +1 -0
- package/dist/transition/preflight.js +1 -0
- package/dist/transition/preflight.js.map +1 -0
- package/dist/transition/specs-changelog.js +3 -2
- package/dist/transition/specs-changelog.js.map +1 -0
- package/dist/transition/specs-index.js +3 -2
- package/dist/transition/specs-index.js.map +1 -0
- package/dist/transition/story-parsing.js +1 -0
- package/dist/transition/story-parsing.js.map +1 -0
- package/dist/transition/tech-stack.js +1 -0
- package/dist/transition/tech-stack.js.map +1 -0
- package/dist/transition/types.js +1 -0
- package/dist/transition/types.js.map +1 -0
- package/dist/utils/config.js +3 -2
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/constants.js +8 -49
- package/dist/utils/constants.js.map +1 -0
- package/dist/utils/dryrun.js +1 -20
- package/dist/utils/dryrun.js.map +1 -0
- package/dist/utils/errors.js +1 -19
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/file-system.js +34 -3
- package/dist/utils/file-system.js.map +1 -0
- package/dist/utils/github.js +21 -8
- package/dist/utils/github.js.map +1 -0
- package/dist/utils/json.js +2 -1
- package/dist/utils/json.js.map +1 -0
- package/dist/utils/logger.js +1 -14
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/state.js +3 -2
- package/dist/utils/state.js.map +1 -0
- package/dist/utils/validate.js +10 -1
- package/dist/utils/validate.js.map +1 -0
- package/dist/watch/dashboard.js +61 -0
- package/dist/watch/dashboard.js.map +1 -0
- package/dist/watch/file-watcher.js +30 -0
- package/dist/watch/file-watcher.js.map +1 -0
- package/dist/watch/renderer.js +242 -0
- package/dist/watch/renderer.js.map +1 -0
- package/dist/watch/state-reader.js +200 -0
- package/dist/watch/state-reader.js.map +1 -0
- package/dist/watch/types.js +2 -0
- package/dist/watch/types.js.map +1 -0
- package/package.json +11 -8
- package/ralph/drivers/copilot.sh +89 -0
- package/ralph/lib/circuit_breaker.sh +86 -59
- package/ralph/lib/enable_core.sh +3 -6
- package/ralph/lib/response_analyzer.sh +5 -29
- package/ralph/lib/task_sources.sh +45 -11
- package/ralph/lib/wizard_utils.sh +9 -0
- package/ralph/ralph_import.sh +7 -2
- package/ralph/ralph_loop.sh +29 -34
- package/ralph/ralph_monitor.sh +4 -0
- package/ralph/templates/ralphrc.template +1 -1
- package/slash-commands/bmalph-watch.md +22 -0
- package/dist/cli.d.ts +0 -1
- package/dist/commands/check-updates.d.ts +0 -5
- package/dist/commands/doctor.d.ts +0 -51
- package/dist/commands/implement.d.ts +0 -6
- package/dist/commands/init.d.ts +0 -9
- package/dist/commands/reset.d.ts +0 -7
- package/dist/commands/status.d.ts +0 -7
- package/dist/commands/upgrade.d.ts +0 -7
- package/dist/installer.d.ts +0 -39
- package/dist/platform/aider.d.ts +0 -2
- package/dist/platform/claude-code.d.ts +0 -2
- package/dist/platform/codex.d.ts +0 -2
- package/dist/platform/copilot.d.ts +0 -2
- package/dist/platform/cursor.d.ts +0 -2
- package/dist/platform/detect.d.ts +0 -7
- package/dist/platform/index.d.ts +0 -4
- package/dist/platform/registry.d.ts +0 -4
- package/dist/platform/resolve.d.ts +0 -8
- package/dist/platform/types.d.ts +0 -41
- package/dist/platform/windsurf.d.ts +0 -2
- package/dist/reset.d.ts +0 -18
- package/dist/transition/artifact-scan.d.ts +0 -27
- package/dist/transition/artifacts.d.ts +0 -3
- package/dist/transition/context.d.ts +0 -19
- package/dist/transition/fix-plan.d.ts +0 -21
- package/dist/transition/index.d.ts +0 -9
- package/dist/transition/orchestration.d.ts +0 -2
- package/dist/transition/preflight.d.ts +0 -6
- package/dist/transition/specs-changelog.d.ts +0 -3
- package/dist/transition/specs-index.d.ts +0 -22
- package/dist/transition/story-parsing.d.ts +0 -7
- package/dist/transition/tech-stack.d.ts +0 -3
- package/dist/transition/types.d.ts +0 -82
- package/dist/utils/config.d.ts +0 -13
- package/dist/utils/constants.d.ts +0 -70
- package/dist/utils/dryrun.d.ts +0 -7
- package/dist/utils/errors.d.ts +0 -63
- package/dist/utils/file-system.d.ts +0 -24
- package/dist/utils/github.d.ts +0 -83
- package/dist/utils/json.d.ts +0 -7
- package/dist/utils/logger.d.ts +0 -9
- package/dist/utils/state.d.ts +0 -26
- package/dist/utils/validate.d.ts +0 -44
package/README.md
CHANGED
|
@@ -26,19 +26,24 @@ bmalph provides:
|
|
|
26
26
|
- `bmalph upgrade` — Update to latest versions
|
|
27
27
|
- `bmalph doctor` — Check installation health
|
|
28
28
|
- `bmalph implement` — Transition from BMAD to Ralph
|
|
29
|
+
- `bmalph run` — Start Ralph loop with live dashboard
|
|
30
|
+
- `bmalph check-updates` — Check for upstream updates
|
|
31
|
+
- `bmalph status` — Show project status and phase
|
|
32
|
+
- `bmalph reset` — Remove all bmalph files
|
|
33
|
+
- ~~`bmalph watch`~~ — _(deprecated)_ Use `bmalph run` instead
|
|
29
34
|
|
|
30
35
|
## Supported Platforms
|
|
31
36
|
|
|
32
37
|
bmalph works with multiple AI coding assistants. Each platform gets BMAD planning (Phases 1-3). The Ralph autonomous loop (Phase 4) requires a CLI-based platform.
|
|
33
38
|
|
|
34
|
-
| Platform | ID | Tier
|
|
35
|
-
| -------------- | ------------- |
|
|
36
|
-
| Claude Code | `claude-code` | full
|
|
37
|
-
| OpenAI Codex | `codex` | full
|
|
38
|
-
| Cursor | `cursor` | instructions-only
|
|
39
|
-
| Windsurf | `windsurf` | instructions-only
|
|
40
|
-
| GitHub Copilot | `copilot` |
|
|
41
|
-
| Aider | `aider` | instructions-only
|
|
39
|
+
| Platform | ID | Tier | Instructions File | Commands |
|
|
40
|
+
| -------------- | ------------- | ------------------- | --------------------------------- | ----------------------------- |
|
|
41
|
+
| Claude Code | `claude-code` | full | `CLAUDE.md` | `.claude/commands/` directory |
|
|
42
|
+
| OpenAI Codex | `codex` | full | `AGENTS.md` | Inline in instructions file |
|
|
43
|
+
| Cursor | `cursor` | instructions-only | `.cursor/rules/bmad.mdc` | None |
|
|
44
|
+
| Windsurf | `windsurf` | instructions-only | `.windsurf/rules/bmad.md` | None |
|
|
45
|
+
| GitHub Copilot | `copilot` | full (experimental) | `.github/copilot-instructions.md` | None |
|
|
46
|
+
| Aider | `aider` | instructions-only | `CONVENTIONS.md` | None |
|
|
42
47
|
|
|
43
48
|
**Tiers:**
|
|
44
49
|
|
|
@@ -50,7 +55,7 @@ bmalph works with multiple AI coding assistants. Each platform gets BMAD plannin
|
|
|
50
55
|
- Node.js 20+
|
|
51
56
|
- Bash (WSL or Git Bash on Windows)
|
|
52
57
|
- A supported AI coding platform (see table above)
|
|
53
|
-
- For Ralph loop (Phase 4): Claude Code (`claude`)
|
|
58
|
+
- For Ralph loop (Phase 4): Claude Code (`claude`), Codex CLI (`codex`), or Copilot CLI (`copilot`) in PATH
|
|
54
59
|
|
|
55
60
|
## Installation
|
|
56
61
|
|
|
@@ -82,7 +87,7 @@ bmalph init
|
|
|
82
87
|
This installs:
|
|
83
88
|
|
|
84
89
|
- `_bmad/` — BMAD agents and workflows
|
|
85
|
-
- `.ralph/` — Ralph loop, libs, templates (drivers for claude-code and
|
|
90
|
+
- `.ralph/` — Ralph loop, libs, templates (drivers for claude-code, codex, and copilot)
|
|
86
91
|
- `bmalph/` — State management (config.json, stores selected platform)
|
|
87
92
|
- Updates the platform's instructions file with BMAD workflow instructions (e.g. `CLAUDE.md`, `AGENTS.md`, `.cursor/rules/bmad.mdc`)
|
|
88
93
|
- Installs slash commands for supported platforms (Claude Code: `.claude/commands/` directory; Codex: inline in `AGENTS.md`; other platforms: commands not installed)
|
|
@@ -153,7 +158,7 @@ Available in any phase for supporting tasks:
|
|
|
153
158
|
|
|
154
159
|
### Step 3: Implement with Ralph (Phase 4)
|
|
155
160
|
|
|
156
|
-
> **Note:** Ralph is only available on **full** tier platforms (Claude Code, OpenAI Codex). Instructions-only platforms (Cursor, Windsurf,
|
|
161
|
+
> **Note:** Ralph is only available on **full** tier platforms (Claude Code, OpenAI Codex, GitHub Copilot). Instructions-only platforms (Cursor, Windsurf, Aider) support Phases 1-3 only. GitHub Copilot support is experimental.
|
|
157
162
|
|
|
158
163
|
Run `bmalph implement` from the terminal, or use the `/bmalph-implement` slash command in Claude Code.
|
|
159
164
|
|
|
@@ -164,16 +169,14 @@ This transitions your BMAD artifacts into Ralph's format:
|
|
|
164
169
|
3. Copies specs to `.ralph/specs/` with changelog tracking
|
|
165
170
|
4. Instructs you to start the Ralph autonomous loop
|
|
166
171
|
|
|
167
|
-
Then start Ralph
|
|
172
|
+
Then start Ralph:
|
|
168
173
|
|
|
169
174
|
```bash
|
|
170
|
-
|
|
171
|
-
bash .ralph/drivers/claude-code.sh
|
|
172
|
-
|
|
173
|
-
# OpenAI Codex
|
|
174
|
-
bash .ralph/drivers/codex.sh
|
|
175
|
+
bmalph run
|
|
175
176
|
```
|
|
176
177
|
|
|
178
|
+
> **Advanced:** You can also run drivers directly with `bash .ralph/drivers/claude-code.sh`, `bash .ralph/drivers/codex.sh`, or `bash .ralph/drivers/copilot.sh`.
|
|
179
|
+
|
|
177
180
|
Ralph picks stories one by one, implements with TDD, and commits. The loop stops when all stories are done or the circuit breaker triggers.
|
|
178
181
|
|
|
179
182
|
### Incremental Development
|
|
@@ -203,6 +206,9 @@ BMAD (add Epic 2) → bmalph implement → Ralph sees changes + picks up Epic 2
|
|
|
203
206
|
| `bmalph check-updates` | Check if bundled BMAD/Ralph versions are up to date |
|
|
204
207
|
| `bmalph status` | Show current project status and phase |
|
|
205
208
|
| `bmalph implement` | Transition BMAD planning artifacts to Ralph format |
|
|
209
|
+
| `bmalph run` | Start Ralph loop with live dashboard |
|
|
210
|
+
| `bmalph reset` | Remove all bmalph files from the project |
|
|
211
|
+
| `bmalph watch` | _(deprecated)_ Use `bmalph run` instead |
|
|
206
212
|
|
|
207
213
|
### Global options
|
|
208
214
|
|
|
@@ -222,6 +228,7 @@ BMAD (add Epic 2) → bmalph implement → Ralph sees changes + picks up Epic 2
|
|
|
222
228
|
| `-n, --name <name>` | Project name | directory name |
|
|
223
229
|
| `-d, --description <desc>` | Project description | (prompted) |
|
|
224
230
|
| `--platform <id>` | Target platform (`claude-code`, `codex`, `cursor`, `windsurf`, `copilot`, `aider`) | auto-detect |
|
|
231
|
+
| `--dry-run` | Preview changes without writing files | |
|
|
225
232
|
|
|
226
233
|
### implement options
|
|
227
234
|
|
|
@@ -235,6 +242,12 @@ BMAD (add Epic 2) → bmalph implement → Ralph sees changes + picks up Epic 2
|
|
|
235
242
|
| -------- | -------------- |
|
|
236
243
|
| `--json` | Output as JSON |
|
|
237
244
|
|
|
245
|
+
### doctor options
|
|
246
|
+
|
|
247
|
+
| Flag | Description |
|
|
248
|
+
| -------- | -------------- |
|
|
249
|
+
| `--json` | Output as JSON |
|
|
250
|
+
|
|
238
251
|
### status options
|
|
239
252
|
|
|
240
253
|
| Flag | Description |
|
|
@@ -248,9 +261,32 @@ BMAD (add Epic 2) → bmalph implement → Ralph sees changes + picks up Epic 2
|
|
|
248
261
|
| `--force` | Skip confirmation prompts |
|
|
249
262
|
| `--dry-run` | Preview changes |
|
|
250
263
|
|
|
264
|
+
### reset options
|
|
265
|
+
|
|
266
|
+
| Flag | Description |
|
|
267
|
+
| ----------- | ------------------------ |
|
|
268
|
+
| `--dry-run` | Preview changes |
|
|
269
|
+
| `--force` | Skip confirmation prompt |
|
|
270
|
+
|
|
271
|
+
### run options
|
|
272
|
+
|
|
273
|
+
| Flag | Description |
|
|
274
|
+
| --------------------- | ---------------------------------------------------------- |
|
|
275
|
+
| `--driver <platform>` | Override platform driver (claude-code, codex, copilot) |
|
|
276
|
+
| `--interval <ms>` | Dashboard refresh interval in milliseconds (default: 2000) |
|
|
277
|
+
| `--no-dashboard` | Run Ralph without the dashboard overlay |
|
|
278
|
+
|
|
279
|
+
### watch options
|
|
280
|
+
|
|
281
|
+
> **Deprecated:** Use `bmalph run` instead. The `watch` command will be removed in a future release.
|
|
282
|
+
|
|
283
|
+
| Flag | Description |
|
|
284
|
+
| ----------------- | ------------------------------------------------ |
|
|
285
|
+
| `--interval <ms>` | Refresh interval in milliseconds (default: 2000) |
|
|
286
|
+
|
|
251
287
|
## Slash Commands
|
|
252
288
|
|
|
253
|
-
bmalph installs
|
|
289
|
+
bmalph installs 51 slash commands (45 BMAD + 6 bmalph). Command delivery varies by platform:
|
|
254
290
|
|
|
255
291
|
- **Claude Code** — installed as files in `.claude/commands/` (invoke with `/command-name`)
|
|
256
292
|
- **OpenAI Codex** — inlined in `AGENTS.md` (reference agents by name)
|
|
@@ -308,7 +344,7 @@ project/
|
|
|
308
344
|
│ ├── planning-artifacts/ # PRD, architecture, stories
|
|
309
345
|
│ ├── implementation-artifacts/ # Sprint plans (optional)
|
|
310
346
|
│ └── brainstorming/ # Brainstorm sessions (optional)
|
|
311
|
-
├── .ralph/ # Ralph autonomous loop (drivers for claude-code and
|
|
347
|
+
├── .ralph/ # Ralph autonomous loop (drivers for claude-code, codex, and copilot)
|
|
312
348
|
│ ├── ralph_loop.sh # Main loop script
|
|
313
349
|
│ ├── ralph_import.sh # Import requirements into Ralph
|
|
314
350
|
│ ├── ralph_monitor.sh # Monitor loop progress
|
|
@@ -316,7 +352,8 @@ project/
|
|
|
316
352
|
│ ├── RALPH-REFERENCE.md # Ralph usage reference
|
|
317
353
|
│ ├── drivers/ # Platform driver scripts
|
|
318
354
|
│ │ ├── claude-code.sh # Claude Code driver (uses `claude`)
|
|
319
|
-
│ │
|
|
355
|
+
│ │ ├── codex.sh # OpenAI Codex driver (uses `codex exec`)
|
|
356
|
+
│ │ └── copilot.sh # GitHub Copilot driver (uses `copilot`, experimental)
|
|
320
357
|
│ ├── lib/ # Shell libraries
|
|
321
358
|
│ ├── docs/generated/ # Generated documentation
|
|
322
359
|
│ ├── specs/ # Copied from _bmad-output during transition
|
|
@@ -343,6 +380,7 @@ Ralph is a bash loop that spawns fresh AI coding sessions using a **platform dri
|
|
|
343
380
|
|
|
344
381
|
- **Claude Code driver** — invokes `claude` with `--allowedTools` and session resume
|
|
345
382
|
- **Codex driver** — invokes `codex exec` with `--sandbox workspace-write`
|
|
383
|
+
- **Copilot driver** _(experimental)_ — invokes `copilot --autopilot --yolo` with plain-text output
|
|
346
384
|
|
|
347
385
|
Each iteration:
|
|
348
386
|
|
|
@@ -357,7 +395,7 @@ Safety mechanisms:
|
|
|
357
395
|
- **Response analyzer** — detects stuck or repeating outputs
|
|
358
396
|
- **Completion** — loop exits when all `@fix_plan.md` items are checked off
|
|
359
397
|
|
|
360
|
-
Press `Ctrl+C` to stop the loop at any time.
|
|
398
|
+
Run `bmalph run` to start the loop with a live dashboard, or `bmalph run --no-dashboard` for headless mode. Press `Ctrl+C` to stop the loop at any time.
|
|
361
399
|
|
|
362
400
|
## Troubleshooting
|
|
363
401
|
|
|
@@ -394,36 +432,44 @@ ls -la .ralph/
|
|
|
394
432
|
|
|
395
433
|
### Common Issues
|
|
396
434
|
|
|
397
|
-
| Scenario | Solution
|
|
398
|
-
| ----------------------------- |
|
|
399
|
-
| Commands fail before init | Run `bmalph init` first
|
|
400
|
-
| Transition finds no stories | Create stories in Phase 3 with `/create-epics-stories`
|
|
401
|
-
| Ralph stops mid-loop | Circuit breaker detected stagnation. Check `.ralph/logs/`
|
|
402
|
-
| Doctor reports version drift | Run `bmalph upgrade` to update bundled assets
|
|
403
|
-
| Wrong platform detected | Re-run `bmalph init --platform <id>` with the correct platform
|
|
404
|
-
| Ralph unavailable on platform | Ralph requires a full tier platform (claude-code or
|
|
435
|
+
| Scenario | Solution |
|
|
436
|
+
| ----------------------------- | -------------------------------------------------------------------- |
|
|
437
|
+
| Commands fail before init | Run `bmalph init` first |
|
|
438
|
+
| Transition finds no stories | Create stories in Phase 3 with `/create-epics-stories` |
|
|
439
|
+
| Ralph stops mid-loop | Circuit breaker detected stagnation. Check `.ralph/logs/` |
|
|
440
|
+
| Doctor reports version drift | Run `bmalph upgrade` to update bundled assets |
|
|
441
|
+
| Wrong platform detected | Re-run `bmalph init --platform <id>` with the correct platform |
|
|
442
|
+
| Ralph unavailable on platform | Ralph requires a full tier platform (claude-code, codex, or copilot) |
|
|
405
443
|
|
|
406
444
|
### Reset Installation
|
|
407
445
|
|
|
408
|
-
|
|
446
|
+
The simplest way to remove all bmalph files:
|
|
409
447
|
|
|
410
448
|
```bash
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
# Reinitialize
|
|
424
|
-
bmalph init
|
|
449
|
+
bmalph reset
|
|
450
|
+
```
|
|
451
|
+
|
|
452
|
+
Use `--dry-run` to preview what will be removed, or `--force` to skip confirmation.
|
|
453
|
+
|
|
454
|
+
#### Manual removal
|
|
455
|
+
|
|
456
|
+
If the CLI is unavailable, remove these directories and files manually:
|
|
457
|
+
|
|
458
|
+
```bash
|
|
459
|
+
rm -rf _bmad/ .ralph/ bmalph/
|
|
425
460
|
```
|
|
426
461
|
|
|
462
|
+
Then remove the bmalph-managed sections from your instructions file. The file depends on your platform:
|
|
463
|
+
|
|
464
|
+
- **Claude Code** — remove `.claude/commands/` and bmalph section from `CLAUDE.md`
|
|
465
|
+
- **Codex** — remove bmalph sections from `AGENTS.md`
|
|
466
|
+
- **Cursor** — remove `.cursor/rules/bmad.mdc`
|
|
467
|
+
- **Windsurf** — remove `.windsurf/rules/bmad.md`
|
|
468
|
+
- **Copilot** — remove bmalph sections from `.github/copilot-instructions.md`
|
|
469
|
+
- **Aider** — remove bmalph sections from `CONVENTIONS.md`
|
|
470
|
+
|
|
471
|
+
See the [Supported Platforms](#supported-platforms) table for details. After manual removal, run `bmalph init` to reinitialize.
|
|
472
|
+
|
|
427
473
|
## Quick Examples
|
|
428
474
|
|
|
429
475
|
### Initialize a new project
|
|
@@ -484,7 +530,7 @@ claude
|
|
|
484
530
|
# Run: bmalph implement
|
|
485
531
|
|
|
486
532
|
# 5. Start autonomous implementation
|
|
487
|
-
|
|
533
|
+
bmalph run
|
|
488
534
|
```
|
|
489
535
|
|
|
490
536
|
**Other platforms:**
|
|
@@ -498,9 +544,9 @@ bash .ralph/drivers/claude-code.sh
|
|
|
498
544
|
# 3. Reference BMAD agents by name (analyst, pm, architect)
|
|
499
545
|
# Follow phases: Analysis → Planning → Solutioning
|
|
500
546
|
|
|
501
|
-
# 4. For full tier platforms (Codex), transition to Ralph:
|
|
547
|
+
# 4. For full tier platforms (Codex, Copilot), transition to Ralph:
|
|
502
548
|
# Run: bmalph implement
|
|
503
|
-
|
|
549
|
+
# Then: bmalph run
|
|
504
550
|
```
|
|
505
551
|
|
|
506
552
|
## Contributing
|
package/dist/cli.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { resolve } from "path";
|
|
2
|
-
import { stat } from "fs/promises";
|
|
1
|
+
import { resolve } from "node:path";
|
|
2
|
+
import { stat } from "node:fs/promises";
|
|
3
3
|
import { Command } from "commander";
|
|
4
4
|
import { initCommand } from "./commands/init.js";
|
|
5
5
|
import { upgradeCommand } from "./commands/upgrade.js";
|
|
@@ -8,6 +8,8 @@ import { checkUpdatesCommand } from "./commands/check-updates.js";
|
|
|
8
8
|
import { statusCommand } from "./commands/status.js";
|
|
9
9
|
import { implementCommand } from "./commands/implement.js";
|
|
10
10
|
import { resetCommand } from "./commands/reset.js";
|
|
11
|
+
import { watchCommand } from "./commands/watch.js";
|
|
12
|
+
import { runCommand } from "./commands/run.js";
|
|
11
13
|
import { setVerbose, setQuiet } from "./utils/logger.js";
|
|
12
14
|
import { getPackageVersion } from "./installer.js";
|
|
13
15
|
import { isEnoent } from "./utils/errors.js";
|
|
@@ -92,4 +94,17 @@ program
|
|
|
92
94
|
.option("--dry-run", "Preview changes without removing files")
|
|
93
95
|
.option("--force", "Skip confirmation prompt")
|
|
94
96
|
.action(async (opts) => resetCommand({ ...opts, projectDir: await resolveAndValidateProjectDir() }));
|
|
97
|
+
program
|
|
98
|
+
.command("watch")
|
|
99
|
+
.description("[deprecated] Use 'bmalph run' instead")
|
|
100
|
+
.option("--interval <ms>", "Refresh interval in milliseconds (default: 2000)")
|
|
101
|
+
.action(async (opts) => watchCommand({ ...opts, projectDir: await resolveAndValidateProjectDir() }));
|
|
102
|
+
program
|
|
103
|
+
.command("run")
|
|
104
|
+
.description("Start Ralph loop with live dashboard")
|
|
105
|
+
.option("--driver <platform>", "Override platform driver (claude-code, codex, copilot)")
|
|
106
|
+
.option("--interval <ms>", "Dashboard refresh interval in milliseconds (default: 2000)")
|
|
107
|
+
.option("--no-dashboard", "Run Ralph without the dashboard overlay")
|
|
108
|
+
.action(async (opts) => runCommand({ ...opts, projectDir: await resolveAndValidateProjectDir() }));
|
|
95
109
|
void program.parseAsync();
|
|
110
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import chalk from "chalk";
|
|
2
2
|
import { getBundledVersions } from "../installer.js";
|
|
3
|
-
import { checkUpstream } from "../utils/github.js";
|
|
3
|
+
import { checkUpstream, getErrorReason, } from "../utils/github.js";
|
|
4
4
|
import { withErrorHandling } from "../utils/errors.js";
|
|
5
5
|
export async function checkUpdatesCommand(options = {}) {
|
|
6
6
|
await withErrorHandling(() => runCheckUpdates(options));
|
|
@@ -45,19 +45,4 @@ async function runCheckUpdates(options) {
|
|
|
45
45
|
console.log(chalk.yellow("Updates available."));
|
|
46
46
|
}
|
|
47
47
|
}
|
|
48
|
-
|
|
49
|
-
switch (error.type) {
|
|
50
|
-
case "network":
|
|
51
|
-
return "network error";
|
|
52
|
-
case "timeout":
|
|
53
|
-
return "request timed out";
|
|
54
|
-
case "rate-limit":
|
|
55
|
-
return "rate limited";
|
|
56
|
-
case "not-found":
|
|
57
|
-
return "repository not found";
|
|
58
|
-
case "api-error":
|
|
59
|
-
return `API error (${error.status || "unknown"})`;
|
|
60
|
-
default:
|
|
61
|
-
return "unknown error";
|
|
62
|
-
}
|
|
63
|
-
}
|
|
48
|
+
//# sourceMappingURL=check-updates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check-updates.js","sourceRoot":"","sources":["../../src/commands/check-updates.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/doctor.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import chalk from "chalk";
|
|
2
|
-
import { readFile, stat } from "fs/promises";
|
|
3
|
-
import {
|
|
4
|
-
import { join } from "path";
|
|
2
|
+
import { readFile, stat } from "node:fs/promises";
|
|
3
|
+
import { join } from "node:path";
|
|
5
4
|
import { readJsonFile } from "../utils/json.js";
|
|
6
5
|
import { readConfig } from "../utils/config.js";
|
|
6
|
+
import { parseGitignoreLines } from "../utils/file-system.js";
|
|
7
7
|
import { getBundledVersions } from "../installer.js";
|
|
8
8
|
import { checkUpstream, getSkipReason } from "../utils/github.js";
|
|
9
9
|
import { isEnoent, formatError, withErrorHandling } from "../utils/errors.js";
|
|
@@ -65,7 +65,7 @@ export async function runDoctor(options) {
|
|
|
65
65
|
return { passed, failed };
|
|
66
66
|
}
|
|
67
67
|
async function checkCommandAvailable(command) {
|
|
68
|
-
const { execSync } = await import("child_process");
|
|
68
|
+
const { execSync } = await import("node:child_process");
|
|
69
69
|
try {
|
|
70
70
|
const cmd = process.platform === "win32" ? `where ${command}` : `which ${command}`;
|
|
71
71
|
execSync(cmd, { stdio: "ignore" });
|
|
@@ -169,11 +169,7 @@ async function checkGitignore(projectDir) {
|
|
|
169
169
|
const required = [".ralph/logs/", "_bmad-output/"];
|
|
170
170
|
try {
|
|
171
171
|
const content = await readFile(join(projectDir, ".gitignore"), "utf-8");
|
|
172
|
-
|
|
173
|
-
const existingLines = new Set(content
|
|
174
|
-
.split(/\r?\n/)
|
|
175
|
-
.map((line) => line.trim())
|
|
176
|
-
.filter(Boolean));
|
|
172
|
+
const existingLines = parseGitignoreLines(content);
|
|
177
173
|
const missing = required.filter((e) => !existingLines.has(e));
|
|
178
174
|
if (missing.length === 0) {
|
|
179
175
|
return { label, passed: true };
|
|
@@ -451,51 +447,4 @@ export function buildCheckRegistry(platform) {
|
|
|
451
447
|
}));
|
|
452
448
|
return [...CORE_CHECKS, ...platformChecks, ...TRAILING_CHECKS];
|
|
453
449
|
}
|
|
454
|
-
|
|
455
|
-
* Static registry for backward compatibility with existing tests.
|
|
456
|
-
* Uses claude-code platform checks (slash-command + claude-md).
|
|
457
|
-
*
|
|
458
|
-
* Note: The check ids here ("slash-command", "claude-md") intentionally differ
|
|
459
|
-
* from the live buildCheckRegistry path which uses platform-provided ids
|
|
460
|
-
* ("instructions-file"). This is for test backward compatibility only.
|
|
461
|
-
*
|
|
462
|
-
* @deprecated Use `buildCheckRegistry(platform)` for platform-aware checks.
|
|
463
|
-
*/
|
|
464
|
-
export const CHECK_REGISTRY = (() => {
|
|
465
|
-
// Inline claude-code platform checks to avoid async import at module level
|
|
466
|
-
const slashCommandCheck = {
|
|
467
|
-
id: "slash-command",
|
|
468
|
-
run: async (projectDir) => {
|
|
469
|
-
if (await exists(join(projectDir, ".claude/commands/bmalph.md"))) {
|
|
470
|
-
return { label: ".claude/commands/bmalph.md present", passed: true };
|
|
471
|
-
}
|
|
472
|
-
return {
|
|
473
|
-
label: ".claude/commands/bmalph.md present",
|
|
474
|
-
passed: false,
|
|
475
|
-
detail: "not found",
|
|
476
|
-
hint: "Run: bmalph init",
|
|
477
|
-
};
|
|
478
|
-
},
|
|
479
|
-
};
|
|
480
|
-
const claudeMdCheck = {
|
|
481
|
-
id: "claude-md",
|
|
482
|
-
run: async (projectDir) => {
|
|
483
|
-
const label = "CLAUDE.md contains BMAD snippet";
|
|
484
|
-
const hint = "Run: bmalph init";
|
|
485
|
-
try {
|
|
486
|
-
const content = await readFile(join(projectDir, "CLAUDE.md"), "utf-8");
|
|
487
|
-
if (content.includes("BMAD-METHOD Integration")) {
|
|
488
|
-
return { label, passed: true };
|
|
489
|
-
}
|
|
490
|
-
return { label, passed: false, detail: "missing BMAD-METHOD Integration section", hint };
|
|
491
|
-
}
|
|
492
|
-
catch (err) {
|
|
493
|
-
if (isEnoent(err)) {
|
|
494
|
-
return { label, passed: false, detail: "CLAUDE.md not found", hint };
|
|
495
|
-
}
|
|
496
|
-
return { label, passed: false, detail: `error: ${formatError(err)}`, hint };
|
|
497
|
-
}
|
|
498
|
-
},
|
|
499
|
-
};
|
|
500
|
-
return [...CORE_CHECKS, slashCommandCheck, claudeMdCheck, ...TRAILING_CHECKS];
|
|
501
|
-
})();
|
|
450
|
+
//# sourceMappingURL=doctor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import chalk from "chalk";
|
|
2
|
-
import { access } from "fs/promises";
|
|
3
|
-
import { join } from "path";
|
|
2
|
+
import { access } from "node:fs/promises";
|
|
3
|
+
import { join } from "node:path";
|
|
4
4
|
import { runTransition } from "../transition/orchestration.js";
|
|
5
5
|
import { withErrorHandling } from "../utils/errors.js";
|
|
6
6
|
import { resolveProjectPlatform } from "../platform/resolve.js";
|
|
7
|
+
import { getFullTierPlatformNames } from "../platform/registry.js";
|
|
7
8
|
export async function implementCommand(options) {
|
|
8
9
|
await withErrorHandling(() => runImplement(options));
|
|
9
10
|
}
|
|
@@ -63,10 +64,10 @@ async function runImplement(options) {
|
|
|
63
64
|
console.log("");
|
|
64
65
|
if (platform.tier === "full") {
|
|
65
66
|
console.log(`Start the Ralph loop:\n`);
|
|
66
|
-
console.log(`
|
|
67
|
+
console.log(` bmalph run`);
|
|
67
68
|
}
|
|
68
69
|
else {
|
|
69
|
-
console.log(`Ralph requires a full-tier platform (
|
|
70
|
+
console.log(`Ralph requires a full-tier platform (${getFullTierPlatformNames()}). ` +
|
|
70
71
|
`Current platform: ${platform.displayName}`);
|
|
71
72
|
}
|
|
72
73
|
}
|
|
@@ -80,3 +81,4 @@ function severityIcon(issue) {
|
|
|
80
81
|
return chalk.dim("i");
|
|
81
82
|
}
|
|
82
83
|
}
|
|
84
|
+
//# sourceMappingURL=implement.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"implement.js","sourceRoot":"","sources":["../../src/commands/implement.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/init.js
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import chalk from "chalk";
|
|
2
|
-
import
|
|
2
|
+
import { select, input } from "@inquirer/prompts";
|
|
3
3
|
import { writeConfig } from "../utils/config.js";
|
|
4
|
-
import { installProject, mergeInstructionsFile, isInitialized,
|
|
4
|
+
import { installProject, mergeInstructionsFile, isInitialized, previewInstall, getBundledVersions, } from "../installer.js";
|
|
5
5
|
import { formatDryRunSummary } from "../utils/dryrun.js";
|
|
6
6
|
import { validateProjectName } from "../utils/validate.js";
|
|
7
7
|
import { withErrorHandling } from "../utils/errors.js";
|
|
8
|
-
import {
|
|
8
|
+
import { exists } from "../utils/file-system.js";
|
|
9
|
+
import { join } from "node:path";
|
|
10
|
+
import { isPlatformId, getPlatform, getAllPlatforms } from "../platform/registry.js";
|
|
9
11
|
import { detectPlatform } from "../platform/detect.js";
|
|
10
12
|
export async function initCommand(options) {
|
|
11
13
|
await withErrorHandling(() => runInit(options));
|
|
@@ -33,23 +35,15 @@ async function resolvePlatform(projectDir, explicit) {
|
|
|
33
35
|
}
|
|
34
36
|
// 3. Interactive prompt if multiple candidates or none detected
|
|
35
37
|
if (process.stdin.isTTY) {
|
|
36
|
-
const choices =
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
{
|
|
46
|
-
type: "list",
|
|
47
|
-
name: "platformId",
|
|
48
|
-
message: "Which platform are you using?",
|
|
49
|
-
choices,
|
|
50
|
-
default: detection.candidates[0] ?? "claude-code",
|
|
51
|
-
},
|
|
52
|
-
]);
|
|
38
|
+
const choices = getAllPlatforms().map((p) => ({
|
|
39
|
+
name: p.experimental ? `${p.displayName} (experimental)` : p.displayName,
|
|
40
|
+
value: p.id,
|
|
41
|
+
}));
|
|
42
|
+
const platformId = await select({
|
|
43
|
+
message: "Which platform are you using?",
|
|
44
|
+
choices,
|
|
45
|
+
default: detection.candidates[0] ?? "claude-code",
|
|
46
|
+
});
|
|
53
47
|
return getPlatform(platformId);
|
|
54
48
|
}
|
|
55
49
|
// 4. Non-interactive default
|
|
@@ -62,7 +56,7 @@ async function runInit(options) {
|
|
|
62
56
|
console.log("Use 'bmalph upgrade' to update bundled assets to the latest version.");
|
|
63
57
|
return;
|
|
64
58
|
}
|
|
65
|
-
if (await
|
|
59
|
+
if (await exists(join(projectDir, "_bmad"))) {
|
|
66
60
|
console.log(chalk.cyan("Existing BMAD installation detected."));
|
|
67
61
|
console.log("Framework files in _bmad/ will be replaced with the managed version.");
|
|
68
62
|
console.log("Planning artifacts in _bmad-output/ will not be modified.\n");
|
|
@@ -89,29 +83,12 @@ async function runInit(options) {
|
|
|
89
83
|
// Derive default name from directory, with fallback for edge cases
|
|
90
84
|
const dirName = projectDir.split(/[/\\]/).pop();
|
|
91
85
|
const defaultName = dirName && dirName.trim() ? dirName : "my-project";
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
name: "name",
|
|
99
|
-
message: "Project name:",
|
|
100
|
-
default: defaultName,
|
|
101
|
-
},
|
|
102
|
-
]),
|
|
103
|
-
...(description
|
|
104
|
-
? []
|
|
105
|
-
: [
|
|
106
|
-
{
|
|
107
|
-
type: "input",
|
|
108
|
-
name: "description",
|
|
109
|
-
message: "Project description:",
|
|
110
|
-
},
|
|
111
|
-
]),
|
|
112
|
-
]);
|
|
113
|
-
name = name ?? answers.name;
|
|
114
|
-
description = description ?? answers.description;
|
|
86
|
+
if (!name) {
|
|
87
|
+
name = await input({ message: "Project name:", default: defaultName });
|
|
88
|
+
}
|
|
89
|
+
if (!description) {
|
|
90
|
+
description = await input({ message: "Project description:" });
|
|
91
|
+
}
|
|
115
92
|
}
|
|
116
93
|
// Validate project name (filesystem safety, reserved names, etc.)
|
|
117
94
|
if (!name) {
|
|
@@ -138,7 +115,10 @@ async function runInit(options) {
|
|
|
138
115
|
}
|
|
139
116
|
console.log(chalk.green("\nbmalph initialized successfully!"));
|
|
140
117
|
console.log(`\n Project: ${chalk.bold(config.name)}`);
|
|
141
|
-
|
|
118
|
+
const platformLabel = platform.experimental
|
|
119
|
+
? `${platform.displayName} (experimental)`
|
|
120
|
+
: platform.displayName;
|
|
121
|
+
console.log(` Platform: ${chalk.bold(platformLabel)}`);
|
|
142
122
|
console.log(`\nInstalled:`);
|
|
143
123
|
console.log(` _bmad/ BMAD agents and workflows`);
|
|
144
124
|
console.log(` .ralph/ Ralph loop and templates`);
|
|
@@ -151,10 +131,11 @@ async function runInit(options) {
|
|
|
151
131
|
if (platform.id === "claude-code") {
|
|
152
132
|
console.log(` Use ${chalk.cyan("/bmalph")} in Claude Code to see your current phase and commands.`);
|
|
153
133
|
}
|
|
154
|
-
else if (platform.
|
|
155
|
-
console.log(` Ask
|
|
134
|
+
else if (platform.tier === "full") {
|
|
135
|
+
console.log(` Ask ${platform.displayName} to ${chalk.cyan("run the BMAD master agent")} to navigate phases.`);
|
|
156
136
|
}
|
|
157
137
|
else {
|
|
158
138
|
console.log(` Ask your AI assistant to ${chalk.cyan("use the BMAD agents")} defined in ${chalk.cyan(platform.instructionsFile)}.`);
|
|
159
139
|
}
|
|
160
140
|
}
|
|
141
|
+
//# sourceMappingURL=init.js.map
|