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.
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 +164 -145
  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 +247 -125
  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 +83 -80
  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 +53 -44
  87. package/src/monitoring/incident-manager.js +123 -103
  88. package/src/monitoring/index.js +144 -134
  89. package/src/monitoring/observability.js +82 -59
  90. package/src/monitoring/quality-dashboard.js +51 -39
  91. package/src/monitoring/release-manager.js +70 -50
  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,8 +1,8 @@
1
1
  /**
2
2
  * MUSUBI Issue Resolver
3
- *
3
+ *
4
4
  * GitHub Issue を分析し、自動的に解決策を提案・実装
5
- *
5
+ *
6
6
  * @module src/resolvers/issue-resolver
7
7
  * @see REQ-P0-B006
8
8
  * @inspired-by OpenHands openhands/resolver/
@@ -63,10 +63,10 @@ class IssueInfo {
63
63
  * @returns {string}
64
64
  */
65
65
  get type() {
66
- const labelNames = this.labels.map(l =>
66
+ const labelNames = this.labels.map(l =>
67
67
  typeof l === 'string' ? l.toLowerCase() : (l.name || '').toLowerCase()
68
68
  );
69
-
69
+
70
70
  if (labelNames.some(l => l.includes('bug') || l.includes('fix'))) {
71
71
  return IssueType.BUG;
72
72
  }
@@ -234,7 +234,7 @@ class IssueResolver {
234
234
  this.draftPR = options.draftPR !== false;
235
235
  this.dryRun = options.dryRun || false;
236
236
  this.repo = options.repo || this._detectRepo();
237
-
237
+
238
238
  // GitHub クライアント初期化
239
239
  this.github = null;
240
240
  if (GitHubClient && this.githubToken && this.repo) {
@@ -276,21 +276,23 @@ class IssueResolver {
276
276
 
277
277
  try {
278
278
  // 1. Issue 情報を取得/正規化
279
- const issueInfo = issue instanceof IssueInfo
280
- ? issue
281
- : await this.fetchIssue(issue);
279
+ const issueInfo = issue instanceof IssueInfo ? issue : await this.fetchIssue(issue);
282
280
  result.issue = issueInfo;
283
281
 
284
282
  // 2. 要件抽出
285
283
  result.requirements = this.extractRequirements(issueInfo);
286
-
284
+
287
285
  // 3. 影響範囲分析
288
286
  result.status = ResolverStatus.ANALYZING;
289
287
  result.impactAnalysis = await this.analyzeImpact(result.requirements, issueInfo);
290
288
 
291
289
  // 4. 変更計画を生成
292
290
  result.status = ResolverStatus.IMPLEMENTING;
293
- result.changes = await this.planChanges(issueInfo, result.requirements, result.impactAnalysis);
291
+ result.changes = await this.planChanges(
292
+ issueInfo,
293
+ result.requirements,
294
+ result.impactAnalysis
295
+ );
294
296
 
295
297
  // 5. テスト計画を生成
296
298
  result.status = ResolverStatus.TESTING;
@@ -340,7 +342,7 @@ class IssueResolver {
340
342
 
341
343
  /**
342
344
  * 分析コメントをフォーマット
343
- * @param {ResolverResult} result
345
+ * @param {ResolverResult} result
344
346
  * @returns {string}
345
347
  */
346
348
  _formatAnalysisComment(result) {
@@ -361,7 +363,10 @@ class IssueResolver {
361
363
  comment += `- **Risk Level**: ${result.impactAnalysis.riskLevel}\n`;
362
364
  comment += `- **Estimated Effort**: ${result.impactAnalysis.estimatedEffort}\n`;
363
365
  if (result.impactAnalysis.affectedFiles.length > 0) {
364
- comment += `- **Affected Files**: ${result.impactAnalysis.affectedFiles.slice(0, 5).map(f => `\`${f}\``).join(', ')}\n`;
366
+ comment += `- **Affected Files**: ${result.impactAnalysis.affectedFiles
367
+ .slice(0, 5)
368
+ .map(f => `\`${f}\``)
369
+ .join(', ')}\n`;
365
370
  }
366
371
  }
367
372
 
@@ -371,8 +376,8 @@ class IssueResolver {
371
376
 
372
377
  /**
373
378
  * PR 本文をフォーマット
374
- * @param {IssueInfo} issue
375
- * @param {ResolverResult} result
379
+ * @param {IssueInfo} issue
380
+ * @param {ResolverResult} result
376
381
  * @returns {string}
377
382
  */
378
383
  _formatPRBody(issue, result) {
@@ -380,7 +385,7 @@ class IssueResolver {
380
385
  body += `Resolves #${issue.number}\n\n`;
381
386
 
382
387
  body += `## Requirements Addressed\n\n`;
383
- result.requirements.forEach((req, i) => {
388
+ result.requirements.forEach((req, _i) => {
384
389
  body += `- [ ] ${req}\n`;
385
390
  });
386
391
 
@@ -455,7 +460,7 @@ class IssueResolver {
455
460
 
456
461
  /**
457
462
  * Issue から要件を抽出
458
- * @param {IssueInfo} issue
463
+ * @param {IssueInfo} issue
459
464
  * @returns {string[]}
460
465
  */
461
466
  extractRequirements(issue) {
@@ -503,8 +508,8 @@ class IssueResolver {
503
508
 
504
509
  /**
505
510
  * 影響範囲を分析
506
- * @param {string[]} requirements
507
- * @param {IssueInfo} issue
511
+ * @param {string[]} requirements
512
+ * @param {IssueInfo} issue
508
513
  * @returns {Promise<ImpactAnalysis>}
509
514
  */
510
515
  async analyzeImpact(requirements, issue) {
@@ -561,15 +566,22 @@ class IssueResolver {
561
566
 
562
567
  /**
563
568
  * リスクレベルを推定
564
- * @param {IssueInfo} issue
565
- * @param {ImpactAnalysis} analysis
569
+ * @param {IssueInfo} issue
570
+ * @param {ImpactAnalysis} analysis
566
571
  * @returns {string}
567
572
  */
568
573
  _estimateRiskLevel(issue, analysis) {
569
574
  const content = issue.fullContent.toLowerCase();
570
-
575
+
571
576
  // 高リスクキーワード
572
- const highRiskKeywords = ['security', 'authentication', 'authorization', 'database', 'migration', 'production'];
577
+ const highRiskKeywords = [
578
+ 'security',
579
+ 'authentication',
580
+ 'authorization',
581
+ 'database',
582
+ 'migration',
583
+ 'production',
584
+ ];
573
585
  if (highRiskKeywords.some(k => content.includes(k))) {
574
586
  return 'high';
575
587
  }
@@ -584,8 +596,8 @@ class IssueResolver {
584
596
 
585
597
  /**
586
598
  * 工数を推定
587
- * @param {IssueInfo} issue
588
- * @param {string[]} requirements
599
+ * @param {IssueInfo} issue
600
+ * @param {string[]} requirements
589
601
  * @returns {string}
590
602
  */
591
603
  _estimateEffort(issue, requirements) {
@@ -596,9 +608,9 @@ class IssueResolver {
596
608
 
597
609
  /**
598
610
  * 変更計画を作成
599
- * @param {IssueInfo} issue
600
- * @param {string[]} requirements
601
- * @param {ImpactAnalysis} impact
611
+ * @param {IssueInfo} issue
612
+ * @param {string[]} requirements
613
+ * @param {ImpactAnalysis} impact
602
614
  * @returns {Promise<Object[]>}
603
615
  */
604
616
  async planChanges(issue, requirements, impact) {
@@ -635,8 +647,8 @@ class IssueResolver {
635
647
 
636
648
  /**
637
649
  * テスト計画を作成
638
- * @param {IssueInfo} issue
639
- * @param {Object[]} changes
650
+ * @param {IssueInfo} issue
651
+ * @param {Object[]} changes
640
652
  * @returns {Promise<Object[]>}
641
653
  */
642
654
  async planTests(issue, changes) {
@@ -667,7 +679,7 @@ class IssueResolver {
667
679
 
668
680
  /**
669
681
  * ブランチ名を生成
670
- * @param {IssueInfo} issue
682
+ * @param {IssueInfo} issue
671
683
  * @returns {string}
672
684
  */
673
685
  generateBranchName(issue) {
@@ -682,7 +694,7 @@ class IssueResolver {
682
694
 
683
695
  /**
684
696
  * プレビューを生成(dry run用)
685
- * @param {ResolverResult} result
697
+ * @param {ResolverResult} result
686
698
  * @returns {string}
687
699
  */
688
700
  generatePreview(result) {