@sk8metal/michi-cli 0.0.8 → 0.1.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 (433) hide show
  1. package/CHANGELOG.md +60 -0
  2. package/README.md +420 -49
  3. package/dist/scripts/__tests__/create-project.test.js +24 -28
  4. package/dist/scripts/__tests__/create-project.test.js.map +1 -1
  5. package/dist/scripts/__tests__/jira-transitions.test.d.ts +5 -0
  6. package/dist/scripts/__tests__/jira-transitions.test.d.ts.map +1 -0
  7. package/dist/scripts/__tests__/jira-transitions.test.js +172 -0
  8. package/dist/scripts/__tests__/jira-transitions.test.js.map +1 -0
  9. package/dist/scripts/__tests__/multi-project-estimate.test.js +14 -15
  10. package/dist/scripts/__tests__/multi-project-estimate.test.js.map +1 -1
  11. package/dist/scripts/__tests__/setup-existing-project.test.js +146 -5
  12. package/dist/scripts/__tests__/setup-existing-project.test.js.map +1 -1
  13. package/dist/scripts/__tests__/setup-interactive.test.js +23 -17
  14. package/dist/scripts/__tests__/setup-interactive.test.js.map +1 -1
  15. package/dist/scripts/__tests__/spec-impl-workflow.test.d.ts +5 -0
  16. package/dist/scripts/__tests__/spec-impl-workflow.test.d.ts.map +1 -0
  17. package/dist/scripts/__tests__/spec-impl-workflow.test.js +321 -0
  18. package/dist/scripts/__tests__/spec-impl-workflow.test.js.map +1 -0
  19. package/dist/scripts/__tests__/spec-loader.test.d.ts +5 -0
  20. package/dist/scripts/__tests__/spec-loader.test.d.ts.map +1 -0
  21. package/dist/scripts/__tests__/spec-loader.test.js +153 -0
  22. package/dist/scripts/__tests__/spec-loader.test.js.map +1 -0
  23. package/dist/scripts/__tests__/validate-phase.test.js +26 -22
  24. package/dist/scripts/__tests__/validate-phase.test.js.map +1 -1
  25. package/dist/scripts/config/config-schema.d.ts +17 -0
  26. package/dist/scripts/config/config-schema.d.ts.map +1 -1
  27. package/dist/scripts/config/config-schema.js +55 -26
  28. package/dist/scripts/config/config-schema.js.map +1 -1
  29. package/dist/scripts/config-interactive.d.ts.map +1 -1
  30. package/dist/scripts/config-interactive.js +53 -38
  31. package/dist/scripts/config-interactive.js.map +1 -1
  32. package/dist/scripts/confluence-sync.d.ts.map +1 -1
  33. package/dist/scripts/confluence-sync.js +0 -11
  34. package/dist/scripts/confluence-sync.js.map +1 -1
  35. package/dist/scripts/constants/__tests__/environments.test.d.ts +2 -0
  36. package/dist/scripts/constants/__tests__/environments.test.d.ts.map +1 -0
  37. package/dist/scripts/constants/__tests__/environments.test.js +125 -0
  38. package/dist/scripts/constants/__tests__/environments.test.js.map +1 -0
  39. package/dist/scripts/constants/__tests__/languages.test.d.ts +2 -0
  40. package/dist/scripts/constants/__tests__/languages.test.d.ts.map +1 -0
  41. package/dist/scripts/constants/__tests__/languages.test.js +82 -0
  42. package/dist/scripts/constants/__tests__/languages.test.js.map +1 -0
  43. package/dist/scripts/constants/environments.d.ts +33 -0
  44. package/dist/scripts/constants/environments.d.ts.map +1 -0
  45. package/dist/scripts/constants/environments.js +64 -0
  46. package/dist/scripts/constants/environments.js.map +1 -0
  47. package/dist/scripts/constants/languages.d.ts +23 -0
  48. package/dist/scripts/constants/languages.d.ts.map +1 -0
  49. package/dist/scripts/constants/languages.js +53 -0
  50. package/dist/scripts/constants/languages.js.map +1 -0
  51. package/dist/scripts/constants/test-commands.d.ts +36 -0
  52. package/dist/scripts/constants/test-commands.d.ts.map +1 -0
  53. package/dist/scripts/constants/test-commands.js +70 -0
  54. package/dist/scripts/constants/test-commands.js.map +1 -0
  55. package/dist/scripts/create-project.d.ts +4 -0
  56. package/dist/scripts/create-project.d.ts.map +1 -1
  57. package/dist/scripts/create-project.js +51 -22
  58. package/dist/scripts/create-project.js.map +1 -1
  59. package/dist/scripts/jira-sync.d.ts +89 -3
  60. package/dist/scripts/jira-sync.d.ts.map +1 -1
  61. package/dist/scripts/jira-sync.js +366 -96
  62. package/dist/scripts/jira-sync.js.map +1 -1
  63. package/dist/scripts/markdown-to-confluence.js +1 -1
  64. package/dist/scripts/markdown-to-confluence.js.map +1 -1
  65. package/dist/scripts/phase-runner.d.ts +1 -1
  66. package/dist/scripts/phase-runner.d.ts.map +1 -1
  67. package/dist/scripts/phase-runner.js +809 -13
  68. package/dist/scripts/phase-runner.js.map +1 -1
  69. package/dist/scripts/pr-automation.d.ts.map +1 -1
  70. package/dist/scripts/pr-automation.js.map +1 -1
  71. package/dist/scripts/pre-flight-check.js +1 -1
  72. package/dist/scripts/pre-flight-check.js.map +1 -1
  73. package/dist/scripts/setup-existing-project.d.ts +3 -1
  74. package/dist/scripts/setup-existing-project.d.ts.map +1 -1
  75. package/dist/scripts/setup-existing-project.js +165 -78
  76. package/dist/scripts/setup-existing-project.js.map +1 -1
  77. package/dist/scripts/setup-interactive.js +3 -3
  78. package/dist/scripts/setup-interactive.js.map +1 -1
  79. package/dist/scripts/spec-impl-workflow.d.ts +94 -0
  80. package/dist/scripts/spec-impl-workflow.d.ts.map +1 -0
  81. package/dist/scripts/spec-impl-workflow.js +354 -0
  82. package/dist/scripts/spec-impl-workflow.js.map +1 -0
  83. package/dist/scripts/template/__tests__/renderer.test.d.ts +2 -0
  84. package/dist/scripts/template/__tests__/renderer.test.d.ts.map +1 -0
  85. package/dist/scripts/template/__tests__/renderer.test.js +165 -0
  86. package/dist/scripts/template/__tests__/renderer.test.js.map +1 -0
  87. package/dist/scripts/template/renderer.d.ts +70 -0
  88. package/dist/scripts/template/renderer.d.ts.map +1 -0
  89. package/dist/scripts/template/renderer.js +99 -0
  90. package/dist/scripts/template/renderer.js.map +1 -0
  91. package/dist/scripts/test-execution-generator.d.ts +52 -0
  92. package/dist/scripts/test-execution-generator.d.ts.map +1 -0
  93. package/dist/scripts/test-execution-generator.js +576 -0
  94. package/dist/scripts/test-execution-generator.js.map +1 -0
  95. package/dist/scripts/test-interactive.d.ts +10 -0
  96. package/dist/scripts/test-interactive.d.ts.map +1 -0
  97. package/dist/scripts/test-interactive.js +627 -0
  98. package/dist/scripts/test-interactive.js.map +1 -0
  99. package/dist/scripts/test-new-features.d.ts +5 -0
  100. package/dist/scripts/test-new-features.d.ts.map +1 -0
  101. package/dist/scripts/test-new-features.js +145 -0
  102. package/dist/scripts/test-new-features.js.map +1 -0
  103. package/dist/scripts/test-spec-generator.d.ts +29 -0
  104. package/dist/scripts/test-spec-generator.d.ts.map +1 -0
  105. package/dist/scripts/test-spec-generator.js +494 -0
  106. package/dist/scripts/test-spec-generator.js.map +1 -0
  107. package/dist/scripts/test-workflow-stages.d.ts +6 -0
  108. package/dist/scripts/test-workflow-stages.d.ts.map +1 -0
  109. package/dist/scripts/test-workflow-stages.js +43 -0
  110. package/dist/scripts/test-workflow-stages.js.map +1 -0
  111. package/dist/scripts/utils/__tests__/aidlc-parser.test.d.ts +5 -0
  112. package/dist/scripts/utils/__tests__/aidlc-parser.test.d.ts.map +1 -0
  113. package/dist/scripts/utils/__tests__/aidlc-parser.test.js +315 -0
  114. package/dist/scripts/utils/__tests__/aidlc-parser.test.js.map +1 -0
  115. package/dist/scripts/utils/__tests__/business-days.test.d.ts +5 -0
  116. package/dist/scripts/utils/__tests__/business-days.test.d.ts.map +1 -0
  117. package/dist/scripts/utils/__tests__/business-days.test.js +171 -0
  118. package/dist/scripts/utils/__tests__/business-days.test.js.map +1 -0
  119. package/dist/scripts/utils/__tests__/config-loader.test.js +1 -1
  120. package/dist/scripts/utils/__tests__/config-loader.test.js.map +1 -1
  121. package/dist/scripts/utils/__tests__/config-validator.test.js +164 -35
  122. package/dist/scripts/utils/__tests__/config-validator.test.js.map +1 -1
  123. package/dist/scripts/utils/__tests__/env-config.test.d.ts +5 -0
  124. package/dist/scripts/utils/__tests__/env-config.test.d.ts.map +1 -0
  125. package/dist/scripts/utils/__tests__/env-config.test.js +218 -0
  126. package/dist/scripts/utils/__tests__/env-config.test.js.map +1 -0
  127. package/dist/scripts/utils/__tests__/jira-issue-type-fetcher.test.d.ts +5 -0
  128. package/dist/scripts/utils/__tests__/jira-issue-type-fetcher.test.d.ts.map +1 -0
  129. package/dist/scripts/utils/__tests__/jira-issue-type-fetcher.test.js +202 -0
  130. package/dist/scripts/utils/__tests__/jira-issue-type-fetcher.test.js.map +1 -0
  131. package/dist/scripts/utils/__tests__/tasks-converter.test.d.ts +5 -0
  132. package/dist/scripts/utils/__tests__/tasks-converter.test.d.ts.map +1 -0
  133. package/dist/scripts/utils/__tests__/tasks-converter.test.js +500 -0
  134. package/dist/scripts/utils/__tests__/tasks-converter.test.js.map +1 -0
  135. package/dist/scripts/utils/__tests__/tasks-format-validator.test.d.ts +5 -0
  136. package/dist/scripts/utils/__tests__/tasks-format-validator.test.d.ts.map +1 -0
  137. package/dist/scripts/utils/__tests__/tasks-format-validator.test.js +314 -0
  138. package/dist/scripts/utils/__tests__/tasks-format-validator.test.js.map +1 -0
  139. package/dist/scripts/utils/__tests__/test-runner.test.d.ts +5 -0
  140. package/dist/scripts/utils/__tests__/test-runner.test.d.ts.map +1 -0
  141. package/dist/scripts/utils/__tests__/test-runner.test.js +64 -0
  142. package/dist/scripts/utils/__tests__/test-runner.test.js.map +1 -0
  143. package/dist/scripts/utils/aidlc-parser.d.ts +86 -0
  144. package/dist/scripts/utils/aidlc-parser.d.ts.map +1 -0
  145. package/dist/scripts/utils/aidlc-parser.js +208 -0
  146. package/dist/scripts/utils/aidlc-parser.js.map +1 -0
  147. package/dist/scripts/utils/business-days.d.ts +52 -0
  148. package/dist/scripts/utils/business-days.d.ts.map +1 -0
  149. package/dist/scripts/utils/business-days.js +98 -0
  150. package/dist/scripts/utils/business-days.js.map +1 -0
  151. package/dist/scripts/utils/ci-generator.d.ts +14 -0
  152. package/dist/scripts/utils/ci-generator.d.ts.map +1 -0
  153. package/dist/scripts/utils/ci-generator.js +61 -0
  154. package/dist/scripts/utils/ci-generator.js.map +1 -0
  155. package/dist/scripts/utils/config-loader.js +2 -2
  156. package/dist/scripts/utils/config-loader.js.map +1 -1
  157. package/dist/scripts/utils/config-validator.d.ts +7 -1
  158. package/dist/scripts/utils/config-validator.d.ts.map +1 -1
  159. package/dist/scripts/utils/config-validator.js +136 -23
  160. package/dist/scripts/utils/config-validator.js.map +1 -1
  161. package/dist/scripts/utils/confluence-approval.d.ts +46 -0
  162. package/dist/scripts/utils/confluence-approval.d.ts.map +1 -0
  163. package/dist/scripts/utils/confluence-approval.js +118 -0
  164. package/dist/scripts/utils/confluence-approval.js.map +1 -0
  165. package/dist/scripts/utils/confluence-hierarchy.d.ts.map +1 -1
  166. package/dist/scripts/utils/confluence-hierarchy.js +1 -1
  167. package/dist/scripts/utils/confluence-hierarchy.js.map +1 -1
  168. package/dist/scripts/utils/docker-generator.d.ts +9 -0
  169. package/dist/scripts/utils/docker-generator.d.ts.map +1 -0
  170. package/dist/scripts/utils/docker-generator.js +132 -0
  171. package/dist/scripts/utils/docker-generator.js.map +1 -0
  172. package/dist/scripts/utils/docker-requirement-detector.d.ts +15 -0
  173. package/dist/scripts/utils/docker-requirement-detector.d.ts.map +1 -0
  174. package/dist/scripts/utils/docker-requirement-detector.js +124 -0
  175. package/dist/scripts/utils/docker-requirement-detector.js.map +1 -0
  176. package/dist/scripts/utils/env-config.d.ts +54 -0
  177. package/dist/scripts/utils/env-config.d.ts.map +1 -0
  178. package/dist/scripts/utils/env-config.js +414 -0
  179. package/dist/scripts/utils/env-config.js.map +1 -0
  180. package/dist/scripts/utils/jira-issue-type-fetcher.d.ts +70 -0
  181. package/dist/scripts/utils/jira-issue-type-fetcher.d.ts.map +1 -0
  182. package/dist/scripts/utils/jira-issue-type-fetcher.js +147 -0
  183. package/dist/scripts/utils/jira-issue-type-fetcher.js.map +1 -0
  184. package/dist/scripts/utils/language-detector.d.ts +14 -0
  185. package/dist/scripts/utils/language-detector.d.ts.map +1 -0
  186. package/dist/scripts/utils/language-detector.js +119 -0
  187. package/dist/scripts/utils/language-detector.js.map +1 -0
  188. package/dist/scripts/utils/markdown-parser.d.ts +55 -0
  189. package/dist/scripts/utils/markdown-parser.d.ts.map +1 -0
  190. package/dist/scripts/utils/markdown-parser.js +289 -0
  191. package/dist/scripts/utils/markdown-parser.js.map +1 -0
  192. package/dist/scripts/utils/project-detector.d.ts +17 -0
  193. package/dist/scripts/utils/project-detector.d.ts.map +1 -0
  194. package/dist/scripts/utils/project-detector.js +166 -0
  195. package/dist/scripts/utils/project-detector.js.map +1 -0
  196. package/dist/scripts/utils/project-finder.js +2 -2
  197. package/dist/scripts/utils/project-finder.js.map +1 -1
  198. package/dist/scripts/utils/release-notes-generator.d.ts +56 -0
  199. package/dist/scripts/utils/release-notes-generator.d.ts.map +1 -0
  200. package/dist/scripts/utils/release-notes-generator.js +162 -0
  201. package/dist/scripts/utils/release-notes-generator.js.map +1 -0
  202. package/dist/scripts/utils/spec-loader.d.ts +79 -0
  203. package/dist/scripts/utils/spec-loader.d.ts.map +1 -0
  204. package/dist/scripts/utils/spec-loader.js +80 -0
  205. package/dist/scripts/utils/spec-loader.js.map +1 -0
  206. package/dist/scripts/utils/spec-updater.d.ts +7 -0
  207. package/dist/scripts/utils/spec-updater.d.ts.map +1 -1
  208. package/dist/scripts/utils/spec-updater.js.map +1 -1
  209. package/dist/scripts/utils/tasks-converter.d.ts +57 -0
  210. package/dist/scripts/utils/tasks-converter.d.ts.map +1 -0
  211. package/dist/scripts/utils/tasks-converter.js +322 -0
  212. package/dist/scripts/utils/tasks-converter.js.map +1 -0
  213. package/dist/scripts/utils/tasks-format-validator.d.ts +36 -0
  214. package/dist/scripts/utils/tasks-format-validator.d.ts.map +1 -0
  215. package/dist/scripts/utils/tasks-format-validator.js +158 -0
  216. package/dist/scripts/utils/tasks-format-validator.js.map +1 -0
  217. package/dist/scripts/utils/template-applier.d.ts +37 -0
  218. package/dist/scripts/utils/template-applier.d.ts.map +1 -0
  219. package/dist/scripts/utils/template-applier.js +129 -0
  220. package/dist/scripts/utils/template-applier.js.map +1 -0
  221. package/dist/scripts/utils/template-finder.d.ts +37 -0
  222. package/dist/scripts/utils/template-finder.d.ts.map +1 -0
  223. package/dist/scripts/utils/template-finder.js +63 -0
  224. package/dist/scripts/utils/template-finder.js.map +1 -0
  225. package/dist/scripts/utils/test-config-generator.d.ts +12 -0
  226. package/dist/scripts/utils/test-config-generator.d.ts.map +1 -0
  227. package/dist/scripts/utils/test-config-generator.js +185 -0
  228. package/dist/scripts/utils/test-config-generator.js.map +1 -0
  229. package/dist/scripts/utils/test-runner.d.ts +31 -0
  230. package/dist/scripts/utils/test-runner.d.ts.map +1 -0
  231. package/dist/scripts/utils/test-runner.js +103 -0
  232. package/dist/scripts/utils/test-runner.js.map +1 -0
  233. package/dist/scripts/validate-phase.d.ts +1 -1
  234. package/dist/scripts/validate-phase.d.ts.map +1 -1
  235. package/dist/scripts/validate-phase.js +153 -5
  236. package/dist/scripts/validate-phase.js.map +1 -1
  237. package/dist/scripts/workflow-orchestrator.d.ts +8 -0
  238. package/dist/scripts/workflow-orchestrator.d.ts.map +1 -1
  239. package/dist/scripts/workflow-orchestrator.js +108 -7
  240. package/dist/scripts/workflow-orchestrator.js.map +1 -1
  241. package/dist/src/__tests__/integration/internationalization.test.d.ts +8 -0
  242. package/dist/src/__tests__/integration/internationalization.test.d.ts.map +1 -0
  243. package/dist/src/__tests__/integration/internationalization.test.js +333 -0
  244. package/dist/src/__tests__/integration/internationalization.test.js.map +1 -0
  245. package/dist/src/__tests__/integration/setup/claude-agent.test.d.ts +5 -0
  246. package/dist/src/__tests__/integration/setup/claude-agent.test.d.ts.map +1 -0
  247. package/dist/src/__tests__/integration/setup/claude-agent.test.js +122 -0
  248. package/dist/src/__tests__/integration/setup/claude-agent.test.js.map +1 -0
  249. package/dist/src/__tests__/integration/setup/claude.test.d.ts +5 -0
  250. package/dist/src/__tests__/integration/setup/claude.test.d.ts.map +1 -0
  251. package/dist/src/__tests__/integration/setup/claude.test.js +111 -0
  252. package/dist/src/__tests__/integration/setup/claude.test.js.map +1 -0
  253. package/dist/src/__tests__/integration/setup/cursor.test.d.ts +5 -0
  254. package/dist/src/__tests__/integration/setup/cursor.test.d.ts.map +1 -0
  255. package/dist/src/__tests__/integration/setup/cursor.test.js +166 -0
  256. package/dist/src/__tests__/integration/setup/cursor.test.js.map +1 -0
  257. package/dist/src/__tests__/integration/setup/helpers/fs-assertions.d.ts +32 -0
  258. package/dist/src/__tests__/integration/setup/helpers/fs-assertions.d.ts.map +1 -0
  259. package/dist/src/__tests__/integration/setup/helpers/fs-assertions.js +72 -0
  260. package/dist/src/__tests__/integration/setup/helpers/fs-assertions.js.map +1 -0
  261. package/dist/src/__tests__/integration/setup/helpers/test-project.d.ts +38 -0
  262. package/dist/src/__tests__/integration/setup/helpers/test-project.d.ts.map +1 -0
  263. package/dist/src/__tests__/integration/setup/helpers/test-project.js +83 -0
  264. package/dist/src/__tests__/integration/setup/helpers/test-project.js.map +1 -0
  265. package/dist/src/__tests__/integration/setup/validation.test.d.ts +5 -0
  266. package/dist/src/__tests__/integration/setup/validation.test.d.ts.map +1 -0
  267. package/dist/src/__tests__/integration/setup/validation.test.js +301 -0
  268. package/dist/src/__tests__/integration/setup/validation.test.js.map +1 -0
  269. package/dist/src/cli.d.ts.map +1 -1
  270. package/dist/src/cli.js +228 -18
  271. package/dist/src/cli.js.map +1 -1
  272. package/dist/src/commands/setup-existing.d.ts +25 -0
  273. package/dist/src/commands/setup-existing.d.ts.map +1 -0
  274. package/dist/src/commands/setup-existing.js +695 -0
  275. package/dist/src/commands/setup-existing.js.map +1 -0
  276. package/dist/vitest.config.d.ts.map +1 -1
  277. package/dist/vitest.config.js +4 -3
  278. package/dist/vitest.config.js.map +1 -1
  279. package/docs/README.md +3 -1
  280. package/docs/context.md +59 -0
  281. package/docs/design-issue-55.md +240 -0
  282. package/docs/design-issue-56.md +181 -0
  283. package/docs/michi-development/testing/manual-verification-flow.md +2242 -0
  284. package/docs/michi-development/testing/pre-publish-checklist.md +560 -0
  285. package/docs/plan.md +275 -0
  286. package/docs/user-guide/getting-started/github-token-setup.md +509 -0
  287. package/docs/{getting-started → user-guide/getting-started}/new-repository-setup.md +108 -28
  288. package/docs/{getting-started → user-guide/getting-started}/quick-start.md +73 -6
  289. package/docs/{getting-started → user-guide/getting-started}/setup.md +278 -3
  290. package/docs/{guides → user-guide/guides}/customization.md +3 -3
  291. package/docs/user-guide/guides/internationalization.md +540 -0
  292. package/docs/{guides → user-guide/guides}/multi-project.md +2 -2
  293. package/docs/{guides → user-guide/guides}/phase-automation.md +67 -9
  294. package/docs/user-guide/guides/workflow.md +582 -0
  295. package/docs/user-guide/hands-on/README.md +142 -0
  296. package/docs/user-guide/hands-on/claude-agent-setup.md +455 -0
  297. package/docs/user-guide/hands-on/claude-setup.md +398 -0
  298. package/docs/user-guide/hands-on/cursor-setup.md +352 -0
  299. package/docs/user-guide/hands-on/troubleshooting.md +964 -0
  300. package/docs/user-guide/hands-on/verification-checklist.md +438 -0
  301. package/docs/user-guide/hands-on/workflow-walkthrough.md +906 -0
  302. package/docs/user-guide/reference/config.md +564 -0
  303. package/docs/{reference → user-guide/reference}/quick-reference.md +75 -53
  304. package/docs/user-guide/release/ci-setup.md +541 -0
  305. package/docs/user-guide/release/release-flow.md +476 -0
  306. package/docs/user-guide/templates/test-specs/README.md +173 -0
  307. package/docs/user-guide/templates/test-specs/e2e-test-spec-template.md +547 -0
  308. package/docs/user-guide/templates/test-specs/integration-test-spec-template.md +435 -0
  309. package/docs/user-guide/templates/test-specs/performance-test-spec-template.md +454 -0
  310. package/docs/user-guide/templates/test-specs/security-test-spec-template.md +664 -0
  311. package/docs/user-guide/templates/test-specs/unit-test-spec-template.md +328 -0
  312. package/docs/user-guide/testing/integration-tests.md +312 -0
  313. package/docs/user-guide/testing/tdd-cycle.md +349 -0
  314. package/docs/user-guide/testing/test-execution-flow.md +396 -0
  315. package/docs/user-guide/testing/test-failure-handling.md +521 -0
  316. package/docs/user-guide/testing/test-planning-flow.md +181 -0
  317. package/docs/user-guide/testing-strategy.md +185 -0
  318. package/docs/verification-guide.md +518 -0
  319. package/package.json +13 -3
  320. package/scripts/__tests__/create-project.test.ts +67 -49
  321. package/scripts/__tests__/jira-transitions.test.ts +225 -0
  322. package/scripts/__tests__/multi-project-estimate.test.ts +36 -30
  323. package/scripts/__tests__/setup-existing-project.test.ts +171 -6
  324. package/scripts/__tests__/setup-interactive.test.ts +52 -46
  325. package/scripts/__tests__/spec-impl-workflow.test.ts +429 -0
  326. package/scripts/__tests__/spec-loader.test.ts +199 -0
  327. package/scripts/__tests__/validate-phase.test.ts +78 -54
  328. package/scripts/config/config-schema.ts +89 -50
  329. package/scripts/config-interactive.ts +191 -136
  330. package/scripts/confluence-sync.ts +0 -12
  331. package/scripts/constants/__tests__/environments.test.ts +146 -0
  332. package/scripts/constants/__tests__/languages.test.ts +100 -0
  333. package/scripts/constants/environments.ts +81 -0
  334. package/scripts/constants/languages.ts +70 -0
  335. package/scripts/constants/test-commands.ts +96 -0
  336. package/scripts/create-project.ts +52 -22
  337. package/scripts/jira-sync.ts +767 -232
  338. package/scripts/markdown-to-confluence.ts +1 -1
  339. package/scripts/phase-runner.ts +1056 -63
  340. package/scripts/pr-automation.ts +0 -1
  341. package/scripts/pre-flight-check.ts +1 -1
  342. package/scripts/pre-publish-check.sh +311 -0
  343. package/scripts/quick-verify.sh +115 -0
  344. package/scripts/setup-existing-project.ts +306 -143
  345. package/scripts/setup-interactive.ts +4 -4
  346. package/scripts/spec-impl-workflow.ts +505 -0
  347. package/scripts/template/__tests__/renderer.test.ts +206 -0
  348. package/scripts/template/renderer.ts +133 -0
  349. package/scripts/test-execution-generator.ts +695 -0
  350. package/scripts/test-interactive.ts +779 -0
  351. package/scripts/test-new-features.ts +168 -0
  352. package/scripts/test-npm-package.sh +345 -0
  353. package/scripts/test-spec-generator.ts +574 -0
  354. package/scripts/test-workflow-stages.ts +53 -0
  355. package/scripts/utils/__tests__/aidlc-parser.test.ts +349 -0
  356. package/scripts/utils/__tests__/business-days.test.ts +214 -0
  357. package/scripts/utils/__tests__/config-loader.test.ts +1 -1
  358. package/scripts/utils/__tests__/config-validator.test.ts +309 -88
  359. package/scripts/utils/__tests__/env-config.test.ts +259 -0
  360. package/scripts/utils/__tests__/jira-issue-type-fetcher.test.ts +272 -0
  361. package/scripts/utils/__tests__/tasks-converter.test.ts +582 -0
  362. package/scripts/utils/__tests__/tasks-format-validator.test.ts +338 -0
  363. package/scripts/utils/__tests__/test-runner.test.ts +77 -0
  364. package/scripts/utils/aidlc-parser.ts +289 -0
  365. package/scripts/utils/business-days.ts +115 -0
  366. package/scripts/utils/ci-generator.ts +84 -0
  367. package/scripts/utils/config-loader.ts +2 -2
  368. package/scripts/utils/config-validator.ts +304 -117
  369. package/scripts/utils/confluence-approval.ts +167 -0
  370. package/scripts/utils/confluence-hierarchy.ts +2 -4
  371. package/scripts/utils/docker-generator.ts +151 -0
  372. package/scripts/utils/docker-requirement-detector.ts +153 -0
  373. package/scripts/utils/env-config.ts +526 -0
  374. package/scripts/utils/jira-issue-type-fetcher.ts +199 -0
  375. package/scripts/utils/language-detector.ts +139 -0
  376. package/scripts/utils/markdown-parser.ts +376 -0
  377. package/scripts/utils/project-detector.ts +192 -0
  378. package/scripts/utils/project-finder.ts +2 -2
  379. package/scripts/utils/release-notes-generator.ts +210 -0
  380. package/scripts/utils/spec-loader.ts +125 -0
  381. package/scripts/utils/spec-updater.ts +8 -1
  382. package/scripts/utils/tasks-converter.ts +601 -0
  383. package/scripts/utils/tasks-format-validator.ts +193 -0
  384. package/scripts/utils/template-applier.ts +202 -0
  385. package/scripts/utils/template-finder.ts +75 -0
  386. package/scripts/utils/test-config-generator.ts +210 -0
  387. package/scripts/utils/test-runner.ts +133 -0
  388. package/scripts/validate-phase.ts +186 -9
  389. package/scripts/workflow-orchestrator.ts +130 -12
  390. package/templates/ci/github-actions/java.yml +54 -0
  391. package/templates/ci/github-actions/nodejs.yml +46 -0
  392. package/templates/ci/github-actions/php.yml +52 -0
  393. package/templates/ci/screwdriver/java.yaml +17 -0
  394. package/templates/ci/screwdriver/nodejs.yaml +17 -0
  395. package/templates/ci/screwdriver/php.yaml +20 -0
  396. package/templates/claude/commands/kiro/kiro-spec-impl.md +244 -0
  397. package/templates/claude/commands/kiro/kiro-spec-tasks.md +354 -0
  398. package/templates/claude/commands/michi/confluence-sync.md +38 -0
  399. package/templates/claude/commands/michi/project-switch.md +36 -0
  400. package/templates/claude/rules/atlassian-integration.md +35 -0
  401. package/templates/claude/rules/michi-core.md +54 -0
  402. package/templates/claude-agent/README.md +31 -0
  403. package/templates/claude-agent/agents/.gitkeep +0 -0
  404. package/templates/claude-agent/agents/designer.md +79 -0
  405. package/templates/claude-agent/agents/developer.md +68 -0
  406. package/templates/claude-agent/agents/manager-agent.md +59 -0
  407. package/templates/claude-agent/agents/tester.md +101 -0
  408. package/templates/claude-agent/commands/kiro/.gitkeep +0 -0
  409. package/templates/claude-agent/commands/kiro/kiro-spec-impl.md +244 -0
  410. package/templates/claude-agent/commands/kiro/kiro-spec-tasks.md +354 -0
  411. package/templates/cline/rules/atlassian-integration.md +36 -0
  412. package/templates/cline/rules/michi-core.md +56 -0
  413. package/templates/codex/AGENTS.override.md +277 -0
  414. package/templates/codex/prompts/confluence-sync.md +177 -0
  415. package/templates/codex/rules/README.md +210 -0
  416. package/templates/common/.kiro/project.json.template +21 -0
  417. package/templates/cursor/commands/kiro/kiro-spec-impl.md +244 -0
  418. package/templates/cursor/commands/kiro/kiro-spec-tasks.md +354 -0
  419. package/templates/cursor/commands/michi/confluence-sync.md +76 -0
  420. package/templates/cursor/commands/michi/project-switch.md +69 -0
  421. package/templates/cursor/rules/atlassian-mcp.mdc +188 -0
  422. package/templates/cursor/rules/github-ssot.mdc +151 -0
  423. package/templates/cursor/rules/multi-project.mdc +81 -0
  424. package/templates/gemini/commands/README.md +41 -0
  425. package/templates/gemini/rules/GEMINI.md +80 -0
  426. package/docs/guides/workflow.md +0 -342
  427. package/docs/reference/config.md +0 -545
  428. package/scripts/setup-env.sh +0 -52
  429. package/scripts/setup-existing.sh +0 -152
  430. /package/docs/{contributing → michi-development/contributing}/development.md +0 -0
  431. /package/docs/{contributing → michi-development/contributing}/release.md +0 -0
  432. /package/docs/{testing-strategy.md → michi-development/testing-strategy.md} +0 -0
  433. /package/docs/{reference → user-guide/reference}/tasks-template.md +0 -0
@@ -0,0 +1,414 @@
1
+ /**
2
+ * .env ファイルの対話的設定ユーティリティ
3
+ *
4
+ * 機能:
5
+ * - .envファイルのパース
6
+ * - 対話的な環境変数入力(既存値の表示、上書き確認)
7
+ * - sensitiveな値のマスク表示
8
+ * - .envファイルの生成
9
+ */
10
+ import { readFileSync, existsSync } from 'fs';
11
+ import * as readline from 'readline';
12
+ import { getProjectIssueTypes, hasJiraCredentials, findIssueTypeIdByName, filterStoryTypes, filterSubtaskTypes, } from './jira-issue-type-fetcher.js';
13
+ /**
14
+ * 環境変数の設定項目リスト
15
+ */
16
+ const ENV_CONFIG = [
17
+ {
18
+ key: 'ATLASSIAN_URL',
19
+ description: 'Atlassian URL (例: https://your-domain.atlassian.net)',
20
+ required: true,
21
+ },
22
+ {
23
+ key: 'ATLASSIAN_EMAIL',
24
+ description: 'Atlassianアカウントのメールアドレス',
25
+ required: true,
26
+ },
27
+ {
28
+ key: 'ATLASSIAN_API_TOKEN',
29
+ description: 'Atlassian API Token (https://id.atlassian.com/manage-profile/security/api-tokens で生成)',
30
+ required: true,
31
+ sensitive: true,
32
+ },
33
+ {
34
+ key: 'GITHUB_ORG',
35
+ description: 'GitHub Organization (オプション)',
36
+ required: false,
37
+ },
38
+ {
39
+ key: 'GITHUB_TOKEN',
40
+ description: 'GitHub Personal Access Token (オプション)',
41
+ required: false,
42
+ sensitive: true,
43
+ },
44
+ {
45
+ key: 'GITHUB_REPO',
46
+ description: 'GitHubリポジトリ (例: owner/repo)',
47
+ required: false,
48
+ },
49
+ {
50
+ key: 'CONFLUENCE_PRD_SPACE',
51
+ description: 'Confluence PRDスペースキー',
52
+ required: false,
53
+ defaultValue: 'PRD',
54
+ },
55
+ {
56
+ key: 'CONFLUENCE_QA_SPACE',
57
+ description: 'Confluence QAスペースキー',
58
+ required: false,
59
+ defaultValue: 'QA',
60
+ },
61
+ {
62
+ key: 'CONFLUENCE_RELEASE_SPACE',
63
+ description: 'Confluence Releaseスペースキー',
64
+ required: false,
65
+ defaultValue: 'RELEASE',
66
+ },
67
+ {
68
+ key: 'JIRA_PROJECT_KEYS',
69
+ description: 'JIRAプロジェクトキー(カンマ区切り)',
70
+ required: false,
71
+ },
72
+ {
73
+ key: 'JIRA_ISSUE_TYPE_STORY',
74
+ description: 'JIRA Story Issue Type ID (JIRAインスタンス固有)',
75
+ required: true,
76
+ defaultValue: '10036',
77
+ },
78
+ {
79
+ key: 'JIRA_ISSUE_TYPE_SUBTASK',
80
+ description: 'JIRA Subtask Issue Type ID (JIRAインスタンス固有)',
81
+ required: true,
82
+ defaultValue: '10037',
83
+ },
84
+ ];
85
+ /**
86
+ * .envファイルをパースしてMapで返す
87
+ *
88
+ * @param filePath .envファイルのパス
89
+ * @returns 環境変数のMap (key -> value)
90
+ */
91
+ export function parseEnvFile(filePath) {
92
+ const envMap = new Map();
93
+ if (!existsSync(filePath)) {
94
+ return envMap;
95
+ }
96
+ try {
97
+ const content = readFileSync(filePath, 'utf-8');
98
+ const lines = content.split('\n');
99
+ for (const line of lines) {
100
+ const trimmed = line.trim();
101
+ // コメント行または空行をスキップ
102
+ if (!trimmed || trimmed.startsWith('#')) {
103
+ continue;
104
+ }
105
+ // KEY=VALUE 形式をパース
106
+ const match = trimmed.match(/^([A-Z_][A-Z0-9_]*)=(.*)$/);
107
+ if (match) {
108
+ const key = match[1];
109
+ let value = match[2];
110
+ // クォートを除去
111
+ if ((value.startsWith('"') && value.endsWith('"')) ||
112
+ (value.startsWith('\'') && value.endsWith('\''))) {
113
+ value = value.slice(1, -1);
114
+ }
115
+ envMap.set(key, value);
116
+ }
117
+ }
118
+ }
119
+ catch (error) {
120
+ console.warn(`⚠️ Warning: Failed to parse ${filePath}:`, error instanceof Error ? error.message : error);
121
+ }
122
+ return envMap;
123
+ }
124
+ /**
125
+ * 値をマスク表示(sensitiveな値用)
126
+ *
127
+ * @param value 元の値
128
+ * @returns マスクされた値 (例: "***hidden***")
129
+ */
130
+ function maskValue(value) {
131
+ if (!value) {
132
+ return '';
133
+ }
134
+ return '***hidden***';
135
+ }
136
+ /**
137
+ * readlineインターフェースで質問して回答を取得
138
+ *
139
+ * @param rl readlineインターフェース
140
+ * @param question 質問文
141
+ * @returns ユーザーの入力
142
+ */
143
+ async function question(rl, question) {
144
+ return new Promise((resolve) => {
145
+ rl.question(question, (answer) => {
146
+ resolve(answer.trim());
147
+ });
148
+ });
149
+ }
150
+ /**
151
+ * JIRA Issue Type IDの対話的選択
152
+ *
153
+ * @param rl readlineインターフェース
154
+ * @param config 環境変数の設定項目
155
+ * @param projectKey JIRAプロジェクトキー
156
+ * @param existingValue 既存の値(あれば)
157
+ * @returns 選択されたIssue Type ID
158
+ */
159
+ async function promptJiraIssueTypeId(rl, config, projectKey, existingValue) {
160
+ const requiredMark = config.required ? ' (必須)' : ' (オプション)';
161
+ console.log(`\n📌 ${config.key}${requiredMark}`);
162
+ console.log(` ${config.description}`);
163
+ if (existingValue) {
164
+ console.log(` 現在の値: ${existingValue}`);
165
+ }
166
+ else if (config.defaultValue) {
167
+ console.log(` デフォルト値: ${config.defaultValue}`);
168
+ }
169
+ // JIRA認証情報が設定済みで、プロジェクトキーがある場合、APIから取得を試みる
170
+ if (hasJiraCredentials() && projectKey) {
171
+ console.log(`\n 🔍 JIRAプロジェクト "${projectKey}" からIssue Typesを取得中...`);
172
+ const issueTypes = await getProjectIssueTypes(projectKey);
173
+ if (issueTypes && issueTypes.length > 0) {
174
+ // StoryまたはSubtaskタイプをフィルタリング
175
+ const filteredTypes = config.key === 'JIRA_ISSUE_TYPE_STORY'
176
+ ? filterStoryTypes(issueTypes)
177
+ : filterSubtaskTypes(issueTypes);
178
+ if (filteredTypes.length > 0) {
179
+ console.log('\n 📋 利用可能なIssue Types:');
180
+ filteredTypes.forEach((it, index) => {
181
+ const marker = existingValue === it.id ? ' ← 現在の値' : '';
182
+ console.log(` ${index + 1}. ${it.name} (ID: ${it.id})${marker}`);
183
+ });
184
+ console.log('\n 選択方法:');
185
+ console.log(` - 番号を入力 (1-${filteredTypes.length})`);
186
+ console.log(` - Issue Type名を入力 (例: ${filteredTypes[0].name})`);
187
+ console.log(` - IDを直接入力 (例: ${filteredTypes[0].id})`);
188
+ console.log(' - Enterキーで既存値またはデフォルト値を使用');
189
+ const promptText = ' 選択: ';
190
+ const input = await question(rl, promptText);
191
+ if (!input) {
192
+ // 入力が空の場合、既存値またはデフォルト値を使用
193
+ return existingValue || config.defaultValue || '';
194
+ }
195
+ // 番号で選択
196
+ const index = parseInt(input, 10);
197
+ if (!isNaN(index) && index >= 1 && index <= filteredTypes.length) {
198
+ const selected = filteredTypes[index - 1];
199
+ console.log(` ✅ ${selected.name} (ID: ${selected.id}) を選択しました`);
200
+ return selected.id;
201
+ }
202
+ // 名前で検索
203
+ const foundById = findIssueTypeIdByName(filteredTypes, input);
204
+ if (foundById) {
205
+ const selected = filteredTypes.find((it) => it.id === foundById);
206
+ console.log(` ✅ ${selected?.name} (ID: ${foundById}) を選択しました`);
207
+ return foundById;
208
+ }
209
+ // IDとして直接入力された場合
210
+ const foundDirect = filteredTypes.find((it) => it.id === input);
211
+ if (foundDirect) {
212
+ console.log(` ✅ ${foundDirect.name} (ID: ${foundDirect.id}) を選択しました`);
213
+ return foundDirect.id;
214
+ }
215
+ // 見つからない場合、入力値をそのまま使用(ユーザーが手動でIDを入力した可能性)
216
+ console.log(` ⚠️ 選択肢に一致しませんでしたが、入力値 "${input}" を使用します`);
217
+ return input;
218
+ }
219
+ else {
220
+ console.log(` ⚠️ ${config.key === 'JIRA_ISSUE_TYPE_STORY' ? 'Story' : 'Subtask'}タイプが見つかりませんでした`);
221
+ }
222
+ }
223
+ else {
224
+ console.log(' ⚠️ JIRA APIへのアクセスに失敗しました(認証情報が未設定、またはネットワークエラー)');
225
+ console.log(' 手動でIDを入力してください。');
226
+ console.log(' ');
227
+ console.log(' JIRA管理画面で確認:');
228
+ console.log(' Settings > Issues > Issue types');
229
+ console.log(' ');
230
+ console.log(' または、REST APIで確認:');
231
+ console.log(` GET https://your-domain.atlassian.net/rest/api/3/project/${projectKey}`);
232
+ }
233
+ }
234
+ else {
235
+ if (!hasJiraCredentials()) {
236
+ console.log(' ℹ️ Atlassian認証情報が未設定のため、手動でIDを入力してください');
237
+ }
238
+ if (!projectKey) {
239
+ console.log(' ℹ️ JIRAプロジェクトキーが未設定のため、手動でIDを入力してください');
240
+ }
241
+ }
242
+ // フォールバック: 通常の入力プロンプト
243
+ const promptText = existingValue
244
+ ? ' 新しい値を入力(Enter=変更なし): '
245
+ : config.defaultValue
246
+ ? ' 値を入力(Enter=デフォルト): '
247
+ : ' 値を入力: ';
248
+ const input = await question(rl, promptText);
249
+ // 入力が空の場合
250
+ if (!input) {
251
+ // 既存値があればそれを使用
252
+ if (existingValue) {
253
+ return existingValue;
254
+ }
255
+ // デフォルト値があればそれを使用
256
+ if (config.defaultValue) {
257
+ return config.defaultValue;
258
+ }
259
+ // 必須項目で値がない場合はエラー
260
+ if (config.required) {
261
+ console.log(' ⚠️ 必須項目です。値を入力してください。');
262
+ return promptJiraIssueTypeId(rl, config, projectKey, existingValue);
263
+ }
264
+ // オプション項目は空文字を返す
265
+ return '';
266
+ }
267
+ return input;
268
+ }
269
+ /**
270
+ * 環境変数の対話的入力(既存値がある場合は表示)
271
+ *
272
+ * @param rl readlineインターフェース
273
+ * @param config 環境変数の設定項目
274
+ * @param existingValue 既存の値(あれば)
275
+ * @param projectKey JIRAプロジェクトキー(Issue Type ID設定時のみ使用)
276
+ * @returns 入力された値
277
+ */
278
+ export async function promptEnvValue(rl, config, existingValue, projectKey) {
279
+ // JIRA Issue Type ID設定の場合は特別な処理
280
+ if (config.key === 'JIRA_ISSUE_TYPE_STORY' ||
281
+ config.key === 'JIRA_ISSUE_TYPE_SUBTASK') {
282
+ return promptJiraIssueTypeId(rl, config, projectKey, existingValue);
283
+ }
284
+ // 通常の入力処理
285
+ const requiredMark = config.required ? ' (必須)' : ' (オプション)';
286
+ console.log(`\n📌 ${config.key}${requiredMark}`);
287
+ console.log(` ${config.description}`);
288
+ if (existingValue) {
289
+ const displayValue = config.sensitive
290
+ ? maskValue(existingValue)
291
+ : existingValue;
292
+ console.log(` 現在の値: ${displayValue}`);
293
+ }
294
+ else if (config.defaultValue) {
295
+ console.log(` デフォルト値: ${config.defaultValue}`);
296
+ }
297
+ const promptText = existingValue
298
+ ? ' 新しい値を入力(Enter=変更なし): '
299
+ : config.defaultValue
300
+ ? ' 値を入力(Enter=デフォルト): '
301
+ : ' 値を入力: ';
302
+ const input = await question(rl, promptText);
303
+ // 入力が空の場合
304
+ if (!input) {
305
+ // 既存値があればそれを使用
306
+ if (existingValue) {
307
+ return existingValue;
308
+ }
309
+ // デフォルト値があればそれを使用
310
+ if (config.defaultValue) {
311
+ return config.defaultValue;
312
+ }
313
+ // 必須項目で値がない場合はエラー
314
+ if (config.required) {
315
+ console.log(' ⚠️ 必須項目です。値を入力してください。');
316
+ return promptEnvValue(rl, config, existingValue, projectKey);
317
+ }
318
+ // オプション項目は空文字を返す
319
+ return '';
320
+ }
321
+ return input;
322
+ }
323
+ /**
324
+ * .envファイルの内容を生成
325
+ *
326
+ * @param values 環境変数のMap
327
+ * @returns .envファイルの内容
328
+ */
329
+ export function generateEnvContent(values) {
330
+ let content = '# Atlassian設定(MCP + REST API共通)\n';
331
+ // Atlassian設定
332
+ const atlassianKeys = [
333
+ 'ATLASSIAN_URL',
334
+ 'ATLASSIAN_EMAIL',
335
+ 'ATLASSIAN_API_TOKEN',
336
+ ];
337
+ for (const key of atlassianKeys) {
338
+ const value = values.get(key) || '';
339
+ content += `${key}=${value}\n`;
340
+ }
341
+ // GitHub設定
342
+ content += '\n# GitHub設定\n';
343
+ const githubKeys = ['GITHUB_ORG', 'GITHUB_TOKEN', 'GITHUB_REPO'];
344
+ for (const key of githubKeys) {
345
+ const value = values.get(key) || '';
346
+ content += `${key}=${value}\n`;
347
+ }
348
+ // Confluence設定
349
+ content += '\n# Confluence共有スペース\n';
350
+ const confluenceKeys = [
351
+ 'CONFLUENCE_PRD_SPACE',
352
+ 'CONFLUENCE_QA_SPACE',
353
+ 'CONFLUENCE_RELEASE_SPACE',
354
+ ];
355
+ for (const key of confluenceKeys) {
356
+ const value = values.get(key) || '';
357
+ content += `${key}=${value}\n`;
358
+ }
359
+ // JIRA設定
360
+ content += '\n# JIRAプロジェクトキー\n';
361
+ content += `JIRA_PROJECT_KEYS=${values.get('JIRA_PROJECT_KEYS') || ''}\n`;
362
+ content += '\n# JIRA Issue Type IDs(JIRAインスタンス固有 - 必須)\n';
363
+ const storyConfig = ENV_CONFIG.find(c => c.key === 'JIRA_ISSUE_TYPE_STORY');
364
+ const subtaskConfig = ENV_CONFIG.find(c => c.key === 'JIRA_ISSUE_TYPE_SUBTASK');
365
+ content += `JIRA_ISSUE_TYPE_STORY=${values.get('JIRA_ISSUE_TYPE_STORY') || storyConfig?.defaultValue || ''}\n`;
366
+ content += `JIRA_ISSUE_TYPE_SUBTASK=${values.get('JIRA_ISSUE_TYPE_SUBTASK') || subtaskConfig?.defaultValue || ''}\n`;
367
+ return content;
368
+ }
369
+ /**
370
+ * 対話的にすべての環境変数を設定
371
+ *
372
+ * @param existingValues 既存の環境変数Map(あれば)
373
+ * @param jiraKey JIRAプロジェクトキー(自動設定用)
374
+ * @param repoUrl リポジトリURL(自動設定用)
375
+ * @returns 設定された環境変数のMap
376
+ */
377
+ export async function configureEnvInteractive(existingValues, jiraKey, repoUrl) {
378
+ const rl = readline.createInterface({
379
+ input: process.stdin,
380
+ output: process.stdout,
381
+ });
382
+ const newValues = new Map();
383
+ try {
384
+ console.log('\n🔐 環境変数の設定');
385
+ console.log('='.repeat(60));
386
+ console.log('各項目を設定してください。Enterキーのみで既存値またはデフォルト値を使用します。');
387
+ for (const config of ENV_CONFIG) {
388
+ let existingValue = existingValues?.get(config.key);
389
+ // 自動設定項目
390
+ if (config.key === 'JIRA_PROJECT_KEYS' && jiraKey && !existingValue) {
391
+ existingValue = jiraKey;
392
+ }
393
+ if (config.key === 'GITHUB_REPO' && repoUrl && !existingValue) {
394
+ // URLからリポジトリ名を抽出 (例: https://github.com/owner/repo -> owner/repo)
395
+ const match = repoUrl.match(/github\.com[/:]([\w-]+\/[\w-]+)/);
396
+ if (match) {
397
+ existingValue = match[1];
398
+ }
399
+ }
400
+ // JIRA Issue Type ID設定時は、プロジェクトキーを渡す
401
+ const projectKey = jiraKey || existingValues?.get('JIRA_PROJECT_KEYS');
402
+ const value = await promptEnvValue(rl, config, existingValue, projectKey);
403
+ if (value) {
404
+ newValues.set(config.key, value);
405
+ }
406
+ }
407
+ console.log('\n✅ 環境変数の設定が完了しました');
408
+ }
409
+ finally {
410
+ rl.close();
411
+ }
412
+ return newValues;
413
+ }
414
+ //# sourceMappingURL=env-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env-config.js","sourceRoot":"","sources":["../../../scripts/utils/env-config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * JIRA Issue Types取得ユーティリティ
3
+ *
4
+ * JIRA APIからプロジェクトのIssue Typesを取得する機能を提供
5
+ */
6
+ /**
7
+ * Issue Type情報
8
+ */
9
+ export interface IssueTypeInfo {
10
+ id: string;
11
+ name: string;
12
+ description?: string;
13
+ iconUrl?: string;
14
+ subtask?: boolean;
15
+ }
16
+ /**
17
+ * JIRA認証情報
18
+ */
19
+ export interface JIRACredentials {
20
+ url: string;
21
+ email: string;
22
+ apiToken: string;
23
+ }
24
+ /**
25
+ * 認証情報が設定されているかチェック
26
+ */
27
+ export declare function hasJiraCredentials(): boolean;
28
+ /**
29
+ * 環境変数からJIRA認証情報を取得
30
+ */
31
+ export declare function getJiraCredentials(): JIRACredentials | null;
32
+ /**
33
+ * JIRA APIからプロジェクトのIssue Typesを取得
34
+ *
35
+ * @param projectKey プロジェクトキー(例: "PC")
36
+ * @param credentials JIRA認証情報(省略時は環境変数から取得)
37
+ * @returns Issue Typesのリスト、取得失敗時はnull
38
+ */
39
+ export declare function getProjectIssueTypes(projectKey: string, credentials?: JIRACredentials): Promise<IssueTypeInfo[] | null>;
40
+ /**
41
+ * Issue Type名からIDを取得
42
+ *
43
+ * @param issueTypes Issue Typesのリスト
44
+ * @param name Issue Type名(例: "Story", "ストーリー")
45
+ * @returns Issue Type ID、見つからない場合はnull
46
+ */
47
+ export declare function findIssueTypeIdByName(issueTypes: IssueTypeInfo[], name: string): string | null;
48
+ /**
49
+ * Issue Type IDが存在するかチェック
50
+ *
51
+ * @param issueTypes Issue Typesのリスト
52
+ * @param id Issue Type ID
53
+ * @returns 存在する場合はtrue
54
+ */
55
+ export declare function hasIssueTypeId(issueTypes: IssueTypeInfo[], id: string): boolean;
56
+ /**
57
+ * StoryタイプのIssue Typesをフィルタリング
58
+ *
59
+ * @param issueTypes Issue Typesのリスト
60
+ * @returns Storyタイプのリスト
61
+ */
62
+ export declare function filterStoryTypes(issueTypes: IssueTypeInfo[]): IssueTypeInfo[];
63
+ /**
64
+ * SubtaskタイプのIssue Typesをフィルタリング
65
+ *
66
+ * @param issueTypes Issue Typesのリスト
67
+ * @returns Subtaskタイプのリスト
68
+ */
69
+ export declare function filterSubtaskTypes(issueTypes: IssueTypeInfo[]): IssueTypeInfo[];
70
+ //# sourceMappingURL=jira-issue-type-fetcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jira-issue-type-fetcher.d.ts","sourceRoot":"","sources":["../../../scripts/utils/jira-issue-type-fetcher.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,CAM5C;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,eAAe,GAAG,IAAI,CAU3D;AAiBD;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,MAAM,EAClB,WAAW,CAAC,EAAE,eAAe,GAC5B,OAAO,CAAC,aAAa,EAAE,GAAG,IAAI,CAAC,CAyDjC;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,aAAa,EAAE,EAC3B,IAAI,EAAE,MAAM,GACX,MAAM,GAAG,IAAI,CASf;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,UAAU,EAAE,aAAa,EAAE,EAC3B,EAAE,EAAE,MAAM,GACT,OAAO,CAET;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,aAAa,EAAE,GAAG,aAAa,EAAE,CAO7E;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,aAAa,EAAE,GAAG,aAAa,EAAE,CAE/E"}
@@ -0,0 +1,147 @@
1
+ /**
2
+ * JIRA Issue Types取得ユーティリティ
3
+ *
4
+ * JIRA APIからプロジェクトのIssue Typesを取得する機能を提供
5
+ */
6
+ import axios from 'axios';
7
+ /**
8
+ * 認証情報が設定されているかチェック
9
+ */
10
+ export function hasJiraCredentials() {
11
+ return !!(process.env.ATLASSIAN_URL &&
12
+ process.env.ATLASSIAN_EMAIL &&
13
+ process.env.ATLASSIAN_API_TOKEN);
14
+ }
15
+ /**
16
+ * 環境変数からJIRA認証情報を取得
17
+ */
18
+ export function getJiraCredentials() {
19
+ const url = process.env.ATLASSIAN_URL;
20
+ const email = process.env.ATLASSIAN_EMAIL;
21
+ const apiToken = process.env.ATLASSIAN_API_TOKEN;
22
+ if (!url || !email || !apiToken) {
23
+ return null;
24
+ }
25
+ return { url, email, apiToken };
26
+ }
27
+ /**
28
+ * リクエスト間の待機時間(ミリ秒)
29
+ * 環境変数 ATLASSIAN_REQUEST_DELAY で調整可能(デフォルト: 500ms)
30
+ */
31
+ function getRequestDelay() {
32
+ return parseInt(process.env.ATLASSIAN_REQUEST_DELAY || '500', 10);
33
+ }
34
+ /**
35
+ * リクエスト間のスリープ処理(レートリミット対策)
36
+ */
37
+ function sleep(ms) {
38
+ return new Promise(resolve => setTimeout(resolve, ms));
39
+ }
40
+ /**
41
+ * JIRA APIからプロジェクトのIssue Typesを取得
42
+ *
43
+ * @param projectKey プロジェクトキー(例: "PC")
44
+ * @param credentials JIRA認証情報(省略時は環境変数から取得)
45
+ * @returns Issue Typesのリスト、取得失敗時はnull
46
+ */
47
+ export async function getProjectIssueTypes(projectKey, credentials) {
48
+ const creds = credentials || getJiraCredentials();
49
+ if (!creds) {
50
+ return null;
51
+ }
52
+ const baseUrl = `${creds.url}/rest/api/3`;
53
+ const auth = Buffer.from(`${creds.email}:${creds.apiToken}`).toString('base64');
54
+ // レートリミット対策: リクエスト前に待機
55
+ await sleep(getRequestDelay());
56
+ try {
57
+ const response = await axios.get(`${baseUrl}/project/${projectKey}`, {
58
+ headers: {
59
+ 'Authorization': `Basic ${auth}`,
60
+ 'Content-Type': 'application/json'
61
+ },
62
+ timeout: 10000 // 10秒タイムアウト
63
+ });
64
+ const issueTypes = response.data.issueTypes || [];
65
+ return issueTypes.map((it) => ({
66
+ id: it.id,
67
+ name: it.name,
68
+ description: it.description || undefined,
69
+ iconUrl: it.iconUrl || undefined,
70
+ subtask: it.subtask || false
71
+ }));
72
+ }
73
+ catch (error) {
74
+ // エラーをログに記録(デバッグ用)
75
+ if (error.response) {
76
+ // HTTPエラー(4xx, 5xx)
77
+ const status = error.response.status;
78
+ const statusText = error.response.statusText;
79
+ if (status === 401) {
80
+ console.error('❌ JIRA認証に失敗しました。認証情報を確認してください。');
81
+ }
82
+ else if (status === 403) {
83
+ console.error('❌ JIRAへのアクセス権限がありません。');
84
+ }
85
+ else if (status === 404) {
86
+ console.error(`❌ JIRAプロジェクト "${projectKey}" が見つかりません。`);
87
+ }
88
+ else {
89
+ console.error(`❌ JIRA APIエラー: ${status} ${statusText}`);
90
+ }
91
+ }
92
+ else if (error.request) {
93
+ // ネットワークエラー
94
+ console.error('❌ JIRA APIへの接続に失敗しました。ネットワークを確認してください。');
95
+ }
96
+ else {
97
+ // その他のエラー
98
+ console.error(`❌ エラー: ${error.message}`);
99
+ }
100
+ return null;
101
+ }
102
+ }
103
+ /**
104
+ * Issue Type名からIDを取得
105
+ *
106
+ * @param issueTypes Issue Typesのリスト
107
+ * @param name Issue Type名(例: "Story", "ストーリー")
108
+ * @returns Issue Type ID、見つからない場合はnull
109
+ */
110
+ export function findIssueTypeIdByName(issueTypes, name) {
111
+ const normalizedName = name.toLowerCase().trim();
112
+ const found = issueTypes.find(it => it.name.toLowerCase() === normalizedName ||
113
+ it.name === name);
114
+ return found ? found.id : null;
115
+ }
116
+ /**
117
+ * Issue Type IDが存在するかチェック
118
+ *
119
+ * @param issueTypes Issue Typesのリスト
120
+ * @param id Issue Type ID
121
+ * @returns 存在する場合はtrue
122
+ */
123
+ export function hasIssueTypeId(issueTypes, id) {
124
+ return issueTypes.some(it => it.id === id);
125
+ }
126
+ /**
127
+ * StoryタイプのIssue Typesをフィルタリング
128
+ *
129
+ * @param issueTypes Issue Typesのリスト
130
+ * @returns Storyタイプのリスト
131
+ */
132
+ export function filterStoryTypes(issueTypes) {
133
+ return issueTypes.filter(it => !it.subtask &&
134
+ (it.name.toLowerCase().includes('story') || it.name.includes('ストーリー')) &&
135
+ !it.name.toLowerCase().includes('epic') &&
136
+ !it.name.includes('エピック'));
137
+ }
138
+ /**
139
+ * SubtaskタイプのIssue Typesをフィルタリング
140
+ *
141
+ * @param issueTypes Issue Typesのリスト
142
+ * @returns Subtaskタイプのリスト
143
+ */
144
+ export function filterSubtaskTypes(issueTypes) {
145
+ return issueTypes.filter(it => it.subtask === true);
146
+ }
147
+ //# sourceMappingURL=jira-issue-type-fetcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jira-issue-type-fetcher.js","sourceRoot":"","sources":["../../../scripts/utils/jira-issue-type-fetcher.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAsB1B;;GAEG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO,CAAC,CAAC,CACP,OAAO,CAAC,GAAG,CAAC,aAAa;QACzB,OAAO,CAAC,GAAG,CAAC,eAAe;QAC3B,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAChC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB;IAChC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;IACtC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;IAC1C,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;IAEjD,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AAClC,CAAC;AAED;;;GAGG;AACH,SAAS,eAAe;IACtB,OAAO,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,KAAK,EAAE,EAAE,CAAC,CAAC;AACpE,CAAC;AAED;;GAEG;AACH,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AACzD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,UAAkB,EAClB,WAA6B;IAE7B,MAAM,KAAK,GAAG,WAAW,IAAI,kBAAkB,EAAE,CAAC;IAElD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,OAAO,GAAG,GAAG,KAAK,CAAC,GAAG,aAAa,CAAC;IAC1C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAEhF,uBAAuB;IACvB,MAAM,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC;IAE/B,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,OAAO,YAAY,UAAU,EAAE,EAAE;YACnE,OAAO,EAAE;gBACP,eAAe,EAAE,SAAS,IAAI,EAAE;gBAChC,cAAc,EAAE,kBAAkB;aACnC;YACD,OAAO,EAAE,KAAK,CAAC,YAAY;SAC5B,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC;QAElD,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,EAAO,EAAE,EAAE,CAAC,CAAC;YAClC,EAAE,EAAE,EAAE,CAAC,EAAE;YACT,IAAI,EAAE,EAAE,CAAC,IAAI;YACb,WAAW,EAAE,EAAE,CAAC,WAAW,IAAI,SAAS;YACxC,OAAO,EAAE,EAAE,CAAC,OAAO,IAAI,SAAS;YAChC,OAAO,EAAE,EAAE,CAAC,OAAO,IAAI,KAAK;SAC7B,CAAC,CAAC,CAAC;IACN,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,mBAAmB;QACnB,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACnB,oBAAoB;YACpB,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;YACrC,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC;YAE7C,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;gBACnB,OAAO,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;YAClD,CAAC;iBAAM,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;gBAC1B,OAAO,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;YACzC,CAAC;iBAAM,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;gBAC1B,OAAO,CAAC,KAAK,CAAC,iBAAiB,UAAU,aAAa,CAAC,CAAC;YAC1D,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,KAAK,CAAC,kBAAkB,MAAM,IAAI,UAAU,EAAE,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YACzB,YAAY;YACZ,OAAO,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAC1D,CAAC;aAAM,CAAC;YACN,UAAU;YACV,OAAO,CAAC,KAAK,CAAC,UAAU,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC3C,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CACnC,UAA2B,EAC3B,IAAY;IAEZ,MAAM,cAAc,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;IAEjD,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CACjC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,cAAc;QACxC,EAAE,CAAC,IAAI,KAAK,IAAI,CACjB,CAAC;IAEF,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACjC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAC5B,UAA2B,EAC3B,EAAU;IAEV,OAAO,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AAC7C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,UAA2B;IAC1D,OAAO,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAC5B,CAAC,EAAE,CAAC,OAAO;QACX,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACtE,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;QACvC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAC1B,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,UAA2B;IAC5D,OAAO,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC;AACtD,CAAC"}