@hyperdrive.bot/bmad-workflow 1.0.17 → 1.0.19
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/dist/commands/config/show.js +8 -2
- package/dist/commands/decompose.js +26 -5
- package/dist/commands/epics/create.d.ts +1 -0
- package/dist/commands/mcp/add.d.ts +16 -0
- package/dist/commands/mcp/add.js +77 -0
- package/dist/commands/mcp/credential/get.d.ts +14 -0
- package/dist/commands/mcp/credential/get.js +35 -0
- package/dist/commands/mcp/credential/list.d.ts +17 -0
- package/dist/commands/mcp/credential/list.js +67 -0
- package/dist/commands/mcp/credential/remove.d.ts +18 -0
- package/dist/commands/mcp/credential/remove.js +84 -0
- package/dist/commands/mcp/credential/set.d.ts +16 -0
- package/dist/commands/mcp/credential/set.js +41 -0
- package/dist/commands/mcp/credential/validate.d.ts +12 -0
- package/dist/commands/mcp/credential/validate.js +150 -0
- package/dist/commands/mcp/list.d.ts +17 -0
- package/dist/commands/mcp/list.js +80 -0
- package/dist/commands/mcp/logs.d.ts +15 -0
- package/dist/commands/mcp/logs.js +64 -0
- package/dist/commands/mcp/preset.d.ts +15 -0
- package/dist/commands/mcp/preset.js +84 -0
- package/dist/commands/mcp/remove.d.ts +14 -0
- package/dist/commands/mcp/remove.js +36 -0
- package/dist/commands/mcp/start.d.ts +12 -0
- package/dist/commands/mcp/start.js +80 -0
- package/dist/commands/mcp/status.d.ts +30 -0
- package/dist/commands/mcp/status.js +180 -0
- package/dist/commands/mcp/stop.d.ts +12 -0
- package/dist/commands/mcp/stop.js +47 -0
- package/dist/commands/stories/create.d.ts +1 -0
- package/dist/commands/stories/develop.d.ts +1 -0
- package/dist/commands/stories/qa.js +34 -75
- package/dist/commands/stories/review.d.ts +124 -0
- package/dist/commands/stories/review.js +516 -0
- package/dist/commands/workflow.d.ts +89 -0
- package/dist/commands/workflow.js +487 -14
- package/dist/mcp/types.d.ts +99 -0
- package/dist/mcp/types.js +7 -0
- package/dist/mcp/utils/docker-utils.d.ts +56 -0
- package/dist/mcp/utils/docker-utils.js +108 -0
- package/dist/mcp/utils/template-loader.d.ts +21 -0
- package/dist/mcp/utils/template-loader.js +60 -0
- package/dist/models/agent-options.d.ts +10 -1
- package/dist/models/index.d.ts +1 -0
- package/dist/models/index.js +1 -0
- package/dist/models/workflow-callbacks.d.ts +251 -0
- package/dist/models/workflow-callbacks.js +10 -0
- package/dist/models/workflow-config.d.ts +77 -0
- package/dist/models/workflow-result.d.ts +7 -0
- package/dist/services/WorkflowReporter.d.ts +165 -0
- package/dist/services/WorkflowReporter.js +691 -0
- package/dist/services/agents/claude-agent-runner.js +25 -4
- package/dist/services/file-system/path-resolver.d.ts +10 -0
- package/dist/services/file-system/path-resolver.js +12 -0
- package/dist/services/mcp/mcp-config-manager.d.ts +54 -0
- package/dist/services/mcp/mcp-config-manager.js +146 -0
- package/dist/services/mcp/mcp-context-injector.d.ts +92 -0
- package/dist/services/mcp/mcp-context-injector.js +168 -0
- package/dist/services/mcp/mcp-credential-manager.d.ts +48 -0
- package/dist/services/mcp/mcp-credential-manager.js +124 -0
- package/dist/services/mcp/mcp-health-checker.d.ts +56 -0
- package/dist/services/mcp/mcp-health-checker.js +162 -0
- package/dist/services/mcp/types/health-types.d.ts +31 -0
- package/dist/services/mcp/types/health-types.js +7 -0
- package/dist/services/orchestration/dependency-graph-executor.js +1 -1
- package/dist/services/orchestration/task-decomposition-service.d.ts +2 -1
- package/dist/services/orchestration/task-decomposition-service.js +90 -36
- package/dist/services/orchestration/workflow-orchestrator.d.ts +87 -3
- package/dist/services/orchestration/workflow-orchestrator.js +1169 -289
- package/dist/services/review/ai-review-scanner.d.ts +66 -0
- package/dist/services/review/ai-review-scanner.js +142 -0
- package/dist/services/review/coderabbit-scanner.d.ts +25 -0
- package/dist/services/review/coderabbit-scanner.js +31 -0
- package/dist/services/review/index.d.ts +20 -0
- package/dist/services/review/index.js +15 -0
- package/dist/services/review/lint-scanner.d.ts +46 -0
- package/dist/services/review/lint-scanner.js +172 -0
- package/dist/services/review/review-config.d.ts +62 -0
- package/dist/services/review/review-config.js +91 -0
- package/dist/services/review/review-phase-executor.d.ts +69 -0
- package/dist/services/review/review-phase-executor.js +152 -0
- package/dist/services/review/review-queue.d.ts +98 -0
- package/dist/services/review/review-queue.js +174 -0
- package/dist/services/review/review-reporter.d.ts +94 -0
- package/dist/services/review/review-reporter.js +386 -0
- package/dist/services/review/scanner-factory.d.ts +42 -0
- package/dist/services/review/scanner-factory.js +60 -0
- package/dist/services/review/self-heal-loop.d.ts +58 -0
- package/dist/services/review/self-heal-loop.js +132 -0
- package/dist/services/review/severity-classifier.d.ts +17 -0
- package/dist/services/review/severity-classifier.js +314 -0
- package/dist/services/review/tech-debt-tracker.d.ts +52 -0
- package/dist/services/review/tech-debt-tracker.js +245 -0
- package/dist/services/review/types.d.ts +93 -0
- package/dist/services/review/types.js +23 -0
- package/dist/services/scaffolding/workflow-session-scaffolder.d.ts +182 -0
- package/dist/services/scaffolding/workflow-session-scaffolder.js +236 -0
- package/dist/services/validation/config-validator.d.ts +84 -0
- package/dist/services/validation/config-validator.js +78 -0
- package/dist/utils/colors.d.ts +10 -10
- package/dist/utils/colors.js +15 -15
- package/dist/utils/credential-utils.d.ts +14 -0
- package/dist/utils/credential-utils.js +19 -0
- package/dist/utils/duration.d.ts +41 -0
- package/dist/utils/duration.js +89 -0
- package/dist/utils/listr2-helpers.d.ts +216 -0
- package/dist/utils/listr2-helpers.js +334 -0
- package/dist/utils/shared-flags.d.ts +1 -0
- package/dist/utils/shared-flags.js +11 -2
- package/package.json +6 -3
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
* ```
|
|
45
45
|
*/
|
|
46
46
|
import type pino from 'pino';
|
|
47
|
-
import type { InputDetectionResult, WorkflowConfig, WorkflowResult } from '../../models/index.js';
|
|
47
|
+
import type { InputDetectionResult, WorkflowCallbacks, WorkflowConfig, WorkflowResult } from '../../models/index.js';
|
|
48
48
|
import type { AIProviderRunner } from '../agents/agent-runner.js';
|
|
49
49
|
import type { WorkflowLogger } from '../logging/workflow-logger.js';
|
|
50
50
|
import { FileManager } from '../file-system/file-manager.js';
|
|
@@ -53,6 +53,8 @@ import { EpicParser } from '../parsers/epic-parser.js';
|
|
|
53
53
|
import { PrdParser } from '../parsers/prd-parser.js';
|
|
54
54
|
import { BatchProcessor } from './batch-processor.js';
|
|
55
55
|
import { StoryTypeDetector } from './story-type-detector.js';
|
|
56
|
+
import type { McpContextInjector } from '../mcp/mcp-context-injector.js';
|
|
57
|
+
import type { ReviewPhaseExecutor } from '../review/review-phase-executor.js';
|
|
56
58
|
/**
|
|
57
59
|
* InputDetector interface (to be implemented in Story 4.2)
|
|
58
60
|
*
|
|
@@ -87,14 +89,20 @@ export interface WorkflowOrchestratorConfig {
|
|
|
87
89
|
inputDetector: InputDetector;
|
|
88
90
|
/** Logger instance for structured logging */
|
|
89
91
|
logger: pino.Logger;
|
|
92
|
+
/** Optional MCP context injector for tool discovery in agent prompts */
|
|
93
|
+
mcpContextInjector?: McpContextInjector;
|
|
90
94
|
/** Service to resolve file paths from config */
|
|
91
95
|
pathResolver: PathResolver;
|
|
92
96
|
/** Service to parse PRD files and extract epics */
|
|
93
97
|
prdParser: PrdParser;
|
|
98
|
+
/** Optional ReviewPhaseExecutor for automated code review */
|
|
99
|
+
reviewPhaseExecutor?: ReviewPhaseExecutor;
|
|
94
100
|
/** Service to detect story type for auto-documentation */
|
|
95
101
|
storyTypeDetector: StoryTypeDetector;
|
|
96
102
|
/** Optional WorkflowLogger for pipeline progress tracking */
|
|
97
103
|
workflowLogger?: WorkflowLogger;
|
|
104
|
+
/** Optional lifecycle event callbacks for workflow observability */
|
|
105
|
+
callbacks?: WorkflowCallbacks;
|
|
98
106
|
}
|
|
99
107
|
/**
|
|
100
108
|
* Options for building an epic creation prompt
|
|
@@ -136,14 +144,17 @@ export interface StoryPromptOptions {
|
|
|
136
144
|
export declare class WorkflowOrchestrator {
|
|
137
145
|
private readonly agentRunner;
|
|
138
146
|
private readonly batchProcessor;
|
|
147
|
+
private readonly callbacks?;
|
|
139
148
|
private readonly epicParser;
|
|
140
149
|
private readonly fileManager;
|
|
141
150
|
private readonly fileScaffolder;
|
|
142
151
|
private readonly inputDetector;
|
|
143
152
|
private readonly logger;
|
|
153
|
+
private readonly mcpContextInjector?;
|
|
144
154
|
private readonly pathResolver;
|
|
145
155
|
private readonly prdFixer;
|
|
146
156
|
private readonly prdParser;
|
|
157
|
+
private readonly reviewPhaseExecutor?;
|
|
147
158
|
private readonly storyTypeDetector;
|
|
148
159
|
private readonly workflowLogger?;
|
|
149
160
|
/**
|
|
@@ -163,6 +174,20 @@ export declare class WorkflowOrchestrator {
|
|
|
163
174
|
* @throws {ValidationError} If configuration is invalid
|
|
164
175
|
*/
|
|
165
176
|
execute(config: WorkflowConfig): Promise<WorkflowResult>;
|
|
177
|
+
/**
|
|
178
|
+
* Get MCP prompt prefix for a given phase
|
|
179
|
+
*
|
|
180
|
+
* Returns MCP tool discovery instructions to prepend before agent prompts.
|
|
181
|
+
* Returns empty string when MCP is disabled, injector is unavailable,
|
|
182
|
+
* phase is filtered out, or injector returns empty/errors.
|
|
183
|
+
*
|
|
184
|
+
* @param phase - Workflow phase (epic, story, dev, review, qa)
|
|
185
|
+
* @param agentType - Agent type being spawned
|
|
186
|
+
* @param config - Workflow configuration
|
|
187
|
+
* @returns Instructions string to prepend, or empty string
|
|
188
|
+
* @private
|
|
189
|
+
*/
|
|
190
|
+
private getMcpPromptPrefix;
|
|
166
191
|
/**
|
|
167
192
|
* Build prompt for epic creation
|
|
168
193
|
*
|
|
@@ -202,6 +227,35 @@ export declare class WorkflowOrchestrator {
|
|
|
202
227
|
* @private
|
|
203
228
|
*/
|
|
204
229
|
private buildSuccessResult;
|
|
230
|
+
/**
|
|
231
|
+
* Invoke a callback safely, catching and logging any errors
|
|
232
|
+
*
|
|
233
|
+
* All callback invocations are wrapped in try-catch to prevent
|
|
234
|
+
* callback errors from interrupting workflow execution.
|
|
235
|
+
*
|
|
236
|
+
* @param callbackName - Name of the callback for logging
|
|
237
|
+
* @param callback - The callback function to invoke
|
|
238
|
+
* @param context - The context to pass to the callback
|
|
239
|
+
* @private
|
|
240
|
+
*/
|
|
241
|
+
private invokeCallback;
|
|
242
|
+
/**
|
|
243
|
+
* Invoke the onSpawnOutput callback safely
|
|
244
|
+
*
|
|
245
|
+
* @param callback - The callback function to invoke
|
|
246
|
+
* @param context - The spawn context
|
|
247
|
+
* @param output - The output text
|
|
248
|
+
* @private
|
|
249
|
+
*/
|
|
250
|
+
private invokeSpawnOutputCallback;
|
|
251
|
+
/**
|
|
252
|
+
* Invoke the onError callback safely
|
|
253
|
+
*
|
|
254
|
+
* @param error - The error that occurred
|
|
255
|
+
* @param options - Additional context for the error
|
|
256
|
+
* @private
|
|
257
|
+
*/
|
|
258
|
+
private invokeErrorCallback;
|
|
205
259
|
/**
|
|
206
260
|
* Check which files already exist in a directory
|
|
207
261
|
*
|
|
@@ -379,11 +433,41 @@ export declare class WorkflowOrchestrator {
|
|
|
379
433
|
*/
|
|
380
434
|
private executePipelinedDevPhase;
|
|
381
435
|
/**
|
|
382
|
-
*
|
|
436
|
+
* Review worker that consumes stories from the ReviewQueue and processes them.
|
|
437
|
+
*
|
|
438
|
+
* Worker loop:
|
|
439
|
+
* 1. Dequeue next story (blocks/waits if queue empty)
|
|
440
|
+
* 2. If null returned, queue is closed and empty → terminate worker
|
|
441
|
+
* 3. For each story, invoke ReviewPhaseExecutor.reviewStory()
|
|
442
|
+
* 4. Collect pass/fail results
|
|
443
|
+
*
|
|
444
|
+
* @param workerId - Worker identifier for logging
|
|
445
|
+
* @param reviewQueue - ReviewQueue to dequeue stories from
|
|
446
|
+
* @param config - Workflow configuration
|
|
447
|
+
* @returns Worker result with passed and failed story arrays
|
|
448
|
+
* @private
|
|
449
|
+
*/
|
|
450
|
+
private reviewWorker;
|
|
451
|
+
/**
|
|
452
|
+
* Execute pipelined review phase with worker pool.
|
|
453
|
+
*
|
|
454
|
+
* @param reviewQueue - ReviewQueue to consume stories from
|
|
455
|
+
* @param config - Workflow configuration
|
|
456
|
+
* @returns PhaseResult with aggregate success/failure counts and passed stories
|
|
457
|
+
* @private
|
|
458
|
+
*/
|
|
459
|
+
private executePipelinedReviewPhase;
|
|
460
|
+
/**
|
|
461
|
+
* Execute pipelined workflow (story, dev, and optionally review phases in parallel)
|
|
462
|
+
*
|
|
463
|
+
* When config.review === true && reviewPhaseExecutor is available:
|
|
464
|
+
* [StoryQueue] → dev workers → [ReviewQueue] → review workers → QA collection
|
|
465
|
+
* When config.review === false (default):
|
|
466
|
+
* [StoryQueue] → dev workers → QA collection (unchanged behavior)
|
|
383
467
|
*
|
|
384
468
|
* @param config - Workflow configuration
|
|
385
469
|
* @param detection - Input detection result
|
|
386
|
-
* @returns Story and
|
|
470
|
+
* @returns Story, dev, and optional review phase results
|
|
387
471
|
* @private
|
|
388
472
|
*/
|
|
389
473
|
private executePipelinedWorkflow;
|