@hyperdrive.bot/bmad-workflow 1.0.23 → 1.0.25
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
|
@@ -78,13 +78,22 @@ The BMAD Workflow CLI provides **five core capabilities** for AI-assisted develo
|
|
|
78
78
|
|
|
79
79
|
---
|
|
80
80
|
|
|
81
|
+
## Channel Transport
|
|
82
|
+
|
|
83
|
+
Channel transport is an opt-in alternative to subprocess-based agent execution. When enabled via `--use-channels`, the pipeline discovers running Claude Code sessions with Channel support and dispatches task envelopes to them over HTTP. This preserves agent context across multiple invocations (no cold-start overhead) and enables persistent, long-lived agent sessions that accumulate project knowledge throughout a pipeline run. Channel agents must be pre-started before the pipeline runs — the orchestrator does not auto-start them.
|
|
84
|
+
|
|
85
|
+
[Full documentation](docs/CHANNEL-INTEGRATION.md)
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
81
89
|
## Installation
|
|
82
90
|
|
|
83
91
|
### Prerequisites
|
|
84
92
|
|
|
85
93
|
- **Node.js 20+** - [Download](https://nodejs.org/)
|
|
86
94
|
- **Claude CLI** - [Install](https://docs.anthropic.com/claude/docs/claude-cli) and run `claude auth login`
|
|
87
|
-
|
|
95
|
+
|
|
96
|
+
> **No BMAD setup required.** The CLI ships with bundled agents, templates, and config. Just `init` and go — it works self-contained in any empty project directory with only a PRD file.
|
|
88
97
|
|
|
89
98
|
### Install
|
|
90
99
|
|
|
@@ -103,6 +112,19 @@ bmad-workflow --help
|
|
|
103
112
|
|
|
104
113
|
## Quick Start
|
|
105
114
|
|
|
115
|
+
### Zero to Code in 2 Commands
|
|
116
|
+
|
|
117
|
+
The CLI works fully self-contained — no BMAD repo setup, no `_bmad/` directory, no config files. Just a PRD file:
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
mkdir my-project && cd my-project && git init
|
|
121
|
+
bmad-workflow workflow PRD-my-feature.md
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
That's it. Bundled agents, templates, and defaults kick in automatically. Output directories are created on the fly.
|
|
125
|
+
|
|
126
|
+
This was validated with an isolation test: empty git repo + single PRD file → 3 epics, 9 stories, full working React app with tests — zero external dependencies.
|
|
127
|
+
|
|
106
128
|
### 1. Full Pipeline (PRD → Code)
|
|
107
129
|
|
|
108
130
|
```bash
|
|
@@ -249,11 +249,11 @@ export class PathResolver {
|
|
|
249
249
|
const doneStoryDir = resolve(this.projectRoot, 'docs/done/stories');
|
|
250
250
|
// Resolve PRD file
|
|
251
251
|
const prdFile = resolve(this.projectRoot, config.prd?.prdFile || 'docs/prd.md');
|
|
252
|
-
//
|
|
253
|
-
this.
|
|
254
|
-
this.
|
|
255
|
-
this.
|
|
256
|
-
// Note: doneStoryDir is optional, don't
|
|
252
|
+
// Ensure output directories exist (auto-create for self-contained usage)
|
|
253
|
+
this.ensureDirectorySync(storyDir, 'story directory');
|
|
254
|
+
this.ensureDirectorySync(epicDir, 'epic directory');
|
|
255
|
+
this.ensureDirectorySync(qaStoryDir, 'QA story directory');
|
|
256
|
+
// Note: doneStoryDir is optional, don't create it eagerly
|
|
257
257
|
// Stories may not have been moved to done yet
|
|
258
258
|
this.cachedPaths = {
|
|
259
259
|
doneStoryDir,
|
|
@@ -399,6 +399,13 @@ export class PathResolver {
|
|
|
399
399
|
* @param name - Human-readable directory name for error messages
|
|
400
400
|
* @throws {FileSystemError} If directory does not exist
|
|
401
401
|
*/
|
|
402
|
+
ensureDirectorySync(dirPath, name) {
|
|
403
|
+
this.logger.debug('Ensuring directory exists: %s (%s)', dirPath, name);
|
|
404
|
+
if (!fs.existsSync(dirPath)) {
|
|
405
|
+
this.logger.info('Auto-creating %s: %s', name, dirPath);
|
|
406
|
+
fs.mkdirSync(dirPath, { recursive: true });
|
|
407
|
+
}
|
|
408
|
+
}
|
|
402
409
|
validateDirectorySync(dirPath, name) {
|
|
403
410
|
this.logger.debug('Validating directory: %s (%s)', dirPath, name);
|
|
404
411
|
try {
|
package/package.json
CHANGED