@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.
Files changed (110) hide show
  1. package/dist/commands/config/show.js +8 -2
  2. package/dist/commands/decompose.js +26 -5
  3. package/dist/commands/epics/create.d.ts +1 -0
  4. package/dist/commands/mcp/add.d.ts +16 -0
  5. package/dist/commands/mcp/add.js +77 -0
  6. package/dist/commands/mcp/credential/get.d.ts +14 -0
  7. package/dist/commands/mcp/credential/get.js +35 -0
  8. package/dist/commands/mcp/credential/list.d.ts +17 -0
  9. package/dist/commands/mcp/credential/list.js +67 -0
  10. package/dist/commands/mcp/credential/remove.d.ts +18 -0
  11. package/dist/commands/mcp/credential/remove.js +84 -0
  12. package/dist/commands/mcp/credential/set.d.ts +16 -0
  13. package/dist/commands/mcp/credential/set.js +41 -0
  14. package/dist/commands/mcp/credential/validate.d.ts +12 -0
  15. package/dist/commands/mcp/credential/validate.js +150 -0
  16. package/dist/commands/mcp/list.d.ts +17 -0
  17. package/dist/commands/mcp/list.js +80 -0
  18. package/dist/commands/mcp/logs.d.ts +15 -0
  19. package/dist/commands/mcp/logs.js +64 -0
  20. package/dist/commands/mcp/preset.d.ts +15 -0
  21. package/dist/commands/mcp/preset.js +84 -0
  22. package/dist/commands/mcp/remove.d.ts +14 -0
  23. package/dist/commands/mcp/remove.js +36 -0
  24. package/dist/commands/mcp/start.d.ts +12 -0
  25. package/dist/commands/mcp/start.js +80 -0
  26. package/dist/commands/mcp/status.d.ts +30 -0
  27. package/dist/commands/mcp/status.js +180 -0
  28. package/dist/commands/mcp/stop.d.ts +12 -0
  29. package/dist/commands/mcp/stop.js +47 -0
  30. package/dist/commands/stories/create.d.ts +1 -0
  31. package/dist/commands/stories/develop.d.ts +1 -0
  32. package/dist/commands/stories/qa.js +34 -75
  33. package/dist/commands/stories/review.d.ts +124 -0
  34. package/dist/commands/stories/review.js +516 -0
  35. package/dist/commands/workflow.d.ts +89 -0
  36. package/dist/commands/workflow.js +487 -14
  37. package/dist/mcp/types.d.ts +99 -0
  38. package/dist/mcp/types.js +7 -0
  39. package/dist/mcp/utils/docker-utils.d.ts +56 -0
  40. package/dist/mcp/utils/docker-utils.js +108 -0
  41. package/dist/mcp/utils/template-loader.d.ts +21 -0
  42. package/dist/mcp/utils/template-loader.js +60 -0
  43. package/dist/models/agent-options.d.ts +10 -1
  44. package/dist/models/index.d.ts +1 -0
  45. package/dist/models/index.js +1 -0
  46. package/dist/models/workflow-callbacks.d.ts +251 -0
  47. package/dist/models/workflow-callbacks.js +10 -0
  48. package/dist/models/workflow-config.d.ts +77 -0
  49. package/dist/models/workflow-result.d.ts +7 -0
  50. package/dist/services/WorkflowReporter.d.ts +165 -0
  51. package/dist/services/WorkflowReporter.js +691 -0
  52. package/dist/services/agents/claude-agent-runner.js +25 -4
  53. package/dist/services/file-system/path-resolver.d.ts +10 -0
  54. package/dist/services/file-system/path-resolver.js +12 -0
  55. package/dist/services/mcp/mcp-config-manager.d.ts +54 -0
  56. package/dist/services/mcp/mcp-config-manager.js +146 -0
  57. package/dist/services/mcp/mcp-context-injector.d.ts +92 -0
  58. package/dist/services/mcp/mcp-context-injector.js +168 -0
  59. package/dist/services/mcp/mcp-credential-manager.d.ts +48 -0
  60. package/dist/services/mcp/mcp-credential-manager.js +124 -0
  61. package/dist/services/mcp/mcp-health-checker.d.ts +56 -0
  62. package/dist/services/mcp/mcp-health-checker.js +162 -0
  63. package/dist/services/mcp/types/health-types.d.ts +31 -0
  64. package/dist/services/mcp/types/health-types.js +7 -0
  65. package/dist/services/orchestration/dependency-graph-executor.js +1 -1
  66. package/dist/services/orchestration/task-decomposition-service.d.ts +2 -1
  67. package/dist/services/orchestration/task-decomposition-service.js +90 -36
  68. package/dist/services/orchestration/workflow-orchestrator.d.ts +87 -3
  69. package/dist/services/orchestration/workflow-orchestrator.js +1169 -289
  70. package/dist/services/review/ai-review-scanner.d.ts +66 -0
  71. package/dist/services/review/ai-review-scanner.js +142 -0
  72. package/dist/services/review/coderabbit-scanner.d.ts +25 -0
  73. package/dist/services/review/coderabbit-scanner.js +31 -0
  74. package/dist/services/review/index.d.ts +20 -0
  75. package/dist/services/review/index.js +15 -0
  76. package/dist/services/review/lint-scanner.d.ts +46 -0
  77. package/dist/services/review/lint-scanner.js +172 -0
  78. package/dist/services/review/review-config.d.ts +62 -0
  79. package/dist/services/review/review-config.js +91 -0
  80. package/dist/services/review/review-phase-executor.d.ts +69 -0
  81. package/dist/services/review/review-phase-executor.js +152 -0
  82. package/dist/services/review/review-queue.d.ts +98 -0
  83. package/dist/services/review/review-queue.js +174 -0
  84. package/dist/services/review/review-reporter.d.ts +94 -0
  85. package/dist/services/review/review-reporter.js +386 -0
  86. package/dist/services/review/scanner-factory.d.ts +42 -0
  87. package/dist/services/review/scanner-factory.js +60 -0
  88. package/dist/services/review/self-heal-loop.d.ts +58 -0
  89. package/dist/services/review/self-heal-loop.js +132 -0
  90. package/dist/services/review/severity-classifier.d.ts +17 -0
  91. package/dist/services/review/severity-classifier.js +314 -0
  92. package/dist/services/review/tech-debt-tracker.d.ts +52 -0
  93. package/dist/services/review/tech-debt-tracker.js +245 -0
  94. package/dist/services/review/types.d.ts +93 -0
  95. package/dist/services/review/types.js +23 -0
  96. package/dist/services/scaffolding/workflow-session-scaffolder.d.ts +182 -0
  97. package/dist/services/scaffolding/workflow-session-scaffolder.js +236 -0
  98. package/dist/services/validation/config-validator.d.ts +84 -0
  99. package/dist/services/validation/config-validator.js +78 -0
  100. package/dist/utils/colors.d.ts +10 -10
  101. package/dist/utils/colors.js +15 -15
  102. package/dist/utils/credential-utils.d.ts +14 -0
  103. package/dist/utils/credential-utils.js +19 -0
  104. package/dist/utils/duration.d.ts +41 -0
  105. package/dist/utils/duration.js +89 -0
  106. package/dist/utils/listr2-helpers.d.ts +216 -0
  107. package/dist/utils/listr2-helpers.js +334 -0
  108. package/dist/utils/shared-flags.d.ts +1 -0
  109. package/dist/utils/shared-flags.js +11 -2
  110. 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
- * Execute pipelined workflow (story and dev phases in parallel)
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 dev phase results
470
+ * @returns Story, dev, and optional review phase results
387
471
  * @private
388
472
  */
389
473
  private executePipelinedWorkflow;