@sk8metal/michi-cli 0.14.1 → 0.20.0

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 (623) hide show
  1. package/CHANGELOG.md +268 -2
  2. package/README.md +27 -2
  3. package/dist/scripts/config/config-schema.d.ts +5 -333
  4. package/dist/scripts/config/config-schema.d.ts.map +1 -1
  5. package/dist/scripts/config/config-schema.js +6 -233
  6. package/dist/scripts/config/config-schema.js.map +1 -1
  7. package/dist/scripts/config-global.d.ts.map +1 -1
  8. package/dist/scripts/config-global.js +3 -2
  9. package/dist/scripts/config-global.js.map +1 -1
  10. package/dist/scripts/confluence-sync.d.ts +5 -73
  11. package/dist/scripts/confluence-sync.d.ts.map +1 -1
  12. package/dist/scripts/confluence-sync.js +14 -392
  13. package/dist/scripts/confluence-sync.js.map +1 -1
  14. package/dist/scripts/constants/environments.d.ts +3 -30
  15. package/dist/scripts/constants/environments.d.ts.map +1 -1
  16. package/dist/scripts/constants/environments.js +3 -41
  17. package/dist/scripts/constants/environments.js.map +1 -1
  18. package/dist/scripts/constants/languages.d.ts +3 -20
  19. package/dist/scripts/constants/languages.d.ts.map +1 -1
  20. package/dist/scripts/constants/languages.js +3 -50
  21. package/dist/scripts/constants/languages.js.map +1 -1
  22. package/dist/scripts/constants/test-commands.d.ts +3 -33
  23. package/dist/scripts/constants/test-commands.d.ts.map +1 -1
  24. package/dist/scripts/constants/test-commands.js +3 -67
  25. package/dist/scripts/constants/test-commands.js.map +1 -1
  26. package/dist/scripts/dev-tools/mermaid-converter.d.ts.map +1 -0
  27. package/dist/scripts/dev-tools/mermaid-converter.js.map +1 -0
  28. package/dist/scripts/dev-tools/test-interactive.d.ts.map +1 -0
  29. package/dist/scripts/{test-interactive.js → dev-tools/test-interactive.js} +4 -3
  30. package/dist/scripts/dev-tools/test-interactive.js.map +1 -0
  31. package/dist/scripts/github-actions-client.d.ts +5 -75
  32. package/dist/scripts/github-actions-client.d.ts.map +1 -1
  33. package/dist/scripts/github-actions-client.js +4 -178
  34. package/dist/scripts/github-actions-client.js.map +1 -1
  35. package/dist/scripts/jira-sync.d.ts +3 -121
  36. package/dist/scripts/jira-sync.d.ts.map +1 -1
  37. package/dist/scripts/jira-sync.js +5 -879
  38. package/dist/scripts/jira-sync.js.map +1 -1
  39. package/dist/scripts/markdown-to-confluence.d.ts.map +1 -1
  40. package/dist/scripts/markdown-to-confluence.js +2 -2
  41. package/dist/scripts/markdown-to-confluence.js.map +1 -1
  42. package/dist/scripts/multi-project-estimate.d.ts.map +1 -1
  43. package/dist/scripts/multi-project-estimate.js +3 -2
  44. package/dist/scripts/multi-project-estimate.js.map +1 -1
  45. package/dist/scripts/phase-runner.d.ts.map +1 -1
  46. package/dist/scripts/phase-runner.js +34 -18
  47. package/dist/scripts/phase-runner.js.map +1 -1
  48. package/dist/scripts/pre-flight-check.d.ts.map +1 -1
  49. package/dist/scripts/pre-flight-check.js +27 -11
  50. package/dist/scripts/pre-flight-check.js.map +1 -1
  51. package/dist/scripts/template/multi-repo-renderer.js +2 -2
  52. package/dist/scripts/template/multi-repo-renderer.js.map +1 -1
  53. package/dist/scripts/test-execution-generator.d.ts.map +1 -1
  54. package/dist/scripts/test-execution-generator.js +5 -4
  55. package/dist/scripts/test-execution-generator.js.map +1 -1
  56. package/dist/scripts/utils/aidlc-parser.d.ts +5 -82
  57. package/dist/scripts/utils/aidlc-parser.d.ts.map +1 -1
  58. package/dist/scripts/utils/aidlc-parser.js +4 -204
  59. package/dist/scripts/utils/aidlc-parser.js.map +1 -1
  60. package/dist/scripts/utils/ci-generator.d.ts.map +1 -1
  61. package/dist/scripts/utils/ci-generator.js +4 -3
  62. package/dist/scripts/utils/ci-generator.js.map +1 -1
  63. package/dist/scripts/utils/config-loader.d.ts.map +1 -1
  64. package/dist/scripts/utils/config-loader.js +46 -49
  65. package/dist/scripts/utils/config-loader.js.map +1 -1
  66. package/dist/scripts/utils/config-validator.d.ts +9 -10
  67. package/dist/scripts/utils/config-validator.d.ts.map +1 -1
  68. package/dist/scripts/utils/config-validator.js +68 -70
  69. package/dist/scripts/utils/config-validator.js.map +1 -1
  70. package/dist/scripts/utils/docker-requirement-detector.d.ts.map +1 -1
  71. package/dist/scripts/utils/docker-requirement-detector.js +5 -4
  72. package/dist/scripts/utils/docker-requirement-detector.js.map +1 -1
  73. package/dist/scripts/utils/env-config.d.ts.map +1 -1
  74. package/dist/scripts/utils/env-config.js +55 -38
  75. package/dist/scripts/utils/env-config.js.map +1 -1
  76. package/dist/scripts/utils/feature-name-validator.d.ts +4 -9
  77. package/dist/scripts/utils/feature-name-validator.d.ts.map +1 -1
  78. package/dist/scripts/utils/feature-name-validator.js +12 -21
  79. package/dist/scripts/utils/feature-name-validator.js.map +1 -1
  80. package/dist/scripts/utils/interactive-helpers.d.ts +5 -29
  81. package/dist/scripts/utils/interactive-helpers.d.ts.map +1 -1
  82. package/dist/scripts/utils/interactive-helpers.js +5 -89
  83. package/dist/scripts/utils/interactive-helpers.js.map +1 -1
  84. package/dist/scripts/utils/language-detector.d.ts.map +1 -1
  85. package/dist/scripts/utils/language-detector.js +4 -3
  86. package/dist/scripts/utils/language-detector.js.map +1 -1
  87. package/dist/scripts/utils/markdown-parser.d.ts +6 -52
  88. package/dist/scripts/utils/markdown-parser.d.ts.map +1 -1
  89. package/dist/scripts/utils/markdown-parser.js +5 -286
  90. package/dist/scripts/utils/markdown-parser.js.map +1 -1
  91. package/dist/scripts/utils/multi-repo-validator.d.ts +9 -10
  92. package/dist/scripts/utils/multi-repo-validator.d.ts.map +1 -1
  93. package/dist/scripts/utils/multi-repo-validator.js +15 -17
  94. package/dist/scripts/utils/multi-repo-validator.js.map +1 -1
  95. package/dist/scripts/utils/project-analyzer.d.ts +120 -0
  96. package/dist/scripts/utils/project-analyzer.d.ts.map +1 -0
  97. package/dist/scripts/utils/project-analyzer.js +358 -0
  98. package/dist/scripts/utils/project-analyzer.js.map +1 -0
  99. package/dist/scripts/utils/project-detector.d.ts.map +1 -1
  100. package/dist/scripts/utils/project-detector.js +6 -5
  101. package/dist/scripts/utils/project-detector.js.map +1 -1
  102. package/dist/scripts/utils/project-finder.d.ts +1 -21
  103. package/dist/scripts/utils/project-finder.d.ts.map +1 -1
  104. package/dist/scripts/utils/project-finder.js +2 -121
  105. package/dist/scripts/utils/project-finder.js.map +1 -1
  106. package/dist/scripts/utils/project-meta.d.ts +4 -27
  107. package/dist/scripts/utils/project-meta.d.ts.map +1 -1
  108. package/dist/scripts/utils/project-meta.js +3 -67
  109. package/dist/scripts/utils/project-meta.js.map +1 -1
  110. package/dist/scripts/utils/safe-file-reader.d.ts +84 -0
  111. package/dist/scripts/utils/safe-file-reader.d.ts.map +1 -0
  112. package/dist/scripts/utils/safe-file-reader.js +122 -0
  113. package/dist/scripts/utils/safe-file-reader.js.map +1 -0
  114. package/dist/scripts/utils/security-validator.d.ts +8 -19
  115. package/dist/scripts/utils/security-validator.d.ts.map +1 -1
  116. package/dist/scripts/utils/security-validator.js +28 -58
  117. package/dist/scripts/utils/security-validator.js.map +1 -1
  118. package/dist/scripts/utils/spec-archiver.d.ts.map +1 -1
  119. package/dist/scripts/utils/spec-archiver.js +7 -6
  120. package/dist/scripts/utils/spec-archiver.js.map +1 -1
  121. package/dist/scripts/utils/spec-updater.d.ts.map +1 -1
  122. package/dist/scripts/utils/spec-updater.js +10 -7
  123. package/dist/scripts/utils/spec-updater.js.map +1 -1
  124. package/dist/scripts/utils/tasks-converter.js +2 -2
  125. package/dist/scripts/utils/tasks-converter.js.map +1 -1
  126. package/dist/scripts/utils/tasks-format-validator.js +4 -4
  127. package/dist/scripts/utils/tasks-format-validator.js.map +1 -1
  128. package/dist/scripts/utils/template-applier.d.ts.map +1 -1
  129. package/dist/scripts/utils/template-applier.js +4 -3
  130. package/dist/scripts/utils/template-applier.js.map +1 -1
  131. package/dist/scripts/utils/types/validation.d.ts +57 -0
  132. package/dist/scripts/utils/types/validation.d.ts.map +1 -0
  133. package/dist/scripts/utils/types/validation.js +50 -0
  134. package/dist/scripts/utils/types/validation.js.map +1 -0
  135. package/dist/scripts/validate-phase.d.ts +6 -1
  136. package/dist/scripts/validate-phase.d.ts.map +1 -1
  137. package/dist/scripts/validate-phase.js +42 -20
  138. package/dist/scripts/validate-phase.js.map +1 -1
  139. package/dist/scripts/workflow-orchestrator.d.ts +4 -40
  140. package/dist/scripts/workflow-orchestrator.d.ts.map +1 -1
  141. package/dist/scripts/workflow-orchestrator.js +7 -194
  142. package/dist/scripts/workflow-orchestrator.js.map +1 -1
  143. package/dist/src/application/interfaces/config-provider.d.ts +89 -0
  144. package/dist/src/application/interfaces/config-provider.d.ts.map +1 -0
  145. package/dist/src/application/interfaces/config-provider.js +8 -0
  146. package/dist/src/application/interfaces/config-provider.js.map +1 -0
  147. package/dist/src/application/interfaces/external-api.d.ts +80 -0
  148. package/dist/src/application/interfaces/external-api.d.ts.map +1 -0
  149. package/dist/src/application/interfaces/external-api.js +8 -0
  150. package/dist/src/application/interfaces/external-api.js.map +1 -0
  151. package/dist/src/application/interfaces/spec-repository.d.ts +52 -0
  152. package/dist/src/application/interfaces/spec-repository.d.ts.map +1 -0
  153. package/dist/src/application/interfaces/spec-repository.js +8 -0
  154. package/dist/src/application/interfaces/spec-repository.js.map +1 -0
  155. package/dist/src/application/services/spec-service.d.ts +49 -0
  156. package/dist/src/application/services/spec-service.d.ts.map +1 -0
  157. package/dist/src/application/services/spec-service.js +94 -0
  158. package/dist/src/application/services/spec-service.js.map +1 -0
  159. package/dist/src/application/services/workflow-service.d.ts +58 -0
  160. package/dist/src/application/services/workflow-service.d.ts.map +1 -0
  161. package/dist/src/application/services/workflow-service.js +125 -0
  162. package/dist/src/application/services/workflow-service.js.map +1 -0
  163. package/dist/src/application/templates/processor.d.ts +31 -0
  164. package/dist/src/application/templates/processor.d.ts.map +1 -0
  165. package/dist/src/application/templates/processor.js +58 -0
  166. package/dist/src/application/templates/processor.js.map +1 -0
  167. package/dist/src/application/use-cases/spec/archive-spec.d.ts +34 -0
  168. package/dist/src/application/use-cases/spec/archive-spec.d.ts.map +1 -0
  169. package/dist/src/application/use-cases/spec/archive-spec.js +56 -0
  170. package/dist/src/application/use-cases/spec/archive-spec.js.map +1 -0
  171. package/dist/src/application/use-cases/spec/generate-design.d.ts +34 -0
  172. package/dist/src/application/use-cases/spec/generate-design.d.ts.map +1 -0
  173. package/dist/src/application/use-cases/spec/generate-design.js +58 -0
  174. package/dist/src/application/use-cases/spec/generate-design.js.map +1 -0
  175. package/dist/src/application/use-cases/spec/generate-requirements.d.ts +34 -0
  176. package/dist/src/application/use-cases/spec/generate-requirements.d.ts.map +1 -0
  177. package/dist/src/application/use-cases/spec/generate-requirements.js +58 -0
  178. package/dist/src/application/use-cases/spec/generate-requirements.js.map +1 -0
  179. package/dist/src/application/use-cases/spec/generate-tasks.d.ts +34 -0
  180. package/dist/src/application/use-cases/spec/generate-tasks.d.ts.map +1 -0
  181. package/dist/src/application/use-cases/spec/generate-tasks.js +58 -0
  182. package/dist/src/application/use-cases/spec/generate-tasks.js.map +1 -0
  183. package/dist/src/application/use-cases/spec/init-spec.d.ts +48 -0
  184. package/dist/src/application/use-cases/spec/init-spec.d.ts.map +1 -0
  185. package/dist/src/application/use-cases/spec/init-spec.js +121 -0
  186. package/dist/src/application/use-cases/spec/init-spec.js.map +1 -0
  187. package/dist/src/cli.d.ts +6 -7
  188. package/dist/src/cli.d.ts.map +1 -1
  189. package/dist/src/cli.js +6 -745
  190. package/dist/src/cli.js.map +1 -1
  191. package/dist/src/commands/config-validate.js +2 -2
  192. package/dist/src/commands/init.d.ts +6 -21
  193. package/dist/src/commands/init.d.ts.map +1 -1
  194. package/dist/src/commands/init.js +5 -508
  195. package/dist/src/commands/init.js.map +1 -1
  196. package/dist/src/commands/migrate.js +4 -3
  197. package/dist/src/commands/migrate.js.map +1 -1
  198. package/dist/src/commands/spec-archive.d.ts +6 -13
  199. package/dist/src/commands/spec-archive.d.ts.map +1 -1
  200. package/dist/src/commands/spec-archive.js +5 -36
  201. package/dist/src/commands/spec-archive.js.map +1 -1
  202. package/dist/src/commands/spec-list.d.ts +6 -11
  203. package/dist/src/commands/spec-list.d.ts.map +1 -1
  204. package/dist/src/commands/spec-list.js +5 -51
  205. package/dist/src/commands/spec-list.js.map +1 -1
  206. package/dist/src/domain/constants/approval.d.ts +18 -0
  207. package/dist/src/domain/constants/approval.d.ts.map +1 -0
  208. package/dist/src/domain/constants/approval.js +23 -0
  209. package/dist/src/domain/constants/approval.js.map +1 -0
  210. package/dist/src/domain/constants/environments.d.ts +33 -0
  211. package/dist/src/domain/constants/environments.d.ts.map +1 -0
  212. package/dist/src/domain/constants/environments.js +44 -0
  213. package/dist/src/domain/constants/environments.js.map +1 -0
  214. package/dist/src/domain/constants/index.d.ts +12 -0
  215. package/dist/src/domain/constants/index.d.ts.map +1 -0
  216. package/dist/src/domain/constants/index.js +18 -0
  217. package/dist/src/domain/constants/index.js.map +1 -0
  218. package/dist/src/domain/constants/languages.d.ts +23 -0
  219. package/dist/src/domain/constants/languages.d.ts.map +1 -0
  220. package/dist/src/domain/constants/languages.js +53 -0
  221. package/dist/src/domain/constants/languages.js.map +1 -0
  222. package/dist/src/domain/constants/phases.d.ts +32 -0
  223. package/dist/src/domain/constants/phases.d.ts.map +1 -0
  224. package/dist/src/domain/constants/phases.js +52 -0
  225. package/dist/src/domain/constants/phases.js.map +1 -0
  226. package/dist/src/domain/constants/test-commands.d.ts +36 -0
  227. package/dist/src/domain/constants/test-commands.d.ts.map +1 -0
  228. package/dist/src/domain/constants/test-commands.js +70 -0
  229. package/dist/src/domain/constants/test-commands.js.map +1 -0
  230. package/dist/src/domain/constants/validation-rules.d.ts +32 -0
  231. package/dist/src/domain/constants/validation-rules.d.ts.map +1 -0
  232. package/dist/src/domain/constants/validation-rules.js +51 -0
  233. package/dist/src/domain/constants/validation-rules.js.map +1 -0
  234. package/dist/src/domain/entities/spec.d.ts +66 -0
  235. package/dist/src/domain/entities/spec.d.ts.map +1 -0
  236. package/dist/src/domain/entities/spec.js +112 -0
  237. package/dist/src/domain/entities/spec.js.map +1 -0
  238. package/dist/src/domain/entities/task.d.ts +43 -0
  239. package/dist/src/domain/entities/task.d.ts.map +1 -0
  240. package/dist/src/domain/entities/task.js +65 -0
  241. package/dist/src/domain/entities/task.js.map +1 -0
  242. package/dist/src/domain/services/spec-validator.d.ts +46 -0
  243. package/dist/src/domain/services/spec-validator.d.ts.map +1 -0
  244. package/dist/src/domain/services/spec-validator.js +99 -0
  245. package/dist/src/domain/services/spec-validator.js.map +1 -0
  246. package/dist/src/domain/value-objects/feature-name.d.ts +24 -0
  247. package/dist/src/domain/value-objects/feature-name.d.ts.map +1 -0
  248. package/dist/src/domain/value-objects/feature-name.js +36 -0
  249. package/dist/src/domain/value-objects/feature-name.js.map +1 -0
  250. package/dist/src/domain/value-objects/index.d.ts +7 -0
  251. package/dist/src/domain/value-objects/index.d.ts.map +1 -0
  252. package/dist/src/domain/value-objects/index.js +7 -0
  253. package/dist/src/domain/value-objects/index.js.map +1 -0
  254. package/dist/src/infrastructure/config/index.d.ts +5 -0
  255. package/dist/src/infrastructure/config/index.d.ts.map +1 -0
  256. package/dist/src/infrastructure/config/index.js +6 -0
  257. package/dist/src/infrastructure/config/index.js.map +1 -0
  258. package/dist/src/infrastructure/config/schema.d.ts +337 -0
  259. package/dist/src/infrastructure/config/schema.d.ts.map +1 -0
  260. package/dist/src/infrastructure/config/schema.js +237 -0
  261. package/dist/src/infrastructure/config/schema.js.map +1 -0
  262. package/dist/src/infrastructure/external-apis/atlassian/confluence/approval.d.ts +14 -0
  263. package/dist/src/infrastructure/external-apis/atlassian/confluence/approval.d.ts.map +1 -0
  264. package/dist/src/infrastructure/external-apis/atlassian/confluence/approval.js +102 -0
  265. package/dist/src/infrastructure/external-apis/atlassian/confluence/approval.js.map +1 -0
  266. package/dist/src/infrastructure/external-apis/atlassian/confluence/client.d.ts +23 -0
  267. package/dist/src/infrastructure/external-apis/atlassian/confluence/client.d.ts.map +1 -0
  268. package/dist/src/infrastructure/external-apis/atlassian/confluence/client.js +192 -0
  269. package/dist/src/infrastructure/external-apis/atlassian/confluence/client.js.map +1 -0
  270. package/dist/src/infrastructure/external-apis/atlassian/confluence/hierarchy.d.ts +48 -0
  271. package/dist/src/infrastructure/external-apis/atlassian/confluence/hierarchy.d.ts.map +1 -0
  272. package/dist/src/infrastructure/external-apis/atlassian/confluence/hierarchy.js +531 -0
  273. package/dist/src/infrastructure/external-apis/atlassian/confluence/hierarchy.js.map +1 -0
  274. package/dist/src/infrastructure/external-apis/atlassian/confluence/index.d.ts +10 -0
  275. package/dist/src/infrastructure/external-apis/atlassian/confluence/index.d.ts.map +1 -0
  276. package/dist/src/infrastructure/external-apis/atlassian/confluence/index.js +12 -0
  277. package/dist/src/infrastructure/external-apis/atlassian/confluence/index.js.map +1 -0
  278. package/dist/src/infrastructure/external-apis/atlassian/confluence/sync-service.d.ts +13 -0
  279. package/dist/src/infrastructure/external-apis/atlassian/confluence/sync-service.d.ts.map +1 -0
  280. package/dist/src/infrastructure/external-apis/atlassian/confluence/sync-service.js +129 -0
  281. package/dist/src/infrastructure/external-apis/atlassian/confluence/sync-service.js.map +1 -0
  282. package/dist/src/infrastructure/external-apis/atlassian/confluence/types.d.ts +113 -0
  283. package/dist/src/infrastructure/external-apis/atlassian/confluence/types.d.ts.map +1 -0
  284. package/dist/src/infrastructure/external-apis/atlassian/confluence/types.js +5 -0
  285. package/dist/src/infrastructure/external-apis/atlassian/confluence/types.js.map +1 -0
  286. package/dist/src/infrastructure/external-apis/atlassian/jira/adf-converter.d.ts +15 -0
  287. package/dist/src/infrastructure/external-apis/atlassian/jira/adf-converter.d.ts.map +1 -0
  288. package/dist/src/infrastructure/external-apis/atlassian/jira/adf-converter.js +141 -0
  289. package/dist/src/infrastructure/external-apis/atlassian/jira/adf-converter.js.map +1 -0
  290. package/dist/src/infrastructure/external-apis/atlassian/jira/client.d.ts +50 -0
  291. package/dist/src/infrastructure/external-apis/atlassian/jira/client.d.ts.map +1 -0
  292. package/dist/src/infrastructure/external-apis/atlassian/jira/client.js +226 -0
  293. package/dist/src/infrastructure/external-apis/atlassian/jira/client.js.map +1 -0
  294. package/dist/src/infrastructure/external-apis/atlassian/jira/index.d.ts +12 -0
  295. package/dist/src/infrastructure/external-apis/atlassian/jira/index.d.ts.map +1 -0
  296. package/dist/src/infrastructure/external-apis/atlassian/jira/index.js +16 -0
  297. package/dist/src/infrastructure/external-apis/atlassian/jira/index.js.map +1 -0
  298. package/dist/src/infrastructure/external-apis/atlassian/jira/issue-builder.d.ts +49 -0
  299. package/dist/src/infrastructure/external-apis/atlassian/jira/issue-builder.d.ts.map +1 -0
  300. package/dist/src/infrastructure/external-apis/atlassian/jira/issue-builder.js +165 -0
  301. package/dist/src/infrastructure/external-apis/atlassian/jira/issue-builder.js.map +1 -0
  302. package/dist/src/infrastructure/external-apis/atlassian/jira/status-mapper.d.ts +14 -0
  303. package/dist/src/infrastructure/external-apis/atlassian/jira/status-mapper.d.ts.map +1 -0
  304. package/dist/src/infrastructure/external-apis/atlassian/jira/status-mapper.js +110 -0
  305. package/dist/src/infrastructure/external-apis/atlassian/jira/status-mapper.js.map +1 -0
  306. package/dist/src/infrastructure/external-apis/atlassian/jira/sync-service.d.ts +32 -0
  307. package/dist/src/infrastructure/external-apis/atlassian/jira/sync-service.d.ts.map +1 -0
  308. package/dist/src/infrastructure/external-apis/atlassian/jira/sync-service.js +284 -0
  309. package/dist/src/infrastructure/external-apis/atlassian/jira/sync-service.js.map +1 -0
  310. package/dist/src/infrastructure/external-apis/atlassian/jira/types.d.ts +114 -0
  311. package/dist/src/infrastructure/external-apis/atlassian/jira/types.d.ts.map +1 -0
  312. package/dist/src/infrastructure/external-apis/atlassian/jira/types.js +7 -0
  313. package/dist/src/infrastructure/external-apis/atlassian/jira/types.js.map +1 -0
  314. package/dist/src/infrastructure/external-apis/github/client.d.ts +25 -0
  315. package/dist/src/infrastructure/external-apis/github/client.d.ts.map +1 -0
  316. package/dist/src/infrastructure/external-apis/github/client.js +109 -0
  317. package/dist/src/infrastructure/external-apis/github/client.js.map +1 -0
  318. package/dist/src/infrastructure/external-apis/github/index.d.ts +7 -0
  319. package/dist/src/infrastructure/external-apis/github/index.d.ts.map +1 -0
  320. package/dist/src/infrastructure/external-apis/github/index.js +8 -0
  321. package/dist/src/infrastructure/external-apis/github/index.js.map +1 -0
  322. package/dist/src/infrastructure/external-apis/github/types.d.ts +69 -0
  323. package/dist/src/infrastructure/external-apis/github/types.d.ts.map +1 -0
  324. package/dist/src/infrastructure/external-apis/github/types.js +5 -0
  325. package/dist/src/infrastructure/external-apis/github/types.js.map +1 -0
  326. package/dist/src/infrastructure/external-apis/github/utils.d.ts +18 -0
  327. package/dist/src/infrastructure/external-apis/github/utils.d.ts.map +1 -0
  328. package/dist/src/infrastructure/external-apis/github/utils.js +84 -0
  329. package/dist/src/infrastructure/external-apis/github/utils.js.map +1 -0
  330. package/dist/src/infrastructure/filesystem/index.d.ts +6 -0
  331. package/dist/src/infrastructure/filesystem/index.d.ts.map +1 -0
  332. package/dist/src/infrastructure/filesystem/index.js +5 -0
  333. package/dist/src/infrastructure/filesystem/index.js.map +1 -0
  334. package/dist/src/infrastructure/filesystem/project-meta.d.ts +32 -0
  335. package/dist/src/infrastructure/filesystem/project-meta.d.ts.map +1 -0
  336. package/dist/src/infrastructure/filesystem/project-meta.js +75 -0
  337. package/dist/src/infrastructure/filesystem/project-meta.js.map +1 -0
  338. package/dist/src/infrastructure/parsers/aidlc-parser.d.ts +86 -0
  339. package/dist/src/infrastructure/parsers/aidlc-parser.d.ts.map +1 -0
  340. package/dist/src/infrastructure/parsers/aidlc-parser.js +208 -0
  341. package/dist/src/infrastructure/parsers/aidlc-parser.js.map +1 -0
  342. package/dist/src/infrastructure/parsers/index.d.ts +8 -0
  343. package/dist/src/infrastructure/parsers/index.d.ts.map +1 -0
  344. package/dist/src/infrastructure/parsers/index.js +6 -0
  345. package/dist/src/infrastructure/parsers/index.js.map +1 -0
  346. package/dist/src/infrastructure/parsers/markdown-parser.d.ts +51 -0
  347. package/dist/src/infrastructure/parsers/markdown-parser.d.ts.map +1 -0
  348. package/dist/src/infrastructure/parsers/markdown-parser.js +253 -0
  349. package/dist/src/infrastructure/parsers/markdown-parser.js.map +1 -0
  350. package/dist/src/presentation/cli/config.d.ts +12 -0
  351. package/dist/src/presentation/cli/config.d.ts.map +1 -0
  352. package/dist/src/presentation/cli/config.js +22 -0
  353. package/dist/src/presentation/cli/config.js.map +1 -0
  354. package/dist/src/presentation/cli/version.d.ts +10 -0
  355. package/dist/src/presentation/cli/version.d.ts.map +1 -0
  356. package/dist/src/presentation/cli/version.js +41 -0
  357. package/dist/src/presentation/cli/version.js.map +1 -0
  358. package/dist/src/presentation/cli.d.ts +22 -0
  359. package/dist/src/presentation/cli.d.ts.map +1 -0
  360. package/dist/src/presentation/cli.js +85 -0
  361. package/dist/src/presentation/cli.js.map +1 -0
  362. package/dist/src/presentation/commands/config/register.d.ts +11 -0
  363. package/dist/src/presentation/commands/config/register.d.ts.map +1 -0
  364. package/dist/src/presentation/commands/config/register.js +98 -0
  365. package/dist/src/presentation/commands/config/register.js.map +1 -0
  366. package/dist/src/presentation/commands/confluence/register.d.ts +11 -0
  367. package/dist/src/presentation/commands/confluence/register.d.ts.map +1 -0
  368. package/dist/src/presentation/commands/confluence/register.js +32 -0
  369. package/dist/src/presentation/commands/confluence/register.js.map +1 -0
  370. package/dist/src/presentation/commands/confluence/sync.d.ts +17 -0
  371. package/dist/src/presentation/commands/confluence/sync.d.ts.map +1 -0
  372. package/dist/src/presentation/commands/confluence/sync.js +25 -0
  373. package/dist/src/presentation/commands/confluence/sync.js.map +1 -0
  374. package/dist/src/presentation/commands/init/handler.d.ts +10 -0
  375. package/dist/src/presentation/commands/init/handler.d.ts.map +1 -0
  376. package/dist/src/presentation/commands/init/handler.js +64 -0
  377. package/dist/src/presentation/commands/init/handler.js.map +1 -0
  378. package/dist/src/presentation/commands/init/prompts.d.ts +41 -0
  379. package/dist/src/presentation/commands/init/prompts.d.ts.map +1 -0
  380. package/dist/src/presentation/commands/init/prompts.js +119 -0
  381. package/dist/src/presentation/commands/init/prompts.js.map +1 -0
  382. package/dist/src/presentation/commands/init/register.d.ts +11 -0
  383. package/dist/src/presentation/commands/init/register.d.ts.map +1 -0
  384. package/dist/src/presentation/commands/init/register.js +141 -0
  385. package/dist/src/presentation/commands/init/register.js.map +1 -0
  386. package/dist/src/presentation/commands/init/setup.d.ts +26 -0
  387. package/dist/src/presentation/commands/init/setup.d.ts.map +1 -0
  388. package/dist/src/presentation/commands/init/setup.js +196 -0
  389. package/dist/src/presentation/commands/init/setup.js.map +1 -0
  390. package/dist/src/presentation/commands/init/templates.d.ts +19 -0
  391. package/dist/src/presentation/commands/init/templates.d.ts.map +1 -0
  392. package/dist/src/presentation/commands/init/templates.js +140 -0
  393. package/dist/src/presentation/commands/init/templates.js.map +1 -0
  394. package/dist/src/presentation/commands/init/validation.d.ts +21 -0
  395. package/dist/src/presentation/commands/init/validation.d.ts.map +1 -0
  396. package/dist/src/presentation/commands/init/validation.js +65 -0
  397. package/dist/src/presentation/commands/init/validation.js.map +1 -0
  398. package/dist/src/presentation/commands/jira/register.d.ts +11 -0
  399. package/dist/src/presentation/commands/jira/register.d.ts.map +1 -0
  400. package/dist/src/presentation/commands/jira/register.js +75 -0
  401. package/dist/src/presentation/commands/jira/register.js.map +1 -0
  402. package/dist/src/presentation/commands/jira/sync.d.ts +29 -0
  403. package/dist/src/presentation/commands/jira/sync.d.ts.map +1 -0
  404. package/dist/src/presentation/commands/jira/sync.js +37 -0
  405. package/dist/src/presentation/commands/jira/sync.js.map +1 -0
  406. package/dist/src/{commands/multi-repo-add-repo.d.ts → presentation/commands/multi-repo/add-repo.d.ts} +1 -1
  407. package/dist/src/presentation/commands/multi-repo/add-repo.d.ts.map +1 -0
  408. package/dist/src/{commands/multi-repo-add-repo.js → presentation/commands/multi-repo/add-repo.js} +4 -4
  409. package/dist/src/presentation/commands/multi-repo/add-repo.js.map +1 -0
  410. package/dist/src/{commands/multi-repo-ci-status.d.ts → presentation/commands/multi-repo/ci-status.d.ts} +2 -2
  411. package/dist/src/presentation/commands/multi-repo/ci-status.d.ts.map +1 -0
  412. package/dist/src/{commands/multi-repo-ci-status.js → presentation/commands/multi-repo/ci-status.js} +95 -81
  413. package/dist/src/presentation/commands/multi-repo/ci-status.js.map +1 -0
  414. package/dist/src/{commands/multi-repo-confluence-sync.d.ts → presentation/commands/multi-repo/confluence-sync.d.ts} +1 -1
  415. package/dist/src/presentation/commands/multi-repo/confluence-sync.d.ts.map +1 -0
  416. package/dist/src/{commands/multi-repo-confluence-sync.js → presentation/commands/multi-repo/confluence-sync.js} +7 -6
  417. package/dist/src/presentation/commands/multi-repo/confluence-sync.js.map +1 -0
  418. package/dist/src/{commands/multi-repo-init.d.ts → presentation/commands/multi-repo/init.d.ts} +1 -1
  419. package/dist/src/presentation/commands/multi-repo/init.d.ts.map +1 -0
  420. package/dist/src/{commands/multi-repo-init.js → presentation/commands/multi-repo/init.js} +6 -6
  421. package/dist/src/presentation/commands/multi-repo/init.js.map +1 -0
  422. package/dist/src/{commands/multi-repo-list.d.ts → presentation/commands/multi-repo/list.d.ts} +1 -1
  423. package/dist/src/presentation/commands/multi-repo/list.d.ts.map +1 -0
  424. package/dist/src/{commands/multi-repo-list.js → presentation/commands/multi-repo/list.js} +2 -2
  425. package/dist/src/presentation/commands/multi-repo/list.js.map +1 -0
  426. package/dist/src/presentation/commands/multi-repo/register.d.ts +12 -0
  427. package/dist/src/presentation/commands/multi-repo/register.d.ts.map +1 -0
  428. package/dist/src/presentation/commands/multi-repo/register.js +249 -0
  429. package/dist/src/presentation/commands/multi-repo/register.js.map +1 -0
  430. package/dist/src/{commands/multi-repo-test.d.ts → presentation/commands/multi-repo/test.d.ts} +1 -1
  431. package/dist/src/presentation/commands/multi-repo/test.d.ts.map +1 -0
  432. package/dist/src/{commands/multi-repo-test.js → presentation/commands/multi-repo/test.js} +4 -4
  433. package/dist/src/presentation/commands/multi-repo/test.js.map +1 -0
  434. package/dist/src/presentation/commands/phase/register.d.ts +11 -0
  435. package/dist/src/presentation/commands/phase/register.d.ts.map +1 -0
  436. package/dist/src/presentation/commands/phase/register.js +97 -0
  437. package/dist/src/presentation/commands/phase/register.js.map +1 -0
  438. package/dist/src/presentation/commands/spec/archive.d.ts +17 -0
  439. package/dist/src/presentation/commands/spec/archive.d.ts.map +1 -0
  440. package/dist/src/presentation/commands/spec/archive.js +40 -0
  441. package/dist/src/presentation/commands/spec/archive.js.map +1 -0
  442. package/dist/src/presentation/commands/spec/list.d.ts +15 -0
  443. package/dist/src/presentation/commands/spec/list.d.ts.map +1 -0
  444. package/dist/src/presentation/commands/spec/list.js +55 -0
  445. package/dist/src/presentation/commands/spec/list.js.map +1 -0
  446. package/dist/src/presentation/commands/spec/register.d.ts +11 -0
  447. package/dist/src/presentation/commands/spec/register.d.ts.map +1 -0
  448. package/dist/src/presentation/commands/spec/register.js +45 -0
  449. package/dist/src/presentation/commands/spec/register.js.map +1 -0
  450. package/dist/src/presentation/commands/workflow/orchestrator.d.ts +50 -0
  451. package/dist/src/presentation/commands/workflow/orchestrator.d.ts.map +1 -0
  452. package/dist/src/presentation/commands/workflow/orchestrator.js +174 -0
  453. package/dist/src/presentation/commands/workflow/orchestrator.js.map +1 -0
  454. package/dist/src/presentation/commands/workflow/register.d.ts +11 -0
  455. package/dist/src/presentation/commands/workflow/register.d.ts.map +1 -0
  456. package/dist/src/presentation/commands/workflow/register.js +58 -0
  457. package/dist/src/presentation/commands/workflow/register.js.map +1 -0
  458. package/dist/src/presentation/formatters/error-formatter.d.ts +79 -0
  459. package/dist/src/presentation/formatters/error-formatter.d.ts.map +1 -0
  460. package/dist/src/presentation/formatters/error-formatter.js +150 -0
  461. package/dist/src/presentation/formatters/error-formatter.js.map +1 -0
  462. package/dist/src/presentation/formatters/index.d.ts +8 -0
  463. package/dist/src/presentation/formatters/index.d.ts.map +1 -0
  464. package/dist/src/presentation/formatters/index.js +11 -0
  465. package/dist/src/presentation/formatters/index.js.map +1 -0
  466. package/dist/src/presentation/formatters/output-formatter.d.ts +98 -0
  467. package/dist/src/presentation/formatters/output-formatter.d.ts.map +1 -0
  468. package/dist/src/presentation/formatters/output-formatter.js +165 -0
  469. package/dist/src/presentation/formatters/output-formatter.js.map +1 -0
  470. package/dist/src/presentation/formatters/progress-formatter.d.ts +121 -0
  471. package/dist/src/presentation/formatters/progress-formatter.d.ts.map +1 -0
  472. package/dist/src/presentation/formatters/progress-formatter.js +235 -0
  473. package/dist/src/presentation/formatters/progress-formatter.js.map +1 -0
  474. package/dist/src/presentation/interactive/config/env-wizard.d.ts +9 -0
  475. package/dist/src/presentation/interactive/config/env-wizard.d.ts.map +1 -0
  476. package/dist/src/presentation/interactive/config/env-wizard.js +193 -0
  477. package/dist/src/presentation/interactive/config/env-wizard.js.map +1 -0
  478. package/dist/src/presentation/interactive/config/index.d.ts +5 -0
  479. package/dist/src/presentation/interactive/config/index.d.ts.map +1 -0
  480. package/dist/src/presentation/interactive/config/index.js +5 -0
  481. package/dist/src/presentation/interactive/config/index.js.map +1 -0
  482. package/dist/src/presentation/interactive/confirmation.d.ts +24 -0
  483. package/dist/src/presentation/interactive/confirmation.d.ts.map +1 -0
  484. package/dist/src/presentation/interactive/confirmation.js +54 -0
  485. package/dist/src/presentation/interactive/confirmation.js.map +1 -0
  486. package/dist/src/presentation/interactive/index.d.ts +8 -0
  487. package/dist/src/presentation/interactive/index.d.ts.map +1 -0
  488. package/dist/src/presentation/interactive/index.js +11 -0
  489. package/dist/src/presentation/interactive/index.js.map +1 -0
  490. package/dist/src/presentation/interactive/prompts.d.ts +30 -0
  491. package/dist/src/presentation/interactive/prompts.d.ts.map +1 -0
  492. package/dist/src/presentation/interactive/prompts.js +69 -0
  493. package/dist/src/presentation/interactive/prompts.js.map +1 -0
  494. package/dist/src/presentation/interactive/selection.d.ts +31 -0
  495. package/dist/src/presentation/interactive/selection.d.ts.map +1 -0
  496. package/dist/src/presentation/interactive/selection.js +138 -0
  497. package/dist/src/presentation/interactive/selection.js.map +1 -0
  498. package/dist/src/shared/types/errors.d.ts +132 -0
  499. package/dist/src/shared/types/errors.d.ts.map +1 -0
  500. package/dist/src/shared/types/errors.js +61 -0
  501. package/dist/src/shared/types/errors.js.map +1 -0
  502. package/dist/src/shared/types/result.d.ts +53 -0
  503. package/dist/src/shared/types/result.d.ts.map +1 -0
  504. package/dist/src/shared/types/result.js +42 -0
  505. package/dist/src/shared/types/result.js.map +1 -0
  506. package/dist/test-confluence-auth.d.ts +6 -0
  507. package/dist/test-confluence-auth.d.ts.map +1 -0
  508. package/dist/test-confluence-auth.js +128 -0
  509. package/dist/test-confluence-auth.js.map +1 -0
  510. package/docs/MIGRATION.md +513 -0
  511. package/docs/architecture.md +774 -0
  512. package/docs/guides/comprehensive-verification-guide.md +1926 -0
  513. package/docs/guides/interactive-config.md +285 -0
  514. package/docs/onion-architecture-phase0-complete.md +91 -0
  515. package/package.json +6 -6
  516. package/scripts/README.md +148 -0
  517. package/scripts/__tests__/jira-transitions.test.ts +44 -30
  518. package/scripts/__tests__/mermaid-converter.test.ts +2 -2
  519. package/scripts/__tests__/multi-repo-validator.test.ts +62 -62
  520. package/scripts/__tests__/spec-archiver.test.ts +12 -0
  521. package/scripts/__tests__/validate-phase.test.ts +6 -6
  522. package/scripts/build/README.md +24 -0
  523. package/scripts/{copy-static-assets.js → build/copy-static-assets.js} +1 -1
  524. package/scripts/{set-permissions.js → build/set-permissions.js} +1 -1
  525. package/scripts/config/config-schema.ts +43 -302
  526. package/scripts/config-global.ts +3 -2
  527. package/scripts/confluence-sync.ts +17 -538
  528. package/scripts/constants/environments.ts +3 -53
  529. package/scripts/constants/languages.ts +3 -68
  530. package/scripts/constants/test-commands.ts +3 -94
  531. package/scripts/dev-tools/README.md +22 -0
  532. package/scripts/{test-interactive.ts → dev-tools/test-interactive.ts} +4 -3
  533. package/scripts/github-actions-client.ts +18 -256
  534. package/scripts/jira-sync.ts +5 -1270
  535. package/scripts/markdown-to-confluence.ts +5 -5
  536. package/scripts/multi-project-estimate.ts +3 -2
  537. package/scripts/phase-runner.ts +41 -19
  538. package/scripts/pre-flight-check.ts +27 -11
  539. package/scripts/template/__tests__/multi-repo-renderer.test.ts +12 -0
  540. package/scripts/template/multi-repo-renderer.ts +2 -2
  541. package/scripts/test-execution-generator.ts +5 -4
  542. package/scripts/utils/__tests__/config-validator.test.ts +19 -19
  543. package/scripts/utils/__tests__/feature-name-validator.test.ts +13 -13
  544. package/scripts/utils/__tests__/multi-repo-validator.test.ts +34 -34
  545. package/scripts/utils/__tests__/project-analyzer.test.ts +542 -0
  546. package/scripts/utils/__tests__/safe-file-reader.test.ts +208 -0
  547. package/scripts/utils/__tests__/security-validator.test.ts +33 -33
  548. package/scripts/utils/__tests__/validation-result.test.ts +112 -0
  549. package/scripts/utils/aidlc-parser.ts +18 -287
  550. package/scripts/utils/ci-generator.ts +4 -3
  551. package/scripts/utils/config-loader.ts +54 -50
  552. package/scripts/utils/config-validator.ts +89 -80
  553. package/scripts/utils/docker-requirement-detector.ts +5 -4
  554. package/scripts/utils/env-config.ts +59 -40
  555. package/scripts/utils/feature-name-validator.ts +25 -40
  556. package/scripts/utils/interactive-helpers.ts +24 -132
  557. package/scripts/utils/language-detector.ts +4 -3
  558. package/scripts/utils/markdown-parser.ts +18 -373
  559. package/scripts/utils/multi-repo-validator.ts +27 -28
  560. package/scripts/utils/project-analyzer.ts +429 -0
  561. package/scripts/utils/project-detector.ts +6 -5
  562. package/scripts/utils/project-finder.ts +2 -154
  563. package/scripts/utils/project-meta.ts +8 -91
  564. package/scripts/utils/safe-file-reader.ts +158 -0
  565. package/scripts/utils/security-validator.ts +42 -78
  566. package/scripts/utils/spec-archiver.ts +7 -6
  567. package/scripts/utils/spec-updater.ts +12 -6
  568. package/scripts/utils/tasks-converter.ts +2 -2
  569. package/scripts/utils/tasks-format-validator.ts +4 -4
  570. package/scripts/utils/template-applier.ts +4 -3
  571. package/scripts/utils/types/validation.ts +92 -0
  572. package/scripts/validate-phase.ts +51 -23
  573. package/scripts/workflow-orchestrator.ts +16 -251
  574. package/dist/scripts/mermaid-converter.d.ts.map +0 -1
  575. package/dist/scripts/mermaid-converter.js.map +0 -1
  576. package/dist/scripts/resource-dashboard.d.ts +0 -7
  577. package/dist/scripts/resource-dashboard.d.ts.map +0 -1
  578. package/dist/scripts/resource-dashboard.js +0 -157
  579. package/dist/scripts/resource-dashboard.js.map +0 -1
  580. package/dist/scripts/test-interactive.d.ts.map +0 -1
  581. package/dist/scripts/test-interactive.js.map +0 -1
  582. package/dist/scripts/test-new-features.d.ts +0 -5
  583. package/dist/scripts/test-new-features.d.ts.map +0 -1
  584. package/dist/scripts/test-new-features.js +0 -148
  585. package/dist/scripts/test-new-features.js.map +0 -1
  586. package/dist/scripts/test-spec-generator.d.ts +0 -29
  587. package/dist/scripts/test-spec-generator.d.ts.map +0 -1
  588. package/dist/scripts/test-spec-generator.js +0 -493
  589. package/dist/scripts/test-spec-generator.js.map +0 -1
  590. package/dist/scripts/utils/confluence-approval.d.ts +0 -46
  591. package/dist/scripts/utils/confluence-approval.d.ts.map +0 -1
  592. package/dist/scripts/utils/confluence-approval.js +0 -120
  593. package/dist/scripts/utils/confluence-approval.js.map +0 -1
  594. package/dist/scripts/utils/template-finder.d.ts +0 -37
  595. package/dist/scripts/utils/template-finder.d.ts.map +0 -1
  596. package/dist/scripts/utils/template-finder.js +0 -58
  597. package/dist/scripts/utils/template-finder.js.map +0 -1
  598. package/dist/src/commands/multi-repo-add-repo.d.ts.map +0 -1
  599. package/dist/src/commands/multi-repo-add-repo.js.map +0 -1
  600. package/dist/src/commands/multi-repo-ci-status.d.ts.map +0 -1
  601. package/dist/src/commands/multi-repo-ci-status.js.map +0 -1
  602. package/dist/src/commands/multi-repo-confluence-sync.d.ts.map +0 -1
  603. package/dist/src/commands/multi-repo-confluence-sync.js.map +0 -1
  604. package/dist/src/commands/multi-repo-init.d.ts.map +0 -1
  605. package/dist/src/commands/multi-repo-init.js.map +0 -1
  606. package/dist/src/commands/multi-repo-list.d.ts.map +0 -1
  607. package/dist/src/commands/multi-repo-list.js.map +0 -1
  608. package/dist/src/commands/multi-repo-test.d.ts.map +0 -1
  609. package/dist/src/commands/multi-repo-test.js.map +0 -1
  610. package/dist/src/commands/setup-existing.d.ts +0 -22
  611. package/dist/src/commands/setup-existing.d.ts.map +0 -1
  612. package/dist/src/commands/setup-existing.js +0 -606
  613. package/dist/src/commands/setup-existing.js.map +0 -1
  614. package/scripts/__tests__/setup-existing-project.test.ts +0 -244
  615. package/scripts/resource-dashboard.ts +0 -189
  616. package/scripts/test-new-features.ts +0 -171
  617. package/scripts/test-spec-generator.ts +0 -570
  618. package/scripts/utils/confluence-approval.ts +0 -169
  619. package/scripts/utils/template-finder.ts +0 -69
  620. /package/dist/scripts/{mermaid-converter.d.ts → dev-tools/mermaid-converter.d.ts} +0 -0
  621. /package/dist/scripts/{mermaid-converter.js → dev-tools/mermaid-converter.js} +0 -0
  622. /package/dist/scripts/{test-interactive.d.ts → dev-tools/test-interactive.d.ts} +0 -0
  623. /package/scripts/{mermaid-converter.ts → dev-tools/mermaid-converter.ts} +0 -0
package/dist/src/cli.js CHANGED
@@ -1,749 +1,10 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
- * Michi CLI Tool
4
- * AI駆動開発ワークフロー自動化コマンドラインツール
3
+ * Michi CLI Tool - Entry Point
4
+ *
5
+ * This file is now a thin wrapper that delegates to the Presentation layer.
6
+ * The actual CLI logic has been moved to src/presentation/cli.ts as part of
7
+ * the Onion Architecture migration (Phase 5, Task 6.1).
5
8
  */
6
- import { Command } from 'commander';
7
- import { fileURLToPath } from 'url';
8
- import { realpathSync } from 'fs';
9
- import { syncTasksToJIRA, JIRAClient } from '../scripts/jira-sync.js';
10
- import { syncToConfluence } from '../scripts/confluence-sync.js';
11
- import { runPhase } from '../scripts/phase-runner.js';
12
- import { validatePhase } from '../scripts/validate-phase.js';
13
- import { runPreFlightCheck } from '../scripts/pre-flight-check.js';
14
- import { WorkflowOrchestrator } from '../scripts/workflow-orchestrator.js';
15
- import { validateAndReport } from '../scripts/utils/config-validator.js';
16
- import { setupExisting } from './commands/setup-existing.js';
17
- import { initProject } from './commands/init.js';
18
- import { migrate } from './commands/migrate.js';
19
- import { convertTasksFile } from '../scripts/utils/tasks-converter.js';
20
- import { isAIDLCFormat } from '../scripts/utils/aidlc-parser.js';
21
- import { specArchiveCommand } from './commands/spec-archive.js';
22
- import { specListCommand } from './commands/spec-list.js';
23
- import { readFileSync, existsSync } from 'fs';
24
- import { dirname, join } from 'path';
25
- import { loadEnv } from '../scripts/utils/env-loader.js';
26
- // package.jsonからバージョンを読み込む
27
- // Michi自身のpackage.jsonのみを読み込み、利用者のpackage.jsonは読まない
28
- const __filename = fileURLToPath(import.meta.url);
29
- const __dirname = dirname(__filename);
30
- /**
31
- * Michi自身のpackage.jsonからバージョンを取得
32
- * 利用者のプロジェクトがNode.jsでなくてもMichiを使えるようにする
33
- */
34
- function getMichiVersion() {
35
- // package.jsonの場所を探索
36
- // - ビルド後/npm実行時: __dirname/../../package.json (dist/src/cli.js)
37
- // - 開発時: __dirname/../package.json (src/cli.ts)
38
- const possiblePaths = [
39
- join(__dirname, '..', '..', 'package.json'),
40
- join(__dirname, '..', 'package.json'),
41
- ];
42
- for (const path of possiblePaths) {
43
- if (existsSync(path)) {
44
- try {
45
- const packageJson = JSON.parse(readFileSync(path, 'utf-8'));
46
- // name フィールドで確実にMichiのpackage.jsonか確認
47
- if (packageJson.name === '@sk8metal/michi-cli') {
48
- return packageJson.version;
49
- }
50
- }
51
- catch {
52
- // 次のパスを試す
53
- continue;
54
- }
55
- }
56
- }
57
- // どこにも見つからない場合はデフォルト値(開発環境など)
58
- return '0.0.0-dev';
59
- }
60
- const michiVersion = getMichiVersion();
61
- // 環境変数読み込み(グローバル → ローカルの順で読み込み)
62
- loadEnv();
63
- /**
64
- * 環境変数から承認ゲートのロールリストを取得
65
- * @param envVar 環境変数名
66
- * @param defaultValue デフォルト値(環境変数が存在しない場合)
67
- * @returns ロール名の配列
68
- */
69
- function getApprovalGates(envVar, defaultValue) {
70
- const envValue = process.env[envVar];
71
- if (!envValue) {
72
- return defaultValue;
73
- }
74
- // カンマ区切りを配列に変換し、空白をトリム
75
- return envValue
76
- .split(',')
77
- .map((role) => role.trim())
78
- .filter((role) => role.length > 0);
79
- }
80
- /**
81
- * CLIツールを作成
82
- */
83
- export function createCLI() {
84
- const program = new Command();
85
- program
86
- .name('michi')
87
- .description('🛣️ Michi(道) - Managed Intelligent Comprehensive Hub for Integration')
88
- .version(michiVersion);
89
- // jira:sync コマンド
90
- program
91
- .command('jira:sync')
92
- .description('Sync tasks.md to JIRA Epic/Stories')
93
- .argument('<feature>', 'Feature name')
94
- .action(async (feature) => {
95
- try {
96
- await syncTasksToJIRA(feature);
97
- }
98
- catch (error) {
99
- console.error('❌ JIRA sync failed:', error instanceof Error ? error.message : error);
100
- process.exit(1);
101
- }
102
- });
103
- // confluence:sync コマンド
104
- program
105
- .command('confluence:sync')
106
- .description('Sync spec to Confluence')
107
- .argument('<feature>', 'Feature name')
108
- .argument('[type]', 'Document type (requirements, design)', 'requirements')
109
- .action(async (feature, type) => {
110
- try {
111
- await syncToConfluence(feature, type);
112
- }
113
- catch (error) {
114
- console.error('❌ Confluence sync failed:', error instanceof Error ? error.message : error);
115
- process.exit(1);
116
- }
117
- });
118
- // phase:run コマンド
119
- program
120
- .command('phase:run')
121
- .description('Run complete phase workflow')
122
- .argument('<feature>', 'Feature name')
123
- .argument('<phase>', 'Phase name (requirements, design, tasks, environment-setup, phase-a, phase-b)')
124
- .action(async (feature, phase) => {
125
- const validPhases = [
126
- 'requirements',
127
- 'design',
128
- 'tasks',
129
- 'environment-setup',
130
- 'phase-a',
131
- 'phase-b',
132
- ];
133
- if (!validPhases.includes(phase)) {
134
- console.error(`❌ Invalid phase. Must be: ${validPhases.join(', ')}`);
135
- process.exit(1);
136
- }
137
- try {
138
- const result = await runPhase(feature, phase);
139
- if (result.success) {
140
- console.log('\n✅ Phase completed');
141
- }
142
- else {
143
- console.log('\n❌ Phase incomplete (check errors above)');
144
- process.exit(1);
145
- }
146
- }
147
- catch (error) {
148
- console.error('❌ Phase execution failed:', error instanceof Error ? error.message : error);
149
- process.exit(1);
150
- }
151
- });
152
- // validate:phase コマンド
153
- program
154
- .command('validate:phase')
155
- .description('Validate phase completion')
156
- .argument('<feature>', 'Feature name')
157
- .argument('<phase>', 'Phase name (requirements, design, tasks, environment-setup, phase-a, phase-b)')
158
- .action(async (feature, phase) => {
159
- const validPhases = [
160
- 'requirements',
161
- 'design',
162
- 'tasks',
163
- 'environment-setup',
164
- 'phase-a',
165
- 'phase-b',
166
- ];
167
- if (!validPhases.includes(phase)) {
168
- console.error(`❌ Invalid phase. Must be: ${validPhases.join(', ')}`);
169
- process.exit(1);
170
- }
171
- try {
172
- const result = validatePhase(feature, phase);
173
- process.exit(result.valid ? 0 : 1);
174
- }
175
- catch (error) {
176
- console.error('❌ Validation failed:', error instanceof Error ? error.message : error);
177
- process.exit(1);
178
- }
179
- });
180
- // preflight コマンド
181
- program
182
- .command('preflight')
183
- .description('Run pre-flight checks')
184
- .argument('[phase]', 'Check phase (confluence, jira, all)', 'all')
185
- .action(async (phase) => {
186
- const validPhases = ['confluence', 'jira', 'all'];
187
- if (!validPhases.includes(phase)) {
188
- console.error(`❌ Invalid phase. Must be: ${validPhases.join(', ')}`);
189
- process.exit(1);
190
- }
191
- try {
192
- const result = await runPreFlightCheck(phase);
193
- process.exit(result.valid ? 0 : 1);
194
- }
195
- catch (error) {
196
- console.error('❌ Pre-flight check failed:', error instanceof Error ? error.message : error);
197
- process.exit(1);
198
- }
199
- });
200
- // spec:archive コマンド
201
- program
202
- .command('spec:archive')
203
- .description('Archive a completed specification')
204
- .argument('<feature>', 'Feature name')
205
- .option('--reason <reason>', 'Archive reason')
206
- .action(async (feature, options) => {
207
- try {
208
- await specArchiveCommand(feature, options);
209
- }
210
- catch (error) {
211
- console.error('❌ Failed to archive specification:', error instanceof Error ? error.message : error);
212
- process.exit(1);
213
- }
214
- });
215
- // spec:list コマンド
216
- program
217
- .command('spec:list')
218
- .description('List specifications')
219
- .option('--all', 'Include archived specifications')
220
- .action(async (options) => {
221
- try {
222
- await specListCommand(options);
223
- }
224
- catch (error) {
225
- console.error('❌ Failed to list specifications:', error instanceof Error ? error.message : error);
226
- process.exit(1);
227
- }
228
- });
229
- // workflow:run コマンド
230
- program
231
- .command('workflow:run')
232
- .description('Run complete workflow')
233
- .requiredOption('--feature <name>', 'Feature name')
234
- .action(async (options) => {
235
- try {
236
- const workflowConfig = {
237
- feature: options.feature,
238
- stages: [
239
- 'requirements',
240
- 'design',
241
- 'tasks',
242
- 'implement',
243
- 'test',
244
- 'release',
245
- ],
246
- approvalGates: {
247
- requirements: getApprovalGates('APPROVAL_GATES_REQUIREMENTS', [
248
- 'pm',
249
- 'director',
250
- ]),
251
- design: getApprovalGates('APPROVAL_GATES_DESIGN', [
252
- 'architect',
253
- 'director',
254
- ]),
255
- release: getApprovalGates('APPROVAL_GATES_RELEASE', [
256
- 'sm',
257
- 'director',
258
- ]),
259
- },
260
- };
261
- const orchestrator = new WorkflowOrchestrator(workflowConfig);
262
- await orchestrator.run();
263
- }
264
- catch (error) {
265
- console.error('❌ Workflow failed:', error instanceof Error ? error.message : error);
266
- process.exit(1);
267
- }
268
- });
269
- // config:validate コマンド
270
- program
271
- .command('config:validate')
272
- .description('Validate .michi/config.json')
273
- .action(async () => {
274
- try {
275
- const valid = validateAndReport();
276
- process.exit(valid ? 0 : 1);
277
- }
278
- catch (error) {
279
- console.error('❌ Validation failed:', error instanceof Error ? error.message : error);
280
- process.exit(1);
281
- }
282
- });
283
- // config:check-security コマンド
284
- program
285
- .command('config:check-security')
286
- .description('Check security of environment variables and configuration')
287
- .action(async () => {
288
- try {
289
- const { configValidate } = await import('./commands/config-validate.js');
290
- await configValidate();
291
- process.exit(0);
292
- }
293
- catch (error) {
294
- console.error('❌ Security check failed:', error instanceof Error ? error.message : error);
295
- process.exit(1);
296
- }
297
- });
298
- // init コマンド(統合セットアップ)
299
- program
300
- .command('init')
301
- .description('Initialize new or existing project with Michi workflow')
302
- .option('--name <project-id>', 'Project ID')
303
- .option('--project-name <name>', 'Project name')
304
- .option('--jira-key <key>', 'JIRA project key')
305
- .option('--existing', 'Initialize existing project mode (auto-detects by default)')
306
- .option('--michi-path <path>', 'Path to Michi repository (for template copying)')
307
- .option('--skip-config', 'Skip workflow configuration setup')
308
- .option('-y, --yes', 'Skip confirmation prompts')
309
- .option('--claude', 'Use Claude Code environment')
310
- .option('--claude-agent', 'Use Claude Code Subagents environment')
311
- .option('--lang <code>', 'Language code (default: ja)', 'ja')
312
- .action(async (options) => {
313
- try {
314
- await initProject(options);
315
- }
316
- catch (error) {
317
- console.error('❌ Initialization failed:', error instanceof Error ? error.message : error);
318
- process.exit(1);
319
- }
320
- });
321
- // setup-existing コマンド (非推奨)
322
- program
323
- .command('setup-existing')
324
- .description('[DEPRECATED] Use "michi init --existing" instead')
325
- .option('--claude', 'Use Claude Code environment')
326
- .option('--claude-agent', 'Use Claude Code Subagents environment')
327
- .option('--lang <code>', 'Language code (default: ja)', 'ja')
328
- .option('--project-name <name>', 'Project name')
329
- .option('--jira-key <key>', 'JIRA project key')
330
- .option('--no-agent-skills', 'Skip installing agent skills and sub-agents to ~/.claude/')
331
- .action(async (options) => {
332
- console.warn('⚠️ このコマンドは非推奨です。代わりに "michi init --existing" を使用してください。');
333
- console.warn(' This command is deprecated. Please use "michi init --existing" instead.');
334
- console.log('');
335
- try {
336
- await setupExisting(options);
337
- }
338
- catch (error) {
339
- console.error('❌ Setup failed:', error instanceof Error ? error.message : error);
340
- process.exit(1);
341
- }
342
- });
343
- // migrate コマンド
344
- program
345
- .command('migrate')
346
- .description('Migrate .env to new 3-layer configuration format')
347
- .option('--dry-run', 'Preview changes without modifying files')
348
- .option('--backup-dir <dir>', 'Specify backup directory')
349
- .option('--force', 'Skip confirmation prompts')
350
- .option('--verbose', 'Show detailed logs')
351
- .option('--rollback <dir>', 'Restore from backup directory')
352
- .action(async (options) => {
353
- try {
354
- await migrate(options);
355
- }
356
- catch (error) {
357
- console.error('❌ Migration failed:', error instanceof Error ? error.message : error);
358
- process.exit(1);
359
- }
360
- });
361
- // tasks:convert コマンド
362
- program
363
- .command('tasks:convert')
364
- .description('Convert AI-DLC format tasks.md to Michi workflow format')
365
- .argument('<feature>', 'Feature name')
366
- .option('--dry-run', 'Preview conversion without modifying files')
367
- .option('--backup', 'Create backup of original file')
368
- .option('--lang <code>', 'Output language (ja/en)', 'ja')
369
- .action(async (feature, options) => {
370
- try {
371
- const kiroDir = '.kiro';
372
- const tasksPath = join(kiroDir, 'specs', feature, 'tasks.md');
373
- if (!existsSync(tasksPath)) {
374
- console.error(`❌ tasks.md not found: ${tasksPath}`);
375
- process.exit(1);
376
- }
377
- // AI-DLC形式かチェック
378
- const content = readFileSync(tasksPath, 'utf-8');
379
- if (!isAIDLCFormat(content)) {
380
- console.log('ℹ️ File is not in AI-DLC format (may already be in Michi format)');
381
- console.log(' No conversion needed.');
382
- process.exit(0);
383
- }
384
- console.log('🔄 Converting AI-DLC format to Michi workflow format...');
385
- console.log(` Input: ${tasksPath}`);
386
- const result = convertTasksFile(tasksPath, undefined, {
387
- dryRun: options.dryRun,
388
- backup: options.backup,
389
- language: (options.lang || 'ja'),
390
- projectName: feature,
391
- });
392
- if (!result.success) {
393
- console.error('❌ Conversion failed:');
394
- result.warnings.forEach((w) => console.error(` ${w}`));
395
- process.exit(1);
396
- }
397
- console.log('');
398
- console.log('📊 Conversion Statistics:');
399
- console.log(` Original categories: ${result.stats.originalCategories}`);
400
- console.log(` Original tasks: ${result.stats.originalTasks}`);
401
- console.log(` Converted phases: ${result.stats.convertedPhases}`);
402
- console.log(` Converted stories: ${result.stats.convertedStories}`);
403
- if (result.backupPath) {
404
- console.log(` Backup created: ${result.backupPath}`);
405
- }
406
- if (result.warnings.length > 0) {
407
- console.log('');
408
- console.log('⚠️ Warnings:');
409
- result.warnings.forEach((w) => console.log(` ${w}`));
410
- }
411
- if (options.dryRun) {
412
- console.log('');
413
- console.log('📝 Preview (first 50 lines):');
414
- console.log('---');
415
- const previewLines = result.convertedContent
416
- .split('\n')
417
- .slice(0, 50);
418
- console.log(previewLines.join('\n'));
419
- if (result.convertedContent.split('\n').length > 50) {
420
- console.log('... (truncated)');
421
- }
422
- console.log('---');
423
- }
424
- else {
425
- console.log('');
426
- console.log('✅ Conversion completed!');
427
- console.log(` Output: ${tasksPath}`);
428
- }
429
- }
430
- catch (error) {
431
- console.error('❌ Conversion failed:', error instanceof Error ? error.message : error);
432
- process.exit(1);
433
- }
434
- });
435
- // jira:transition コマンド
436
- program
437
- .command('jira:transition')
438
- .description('Change JIRA ticket status')
439
- .argument('<issueKey>', 'JIRA issue key (e.g., PROJ-123)')
440
- .argument('<status>', 'Target status name (e.g., "In Progress", "Ready for Review")')
441
- .action(async (issueKey, status) => {
442
- try {
443
- const url = process.env.ATLASSIAN_URL;
444
- const email = process.env.ATLASSIAN_EMAIL;
445
- const apiToken = process.env.ATLASSIAN_API_TOKEN;
446
- if (!url || !email || !apiToken) {
447
- console.error('❌ Missing JIRA credentials in .env');
448
- console.error(' Required: ATLASSIAN_URL, ATLASSIAN_EMAIL, ATLASSIAN_API_TOKEN');
449
- process.exit(1);
450
- }
451
- const client = new JIRAClient({ url, email, apiToken });
452
- await client.transitionIssue(issueKey, status);
453
- }
454
- catch (error) {
455
- console.error('❌ JIRA transition failed:', error instanceof Error ? error.message : error);
456
- process.exit(1);
457
- }
458
- });
459
- // jira:comment コマンド
460
- program
461
- .command('jira:comment')
462
- .description('Add comment to JIRA ticket')
463
- .argument('<issueKey>', 'JIRA issue key (e.g., PROJ-123)')
464
- .argument('<comment>', 'Comment text')
465
- .action(async (issueKey, comment) => {
466
- try {
467
- const url = process.env.ATLASSIAN_URL;
468
- const email = process.env.ATLASSIAN_EMAIL;
469
- const apiToken = process.env.ATLASSIAN_API_TOKEN;
470
- if (!url || !email || !apiToken) {
471
- console.error('❌ Missing JIRA credentials in .env');
472
- console.error(' Required: ATLASSIAN_URL, ATLASSIAN_EMAIL, ATLASSIAN_API_TOKEN');
473
- process.exit(1);
474
- }
475
- const client = new JIRAClient({ url, email, apiToken });
476
- await client.addComment(issueKey, comment);
477
- }
478
- catch (error) {
479
- console.error('❌ JIRA comment failed:', error instanceof Error ? error.message : error);
480
- process.exit(1);
481
- }
482
- });
483
- // multi-repo:init コマンド
484
- program
485
- .command('multi-repo:init')
486
- .description('Initialize new Multi-Repo project')
487
- .argument('<project-name>', 'Project name')
488
- .requiredOption('--jira <KEY>', 'JIRA project key (2-10 uppercase letters)')
489
- .requiredOption('--confluence-space <SPACE>', 'Confluence space key')
490
- .action(async (projectName, options) => {
491
- try {
492
- const { multiRepoInit } = await import('./commands/multi-repo-init.js');
493
- const result = await multiRepoInit(projectName, options.jira, options.confluenceSpace);
494
- console.log('');
495
- console.log('✅ Multi-Repoプロジェクトの初期化が完了しました');
496
- console.log('');
497
- console.log(` プロジェクト名: ${result.projectName}`);
498
- console.log(` JIRAキー: ${result.jiraKey}`);
499
- console.log(` Confluenceスペース: ${result.confluenceSpace}`);
500
- console.log(` 作成されたディレクトリ数: ${result.createdDirectories.length}`);
501
- console.log(` 作成されたファイル数: ${result.createdFiles.length}`);
502
- console.log('');
503
- console.log(`📁 プロジェクトディレクトリ: docs/michi/${result.projectName}/`);
504
- console.log('');
505
- }
506
- catch (error) {
507
- console.error('❌ Multi-Repoプロジェクトの初期化に失敗しました:', error instanceof Error ? error.message : error);
508
- process.exit(1);
509
- }
510
- });
511
- // multi-repo:add-repo コマンド
512
- program
513
- .command('multi-repo:add-repo')
514
- .description('Add repository to Multi-Repo project')
515
- .argument('<project-name>', 'Project name')
516
- .requiredOption('--name <repo-name>', 'Repository name')
517
- .requiredOption('--url <URL>', 'Repository URL (GitHub HTTPS format)')
518
- .option('--branch <branch>', 'Branch name (default: main)', 'main')
519
- .action(async (projectName, options) => {
520
- try {
521
- const { multiRepoAddRepo } = await import('./commands/multi-repo-add-repo.js');
522
- const result = await multiRepoAddRepo(projectName, options.name, options.url, options.branch);
523
- console.log('');
524
- console.log('✅ リポジトリの追加が完了しました');
525
- console.log('');
526
- console.log(` プロジェクト名: ${result.projectName}`);
527
- console.log(` リポジトリ名: ${result.repositoryName}`);
528
- console.log(` URL: ${result.url}`);
529
- console.log(` ブランチ: ${result.branch}`);
530
- console.log('');
531
- }
532
- catch (error) {
533
- console.error('❌ リポジトリの追加に失敗しました:', error instanceof Error ? error.message : error);
534
- process.exit(1);
535
- }
536
- });
537
- // multi-repo:list コマンド
538
- program
539
- .command('multi-repo:list')
540
- .description('List Multi-Repo projects')
541
- .action(async () => {
542
- try {
543
- const { multiRepoList } = await import('./commands/multi-repo-list.js');
544
- const result = await multiRepoList();
545
- console.log('');
546
- if (result.totalCount === 0) {
547
- console.log('Multi-Repoプロジェクトは登録されていません');
548
- console.log('');
549
- return;
550
- }
551
- console.log(`Multi-Repoプロジェクト一覧 (${result.totalCount}件)`);
552
- console.log('');
553
- // 表形式で表示
554
- result.projects.forEach((project, index) => {
555
- console.log(`${index + 1}. ${project.name}`);
556
- console.log(` JIRA Key: ${project.jiraKey}`);
557
- console.log(` リポジトリ数: ${project.repositoryCount}`);
558
- console.log(` 作成日時: ${project.createdAt}`);
559
- console.log('');
560
- });
561
- }
562
- catch (error) {
563
- console.error('❌ プロジェクト一覧の取得に失敗しました:', error instanceof Error ? error.message : error);
564
- process.exit(1);
565
- }
566
- });
567
- // multi-repo:ci-status コマンド
568
- program
569
- .command('multi-repo:ci-status')
570
- .description('Aggregate CI results for Multi-Repo project')
571
- .argument('<project-name>', 'Project name')
572
- .option('--diff', 'Show diff with previous results')
573
- .action(async (projectName, options) => {
574
- try {
575
- const { multiRepoCIStatus } = await import('./commands/multi-repo-ci-status.js');
576
- const result = await multiRepoCIStatus(projectName, {
577
- diff: options.diff,
578
- });
579
- console.log('');
580
- console.log('✅ CI結果の集約が完了しました');
581
- console.log('');
582
- console.log(` プロジェクト名: ${result.projectName}`);
583
- console.log(` リポジトリ数: ${result.summary.total}`);
584
- console.log(` 成功: ${result.summary.success}`);
585
- console.log(` 失敗: ${result.summary.failure}`);
586
- console.log(` 実行中: ${result.summary.running}`);
587
- console.log(` 不明: ${result.summary.unknown}`);
588
- console.log('');
589
- console.log(`📄 出力ファイル: ${result.outputPath}`);
590
- console.log('');
591
- if (result.diff) {
592
- console.log('📊 差分情報:');
593
- if (result.diff.newFailures.length > 0) {
594
- console.log(` 🆕 新規失敗: ${result.diff.newFailures.join(', ')}`);
595
- }
596
- if (result.diff.newSuccesses.length > 0) {
597
- console.log(` ✨ 新規成功: ${result.diff.newSuccesses.join(', ')}`);
598
- }
599
- if (result.diff.unchanged.length > 0) {
600
- console.log(` ➖ 変化なし: ${result.diff.unchanged.length}件`);
601
- }
602
- console.log('');
603
- }
604
- }
605
- catch (error) {
606
- console.error('❌ CI結果の集約に失敗しました:', error instanceof Error ? error.message : error);
607
- process.exit(1);
608
- }
609
- });
610
- // multi-repo:confluence-sync コマンド
611
- program
612
- .command('multi-repo:confluence-sync')
613
- .description('Sync Multi-Repo project documents to Confluence')
614
- .argument('<project-name>', 'Project name')
615
- .option('--doc-type <type>', 'Document type to sync (requirements, architecture, sequence, strategy, ci-status, release-notes)')
616
- .action(async (projectName, options) => {
617
- try {
618
- const { multiRepoConfluenceSync } = await import('./commands/multi-repo-confluence-sync.js');
619
- const result = await multiRepoConfluenceSync(projectName, {
620
- docType: options.docType,
621
- });
622
- console.log('');
623
- console.log('✅ Confluence同期が完了しました');
624
- console.log('');
625
- console.log(` プロジェクト名: ${result.projectName}`);
626
- console.log(` 成功: ${result.totalSuccess}件`);
627
- console.log(` 失敗: ${result.totalFailed}件`);
628
- console.log('');
629
- result.syncedDocs.forEach((doc) => {
630
- if (doc.success) {
631
- console.log(`✅ ${doc.docType}: ${doc.pageUrl}`);
632
- }
633
- else {
634
- console.log(`❌ ${doc.docType}: ${doc.error}`);
635
- }
636
- });
637
- console.log('');
638
- }
639
- catch (error) {
640
- console.error('❌ Confluence同期に失敗しました:', error instanceof Error ? error.message : error);
641
- process.exit(1);
642
- }
643
- });
644
- // multi-repo:test コマンド
645
- program
646
- .command('multi-repo:test')
647
- .description('Run tests for Multi-Repo project')
648
- .argument('<project-name>', 'Project name')
649
- .requiredOption('--type <type>', 'Test type (e2e, integration, performance)')
650
- .option('--skip-health-check', 'Skip health check before test execution')
651
- .action(async (projectName, options) => {
652
- try {
653
- const { multiRepoTest } = await import('./commands/multi-repo-test.js');
654
- const result = await multiRepoTest(projectName, options.type, {
655
- skipHealthCheck: options.skipHealthCheck,
656
- });
657
- console.log('');
658
- if (result.success) {
659
- console.log('✅ テスト実行が完了しました');
660
- }
661
- else {
662
- console.log('❌ テスト実行が失敗しました');
663
- }
664
- console.log('');
665
- console.log(` プロジェクト名: ${result.projectName}`);
666
- console.log(` テストタイプ: ${result.testType}`);
667
- console.log(` 終了コード: ${result.executionResult.exitCode}`);
668
- console.log(` 実行時間: ${result.executionResult.executionTime.toFixed(2)}秒`);
669
- console.log('');
670
- console.log(`📄 出力ファイル: ${result.executionResult.outputPath}`);
671
- console.log('');
672
- if (result.healthCheckWarning) {
673
- console.log('⚠️ ヘルスチェック警告:');
674
- console.log(` ${result.healthCheckWarning}`);
675
- console.log('');
676
- }
677
- process.exit(result.success ? 0 : 1);
678
- }
679
- catch (error) {
680
- console.error('❌ テスト実行に失敗しました:', error instanceof Error ? error.message : error);
681
- process.exit(1);
682
- }
683
- });
684
- // multi-repo:sync コマンド
685
- program
686
- .command('multi-repo:sync')
687
- .description('Sync Multi-Repo project documentation to Confluence')
688
- .argument('<project-name>', 'Project name')
689
- .option('--doc-type <type>', 'Document type (requirements, architecture, sequence, strategy, ci-status, release-notes)')
690
- .action(async (projectName, options) => {
691
- try {
692
- const { multiRepoConfluenceSync } = await import('./commands/multi-repo-confluence-sync.js');
693
- const result = await multiRepoConfluenceSync(projectName, {
694
- docType: options.docType,
695
- });
696
- console.log('');
697
- console.log('✅ Confluence同期が完了しました');
698
- console.log('');
699
- console.log(` プロジェクト名: ${result.projectName}`);
700
- console.log(` 成功: ${result.totalSuccess}`);
701
- console.log(` 失敗: ${result.totalFailed}`);
702
- console.log('');
703
- if (result.totalSuccess > 0) {
704
- console.log('📄 同期されたドキュメント:');
705
- result.syncedDocs
706
- .filter((d) => d.success)
707
- .forEach((doc) => {
708
- console.log(` ✅ ${doc.docType}: ${doc.pageUrl}`);
709
- });
710
- console.log('');
711
- }
712
- if (result.totalFailed > 0) {
713
- console.log('❌ 同期に失敗したドキュメント:');
714
- result.syncedDocs
715
- .filter((d) => !d.success)
716
- .forEach((doc) => {
717
- console.log(` ❌ ${doc.docType}: ${doc.error}`);
718
- });
719
- console.log('');
720
- }
721
- process.exit(result.totalFailed > 0 ? 1 : 0);
722
- }
723
- catch (error) {
724
- console.error('❌ Confluence同期に失敗しました:', error instanceof Error ? error.message : error);
725
- process.exit(1);
726
- }
727
- });
728
- return program;
729
- }
730
- // CLI実行(直接実行時)
731
- // import.meta.urlとprocess.argv[1]を正規化して比較(シンボリックリンク対応)
732
- if (process.argv[1]) {
733
- try {
734
- const currentFile = fileURLToPath(import.meta.url);
735
- const executedFile = realpathSync(process.argv[1]);
736
- if (currentFile === executedFile) {
737
- const program = createCLI();
738
- program.parse();
739
- }
740
- }
741
- catch {
742
- // realpathSyncが失敗した場合は、直接比較を試みる
743
- if (fileURLToPath(import.meta.url) === process.argv[1]) {
744
- const program = createCLI();
745
- program.parse();
746
- }
747
- }
748
- }
9
+ export { createCLI } from './presentation/cli.js';
749
10
  //# sourceMappingURL=cli.js.map