musubi-sdd 5.0.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.
- package/README.ja.md +106 -48
- package/README.md +110 -32
- package/bin/musubi-analyze.js +74 -67
- package/bin/musubi-browser.js +27 -26
- package/bin/musubi-change.js +48 -47
- package/bin/musubi-checkpoint.js +10 -7
- package/bin/musubi-convert.js +25 -25
- package/bin/musubi-costs.js +27 -10
- package/bin/musubi-gui.js +52 -46
- package/bin/musubi-init.js +1952 -10
- package/bin/musubi-orchestrate.js +327 -239
- package/bin/musubi-remember.js +69 -56
- package/bin/musubi-resolve.js +53 -45
- package/bin/musubi-trace.js +51 -22
- package/bin/musubi-validate.js +39 -30
- package/bin/musubi-workflow.js +33 -34
- package/bin/musubi.js +39 -2
- package/package.json +1 -1
- package/src/agents/agent-loop.js +94 -95
- package/src/agents/agentic/code-generator.js +119 -109
- package/src/agents/agentic/code-reviewer.js +105 -108
- package/src/agents/agentic/index.js +4 -4
- package/src/agents/browser/action-executor.js +13 -13
- package/src/agents/browser/ai-comparator.js +11 -10
- package/src/agents/browser/context-manager.js +6 -6
- package/src/agents/browser/index.js +5 -5
- package/src/agents/browser/nl-parser.js +31 -46
- package/src/agents/browser/screenshot.js +2 -2
- package/src/agents/browser/test-generator.js +6 -4
- package/src/agents/function-tool.js +71 -65
- package/src/agents/index.js +7 -7
- package/src/agents/schema-generator.js +98 -94
- package/src/analyzers/ast-extractor.js +164 -145
- package/src/analyzers/codegraph-auto-update.js +858 -0
- package/src/analyzers/complexity-analyzer.js +536 -0
- package/src/analyzers/context-optimizer.js +247 -125
- package/src/analyzers/impact-analyzer.js +1 -1
- package/src/analyzers/large-project-analyzer.js +766 -0
- package/src/analyzers/repository-map.js +83 -80
- package/src/analyzers/security-analyzer.js +19 -11
- package/src/analyzers/stuck-detector.js +19 -17
- package/src/converters/index.js +78 -57
- package/src/converters/ir/types.js +12 -12
- package/src/converters/parsers/musubi-parser.js +134 -126
- package/src/converters/parsers/openapi-parser.js +70 -53
- package/src/converters/parsers/speckit-parser.js +239 -175
- package/src/converters/writers/musubi-writer.js +123 -118
- package/src/converters/writers/speckit-writer.js +124 -113
- package/src/generators/rust-migration-generator.js +512 -0
- package/src/gui/public/index.html +1365 -1211
- package/src/gui/server.js +41 -40
- package/src/gui/services/file-watcher.js +23 -8
- package/src/gui/services/project-scanner.js +26 -20
- package/src/gui/services/replanning-service.js +27 -23
- package/src/gui/services/traceability-service.js +8 -8
- package/src/gui/services/workflow-service.js +14 -7
- package/src/index.js +151 -0
- package/src/integrations/cicd.js +90 -104
- package/src/integrations/codegraph-mcp.js +643 -0
- package/src/integrations/documentation.js +142 -103
- package/src/integrations/examples.js +95 -80
- package/src/integrations/github-client.js +17 -17
- package/src/integrations/index.js +5 -5
- package/src/integrations/mcp/index.js +21 -21
- package/src/integrations/mcp/mcp-context-provider.js +76 -78
- package/src/integrations/mcp/mcp-discovery.js +74 -72
- package/src/integrations/mcp/mcp-tool-registry.js +99 -94
- package/src/integrations/mcp-connector.js +70 -66
- package/src/integrations/platforms.js +50 -49
- package/src/integrations/tool-discovery.js +37 -31
- package/src/llm-providers/anthropic-provider.js +11 -11
- package/src/llm-providers/base-provider.js +16 -18
- package/src/llm-providers/copilot-provider.js +22 -19
- package/src/llm-providers/index.js +26 -25
- package/src/llm-providers/ollama-provider.js +11 -11
- package/src/llm-providers/openai-provider.js +12 -12
- package/src/managers/agent-memory.js +36 -24
- package/src/managers/checkpoint-manager.js +4 -8
- package/src/managers/delta-spec.js +19 -19
- package/src/managers/index.js +13 -4
- package/src/managers/memory-condenser.js +35 -45
- package/src/managers/repo-skill-manager.js +57 -31
- package/src/managers/skill-loader.js +25 -22
- package/src/managers/skill-tools.js +36 -72
- package/src/managers/workflow.js +30 -22
- package/src/monitoring/cost-tracker.js +53 -44
- package/src/monitoring/incident-manager.js +123 -103
- package/src/monitoring/index.js +144 -134
- package/src/monitoring/observability.js +82 -59
- package/src/monitoring/quality-dashboard.js +51 -39
- package/src/monitoring/release-manager.js +70 -50
- package/src/orchestration/agent-skill-binding.js +39 -47
- package/src/orchestration/error-handler.js +65 -107
- package/src/orchestration/guardrails/base-guardrail.js +26 -24
- package/src/orchestration/guardrails/guardrail-rules.js +50 -64
- package/src/orchestration/guardrails/index.js +5 -5
- package/src/orchestration/guardrails/input-guardrail.js +58 -45
- package/src/orchestration/guardrails/output-guardrail.js +104 -81
- package/src/orchestration/guardrails/safety-check.js +79 -79
- package/src/orchestration/index.js +38 -55
- package/src/orchestration/mcp-tool-adapters.js +96 -99
- package/src/orchestration/orchestration-engine.js +21 -21
- package/src/orchestration/pattern-registry.js +60 -45
- package/src/orchestration/patterns/auto.js +34 -47
- package/src/orchestration/patterns/group-chat.js +59 -65
- package/src/orchestration/patterns/handoff.js +67 -65
- package/src/orchestration/patterns/human-in-loop.js +51 -72
- package/src/orchestration/patterns/nested.js +25 -40
- package/src/orchestration/patterns/sequential.js +35 -34
- package/src/orchestration/patterns/swarm.js +63 -56
- package/src/orchestration/patterns/triage.js +150 -109
- package/src/orchestration/reasoning/index.js +9 -9
- package/src/orchestration/reasoning/planning-engine.js +143 -140
- package/src/orchestration/reasoning/reasoning-engine.js +206 -144
- package/src/orchestration/reasoning/self-correction.js +121 -128
- package/src/orchestration/replanning/adaptive-goal-modifier.js +107 -112
- package/src/orchestration/replanning/alternative-generator.js +37 -42
- package/src/orchestration/replanning/config.js +63 -59
- package/src/orchestration/replanning/goal-progress-tracker.js +98 -100
- package/src/orchestration/replanning/index.js +24 -20
- package/src/orchestration/replanning/plan-evaluator.js +49 -50
- package/src/orchestration/replanning/plan-monitor.js +32 -28
- package/src/orchestration/replanning/proactive-path-optimizer.js +175 -178
- package/src/orchestration/replanning/replan-history.js +33 -26
- package/src/orchestration/replanning/replanning-engine.js +106 -108
- package/src/orchestration/skill-executor.js +107 -109
- package/src/orchestration/skill-registry.js +85 -89
- package/src/orchestration/workflow-examples.js +228 -231
- package/src/orchestration/workflow-executor.js +65 -68
- package/src/orchestration/workflow-orchestrator.js +72 -73
- package/src/phase4-integration.js +47 -40
- package/src/phase5-integration.js +89 -30
- package/src/reporters/coverage-report.js +82 -30
- package/src/reporters/hierarchical-reporter.js +498 -0
- package/src/reporters/traceability-matrix-report.js +29 -20
- package/src/resolvers/issue-resolver.js +43 -31
- package/src/steering/advanced-validation.js +133 -124
- package/src/steering/auto-updater.js +60 -73
- package/src/steering/index.js +6 -6
- package/src/steering/quality-metrics.js +41 -35
- package/src/steering/steering-auto-update.js +83 -86
- package/src/steering/steering-validator.js +98 -106
- package/src/steering/template-constraints.js +53 -54
- package/src/templates/agents/claude-code/CLAUDE.md +32 -32
- package/src/templates/agents/claude-code/skills/agent-assistant/SKILL.md +13 -5
- package/src/templates/agents/claude-code/skills/ai-ml-engineer/mlops-guide.md +23 -23
- package/src/templates/agents/claude-code/skills/ai-ml-engineer/model-card-template.md +60 -41
- package/src/templates/agents/claude-code/skills/api-designer/api-patterns.md +27 -19
- package/src/templates/agents/claude-code/skills/api-designer/openapi-template.md +11 -7
- package/src/templates/agents/claude-code/skills/bug-hunter/SKILL.md +4 -3
- package/src/templates/agents/claude-code/skills/bug-hunter/root-cause-analysis.md +37 -15
- package/src/templates/agents/claude-code/skills/change-impact-analyzer/dependency-graph-patterns.md +36 -42
- package/src/templates/agents/claude-code/skills/change-impact-analyzer/impact-analysis-template.md +69 -60
- package/src/templates/agents/claude-code/skills/cloud-architect/aws-patterns.md +31 -38
- package/src/templates/agents/claude-code/skills/cloud-architect/azure-patterns.md +28 -23
- package/src/templates/agents/claude-code/skills/code-reviewer/SKILL.md +61 -0
- package/src/templates/agents/claude-code/skills/code-reviewer/best-practices.md +27 -0
- package/src/templates/agents/claude-code/skills/code-reviewer/review-checklist.md +29 -10
- package/src/templates/agents/claude-code/skills/code-reviewer/review-standards.md +29 -24
- package/src/templates/agents/claude-code/skills/constitution-enforcer/SKILL.md +8 -6
- package/src/templates/agents/claude-code/skills/constitution-enforcer/constitutional-articles.md +62 -26
- package/src/templates/agents/claude-code/skills/constitution-enforcer/phase-minus-one-gates.md +35 -16
- package/src/templates/agents/claude-code/skills/database-administrator/backup-recovery.md +27 -17
- package/src/templates/agents/claude-code/skills/database-administrator/tuning-guide.md +25 -20
- package/src/templates/agents/claude-code/skills/database-schema-designer/schema-patterns.md +39 -22
- package/src/templates/agents/claude-code/skills/devops-engineer/ci-cd-templates.md +25 -22
- package/src/templates/agents/claude-code/skills/issue-resolver/SKILL.md +24 -21
- package/src/templates/agents/claude-code/skills/orchestrator/SKILL.md +148 -63
- package/src/templates/agents/claude-code/skills/orchestrator/patterns.md +35 -16
- package/src/templates/agents/claude-code/skills/orchestrator/selection-matrix.md +69 -64
- package/src/templates/agents/claude-code/skills/performance-engineer/optimization-playbook.md +47 -47
- package/src/templates/agents/claude-code/skills/performance-optimizer/SKILL.md +69 -0
- package/src/templates/agents/claude-code/skills/performance-optimizer/benchmark-template.md +63 -45
- package/src/templates/agents/claude-code/skills/performance-optimizer/optimization-patterns.md +33 -35
- package/src/templates/agents/claude-code/skills/project-manager/SKILL.md +7 -6
- package/src/templates/agents/claude-code/skills/project-manager/agile-ceremonies.md +47 -28
- package/src/templates/agents/claude-code/skills/project-manager/project-templates.md +94 -78
- package/src/templates/agents/claude-code/skills/quality-assurance/SKILL.md +20 -17
- package/src/templates/agents/claude-code/skills/quality-assurance/qa-plan-template.md +63 -49
- package/src/templates/agents/claude-code/skills/release-coordinator/SKILL.md +5 -5
- package/src/templates/agents/claude-code/skills/release-coordinator/feature-flag-guide.md +30 -26
- package/src/templates/agents/claude-code/skills/release-coordinator/release-plan-template.md +67 -35
- package/src/templates/agents/claude-code/skills/requirements-analyst/ears-format.md +54 -42
- package/src/templates/agents/claude-code/skills/requirements-analyst/validation-rules.md +36 -33
- package/src/templates/agents/claude-code/skills/security-auditor/SKILL.md +77 -19
- package/src/templates/agents/claude-code/skills/security-auditor/audit-checklists.md +24 -24
- package/src/templates/agents/claude-code/skills/security-auditor/owasp-top-10.md +61 -20
- package/src/templates/agents/claude-code/skills/security-auditor/vulnerability-patterns.md +43 -11
- package/src/templates/agents/claude-code/skills/site-reliability-engineer/SKILL.md +1 -0
- package/src/templates/agents/claude-code/skills/site-reliability-engineer/incident-response-template.md +55 -25
- package/src/templates/agents/claude-code/skills/site-reliability-engineer/observability-patterns.md +78 -68
- package/src/templates/agents/claude-code/skills/site-reliability-engineer/slo-sli-guide.md +73 -53
- package/src/templates/agents/claude-code/skills/software-developer/solid-principles.md +83 -37
- package/src/templates/agents/claude-code/skills/software-developer/test-first-workflow.md +38 -31
- package/src/templates/agents/claude-code/skills/steering/SKILL.md +1 -0
- package/src/templates/agents/claude-code/skills/steering/auto-update-rules.md +31 -0
- package/src/templates/agents/claude-code/skills/system-architect/adr-template.md +25 -7
- package/src/templates/agents/claude-code/skills/system-architect/c4-model-guide.md +74 -61
- package/src/templates/agents/claude-code/skills/technical-writer/doc-templates/documentation-templates.md +70 -52
- package/src/templates/agents/claude-code/skills/test-engineer/SKILL.md +2 -0
- package/src/templates/agents/claude-code/skills/test-engineer/ears-test-mapping.md +75 -71
- package/src/templates/agents/claude-code/skills/test-engineer/test-types.md +85 -63
- package/src/templates/agents/claude-code/skills/traceability-auditor/coverage-matrix-template.md +39 -36
- package/src/templates/agents/claude-code/skills/traceability-auditor/gap-detection-rules.md +22 -17
- package/src/templates/agents/claude-code/skills/ui-ux-designer/SKILL.md +1 -0
- package/src/templates/agents/claude-code/skills/ui-ux-designer/accessibility-guidelines.md +49 -75
- package/src/templates/agents/claude-code/skills/ui-ux-designer/design-system-components.md +71 -59
- package/src/templates/agents/codex/AGENTS.md +74 -42
- package/src/templates/agents/cursor/AGENTS.md +74 -42
- package/src/templates/agents/gemini-cli/GEMINI.md +74 -42
- package/src/templates/agents/github-copilot/AGENTS.md +83 -51
- package/src/templates/agents/qwen-code/QWEN.md +74 -42
- package/src/templates/agents/windsurf/AGENTS.md +74 -42
- package/src/templates/architectures/README.md +41 -0
- package/src/templates/architectures/clean-architecture/README.md +113 -0
- package/src/templates/architectures/event-driven/README.md +162 -0
- package/src/templates/architectures/hexagonal/README.md +130 -0
- package/src/templates/index.js +6 -1
- package/src/templates/locale-manager.js +16 -16
- package/src/templates/shared/delta-spec-template.md +20 -13
- package/src/templates/shared/github-actions/musubi-issue-resolver.yml +5 -5
- package/src/templates/shared/github-actions/musubi-security-check.yml +3 -3
- package/src/templates/shared/github-actions/musubi-validate.yml +4 -4
- package/src/templates/shared/steering/structure.md +95 -0
- package/src/templates/skills/browser-agent.md +21 -16
- package/src/templates/skills/web-gui.md +8 -0
- package/src/templates/template-constraints.js +50 -53
- package/src/validators/advanced-validation.js +30 -36
- package/src/validators/constitutional-validator.js +77 -73
- package/src/validators/critic-system.js +49 -59
- package/src/validators/delta-format.js +59 -55
- package/src/validators/traceability-validator.js +7 -11
|
@@ -98,16 +98,16 @@ MUSUBI enforces 9 immutable constitutional articles:
|
|
|
98
98
|
|
|
99
99
|
MUSUBI provides advanced AI agent assistance modules:
|
|
100
100
|
|
|
101
|
-
| Module
|
|
102
|
-
|
|
103
|
-
| **StuckDetector**
|
|
104
|
-
| **MemoryCondenser**
|
|
105
|
-
| **AgentMemoryManager** | Extract & persist learnings
|
|
106
|
-
| **CriticSystem**
|
|
107
|
-
| **SecurityAnalyzer**
|
|
108
|
-
| **IssueResolver**
|
|
109
|
-
| **SkillLoader**
|
|
110
|
-
| **RepoSkillManager**
|
|
101
|
+
| Module | Purpose | Import |
|
|
102
|
+
| ---------------------- | ----------------------------- | ------------------------------------ |
|
|
103
|
+
| **StuckDetector** | Detect agent stuck states | `src/analyzers/stuck-detector.js` |
|
|
104
|
+
| **MemoryCondenser** | Compress session history | `src/managers/memory-condenser.js` |
|
|
105
|
+
| **AgentMemoryManager** | Extract & persist learnings | `src/managers/agent-memory.js` |
|
|
106
|
+
| **CriticSystem** | Evaluate SDD stage quality | `src/validators/critic-system.js` |
|
|
107
|
+
| **SecurityAnalyzer** | Detect security risks | `src/analyzers/security-analyzer.js` |
|
|
108
|
+
| **IssueResolver** | GitHub Issue analysis | `src/resolvers/issue-resolver.js` |
|
|
109
|
+
| **SkillLoader** | Load keyword-triggered skills | `src/managers/skill-loader.js` |
|
|
110
|
+
| **RepoSkillManager** | Manage project skills | `src/managers/repo-skill-manager.js` |
|
|
111
111
|
|
|
112
112
|
## Quick Start
|
|
113
113
|
|
|
@@ -146,47 +146,79 @@ npx musubi-sdd <command>
|
|
|
146
146
|
|
|
147
147
|
### Core Commands
|
|
148
148
|
|
|
149
|
-
| Command
|
|
150
|
-
|
|
151
|
-
| `musubi-workflow`
|
|
152
|
-
| `musubi-requirements` | EARS requirements
|
|
153
|
-
| `musubi-design`
|
|
154
|
-
| `musubi-tasks`
|
|
155
|
-
| `musubi-trace`
|
|
156
|
-
| `musubi-validate`
|
|
149
|
+
| Command | Purpose | Example |
|
|
150
|
+
| --------------------- | ------------------------- | ---------------------------------------- |
|
|
151
|
+
| `musubi-workflow` | Workflow state & metrics | `npx musubi-workflow status` |
|
|
152
|
+
| `musubi-requirements` | EARS requirements | `npx musubi-requirements init <feature>` |
|
|
153
|
+
| `musubi-design` | C4 + ADR design | `npx musubi-design init <feature>` |
|
|
154
|
+
| `musubi-tasks` | Task breakdown | `npx musubi-tasks init <feature>` |
|
|
155
|
+
| `musubi-trace` | Traceability | `npx musubi-trace matrix` |
|
|
156
|
+
| `musubi-validate` | Constitutional validation | `npx musubi-validate all` |
|
|
157
157
|
|
|
158
158
|
### Advanced Commands (v3.5.0 NEW)
|
|
159
159
|
|
|
160
|
-
| Command
|
|
161
|
-
|
|
162
|
-
| `musubi-orchestrate` | Multi-skill orchestration | `npx musubi-orchestrate auto <task>`
|
|
163
|
-
| `musubi-browser`
|
|
164
|
-
| `musubi-gui`
|
|
165
|
-
| `musubi-remember`
|
|
166
|
-
| `musubi-resolve`
|
|
167
|
-
| `musubi-convert`
|
|
160
|
+
| Command | Purpose | Example |
|
|
161
|
+
| -------------------- | ------------------------- | -------------------------------------- |
|
|
162
|
+
| `musubi-orchestrate` | Multi-skill orchestration | `npx musubi-orchestrate auto <task>` |
|
|
163
|
+
| `musubi-browser` | Browser automation & E2E | `npx musubi-browser run "click login"` |
|
|
164
|
+
| `musubi-gui` | Web GUI dashboard | `npx musubi-gui start` |
|
|
165
|
+
| `musubi-remember` | Agent memory management | `npx musubi-remember extract` |
|
|
166
|
+
| `musubi-resolve` | GitHub Issue resolution | `npx musubi-resolve <issue-number>` |
|
|
167
|
+
| `musubi-convert` | Format conversion | `npx musubi-convert to-speckit` |
|
|
168
168
|
|
|
169
169
|
### Replanning Commands (v3.6.0 NEW)
|
|
170
170
|
|
|
171
|
-
| Command
|
|
172
|
-
|
|
173
|
-
| `musubi-orchestrate replan`
|
|
174
|
-
| `musubi-orchestrate goal register`
|
|
175
|
-
| `musubi-orchestrate goal update`
|
|
176
|
-
| `musubi-orchestrate goal status`
|
|
177
|
-
| `musubi-orchestrate optimize run`
|
|
178
|
-
| `musubi-orchestrate optimize suggest` | Get optimization suggestions | `npx musubi-orchestrate optimize suggest <path-id>`
|
|
179
|
-
| `musubi-orchestrate path analyze`
|
|
180
|
-
| `musubi-orchestrate path optimize`
|
|
171
|
+
| Command | Purpose | Example |
|
|
172
|
+
| ------------------------------------- | ---------------------------- | ------------------------------------------------------------ |
|
|
173
|
+
| `musubi-orchestrate replan` | Execute dynamic replanning | `npx musubi-orchestrate replan <context-id>` |
|
|
174
|
+
| `musubi-orchestrate goal register` | Register a new goal | `npx musubi-orchestrate goal register --name "Deploy API"` |
|
|
175
|
+
| `musubi-orchestrate goal update` | Update goal progress | `npx musubi-orchestrate goal update <goal-id> --progress 50` |
|
|
176
|
+
| `musubi-orchestrate goal status` | View goal status | `npx musubi-orchestrate goal status [goal-id]` |
|
|
177
|
+
| `musubi-orchestrate optimize run` | Run path optimization | `npx musubi-orchestrate optimize run <path-id>` |
|
|
178
|
+
| `musubi-orchestrate optimize suggest` | Get optimization suggestions | `npx musubi-orchestrate optimize suggest <path-id>` |
|
|
179
|
+
| `musubi-orchestrate path analyze` | Analyze execution path | `npx musubi-orchestrate path analyze <path-id>` |
|
|
180
|
+
| `musubi-orchestrate path optimize` | Optimize execution path | `npx musubi-orchestrate path optimize <path-id>` |
|
|
181
181
|
|
|
182
182
|
### Guardrails Commands (v3.9.0 NEW)
|
|
183
183
|
|
|
184
|
-
| Command
|
|
185
|
-
|
|
186
|
-
| `musubi-validate guardrails`
|
|
187
|
-
| `musubi-validate guardrails --type output` | Output content validation
|
|
188
|
-
| `musubi-validate guardrails --type safety` | Safety check with constitutional
|
|
189
|
-
| `musubi-validate guardrails-chain`
|
|
184
|
+
| Command | Purpose | Example |
|
|
185
|
+
| ------------------------------------------ | --------------------------------- | ---------------------------------------------------------------- |
|
|
186
|
+
| `musubi-validate guardrails` | Input/Output guardrail validation | `npx musubi-validate guardrails --type input` |
|
|
187
|
+
| `musubi-validate guardrails --type output` | Output content validation | `echo "content" \| npx musubi-validate guardrails --type output` |
|
|
188
|
+
| `musubi-validate guardrails --type safety` | Safety check with constitutional | `npx musubi-validate guardrails --type safety --constitutional` |
|
|
189
|
+
| `musubi-validate guardrails-chain` | Chain multiple guardrails | `npx musubi-validate guardrails-chain --parallel` |
|
|
190
|
+
|
|
191
|
+
## Enterprise Scale Modules (v5.5.0 NEW)
|
|
192
|
+
|
|
193
|
+
MUSUBI v5.5.0 adds advanced modules for analyzing enterprise-scale projects (10,000+ files):
|
|
194
|
+
|
|
195
|
+
| Module | Purpose | Import |
|
|
196
|
+
| -------------------------- | ------------------------------------ | -------------------------------------------- |
|
|
197
|
+
| **LargeProjectAnalyzer** | Streaming analysis for 100K+ files | `src/analyzers/large-project-analyzer.js` |
|
|
198
|
+
| **ComplexityAnalyzer** | Cyclomatic & cognitive complexity | `src/analyzers/complexity-analyzer.js` |
|
|
199
|
+
| **RustMigrationGenerator** | C/C++ to Rust migration analysis | `src/generators/rust-migration-generator.js` |
|
|
200
|
+
| **CodeGraphMCP** | MCP-based code intelligence server | `src/integrations/code-graph-mcp.js` |
|
|
201
|
+
| **HierarchicalReporter** | Drilldown reports for large projects | `src/reporters/hierarchical-reporter.js` |
|
|
202
|
+
|
|
203
|
+
### Usage Examples
|
|
204
|
+
|
|
205
|
+
```javascript
|
|
206
|
+
// Analyze large projects (100,000+ files)
|
|
207
|
+
const { LargeProjectAnalyzer } = require('musubi-sdd');
|
|
208
|
+
const analyzer = new LargeProjectAnalyzer('/path/to/project');
|
|
209
|
+
const result = await analyzer.analyze();
|
|
210
|
+
console.log(result.stats.totalFiles);
|
|
211
|
+
|
|
212
|
+
// Calculate code complexity
|
|
213
|
+
const { ComplexityAnalyzer } = require('musubi-sdd');
|
|
214
|
+
const complexity = new ComplexityAnalyzer();
|
|
215
|
+
const score = complexity.calculateCyclomaticComplexity(code, 'javascript');
|
|
216
|
+
|
|
217
|
+
// Analyze C/C++ for Rust migration
|
|
218
|
+
const { RustMigrationGenerator } = require('musubi-sdd');
|
|
219
|
+
const generator = new RustMigrationGenerator('/path/to/cpp-project');
|
|
220
|
+
const analysis = await generator.analyze();
|
|
221
|
+
```
|
|
190
222
|
|
|
191
223
|
## Learn More
|
|
192
224
|
|
|
@@ -104,16 +104,16 @@ MUSUBI enforces 9 immutable constitutional articles:
|
|
|
104
104
|
|
|
105
105
|
MUSUBI provides advanced AI agent assistance modules:
|
|
106
106
|
|
|
107
|
-
| Module
|
|
108
|
-
|
|
109
|
-
| **StuckDetector**
|
|
110
|
-
| **MemoryCondenser**
|
|
111
|
-
| **AgentMemoryManager** | Extract & persist learnings
|
|
112
|
-
| **CriticSystem**
|
|
113
|
-
| **SecurityAnalyzer**
|
|
114
|
-
| **IssueResolver**
|
|
115
|
-
| **SkillLoader**
|
|
116
|
-
| **RepoSkillManager**
|
|
107
|
+
| Module | Purpose | Import |
|
|
108
|
+
| ---------------------- | ----------------------------- | ------------------------------------ |
|
|
109
|
+
| **StuckDetector** | Detect agent stuck states | `src/analyzers/stuck-detector.js` |
|
|
110
|
+
| **MemoryCondenser** | Compress session history | `src/managers/memory-condenser.js` |
|
|
111
|
+
| **AgentMemoryManager** | Extract & persist learnings | `src/managers/agent-memory.js` |
|
|
112
|
+
| **CriticSystem** | Evaluate SDD stage quality | `src/validators/critic-system.js` |
|
|
113
|
+
| **SecurityAnalyzer** | Detect security risks | `src/analyzers/security-analyzer.js` |
|
|
114
|
+
| **IssueResolver** | GitHub Issue analysis | `src/resolvers/issue-resolver.js` |
|
|
115
|
+
| **SkillLoader** | Load keyword-triggered skills | `src/managers/skill-loader.js` |
|
|
116
|
+
| **RepoSkillManager** | Manage project skills | `src/managers/repo-skill-manager.js` |
|
|
117
117
|
|
|
118
118
|
## Quick Start
|
|
119
119
|
|
|
@@ -157,47 +157,79 @@ npx musubi-sdd <command>
|
|
|
157
157
|
|
|
158
158
|
### Core Commands
|
|
159
159
|
|
|
160
|
-
| Command
|
|
161
|
-
|
|
162
|
-
| `musubi-workflow`
|
|
163
|
-
| `musubi-requirements` | EARS requirements
|
|
164
|
-
| `musubi-design`
|
|
165
|
-
| `musubi-tasks`
|
|
166
|
-
| `musubi-trace`
|
|
167
|
-
| `musubi-validate`
|
|
160
|
+
| Command | Purpose | Example |
|
|
161
|
+
| --------------------- | ------------------------- | ---------------------------------------- |
|
|
162
|
+
| `musubi-workflow` | Workflow state & metrics | `npx musubi-workflow status` |
|
|
163
|
+
| `musubi-requirements` | EARS requirements | `npx musubi-requirements init <feature>` |
|
|
164
|
+
| `musubi-design` | C4 + ADR design | `npx musubi-design init <feature>` |
|
|
165
|
+
| `musubi-tasks` | Task breakdown | `npx musubi-tasks init <feature>` |
|
|
166
|
+
| `musubi-trace` | Traceability | `npx musubi-trace matrix` |
|
|
167
|
+
| `musubi-validate` | Constitutional validation | `npx musubi-validate all` |
|
|
168
168
|
|
|
169
169
|
### Advanced Commands (v3.5.0 NEW)
|
|
170
170
|
|
|
171
|
-
| Command
|
|
172
|
-
|
|
173
|
-
| `musubi-orchestrate` | Multi-skill orchestration | `npx musubi-orchestrate auto <task>`
|
|
174
|
-
| `musubi-browser`
|
|
175
|
-
| `musubi-gui`
|
|
176
|
-
| `musubi-remember`
|
|
177
|
-
| `musubi-resolve`
|
|
178
|
-
| `musubi-convert`
|
|
171
|
+
| Command | Purpose | Example |
|
|
172
|
+
| -------------------- | ------------------------- | -------------------------------------- |
|
|
173
|
+
| `musubi-orchestrate` | Multi-skill orchestration | `npx musubi-orchestrate auto <task>` |
|
|
174
|
+
| `musubi-browser` | Browser automation & E2E | `npx musubi-browser run "click login"` |
|
|
175
|
+
| `musubi-gui` | Web GUI dashboard | `npx musubi-gui start` |
|
|
176
|
+
| `musubi-remember` | Agent memory management | `npx musubi-remember extract` |
|
|
177
|
+
| `musubi-resolve` | GitHub Issue resolution | `npx musubi-resolve <issue-number>` |
|
|
178
|
+
| `musubi-convert` | Format conversion | `npx musubi-convert to-speckit` |
|
|
179
179
|
|
|
180
180
|
### Replanning Commands (v3.6.0 NEW)
|
|
181
181
|
|
|
182
|
-
| Command
|
|
183
|
-
|
|
184
|
-
| `musubi-orchestrate replan`
|
|
185
|
-
| `musubi-orchestrate goal register`
|
|
186
|
-
| `musubi-orchestrate goal update`
|
|
187
|
-
| `musubi-orchestrate goal status`
|
|
188
|
-
| `musubi-orchestrate optimize run`
|
|
189
|
-
| `musubi-orchestrate optimize suggest` | Get optimization suggestions | `npx musubi-orchestrate optimize suggest <path-id>`
|
|
190
|
-
| `musubi-orchestrate path analyze`
|
|
191
|
-
| `musubi-orchestrate path optimize`
|
|
182
|
+
| Command | Purpose | Example |
|
|
183
|
+
| ------------------------------------- | ---------------------------- | ------------------------------------------------------------ |
|
|
184
|
+
| `musubi-orchestrate replan` | Execute dynamic replanning | `npx musubi-orchestrate replan <context-id>` |
|
|
185
|
+
| `musubi-orchestrate goal register` | Register a new goal | `npx musubi-orchestrate goal register --name "Deploy API"` |
|
|
186
|
+
| `musubi-orchestrate goal update` | Update goal progress | `npx musubi-orchestrate goal update <goal-id> --progress 50` |
|
|
187
|
+
| `musubi-orchestrate goal status` | View goal status | `npx musubi-orchestrate goal status [goal-id]` |
|
|
188
|
+
| `musubi-orchestrate optimize run` | Run path optimization | `npx musubi-orchestrate optimize run <path-id>` |
|
|
189
|
+
| `musubi-orchestrate optimize suggest` | Get optimization suggestions | `npx musubi-orchestrate optimize suggest <path-id>` |
|
|
190
|
+
| `musubi-orchestrate path analyze` | Analyze execution path | `npx musubi-orchestrate path analyze <path-id>` |
|
|
191
|
+
| `musubi-orchestrate path optimize` | Optimize execution path | `npx musubi-orchestrate path optimize <path-id>` |
|
|
192
192
|
|
|
193
193
|
### Guardrails Commands (v3.9.0 NEW)
|
|
194
194
|
|
|
195
|
-
| Command
|
|
196
|
-
|
|
197
|
-
| `musubi-validate guardrails`
|
|
198
|
-
| `musubi-validate guardrails --type output` | Output content validation
|
|
199
|
-
| `musubi-validate guardrails --type safety` | Safety check with constitutional
|
|
200
|
-
| `musubi-validate guardrails-chain`
|
|
195
|
+
| Command | Purpose | Example |
|
|
196
|
+
| ------------------------------------------ | --------------------------------- | ---------------------------------------------------------------- |
|
|
197
|
+
| `musubi-validate guardrails` | Input/Output guardrail validation | `npx musubi-validate guardrails --type input` |
|
|
198
|
+
| `musubi-validate guardrails --type output` | Output content validation | `echo "content" \| npx musubi-validate guardrails --type output` |
|
|
199
|
+
| `musubi-validate guardrails --type safety` | Safety check with constitutional | `npx musubi-validate guardrails --type safety --constitutional` |
|
|
200
|
+
| `musubi-validate guardrails-chain` | Chain multiple guardrails | `npx musubi-validate guardrails-chain --parallel` |
|
|
201
|
+
|
|
202
|
+
## Enterprise Scale Modules (v5.5.0 NEW)
|
|
203
|
+
|
|
204
|
+
MUSUBI v5.5.0 adds advanced modules for analyzing enterprise-scale projects (10,000+ files):
|
|
205
|
+
|
|
206
|
+
| Module | Purpose | Import |
|
|
207
|
+
| -------------------------- | ------------------------------------ | -------------------------------------------- |
|
|
208
|
+
| **LargeProjectAnalyzer** | Streaming analysis for 100K+ files | `src/analyzers/large-project-analyzer.js` |
|
|
209
|
+
| **ComplexityAnalyzer** | Cyclomatic & cognitive complexity | `src/analyzers/complexity-analyzer.js` |
|
|
210
|
+
| **RustMigrationGenerator** | C/C++ to Rust migration analysis | `src/generators/rust-migration-generator.js` |
|
|
211
|
+
| **CodeGraphMCP** | MCP-based code intelligence server | `src/integrations/code-graph-mcp.js` |
|
|
212
|
+
| **HierarchicalReporter** | Drilldown reports for large projects | `src/reporters/hierarchical-reporter.js` |
|
|
213
|
+
|
|
214
|
+
### Usage Examples
|
|
215
|
+
|
|
216
|
+
```javascript
|
|
217
|
+
// Analyze large projects (100,000+ files)
|
|
218
|
+
const { LargeProjectAnalyzer } = require('musubi-sdd');
|
|
219
|
+
const analyzer = new LargeProjectAnalyzer('/path/to/project');
|
|
220
|
+
const result = await analyzer.analyze();
|
|
221
|
+
console.log(result.stats.totalFiles);
|
|
222
|
+
|
|
223
|
+
// Calculate code complexity
|
|
224
|
+
const { ComplexityAnalyzer } = require('musubi-sdd');
|
|
225
|
+
const complexity = new ComplexityAnalyzer();
|
|
226
|
+
const score = complexity.calculateCyclomaticComplexity(code, 'javascript');
|
|
227
|
+
|
|
228
|
+
// Analyze C/C++ for Rust migration
|
|
229
|
+
const { RustMigrationGenerator } = require('musubi-sdd');
|
|
230
|
+
const generator = new RustMigrationGenerator('/path/to/cpp-project');
|
|
231
|
+
const analysis = await generator.analyze();
|
|
232
|
+
```
|
|
201
233
|
|
|
202
234
|
## Learn More
|
|
203
235
|
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# Reference Architecture Templates
|
|
2
|
+
|
|
3
|
+
This directory contains reference architecture templates for common architectural patterns.
|
|
4
|
+
|
|
5
|
+
## Available Templates
|
|
6
|
+
|
|
7
|
+
| Template | Pattern | Best For |
|
|
8
|
+
| ------------------------------------------- | -------------------------- | ---------------------------------------- |
|
|
9
|
+
| [clean-architecture](./clean-architecture/) | Clean Architecture | Enterprise applications, complex domains |
|
|
10
|
+
| [hexagonal](./hexagonal/) | Hexagonal/Ports & Adapters | Highly testable systems |
|
|
11
|
+
| [event-driven](./event-driven/) | Event-Driven Architecture | Microservices, distributed systems |
|
|
12
|
+
| [layered](./layered/) | Traditional Layered | Simple CRUD applications |
|
|
13
|
+
| [modular-monolith](./modular-monolith/) | Modular Monolith | Scalable monoliths |
|
|
14
|
+
|
|
15
|
+
## Usage
|
|
16
|
+
|
|
17
|
+
Use `musubi init --template <template-name>` to initialize a project with a reference architecture:
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
# Clean Architecture template
|
|
21
|
+
musubi init --template clean-architecture
|
|
22
|
+
|
|
23
|
+
# Hexagonal Architecture template
|
|
24
|
+
musubi init --template hexagonal
|
|
25
|
+
|
|
26
|
+
# Event-Driven Architecture template
|
|
27
|
+
musubi init --template event-driven
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Template Structure
|
|
31
|
+
|
|
32
|
+
Each template provides:
|
|
33
|
+
|
|
34
|
+
- Directory structure
|
|
35
|
+
- Layer definitions
|
|
36
|
+
- Sample code organization
|
|
37
|
+
- Recommended patterns
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
_Generated by MUSUBI SDD_
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
# Clean Architecture Template
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
Clean Architecture separates concerns into concentric circles, with dependencies pointing inward.
|
|
6
|
+
|
|
7
|
+
## Directory Structure
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
src/
|
|
11
|
+
├── domain/ # Enterprise Business Rules (innermost)
|
|
12
|
+
│ ├── entities/ # Business entities
|
|
13
|
+
│ ├── value-objects/ # Immutable value types
|
|
14
|
+
│ ├── errors/ # Domain-specific errors
|
|
15
|
+
│ └── services/ # Domain services (no I/O)
|
|
16
|
+
│
|
|
17
|
+
├── application/ # Application Business Rules
|
|
18
|
+
│ ├── use-cases/ # Application-specific use cases
|
|
19
|
+
│ ├── ports/ # Interfaces for external services
|
|
20
|
+
│ │ ├── input/ # Input ports (use case interfaces)
|
|
21
|
+
│ │ └── output/ # Output ports (repository interfaces)
|
|
22
|
+
│ ├── dtos/ # Data Transfer Objects
|
|
23
|
+
│ └── services/ # Application services
|
|
24
|
+
│
|
|
25
|
+
├── infrastructure/ # Frameworks & Drivers (outermost)
|
|
26
|
+
│ ├── persistence/ # Database implementations
|
|
27
|
+
│ │ ├── repositories/ # Repository implementations
|
|
28
|
+
│ │ └── mappers/ # Entity <-> DB mappers
|
|
29
|
+
│ ├── external/ # External API clients
|
|
30
|
+
│ ├── messaging/ # Message queue adapters
|
|
31
|
+
│ └── config/ # Configuration
|
|
32
|
+
│
|
|
33
|
+
└── interface/ # Interface Adapters
|
|
34
|
+
├── controllers/ # HTTP/gRPC controllers
|
|
35
|
+
├── presenters/ # Response formatters
|
|
36
|
+
├── cli/ # CLI handlers
|
|
37
|
+
└── gateways/ # External service gateways
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Dependency Rules
|
|
41
|
+
|
|
42
|
+
1. **Domain** has NO external dependencies
|
|
43
|
+
2. **Application** depends only on Domain
|
|
44
|
+
3. **Infrastructure** implements Application ports
|
|
45
|
+
4. **Interface** orchestrates Application use cases
|
|
46
|
+
|
|
47
|
+
## Key Principles
|
|
48
|
+
|
|
49
|
+
- **Dependency Inversion**: High-level modules don't depend on low-level modules
|
|
50
|
+
- **Separation of Concerns**: Each layer has a single responsibility
|
|
51
|
+
- **Testability**: Business logic is testable without frameworks
|
|
52
|
+
- **Independence**: Framework/database changes don't affect business logic
|
|
53
|
+
|
|
54
|
+
## Example Structure by Language
|
|
55
|
+
|
|
56
|
+
### TypeScript
|
|
57
|
+
|
|
58
|
+
```
|
|
59
|
+
src/
|
|
60
|
+
├── domain/
|
|
61
|
+
│ └── user/
|
|
62
|
+
│ ├── User.ts # Entity
|
|
63
|
+
│ ├── UserId.ts # Value Object
|
|
64
|
+
│ └── UserRepository.ts # Port (interface)
|
|
65
|
+
├── application/
|
|
66
|
+
│ └── user/
|
|
67
|
+
│ ├── CreateUser.ts # Use Case
|
|
68
|
+
│ └── GetUser.ts # Use Case
|
|
69
|
+
├── infrastructure/
|
|
70
|
+
│ └── persistence/
|
|
71
|
+
│ └── PrismaUserRepository.ts
|
|
72
|
+
└── interface/
|
|
73
|
+
└── http/
|
|
74
|
+
└── UserController.ts
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### Rust
|
|
78
|
+
|
|
79
|
+
```
|
|
80
|
+
src/
|
|
81
|
+
├── domain/
|
|
82
|
+
│ └── user/
|
|
83
|
+
│ ├── mod.rs
|
|
84
|
+
│ ├── entity.rs # User struct
|
|
85
|
+
│ ├── value_objects.rs # UserId, Email
|
|
86
|
+
│ └── repository.rs # Trait definition
|
|
87
|
+
├── application/
|
|
88
|
+
│ └── user/
|
|
89
|
+
│ ├── mod.rs
|
|
90
|
+
│ ├── create_user.rs # Use case
|
|
91
|
+
│ └── get_user.rs # Use case
|
|
92
|
+
├── infrastructure/
|
|
93
|
+
│ └── persistence/
|
|
94
|
+
│ ├── mod.rs
|
|
95
|
+
│ └── postgres_user_repo.rs
|
|
96
|
+
└── interface/
|
|
97
|
+
└── api/
|
|
98
|
+
├── mod.rs
|
|
99
|
+
└── user_handler.rs
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
## Testing Strategy
|
|
103
|
+
|
|
104
|
+
| Layer | Test Type | Dependencies |
|
|
105
|
+
| -------------- | ------------------ | ---------------- |
|
|
106
|
+
| Domain | Unit | None |
|
|
107
|
+
| Application | Unit + Integration | Mocked ports |
|
|
108
|
+
| Infrastructure | Integration | Real DB/Services |
|
|
109
|
+
| Interface | E2E | Full stack |
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
_Clean Architecture Template - MUSUBI SDD_
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
# Event-Driven Architecture Template
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
Event-Driven Architecture (EDA) enables loose coupling through asynchronous event communication.
|
|
6
|
+
|
|
7
|
+
## Directory Structure
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
src/
|
|
11
|
+
├── domain/
|
|
12
|
+
│ ├── events/ # Domain events
|
|
13
|
+
│ │ ├── UserCreated.ts
|
|
14
|
+
│ │ ├── OrderPlaced.ts
|
|
15
|
+
│ │ └── PaymentReceived.ts
|
|
16
|
+
│ ├── aggregates/ # Aggregate roots
|
|
17
|
+
│ └── commands/ # Command definitions
|
|
18
|
+
│
|
|
19
|
+
├── application/
|
|
20
|
+
│ ├── command-handlers/ # Handle commands, emit events
|
|
21
|
+
│ ├── event-handlers/ # React to events
|
|
22
|
+
│ ├── sagas/ # Long-running processes
|
|
23
|
+
│ └── projections/ # Read model projections
|
|
24
|
+
│
|
|
25
|
+
├── infrastructure/
|
|
26
|
+
│ ├── messaging/ # Message broker adapters
|
|
27
|
+
│ │ ├── kafka/
|
|
28
|
+
│ │ ├── rabbitmq/
|
|
29
|
+
│ │ └── sqs/
|
|
30
|
+
│ ├── event-store/ # Event sourcing storage
|
|
31
|
+
│ └── projections/ # Projection storage
|
|
32
|
+
│
|
|
33
|
+
└── interface/
|
|
34
|
+
├── api/ # REST/GraphQL API
|
|
35
|
+
├── consumers/ # Event consumers
|
|
36
|
+
└── publishers/ # Event publishers
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Event Types
|
|
40
|
+
|
|
41
|
+
### Domain Events
|
|
42
|
+
|
|
43
|
+
```typescript
|
|
44
|
+
// domain/events/UserCreated.ts
|
|
45
|
+
interface UserCreated {
|
|
46
|
+
eventId: string;
|
|
47
|
+
eventType: 'UserCreated';
|
|
48
|
+
aggregateId: string;
|
|
49
|
+
timestamp: Date;
|
|
50
|
+
data: {
|
|
51
|
+
userId: string;
|
|
52
|
+
email: string;
|
|
53
|
+
name: string;
|
|
54
|
+
};
|
|
55
|
+
metadata: {
|
|
56
|
+
correlationId: string;
|
|
57
|
+
causationId: string;
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### Integration Events
|
|
63
|
+
|
|
64
|
+
```typescript
|
|
65
|
+
// infrastructure/messaging/events/UserRegistrationCompleted.ts
|
|
66
|
+
interface UserRegistrationCompleted {
|
|
67
|
+
eventId: string;
|
|
68
|
+
eventType: 'UserRegistrationCompleted';
|
|
69
|
+
source: 'user-service';
|
|
70
|
+
timestamp: Date;
|
|
71
|
+
data: {
|
|
72
|
+
userId: string;
|
|
73
|
+
email: string;
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## Patterns
|
|
79
|
+
|
|
80
|
+
### Command Handler
|
|
81
|
+
|
|
82
|
+
```typescript
|
|
83
|
+
class CreateUserHandler {
|
|
84
|
+
async handle(command: CreateUserCommand): Promise<void> {
|
|
85
|
+
const user = User.create(command);
|
|
86
|
+
await this.repository.save(user);
|
|
87
|
+
await this.eventPublisher.publish(new UserCreated(user));
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### Event Handler
|
|
93
|
+
|
|
94
|
+
```typescript
|
|
95
|
+
class SendWelcomeEmailHandler {
|
|
96
|
+
async handle(event: UserCreated): Promise<void> {
|
|
97
|
+
await this.emailService.sendWelcome(event.data.email);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### Saga (Process Manager)
|
|
103
|
+
|
|
104
|
+
```typescript
|
|
105
|
+
class OrderFulfillmentSaga {
|
|
106
|
+
async handle(event: OrderPlaced): Promise<void> {
|
|
107
|
+
// Step 1: Reserve inventory
|
|
108
|
+
await this.dispatch(new ReserveInventory(event.orderId));
|
|
109
|
+
|
|
110
|
+
// Step 2: Process payment
|
|
111
|
+
await this.dispatch(new ProcessPayment(event.orderId));
|
|
112
|
+
|
|
113
|
+
// Step 3: Ship order (triggered by PaymentReceived)
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
async onPaymentReceived(event: PaymentReceived): Promise<void> {
|
|
117
|
+
await this.dispatch(new ShipOrder(event.orderId));
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
## Event Sourcing (Optional)
|
|
123
|
+
|
|
124
|
+
```
|
|
125
|
+
events/
|
|
126
|
+
├── event-store/
|
|
127
|
+
│ └── PostgresEventStore.ts
|
|
128
|
+
├── snapshots/
|
|
129
|
+
│ └── UserSnapshot.ts
|
|
130
|
+
└── projections/
|
|
131
|
+
├── UserProjection.ts
|
|
132
|
+
└── OrderProjection.ts
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
## Message Broker Integration
|
|
136
|
+
|
|
137
|
+
| Broker | Use Case | Configuration |
|
|
138
|
+
| ------------- | ------------------------------- | ------------------------ |
|
|
139
|
+
| Kafka | High-throughput, ordered events | Topics, partitions |
|
|
140
|
+
| RabbitMQ | Complex routing, reliability | Exchanges, queues |
|
|
141
|
+
| AWS SQS/SNS | Serverless, AWS integration | Queues, topics |
|
|
142
|
+
| Redis Streams | Low-latency, in-memory | Streams, consumer groups |
|
|
143
|
+
|
|
144
|
+
## Key Principles
|
|
145
|
+
|
|
146
|
+
1. **Eventual Consistency**: Accept that data will be consistent eventually
|
|
147
|
+
2. **Idempotency**: Handlers must be idempotent (safe to retry)
|
|
148
|
+
3. **Event Ordering**: Consider ordering requirements per aggregate
|
|
149
|
+
4. **Dead Letter Queues**: Handle failed events gracefully
|
|
150
|
+
|
|
151
|
+
## Testing Strategy
|
|
152
|
+
|
|
153
|
+
| Component | Test Type | Approach |
|
|
154
|
+
| --------- | ----------- | ------------------------- |
|
|
155
|
+
| Events | Schema | JSON Schema validation |
|
|
156
|
+
| Handlers | Unit | Mock event publisher |
|
|
157
|
+
| Sagas | Integration | In-memory event store |
|
|
158
|
+
| E2E | Contract | Consumer-driven contracts |
|
|
159
|
+
|
|
160
|
+
---
|
|
161
|
+
|
|
162
|
+
_Event-Driven Architecture Template - MUSUBI SDD_
|