musubi-sdd 5.1.0 → 5.6.1

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 (232) hide show
  1. package/README.ja.md +106 -48
  2. package/README.md +110 -32
  3. package/bin/musubi-analyze.js +74 -67
  4. package/bin/musubi-browser.js +27 -26
  5. package/bin/musubi-change.js +48 -47
  6. package/bin/musubi-checkpoint.js +10 -7
  7. package/bin/musubi-convert.js +25 -25
  8. package/bin/musubi-costs.js +27 -10
  9. package/bin/musubi-gui.js +52 -46
  10. package/bin/musubi-init.js +1952 -10
  11. package/bin/musubi-orchestrate.js +327 -239
  12. package/bin/musubi-remember.js +69 -56
  13. package/bin/musubi-resolve.js +53 -45
  14. package/bin/musubi-trace.js +51 -22
  15. package/bin/musubi-validate.js +39 -30
  16. package/bin/musubi-workflow.js +33 -34
  17. package/bin/musubi.js +39 -2
  18. package/package.json +1 -1
  19. package/src/agents/agent-loop.js +94 -95
  20. package/src/agents/agentic/code-generator.js +119 -109
  21. package/src/agents/agentic/code-reviewer.js +105 -108
  22. package/src/agents/agentic/index.js +4 -4
  23. package/src/agents/browser/action-executor.js +13 -13
  24. package/src/agents/browser/ai-comparator.js +11 -10
  25. package/src/agents/browser/context-manager.js +6 -6
  26. package/src/agents/browser/index.js +5 -5
  27. package/src/agents/browser/nl-parser.js +31 -46
  28. package/src/agents/browser/screenshot.js +2 -2
  29. package/src/agents/browser/test-generator.js +6 -4
  30. package/src/agents/function-tool.js +71 -65
  31. package/src/agents/index.js +7 -7
  32. package/src/agents/schema-generator.js +98 -94
  33. package/src/analyzers/ast-extractor.js +158 -146
  34. package/src/analyzers/codegraph-auto-update.js +858 -0
  35. package/src/analyzers/complexity-analyzer.js +536 -0
  36. package/src/analyzers/context-optimizer.js +241 -126
  37. package/src/analyzers/impact-analyzer.js +1 -1
  38. package/src/analyzers/large-project-analyzer.js +766 -0
  39. package/src/analyzers/repository-map.js +77 -81
  40. package/src/analyzers/security-analyzer.js +19 -11
  41. package/src/analyzers/stuck-detector.js +19 -17
  42. package/src/converters/index.js +78 -57
  43. package/src/converters/ir/types.js +12 -12
  44. package/src/converters/parsers/musubi-parser.js +134 -126
  45. package/src/converters/parsers/openapi-parser.js +70 -53
  46. package/src/converters/parsers/speckit-parser.js +239 -175
  47. package/src/converters/writers/musubi-writer.js +123 -118
  48. package/src/converters/writers/speckit-writer.js +124 -113
  49. package/src/generators/rust-migration-generator.js +512 -0
  50. package/src/gui/public/index.html +1365 -1211
  51. package/src/gui/server.js +41 -40
  52. package/src/gui/services/file-watcher.js +23 -8
  53. package/src/gui/services/project-scanner.js +26 -20
  54. package/src/gui/services/replanning-service.js +27 -23
  55. package/src/gui/services/traceability-service.js +8 -8
  56. package/src/gui/services/workflow-service.js +14 -7
  57. package/src/index.js +151 -0
  58. package/src/integrations/cicd.js +90 -104
  59. package/src/integrations/codegraph-mcp.js +643 -0
  60. package/src/integrations/documentation.js +142 -103
  61. package/src/integrations/examples.js +95 -80
  62. package/src/integrations/github-client.js +17 -17
  63. package/src/integrations/index.js +5 -5
  64. package/src/integrations/mcp/index.js +21 -21
  65. package/src/integrations/mcp/mcp-context-provider.js +76 -78
  66. package/src/integrations/mcp/mcp-discovery.js +74 -72
  67. package/src/integrations/mcp/mcp-tool-registry.js +99 -94
  68. package/src/integrations/mcp-connector.js +70 -66
  69. package/src/integrations/platforms.js +50 -49
  70. package/src/integrations/tool-discovery.js +37 -31
  71. package/src/llm-providers/anthropic-provider.js +11 -11
  72. package/src/llm-providers/base-provider.js +16 -18
  73. package/src/llm-providers/copilot-provider.js +22 -19
  74. package/src/llm-providers/index.js +26 -25
  75. package/src/llm-providers/ollama-provider.js +11 -11
  76. package/src/llm-providers/openai-provider.js +12 -12
  77. package/src/managers/agent-memory.js +36 -24
  78. package/src/managers/checkpoint-manager.js +4 -8
  79. package/src/managers/delta-spec.js +19 -19
  80. package/src/managers/index.js +13 -4
  81. package/src/managers/memory-condenser.js +35 -45
  82. package/src/managers/repo-skill-manager.js +57 -31
  83. package/src/managers/skill-loader.js +25 -22
  84. package/src/managers/skill-tools.js +36 -72
  85. package/src/managers/workflow.js +30 -22
  86. package/src/monitoring/cost-tracker.js +48 -46
  87. package/src/monitoring/incident-manager.js +116 -106
  88. package/src/monitoring/index.js +144 -134
  89. package/src/monitoring/observability.js +75 -62
  90. package/src/monitoring/quality-dashboard.js +45 -41
  91. package/src/monitoring/release-manager.js +63 -53
  92. package/src/orchestration/agent-skill-binding.js +39 -47
  93. package/src/orchestration/error-handler.js +65 -107
  94. package/src/orchestration/guardrails/base-guardrail.js +26 -24
  95. package/src/orchestration/guardrails/guardrail-rules.js +50 -64
  96. package/src/orchestration/guardrails/index.js +5 -5
  97. package/src/orchestration/guardrails/input-guardrail.js +58 -45
  98. package/src/orchestration/guardrails/output-guardrail.js +104 -81
  99. package/src/orchestration/guardrails/safety-check.js +79 -79
  100. package/src/orchestration/index.js +38 -55
  101. package/src/orchestration/mcp-tool-adapters.js +96 -99
  102. package/src/orchestration/orchestration-engine.js +21 -21
  103. package/src/orchestration/pattern-registry.js +60 -45
  104. package/src/orchestration/patterns/auto.js +34 -47
  105. package/src/orchestration/patterns/group-chat.js +59 -65
  106. package/src/orchestration/patterns/handoff.js +67 -65
  107. package/src/orchestration/patterns/human-in-loop.js +51 -72
  108. package/src/orchestration/patterns/nested.js +25 -40
  109. package/src/orchestration/patterns/sequential.js +35 -34
  110. package/src/orchestration/patterns/swarm.js +63 -56
  111. package/src/orchestration/patterns/triage.js +150 -109
  112. package/src/orchestration/reasoning/index.js +9 -9
  113. package/src/orchestration/reasoning/planning-engine.js +143 -140
  114. package/src/orchestration/reasoning/reasoning-engine.js +206 -144
  115. package/src/orchestration/reasoning/self-correction.js +121 -128
  116. package/src/orchestration/replanning/adaptive-goal-modifier.js +107 -112
  117. package/src/orchestration/replanning/alternative-generator.js +37 -42
  118. package/src/orchestration/replanning/config.js +63 -59
  119. package/src/orchestration/replanning/goal-progress-tracker.js +98 -100
  120. package/src/orchestration/replanning/index.js +24 -20
  121. package/src/orchestration/replanning/plan-evaluator.js +49 -50
  122. package/src/orchestration/replanning/plan-monitor.js +32 -28
  123. package/src/orchestration/replanning/proactive-path-optimizer.js +175 -178
  124. package/src/orchestration/replanning/replan-history.js +33 -26
  125. package/src/orchestration/replanning/replanning-engine.js +106 -108
  126. package/src/orchestration/skill-executor.js +107 -109
  127. package/src/orchestration/skill-registry.js +85 -89
  128. package/src/orchestration/workflow-examples.js +228 -231
  129. package/src/orchestration/workflow-executor.js +65 -68
  130. package/src/orchestration/workflow-orchestrator.js +72 -73
  131. package/src/phase4-integration.js +47 -40
  132. package/src/phase5-integration.js +89 -30
  133. package/src/reporters/coverage-report.js +82 -30
  134. package/src/reporters/hierarchical-reporter.js +498 -0
  135. package/src/reporters/traceability-matrix-report.js +29 -20
  136. package/src/resolvers/issue-resolver.js +43 -31
  137. package/src/steering/advanced-validation.js +133 -124
  138. package/src/steering/auto-updater.js +60 -73
  139. package/src/steering/index.js +6 -6
  140. package/src/steering/quality-metrics.js +41 -35
  141. package/src/steering/steering-auto-update.js +83 -86
  142. package/src/steering/steering-validator.js +98 -106
  143. package/src/steering/template-constraints.js +53 -54
  144. package/src/templates/agents/claude-code/CLAUDE.md +32 -32
  145. package/src/templates/agents/claude-code/skills/agent-assistant/SKILL.md +13 -5
  146. package/src/templates/agents/claude-code/skills/ai-ml-engineer/mlops-guide.md +23 -23
  147. package/src/templates/agents/claude-code/skills/ai-ml-engineer/model-card-template.md +60 -41
  148. package/src/templates/agents/claude-code/skills/api-designer/api-patterns.md +27 -19
  149. package/src/templates/agents/claude-code/skills/api-designer/openapi-template.md +11 -7
  150. package/src/templates/agents/claude-code/skills/bug-hunter/SKILL.md +4 -3
  151. package/src/templates/agents/claude-code/skills/bug-hunter/root-cause-analysis.md +37 -15
  152. package/src/templates/agents/claude-code/skills/change-impact-analyzer/dependency-graph-patterns.md +36 -42
  153. package/src/templates/agents/claude-code/skills/change-impact-analyzer/impact-analysis-template.md +69 -60
  154. package/src/templates/agents/claude-code/skills/cloud-architect/aws-patterns.md +31 -38
  155. package/src/templates/agents/claude-code/skills/cloud-architect/azure-patterns.md +28 -23
  156. package/src/templates/agents/claude-code/skills/code-reviewer/SKILL.md +61 -0
  157. package/src/templates/agents/claude-code/skills/code-reviewer/best-practices.md +27 -0
  158. package/src/templates/agents/claude-code/skills/code-reviewer/review-checklist.md +29 -10
  159. package/src/templates/agents/claude-code/skills/code-reviewer/review-standards.md +29 -24
  160. package/src/templates/agents/claude-code/skills/constitution-enforcer/SKILL.md +8 -6
  161. package/src/templates/agents/claude-code/skills/constitution-enforcer/constitutional-articles.md +62 -26
  162. package/src/templates/agents/claude-code/skills/constitution-enforcer/phase-minus-one-gates.md +35 -16
  163. package/src/templates/agents/claude-code/skills/database-administrator/backup-recovery.md +27 -17
  164. package/src/templates/agents/claude-code/skills/database-administrator/tuning-guide.md +25 -20
  165. package/src/templates/agents/claude-code/skills/database-schema-designer/schema-patterns.md +39 -22
  166. package/src/templates/agents/claude-code/skills/devops-engineer/ci-cd-templates.md +25 -22
  167. package/src/templates/agents/claude-code/skills/issue-resolver/SKILL.md +24 -21
  168. package/src/templates/agents/claude-code/skills/orchestrator/SKILL.md +148 -63
  169. package/src/templates/agents/claude-code/skills/orchestrator/patterns.md +35 -16
  170. package/src/templates/agents/claude-code/skills/orchestrator/selection-matrix.md +69 -64
  171. package/src/templates/agents/claude-code/skills/performance-engineer/optimization-playbook.md +47 -47
  172. package/src/templates/agents/claude-code/skills/performance-optimizer/SKILL.md +69 -0
  173. package/src/templates/agents/claude-code/skills/performance-optimizer/benchmark-template.md +63 -45
  174. package/src/templates/agents/claude-code/skills/performance-optimizer/optimization-patterns.md +33 -35
  175. package/src/templates/agents/claude-code/skills/project-manager/SKILL.md +7 -6
  176. package/src/templates/agents/claude-code/skills/project-manager/agile-ceremonies.md +47 -28
  177. package/src/templates/agents/claude-code/skills/project-manager/project-templates.md +94 -78
  178. package/src/templates/agents/claude-code/skills/quality-assurance/SKILL.md +20 -17
  179. package/src/templates/agents/claude-code/skills/quality-assurance/qa-plan-template.md +63 -49
  180. package/src/templates/agents/claude-code/skills/release-coordinator/SKILL.md +5 -5
  181. package/src/templates/agents/claude-code/skills/release-coordinator/feature-flag-guide.md +30 -26
  182. package/src/templates/agents/claude-code/skills/release-coordinator/release-plan-template.md +67 -35
  183. package/src/templates/agents/claude-code/skills/requirements-analyst/ears-format.md +54 -42
  184. package/src/templates/agents/claude-code/skills/requirements-analyst/validation-rules.md +36 -33
  185. package/src/templates/agents/claude-code/skills/security-auditor/SKILL.md +77 -19
  186. package/src/templates/agents/claude-code/skills/security-auditor/audit-checklists.md +24 -24
  187. package/src/templates/agents/claude-code/skills/security-auditor/owasp-top-10.md +61 -20
  188. package/src/templates/agents/claude-code/skills/security-auditor/vulnerability-patterns.md +43 -11
  189. package/src/templates/agents/claude-code/skills/site-reliability-engineer/SKILL.md +1 -0
  190. package/src/templates/agents/claude-code/skills/site-reliability-engineer/incident-response-template.md +55 -25
  191. package/src/templates/agents/claude-code/skills/site-reliability-engineer/observability-patterns.md +78 -68
  192. package/src/templates/agents/claude-code/skills/site-reliability-engineer/slo-sli-guide.md +73 -53
  193. package/src/templates/agents/claude-code/skills/software-developer/solid-principles.md +83 -37
  194. package/src/templates/agents/claude-code/skills/software-developer/test-first-workflow.md +38 -31
  195. package/src/templates/agents/claude-code/skills/steering/SKILL.md +1 -0
  196. package/src/templates/agents/claude-code/skills/steering/auto-update-rules.md +31 -0
  197. package/src/templates/agents/claude-code/skills/system-architect/adr-template.md +25 -7
  198. package/src/templates/agents/claude-code/skills/system-architect/c4-model-guide.md +74 -61
  199. package/src/templates/agents/claude-code/skills/technical-writer/doc-templates/documentation-templates.md +70 -52
  200. package/src/templates/agents/claude-code/skills/test-engineer/SKILL.md +2 -0
  201. package/src/templates/agents/claude-code/skills/test-engineer/ears-test-mapping.md +75 -71
  202. package/src/templates/agents/claude-code/skills/test-engineer/test-types.md +85 -63
  203. package/src/templates/agents/claude-code/skills/traceability-auditor/coverage-matrix-template.md +39 -36
  204. package/src/templates/agents/claude-code/skills/traceability-auditor/gap-detection-rules.md +22 -17
  205. package/src/templates/agents/claude-code/skills/ui-ux-designer/SKILL.md +1 -0
  206. package/src/templates/agents/claude-code/skills/ui-ux-designer/accessibility-guidelines.md +49 -75
  207. package/src/templates/agents/claude-code/skills/ui-ux-designer/design-system-components.md +71 -59
  208. package/src/templates/agents/codex/AGENTS.md +74 -42
  209. package/src/templates/agents/cursor/AGENTS.md +74 -42
  210. package/src/templates/agents/gemini-cli/GEMINI.md +74 -42
  211. package/src/templates/agents/github-copilot/AGENTS.md +83 -51
  212. package/src/templates/agents/qwen-code/QWEN.md +74 -42
  213. package/src/templates/agents/windsurf/AGENTS.md +74 -42
  214. package/src/templates/architectures/README.md +41 -0
  215. package/src/templates/architectures/clean-architecture/README.md +113 -0
  216. package/src/templates/architectures/event-driven/README.md +162 -0
  217. package/src/templates/architectures/hexagonal/README.md +130 -0
  218. package/src/templates/index.js +6 -1
  219. package/src/templates/locale-manager.js +16 -16
  220. package/src/templates/shared/delta-spec-template.md +20 -13
  221. package/src/templates/shared/github-actions/musubi-issue-resolver.yml +5 -5
  222. package/src/templates/shared/github-actions/musubi-security-check.yml +3 -3
  223. package/src/templates/shared/github-actions/musubi-validate.yml +4 -4
  224. package/src/templates/shared/steering/structure.md +95 -0
  225. package/src/templates/skills/browser-agent.md +21 -16
  226. package/src/templates/skills/web-gui.md +8 -0
  227. package/src/templates/template-constraints.js +50 -53
  228. package/src/validators/advanced-validation.js +30 -36
  229. package/src/validators/constitutional-validator.js +77 -73
  230. package/src/validators/critic-system.js +49 -59
  231. package/src/validators/delta-format.js +59 -55
  232. package/src/validators/traceability-validator.js +7 -11
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * WorkflowOrchestrator - Complex multi-pattern workflow execution
3
- *
3
+ *
4
4
  * Enables end-to-end workflows combining multiple orchestration patterns
5
5
  * for complete SDD lifecycle (Research → Monitoring)
6
6
  */
@@ -11,12 +11,12 @@ const { PatternType, ExecutionContext, ExecutionStatus } = require('./orchestrat
11
11
  * Workflow step types
12
12
  */
13
13
  const StepType = {
14
- SKILL: 'skill', // Single skill execution
15
- PATTERN: 'pattern', // Execute an orchestration pattern
14
+ SKILL: 'skill', // Single skill execution
15
+ PATTERN: 'pattern', // Execute an orchestration pattern
16
16
  CONDITIONAL: 'conditional', // Branch based on condition
17
- PARALLEL: 'parallel', // Parallel steps
17
+ PARALLEL: 'parallel', // Parallel steps
18
18
  CHECKPOINT: 'checkpoint', // Save state checkpoint
19
- HUMAN_GATE: 'human-gate' // Require human approval
19
+ HUMAN_GATE: 'human-gate', // Require human approval
20
20
  };
21
21
 
22
22
  /**
@@ -28,7 +28,7 @@ const WorkflowState = {
28
28
  PAUSED: 'paused',
29
29
  COMPLETED: 'completed',
30
30
  FAILED: 'failed',
31
- CANCELLED: 'cancelled'
31
+ CANCELLED: 'cancelled',
32
32
  };
33
33
 
34
34
  /**
@@ -43,7 +43,7 @@ class WorkflowOrchestrator {
43
43
  maxRetries: options.maxRetries || 3,
44
44
  retryDelay: options.retryDelay || 1000,
45
45
  timeout: options.timeout || 300000, // 5 minutes default
46
- ...options
46
+ ...options,
47
47
  };
48
48
 
49
49
  this.workflows = new Map();
@@ -68,7 +68,7 @@ class WorkflowOrchestrator {
68
68
  inputs: definition.inputs || [],
69
69
  outputs: definition.outputs || [],
70
70
  onError: definition.onError || 'stop',
71
- metadata: definition.metadata || {}
71
+ metadata: definition.metadata || {},
72
72
  });
73
73
 
74
74
  return this;
@@ -106,7 +106,7 @@ class WorkflowOrchestrator {
106
106
 
107
107
  const executionId = this._generateId();
108
108
  const startTime = Date.now();
109
-
109
+
110
110
  const execution = {
111
111
  id: executionId,
112
112
  workflow: workflowName,
@@ -119,7 +119,7 @@ class WorkflowOrchestrator {
119
119
  checkpoints: [],
120
120
  startTime,
121
121
  endTime: null,
122
- error: null
122
+ error: null,
123
123
  };
124
124
 
125
125
  this.activeExecutions.set(executionId, execution);
@@ -127,7 +127,7 @@ class WorkflowOrchestrator {
127
127
  this.engine.emit('workflowStarted', {
128
128
  executionId,
129
129
  workflow: workflowName,
130
- input
130
+ input,
131
131
  });
132
132
 
133
133
  try {
@@ -140,17 +140,17 @@ class WorkflowOrchestrator {
140
140
  executionId,
141
141
  stepIndex: i,
142
142
  step: step.name || step.type,
143
- totalSteps: workflow.steps.length
143
+ totalSteps: workflow.steps.length,
144
144
  });
145
145
 
146
146
  const stepResult = await this._executeStep(step, execution, options);
147
-
147
+
148
148
  execution.stepResults.push({
149
149
  step: step.name || `step-${i}`,
150
150
  type: step.type,
151
151
  status: stepResult.status,
152
152
  output: stepResult.output,
153
- duration: stepResult.duration
153
+ duration: stepResult.duration,
154
154
  });
155
155
 
156
156
  // Merge step output into context
@@ -158,7 +158,7 @@ class WorkflowOrchestrator {
158
158
  execution.context = {
159
159
  ...execution.context,
160
160
  ...stepResult.output,
161
- [`step_${i}_result`]: stepResult.output
161
+ [`step_${i}_result`]: stepResult.output,
162
162
  };
163
163
  }
164
164
 
@@ -166,7 +166,7 @@ class WorkflowOrchestrator {
166
166
  executionId,
167
167
  stepIndex: i,
168
168
  step: step.name || step.type,
169
- result: stepResult
169
+ result: stepResult,
170
170
  });
171
171
 
172
172
  // Handle step failure
@@ -188,7 +188,7 @@ class WorkflowOrchestrator {
188
188
  executionId,
189
189
  state: WorkflowState.PAUSED,
190
190
  resumeFrom: i + 1,
191
- context: execution.context
191
+ context: execution.context,
192
192
  };
193
193
  }
194
194
  }
@@ -205,16 +205,15 @@ class WorkflowOrchestrator {
205
205
  output: execution.output,
206
206
  stepResults: execution.stepResults,
207
207
  duration: execution.endTime - startTime,
208
- summary: this._createSummary(execution)
208
+ summary: this._createSummary(execution),
209
209
  };
210
210
 
211
211
  this.engine.emit('workflowCompleted', {
212
212
  executionId,
213
- result
213
+ result,
214
214
  });
215
215
 
216
216
  return result;
217
-
218
217
  } catch (error) {
219
218
  execution.state = WorkflowState.FAILED;
220
219
  execution.endTime = Date.now();
@@ -223,7 +222,7 @@ class WorkflowOrchestrator {
223
222
  this.engine.emit('workflowFailed', {
224
223
  executionId,
225
224
  error,
226
- stepResults: execution.stepResults
225
+ stepResults: execution.stepResults,
227
226
  });
228
227
 
229
228
  throw error;
@@ -274,14 +273,13 @@ class WorkflowOrchestrator {
274
273
  return {
275
274
  status: ExecutionStatus.COMPLETED,
276
275
  output,
277
- duration: Date.now() - startTime
276
+ duration: Date.now() - startTime,
278
277
  };
279
-
280
278
  } catch (error) {
281
279
  return {
282
280
  status: ExecutionStatus.FAILED,
283
281
  error: error.message,
284
- duration: Date.now() - startTime
282
+ duration: Date.now() - startTime,
285
283
  };
286
284
  }
287
285
  }
@@ -293,7 +291,7 @@ class WorkflowOrchestrator {
293
291
  async _executeSkillStep(step, execution) {
294
292
  const input = this._resolveInput(step.input, execution.context);
295
293
  const skill = this.engine.getSkill(step.skill);
296
-
294
+
297
295
  if (!skill) {
298
296
  throw new Error(`Unknown skill: ${step.skill}`);
299
297
  }
@@ -301,7 +299,7 @@ class WorkflowOrchestrator {
301
299
  const parentContext = new ExecutionContext({
302
300
  task: `Workflow skill: ${step.skill}`,
303
301
  skill: step.skill,
304
- input
302
+ input,
305
303
  });
306
304
 
307
305
  return await this.engine.executeSkill(step.skill, input, parentContext);
@@ -313,9 +311,9 @@ class WorkflowOrchestrator {
313
311
  */
314
312
  async _executePatternStep(step, execution) {
315
313
  const input = this._resolveInput(step.input, execution.context);
316
-
314
+
317
315
  const context = await this.engine.execute(step.pattern, {
318
- input: { ...input, ...step.config }
316
+ input: { ...input, ...step.config },
319
317
  });
320
318
 
321
319
  return context.output;
@@ -327,9 +325,9 @@ class WorkflowOrchestrator {
327
325
  */
328
326
  async _executeConditionalStep(step, execution) {
329
327
  const condition = this._evaluateCondition(step.condition, execution.context);
330
-
328
+
331
329
  const branchSteps = condition ? step.then : step.else;
332
-
330
+
333
331
  if (branchSteps && branchSteps.length > 0) {
334
332
  for (const branchStep of branchSteps) {
335
333
  const result = await this._executeStep(branchStep, execution, {});
@@ -348,16 +346,14 @@ class WorkflowOrchestrator {
348
346
  */
349
347
  async _executeParallelStep(step, execution) {
350
348
  const results = await Promise.allSettled(
351
- step.steps.map(subStep =>
352
- this._executeStep(subStep, execution, {})
353
- )
349
+ step.steps.map(subStep => this._executeStep(subStep, execution, {}))
354
350
  );
355
351
 
356
352
  const outputs = results.map((r, i) => ({
357
353
  step: step.steps[i].name || `parallel-${i}`,
358
354
  status: r.status === 'fulfilled' ? r.value.status : ExecutionStatus.FAILED,
359
355
  output: r.status === 'fulfilled' ? r.value.output : null,
360
- error: r.status === 'rejected' ? r.reason.message : null
356
+ error: r.status === 'rejected' ? r.reason.message : null,
361
357
  }));
362
358
 
363
359
  return { parallelResults: outputs };
@@ -372,7 +368,7 @@ class WorkflowOrchestrator {
372
368
  id: this._generateId(),
373
369
  name: step.name || 'checkpoint',
374
370
  timestamp: Date.now(),
375
- context: { ...execution.context }
371
+ context: { ...execution.context },
376
372
  };
377
373
 
378
374
  execution.checkpoints.push(checkpoint);
@@ -411,7 +407,7 @@ class WorkflowOrchestrator {
411
407
  _resolveInput(input, context) {
412
408
  if (!input) return context;
413
409
  if (typeof input === 'function') return input(context);
414
-
410
+
415
411
  const resolved = {};
416
412
  for (const [key, value] of Object.entries(input)) {
417
413
  if (typeof value === 'string' && value.startsWith('$')) {
@@ -454,8 +450,9 @@ class WorkflowOrchestrator {
454
450
  */
455
451
  _resolveTemplate(template, context) {
456
452
  if (typeof template !== 'string') return template;
457
- return template.replace(/\$\{([^}]+)\}/g, (_, path) =>
458
- this._getValueByPath(context, path) || ''
453
+ return template.replace(
454
+ /\$\{([^}]+)\}/g,
455
+ (_, path) => this._getValueByPath(context, path) || ''
459
456
  );
460
457
  }
461
458
 
@@ -465,7 +462,7 @@ class WorkflowOrchestrator {
465
462
  */
466
463
  _extractOutputs(context, outputs) {
467
464
  if (!outputs || outputs.length === 0) return context;
468
-
465
+
469
466
  const result = {};
470
467
  for (const output of outputs) {
471
468
  result[output] = context[output];
@@ -478,7 +475,9 @@ class WorkflowOrchestrator {
478
475
  * @private
479
476
  */
480
477
  _createSummary(execution) {
481
- const completed = execution.stepResults.filter(s => s.status === ExecutionStatus.COMPLETED).length;
478
+ const completed = execution.stepResults.filter(
479
+ s => s.status === ExecutionStatus.COMPLETED
480
+ ).length;
482
481
  const failed = execution.stepResults.filter(s => s.status === ExecutionStatus.FAILED).length;
483
482
  const total = execution.stepResults.length;
484
483
 
@@ -486,9 +485,9 @@ class WorkflowOrchestrator {
486
485
  totalSteps: total,
487
486
  completedSteps: completed,
488
487
  failedSteps: failed,
489
- successRate: total > 0 ? (completed / total * 100).toFixed(1) + '%' : '0%',
488
+ successRate: total > 0 ? ((completed / total) * 100).toFixed(1) + '%' : '0%',
490
489
  duration: execution.endTime - execution.startTime,
491
- checkpoints: execution.checkpoints.length
490
+ checkpoints: execution.checkpoints.length,
492
491
  };
493
492
  }
494
493
 
@@ -504,7 +503,7 @@ class WorkflowOrchestrator {
504
503
  workflow: execution.workflow,
505
504
  currentStep: execution.currentStep,
506
505
  context: execution.context,
507
- timestamp: Date.now()
506
+ timestamp: Date.now(),
508
507
  };
509
508
  this.options.checkpointStorage.set(checkpoint.id, checkpoint);
510
509
  return checkpoint;
@@ -532,7 +531,7 @@ class WorkflowOrchestrator {
532
531
  const remainingSteps = workflow.steps.slice(checkpoint.currentStep);
533
532
  const resumedWorkflow = {
534
533
  ...workflow,
535
- steps: remainingSteps
534
+ steps: remainingSteps,
536
535
  };
537
536
 
538
537
  // Temporarily register resumed workflow
@@ -596,22 +595,22 @@ const SDDWorkflowTemplates = {
596
595
  name: 'requirements',
597
596
  type: StepType.SKILL,
598
597
  skill: 'requirements-analyst',
599
- input: { feature: '$featureName' }
598
+ input: { feature: '$featureName' },
600
599
  },
601
600
  {
602
601
  name: 'design',
603
602
  type: StepType.SKILL,
604
603
  skill: 'software-architect',
605
- input: { requirements: '$step_0_result' }
604
+ input: { requirements: '$step_0_result' },
606
605
  },
607
606
  {
608
607
  name: 'tasks',
609
608
  type: StepType.SKILL,
610
609
  skill: 'task-planner',
611
- input: { design: '$step_1_result' }
612
- }
610
+ input: { design: '$step_1_result' },
611
+ },
613
612
  ],
614
- outputs: ['requirements', 'design', 'tasks']
613
+ outputs: ['requirements', 'design', 'tasks'],
615
614
  },
616
615
 
617
616
  /**
@@ -625,17 +624,17 @@ const SDDWorkflowTemplates = {
625
624
  name: 'research',
626
625
  type: StepType.PATTERN,
627
626
  pattern: PatternType.AUTO,
628
- input: { task: 'Research: $featureName' }
627
+ input: { task: 'Research: $featureName' },
629
628
  },
630
629
  {
631
630
  name: 'requirements',
632
631
  type: StepType.SKILL,
633
- skill: 'requirements-analyst'
632
+ skill: 'requirements-analyst',
634
633
  },
635
634
  {
636
635
  name: 'review-requirements',
637
636
  type: StepType.HUMAN_GATE,
638
- question: 'Please review the requirements for ${featureName}'
637
+ question: 'Please review the requirements for ${featureName}',
639
638
  },
640
639
  {
641
640
  name: 'design',
@@ -643,16 +642,16 @@ const SDDWorkflowTemplates = {
643
642
  pattern: PatternType.GROUP_CHAT,
644
643
  config: {
645
644
  participants: ['software-architect', 'security-reviewer', 'ux-designer'],
646
- topic: 'Design review'
647
- }
645
+ topic: 'Design review',
646
+ },
648
647
  },
649
648
  {
650
649
  name: 'implementation',
651
650
  type: StepType.PATTERN,
652
651
  pattern: PatternType.SEQUENTIAL,
653
652
  config: {
654
- skills: ['code-generator', 'test-engineer']
655
- }
653
+ skills: ['code-generator', 'test-engineer'],
654
+ },
656
655
  },
657
656
  {
658
657
  name: 'validation',
@@ -662,22 +661,22 @@ const SDDWorkflowTemplates = {
662
661
  tasks: [
663
662
  { skill: 'code-reviewer' },
664
663
  { skill: 'security-reviewer' },
665
- { skill: 'accessibility-specialist' }
666
- ]
667
- }
664
+ { skill: 'accessibility-specialist' },
665
+ ],
666
+ },
668
667
  },
669
668
  {
670
669
  name: 'checkpoint',
671
670
  type: StepType.CHECKPOINT,
672
- name: 'pre-deployment'
671
+ checkpoint: 'pre-deployment',
673
672
  },
674
673
  {
675
674
  name: 'deploy-approval',
676
675
  type: StepType.HUMAN_GATE,
677
- question: 'Approve deployment for ${featureName}?'
678
- }
676
+ question: 'Approve deployment for ${featureName}?',
677
+ },
679
678
  ],
680
- outputs: ['requirements', 'design', 'code', 'tests', 'reviews']
679
+ outputs: ['requirements', 'design', 'code', 'tests', 'reviews'],
681
680
  },
682
681
 
683
682
  /**
@@ -694,29 +693,29 @@ const SDDWorkflowTemplates = {
694
693
  {
695
694
  type: StepType.SKILL,
696
695
  skill: 'code-reviewer',
697
- input: { focus: 'quality' }
696
+ input: { focus: 'quality' },
698
697
  },
699
698
  {
700
699
  type: StepType.SKILL,
701
700
  skill: 'security-reviewer',
702
- input: { focus: 'security' }
701
+ input: { focus: 'security' },
703
702
  },
704
703
  {
705
704
  type: StepType.SKILL,
706
705
  skill: 'performance-engineer',
707
- input: { focus: 'performance' }
708
- }
709
- ]
706
+ input: { focus: 'performance' },
707
+ },
708
+ ],
710
709
  },
711
710
  {
712
711
  name: 'consolidate',
713
712
  type: StepType.SKILL,
714
713
  skill: 'documentation-writer',
715
- input: { reviews: '$parallelResults' }
716
- }
714
+ input: { reviews: '$parallelResults' },
715
+ },
717
716
  ],
718
- outputs: ['reviews', 'summary']
719
- }
717
+ outputs: ['reviews', 'summary'],
718
+ },
720
719
  };
721
720
 
722
721
  /**
@@ -734,5 +733,5 @@ module.exports = {
734
733
  StepType,
735
734
  WorkflowState,
736
735
  SDDWorkflowTemplates,
737
- createWorkflowOrchestrator
736
+ createWorkflowOrchestrator,
738
737
  };
@@ -10,9 +10,17 @@
10
10
  const mcpIntegration = require('./integrations/mcp');
11
11
 
12
12
  // Sprint 4.2: Codebase Intelligence
13
- const { RepositoryMap, createRepositoryMap, generateRepositoryMap } = require('./analyzers/repository-map');
13
+ const {
14
+ RepositoryMap,
15
+ createRepositoryMap,
16
+ generateRepositoryMap,
17
+ } = require('./analyzers/repository-map');
14
18
  const { ASTExtractor, createASTExtractor } = require('./analyzers/ast-extractor');
15
- const { ContextOptimizer, createContextOptimizer, optimizeContext } = require('./analyzers/context-optimizer');
19
+ const {
20
+ ContextOptimizer,
21
+ createContextOptimizer,
22
+ optimizeContext,
23
+ } = require('./analyzers/context-optimizer');
16
24
 
17
25
  // Sprint 4.3: Agentic Reasoning
18
26
  const {
@@ -26,7 +34,7 @@ const {
26
34
  STEP_TYPE,
27
35
  TASK_STATUS,
28
36
  PLAN_STATUS,
29
- PRIORITY
37
+ PRIORITY,
30
38
  } = require('./orchestration/reasoning');
31
39
 
32
40
  // Sprint 4.4: Agentic Features
@@ -42,7 +50,7 @@ const {
42
50
  TEMPLATES,
43
51
  SEVERITY,
44
52
  CATEGORY,
45
- DEFAULT_RULES
53
+ DEFAULT_RULES,
46
54
  } = require('./agents/agentic');
47
55
 
48
56
  /**
@@ -53,10 +61,10 @@ const phase4 = {
53
61
  // Version
54
62
  version: '4.0.0',
55
63
  phase: 4,
56
-
64
+
57
65
  // Sprint 4.1: MCP Integration
58
66
  mcp: mcpIntegration,
59
-
67
+
60
68
  // Sprint 4.2: Codebase Intelligence
61
69
  codebase: {
62
70
  RepositoryMap,
@@ -66,9 +74,9 @@ const phase4 = {
66
74
  createASTExtractor,
67
75
  ContextOptimizer,
68
76
  createContextOptimizer,
69
- optimizeContext
77
+ optimizeContext,
70
78
  },
71
-
79
+
72
80
  // Sprint 4.3: Agentic Reasoning
73
81
  reasoning: {
74
82
  ReasoningEngine,
@@ -81,9 +89,9 @@ const phase4 = {
81
89
  STEP_TYPE,
82
90
  TASK_STATUS,
83
91
  PLAN_STATUS,
84
- PRIORITY
92
+ PRIORITY,
85
93
  },
86
-
94
+
87
95
  // Sprint 4.4: Agentic Features
88
96
  agentic: {
89
97
  CodeGenerator,
@@ -97,8 +105,8 @@ const phase4 = {
97
105
  TEMPLATES,
98
106
  SEVERITY,
99
107
  CATEGORY,
100
- DEFAULT_RULES
101
- }
108
+ DEFAULT_RULES,
109
+ },
102
110
  };
103
111
 
104
112
  /**
@@ -112,16 +120,16 @@ function createIntegratedAgent(options = {}) {
112
120
  repositoryMap: createRepositoryMap(options.repositoryMap),
113
121
  astExtractor: createASTExtractor(options.astExtractor),
114
122
  contextOptimizer: createContextOptimizer(options.contextOptimizer),
115
-
123
+
116
124
  // Agentic Reasoning
117
125
  reasoningEngine: createReasoningEngine(options.reasoning),
118
126
  planningEngine: createPlanningEngine(options.planning),
119
127
  selfCorrection: createSelfCorrection(options.selfCorrection),
120
-
128
+
121
129
  // Agentic Features
122
130
  codeGenerator: createCodeGenerator(options.codeGenerator),
123
131
  codeReviewer: createCodeReviewer(options.codeReviewer),
124
-
132
+
125
133
  /**
126
134
  * Analyze repository and generate context
127
135
  * @param {string} rootPath - Repository root path
@@ -131,10 +139,10 @@ function createIntegratedAgent(options = {}) {
131
139
  const map = await this.repositoryMap.generate(rootPath);
132
140
  return {
133
141
  map,
134
- stats: this.repositoryMap.getStats()
142
+ stats: this.repositoryMap.getStats(),
135
143
  };
136
144
  },
137
-
145
+
138
146
  /**
139
147
  * Generate code with reasoning
140
148
  * @param {string} description - What to generate
@@ -144,50 +152,49 @@ function createIntegratedAgent(options = {}) {
144
152
  async generateWithReasoning(description, options = {}) {
145
153
  // Plan the generation
146
154
  const plan = this.planningEngine.createPlan(`Generate: ${description}`, {
147
- strategy: 'incremental'
155
+ strategy: 'incremental',
148
156
  });
149
-
157
+
150
158
  // Reason about the implementation
151
- const reasoning = this.reasoningEngine.reason(
152
- `How to implement: ${description}`,
153
- { type: 'decomposition' }
154
- );
155
-
159
+ const reasoning = this.reasoningEngine.reason(`How to implement: ${description}`, {
160
+ type: 'decomposition',
161
+ });
162
+
156
163
  // Generate the code
157
164
  const generated = await this.codeGenerator.generate({
158
165
  description,
159
- ...options
166
+ ...options,
160
167
  });
161
-
168
+
162
169
  // Review the generated code
163
170
  const review = this.codeReviewer.review(generated.code, options);
164
-
171
+
165
172
  // Self-correct if needed
166
173
  if (review.score < 70) {
167
174
  const correction = this.selfCorrection.analyzeError({
168
175
  error: new Error('Code quality below threshold'),
169
- context: { review, generated }
176
+ context: { review, generated },
170
177
  });
171
-
178
+
172
179
  return {
173
180
  generated,
174
181
  review,
175
182
  correction,
176
183
  reasoning: reasoning.result,
177
184
  plan: plan.id,
178
- needsImprovement: true
185
+ needsImprovement: true,
179
186
  };
180
187
  }
181
-
188
+
182
189
  return {
183
190
  generated,
184
191
  review,
185
192
  reasoning: reasoning.result,
186
193
  plan: plan.id,
187
- needsImprovement: false
194
+ needsImprovement: false,
188
195
  };
189
196
  },
190
-
197
+
191
198
  /**
192
199
  * Get agent statistics
193
200
  * @returns {Object} Agent statistics
@@ -198,9 +205,9 @@ function createIntegratedAgent(options = {}) {
198
205
  reasoning: this.reasoningEngine.getStats(),
199
206
  planning: this.planningEngine.getStats(),
200
207
  codeGenerator: this.codeGenerator.getStats(),
201
- codeReviewer: this.codeReviewer.getStats()
208
+ codeReviewer: this.codeReviewer.getStats(),
202
209
  };
203
- }
210
+ },
204
211
  };
205
212
  }
206
213
 
@@ -208,7 +215,7 @@ module.exports = {
208
215
  ...phase4,
209
216
  phase4,
210
217
  createIntegratedAgent,
211
-
218
+
212
219
  // Direct exports for convenience
213
220
  RepositoryMap,
214
221
  ASTExtractor,
@@ -218,7 +225,7 @@ module.exports = {
218
225
  SelfCorrection,
219
226
  CodeGenerator,
220
227
  CodeReviewer,
221
-
228
+
222
229
  // Factory functions
223
230
  createRepositoryMap,
224
231
  createASTExtractor,
@@ -228,13 +235,13 @@ module.exports = {
228
235
  createSelfCorrection,
229
236
  createCodeGenerator,
230
237
  createCodeReviewer,
231
-
238
+
232
239
  // Helper functions
233
240
  generateRepositoryMap,
234
241
  optimizeContext,
235
242
  generateCode,
236
243
  reviewCode,
237
-
244
+
238
245
  // Enums
239
246
  STRATEGY,
240
247
  STEP_TYPE,
@@ -244,5 +251,5 @@ module.exports = {
244
251
  GEN_MODE,
245
252
  LANGUAGE,
246
253
  SEVERITY,
247
- CATEGORY
254
+ CATEGORY,
248
255
  };