@sk8metal/michi-cli 0.14.1 → 0.19.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 (614) 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 +44 -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/confirmation.d.ts +24 -0
  475. package/dist/src/presentation/interactive/confirmation.d.ts.map +1 -0
  476. package/dist/src/presentation/interactive/confirmation.js +54 -0
  477. package/dist/src/presentation/interactive/confirmation.js.map +1 -0
  478. package/dist/src/presentation/interactive/index.d.ts +8 -0
  479. package/dist/src/presentation/interactive/index.d.ts.map +1 -0
  480. package/dist/src/presentation/interactive/index.js +11 -0
  481. package/dist/src/presentation/interactive/index.js.map +1 -0
  482. package/dist/src/presentation/interactive/prompts.d.ts +31 -0
  483. package/dist/src/presentation/interactive/prompts.d.ts.map +1 -0
  484. package/dist/src/presentation/interactive/prompts.js +71 -0
  485. package/dist/src/presentation/interactive/prompts.js.map +1 -0
  486. package/dist/src/presentation/interactive/selection.d.ts +31 -0
  487. package/dist/src/presentation/interactive/selection.d.ts.map +1 -0
  488. package/dist/src/presentation/interactive/selection.js +138 -0
  489. package/dist/src/presentation/interactive/selection.js.map +1 -0
  490. package/dist/src/shared/types/errors.d.ts +132 -0
  491. package/dist/src/shared/types/errors.d.ts.map +1 -0
  492. package/dist/src/shared/types/errors.js +61 -0
  493. package/dist/src/shared/types/errors.js.map +1 -0
  494. package/dist/src/shared/types/result.d.ts +53 -0
  495. package/dist/src/shared/types/result.d.ts.map +1 -0
  496. package/dist/src/shared/types/result.js +42 -0
  497. package/dist/src/shared/types/result.js.map +1 -0
  498. package/dist/test-confluence-auth.d.ts +6 -0
  499. package/dist/test-confluence-auth.d.ts.map +1 -0
  500. package/dist/test-confluence-auth.js +128 -0
  501. package/dist/test-confluence-auth.js.map +1 -0
  502. package/docs/MIGRATION.md +513 -0
  503. package/docs/architecture.md +774 -0
  504. package/docs/guides/comprehensive-verification-guide.md +1926 -0
  505. package/docs/onion-architecture-phase0-complete.md +91 -0
  506. package/package.json +6 -6
  507. package/scripts/README.md +148 -0
  508. package/scripts/__tests__/jira-transitions.test.ts +44 -30
  509. package/scripts/__tests__/mermaid-converter.test.ts +2 -2
  510. package/scripts/__tests__/multi-repo-validator.test.ts +62 -62
  511. package/scripts/__tests__/spec-archiver.test.ts +12 -0
  512. package/scripts/__tests__/validate-phase.test.ts +6 -6
  513. package/scripts/build/README.md +24 -0
  514. package/scripts/{copy-static-assets.js → build/copy-static-assets.js} +1 -1
  515. package/scripts/{set-permissions.js → build/set-permissions.js} +1 -1
  516. package/scripts/config/config-schema.ts +43 -302
  517. package/scripts/config-global.ts +3 -2
  518. package/scripts/confluence-sync.ts +17 -538
  519. package/scripts/constants/environments.ts +3 -53
  520. package/scripts/constants/languages.ts +3 -68
  521. package/scripts/constants/test-commands.ts +3 -94
  522. package/scripts/dev-tools/README.md +22 -0
  523. package/scripts/{test-interactive.ts → dev-tools/test-interactive.ts} +4 -3
  524. package/scripts/github-actions-client.ts +18 -256
  525. package/scripts/jira-sync.ts +5 -1270
  526. package/scripts/markdown-to-confluence.ts +5 -5
  527. package/scripts/multi-project-estimate.ts +3 -2
  528. package/scripts/phase-runner.ts +41 -19
  529. package/scripts/pre-flight-check.ts +27 -11
  530. package/scripts/template/__tests__/multi-repo-renderer.test.ts +12 -0
  531. package/scripts/template/multi-repo-renderer.ts +2 -2
  532. package/scripts/test-execution-generator.ts +5 -4
  533. package/scripts/utils/__tests__/config-validator.test.ts +19 -19
  534. package/scripts/utils/__tests__/feature-name-validator.test.ts +13 -13
  535. package/scripts/utils/__tests__/multi-repo-validator.test.ts +34 -34
  536. package/scripts/utils/__tests__/project-analyzer.test.ts +542 -0
  537. package/scripts/utils/__tests__/safe-file-reader.test.ts +208 -0
  538. package/scripts/utils/__tests__/security-validator.test.ts +33 -33
  539. package/scripts/utils/__tests__/validation-result.test.ts +112 -0
  540. package/scripts/utils/aidlc-parser.ts +18 -287
  541. package/scripts/utils/ci-generator.ts +4 -3
  542. package/scripts/utils/config-loader.ts +54 -50
  543. package/scripts/utils/config-validator.ts +89 -80
  544. package/scripts/utils/docker-requirement-detector.ts +5 -4
  545. package/scripts/utils/env-config.ts +59 -40
  546. package/scripts/utils/feature-name-validator.ts +25 -40
  547. package/scripts/utils/interactive-helpers.ts +24 -132
  548. package/scripts/utils/language-detector.ts +4 -3
  549. package/scripts/utils/markdown-parser.ts +18 -373
  550. package/scripts/utils/multi-repo-validator.ts +27 -28
  551. package/scripts/utils/project-analyzer.ts +429 -0
  552. package/scripts/utils/project-detector.ts +6 -5
  553. package/scripts/utils/project-finder.ts +2 -154
  554. package/scripts/utils/project-meta.ts +8 -91
  555. package/scripts/utils/safe-file-reader.ts +158 -0
  556. package/scripts/utils/security-validator.ts +42 -78
  557. package/scripts/utils/spec-archiver.ts +7 -6
  558. package/scripts/utils/spec-updater.ts +12 -6
  559. package/scripts/utils/tasks-converter.ts +2 -2
  560. package/scripts/utils/tasks-format-validator.ts +4 -4
  561. package/scripts/utils/template-applier.ts +4 -3
  562. package/scripts/utils/types/validation.ts +92 -0
  563. package/scripts/validate-phase.ts +51 -23
  564. package/scripts/workflow-orchestrator.ts +16 -251
  565. package/dist/scripts/mermaid-converter.d.ts.map +0 -1
  566. package/dist/scripts/mermaid-converter.js.map +0 -1
  567. package/dist/scripts/resource-dashboard.d.ts +0 -7
  568. package/dist/scripts/resource-dashboard.d.ts.map +0 -1
  569. package/dist/scripts/resource-dashboard.js +0 -157
  570. package/dist/scripts/resource-dashboard.js.map +0 -1
  571. package/dist/scripts/test-interactive.d.ts.map +0 -1
  572. package/dist/scripts/test-interactive.js.map +0 -1
  573. package/dist/scripts/test-new-features.d.ts +0 -5
  574. package/dist/scripts/test-new-features.d.ts.map +0 -1
  575. package/dist/scripts/test-new-features.js +0 -148
  576. package/dist/scripts/test-new-features.js.map +0 -1
  577. package/dist/scripts/test-spec-generator.d.ts +0 -29
  578. package/dist/scripts/test-spec-generator.d.ts.map +0 -1
  579. package/dist/scripts/test-spec-generator.js +0 -493
  580. package/dist/scripts/test-spec-generator.js.map +0 -1
  581. package/dist/scripts/utils/confluence-approval.d.ts +0 -46
  582. package/dist/scripts/utils/confluence-approval.d.ts.map +0 -1
  583. package/dist/scripts/utils/confluence-approval.js +0 -120
  584. package/dist/scripts/utils/confluence-approval.js.map +0 -1
  585. package/dist/scripts/utils/template-finder.d.ts +0 -37
  586. package/dist/scripts/utils/template-finder.d.ts.map +0 -1
  587. package/dist/scripts/utils/template-finder.js +0 -58
  588. package/dist/scripts/utils/template-finder.js.map +0 -1
  589. package/dist/src/commands/multi-repo-add-repo.d.ts.map +0 -1
  590. package/dist/src/commands/multi-repo-add-repo.js.map +0 -1
  591. package/dist/src/commands/multi-repo-ci-status.d.ts.map +0 -1
  592. package/dist/src/commands/multi-repo-ci-status.js.map +0 -1
  593. package/dist/src/commands/multi-repo-confluence-sync.d.ts.map +0 -1
  594. package/dist/src/commands/multi-repo-confluence-sync.js.map +0 -1
  595. package/dist/src/commands/multi-repo-init.d.ts.map +0 -1
  596. package/dist/src/commands/multi-repo-init.js.map +0 -1
  597. package/dist/src/commands/multi-repo-list.d.ts.map +0 -1
  598. package/dist/src/commands/multi-repo-list.js.map +0 -1
  599. package/dist/src/commands/multi-repo-test.d.ts.map +0 -1
  600. package/dist/src/commands/multi-repo-test.js.map +0 -1
  601. package/dist/src/commands/setup-existing.d.ts +0 -22
  602. package/dist/src/commands/setup-existing.d.ts.map +0 -1
  603. package/dist/src/commands/setup-existing.js +0 -606
  604. package/dist/src/commands/setup-existing.js.map +0 -1
  605. package/scripts/__tests__/setup-existing-project.test.ts +0 -244
  606. package/scripts/resource-dashboard.ts +0 -189
  607. package/scripts/test-new-features.ts +0 -171
  608. package/scripts/test-spec-generator.ts +0 -570
  609. package/scripts/utils/confluence-approval.ts +0 -169
  610. package/scripts/utils/template-finder.ts +0 -69
  611. /package/dist/scripts/{mermaid-converter.d.ts → dev-tools/mermaid-converter.d.ts} +0 -0
  612. /package/dist/scripts/{mermaid-converter.js → dev-tools/mermaid-converter.js} +0 -0
  613. /package/dist/scripts/{test-interactive.d.ts → dev-tools/test-interactive.d.ts} +0 -0
  614. /package/scripts/{mermaid-converter.ts → dev-tools/mermaid-converter.ts} +0 -0
@@ -19,38 +19,38 @@ describe('validateProjectName', () => {
19
19
  describe('正常ケース', () => {
20
20
  it('有効な英字プロジェクト名を受け入れる', () => {
21
21
  const result = validateProjectName('my-project');
22
- expect(result.isValid).toBe(true);
22
+ expect(result.success).toBe(true);
23
23
  expect(result.errors).toHaveLength(0);
24
24
  });
25
25
 
26
26
  it('有効な日本語プロジェクト名を受け入れる', () => {
27
27
  const result = validateProjectName('マルチリポジトリ');
28
- expect(result.isValid).toBe(true);
28
+ expect(result.success).toBe(true);
29
29
  expect(result.errors).toHaveLength(0);
30
30
  });
31
31
 
32
32
  it('英字、数字、ハイフンを含むプロジェクト名を受け入れる', () => {
33
33
  const result = validateProjectName('project-123-test');
34
- expect(result.isValid).toBe(true);
34
+ expect(result.success).toBe(true);
35
35
  expect(result.errors).toHaveLength(0);
36
36
  });
37
37
 
38
38
  it('アンダースコアを含むプロジェクト名を受け入れる', () => {
39
39
  const result = validateProjectName('my_project_name');
40
- expect(result.isValid).toBe(true);
40
+ expect(result.success).toBe(true);
41
41
  expect(result.errors).toHaveLength(0);
42
42
  });
43
43
 
44
44
  it('100文字のプロジェクト名を受け入れる', () => {
45
45
  const name = 'a'.repeat(100);
46
46
  const result = validateProjectName(name);
47
- expect(result.isValid).toBe(true);
47
+ expect(result.success).toBe(true);
48
48
  expect(result.errors).toHaveLength(0);
49
49
  });
50
50
 
51
51
  it('1文字のプロジェクト名を受け入れる', () => {
52
52
  const result = validateProjectName('a');
53
- expect(result.isValid).toBe(true);
53
+ expect(result.success).toBe(true);
54
54
  expect(result.errors).toHaveLength(0);
55
55
  });
56
56
  });
@@ -58,7 +58,7 @@ describe('validateProjectName', () => {
58
58
  describe('パストラバーサル攻撃対策', () => {
59
59
  it('../を含むプロジェクト名を拒否する', () => {
60
60
  const result = validateProjectName('../malicious');
61
- expect(result.isValid).toBe(false);
61
+ expect(result.success).toBe(false);
62
62
  expect(result.errors).toContain(
63
63
  'Project name must not contain path traversal characters (/, \\)',
64
64
  );
@@ -66,7 +66,7 @@ describe('validateProjectName', () => {
66
66
 
67
67
  it('./を含むプロジェクト名を拒否する', () => {
68
68
  const result = validateProjectName('./current');
69
- expect(result.isValid).toBe(false);
69
+ expect(result.success).toBe(false);
70
70
  expect(result.errors).toContain(
71
71
  'Project name must not contain path traversal characters (/, \\)',
72
72
  );
@@ -74,7 +74,7 @@ describe('validateProjectName', () => {
74
74
 
75
75
  it('/を含むプロジェクト名を拒否する', () => {
76
76
  const result = validateProjectName('project/name');
77
- expect(result.isValid).toBe(false);
77
+ expect(result.success).toBe(false);
78
78
  expect(result.errors).toContain(
79
79
  'Project name must not contain path traversal characters (/, \\)',
80
80
  );
@@ -82,7 +82,7 @@ describe('validateProjectName', () => {
82
82
 
83
83
  it('\\を含むプロジェクト名を拒否する', () => {
84
84
  const result = validateProjectName('project\\name');
85
- expect(result.isValid).toBe(false);
85
+ expect(result.success).toBe(false);
86
86
  expect(result.errors).toContain(
87
87
  'Project name must not contain path traversal characters (/, \\)',
88
88
  );
@@ -90,7 +90,7 @@ describe('validateProjectName', () => {
90
90
 
91
91
  it('複数のパストラバーサル文字を含むプロジェクト名を拒否する', () => {
92
92
  const result = validateProjectName('../../etc/passwd');
93
- expect(result.isValid).toBe(false);
93
+ expect(result.success).toBe(false);
94
94
  expect(result.errors).toContain(
95
95
  'Project name must not contain path traversal characters (/, \\)',
96
96
  );
@@ -100,7 +100,7 @@ describe('validateProjectName', () => {
100
100
  describe('相対パス攻撃対策', () => {
101
101
  it('.(カレントディレクトリ)を拒否する', () => {
102
102
  const result = validateProjectName('.');
103
- expect(result.isValid).toBe(false);
103
+ expect(result.success).toBe(false);
104
104
  expect(result.errors).toContain(
105
105
  'Project name must not be relative path components (., ..)',
106
106
  );
@@ -108,7 +108,7 @@ describe('validateProjectName', () => {
108
108
 
109
109
  it('..(親ディレクトリ)を拒否する', () => {
110
110
  const result = validateProjectName('..');
111
- expect(result.isValid).toBe(false);
111
+ expect(result.success).toBe(false);
112
112
  expect(result.errors).toContain(
113
113
  'Project name must not be relative path components (., ..)',
114
114
  );
@@ -118,7 +118,7 @@ describe('validateProjectName', () => {
118
118
  describe('制御文字対策', () => {
119
119
  it('ヌル文字(\\x00)を含むプロジェクト名を拒否する', () => {
120
120
  const result = validateProjectName('project\x00name');
121
- expect(result.isValid).toBe(false);
121
+ expect(result.success).toBe(false);
122
122
  expect(result.errors).toContain(
123
123
  'Project name must not contain control characters',
124
124
  );
@@ -126,7 +126,7 @@ describe('validateProjectName', () => {
126
126
 
127
127
  it('改行文字(\\n)を含むプロジェクト名を拒否する', () => {
128
128
  const result = validateProjectName('project\nname');
129
- expect(result.isValid).toBe(false);
129
+ expect(result.success).toBe(false);
130
130
  expect(result.errors).toContain(
131
131
  'Project name must not contain control characters',
132
132
  );
@@ -134,7 +134,7 @@ describe('validateProjectName', () => {
134
134
 
135
135
  it('キャリッジリターン(\\r)を含むプロジェクト名を拒否する', () => {
136
136
  const result = validateProjectName('project\rname');
137
- expect(result.isValid).toBe(false);
137
+ expect(result.success).toBe(false);
138
138
  expect(result.errors).toContain(
139
139
  'Project name must not contain control characters',
140
140
  );
@@ -142,7 +142,7 @@ describe('validateProjectName', () => {
142
142
 
143
143
  it('タブ文字(\\t)を含むプロジェクト名を拒否する', () => {
144
144
  const result = validateProjectName('project\tname');
145
- expect(result.isValid).toBe(false);
145
+ expect(result.success).toBe(false);
146
146
  expect(result.errors).toContain(
147
147
  'Project name must not contain control characters',
148
148
  );
@@ -150,7 +150,7 @@ describe('validateProjectName', () => {
150
150
 
151
151
  it('ターミナルエスケープシーケンス(\\x1B[)を含むプロジェクト名を拒否する', () => {
152
152
  const result = validateProjectName('project\x1B[31mname');
153
- expect(result.isValid).toBe(false);
153
+ expect(result.success).toBe(false);
154
154
  expect(result.errors).toContain(
155
155
  'Project name must not contain control characters',
156
156
  );
@@ -158,7 +158,7 @@ describe('validateProjectName', () => {
158
158
 
159
159
  it('DEL文字(\\x7F)を含むプロジェクト名を拒否する', () => {
160
160
  const result = validateProjectName('project\x7Fname');
161
- expect(result.isValid).toBe(false);
161
+ expect(result.success).toBe(false);
162
162
  expect(result.errors).toContain(
163
163
  'Project name must not contain control characters',
164
164
  );
@@ -166,7 +166,7 @@ describe('validateProjectName', () => {
166
166
 
167
167
  it('複数の制御文字を含むプロジェクト名を拒否する', () => {
168
168
  const result = validateProjectName('project\x00\n\r\tname');
169
- expect(result.isValid).toBe(false);
169
+ expect(result.success).toBe(false);
170
170
  expect(result.errors).toContain(
171
171
  'Project name must not contain control characters',
172
172
  );
@@ -177,7 +177,7 @@ describe('validateProjectName', () => {
177
177
  it('101文字のプロジェクト名を拒否する', () => {
178
178
  const name = 'a'.repeat(101);
179
179
  const result = validateProjectName(name);
180
- expect(result.isValid).toBe(false);
180
+ expect(result.success).toBe(false);
181
181
  expect(result.errors).toContain(
182
182
  'Project name must be between 1 and 100 characters',
183
183
  );
@@ -185,7 +185,7 @@ describe('validateProjectName', () => {
185
185
 
186
186
  it('空文字列のプロジェクト名を拒否する', () => {
187
187
  const result = validateProjectName('');
188
- expect(result.isValid).toBe(false);
188
+ expect(result.success).toBe(false);
189
189
  expect(result.errors).toContain(
190
190
  'Project name must be between 1 and 100 characters',
191
191
  );
@@ -194,7 +194,7 @@ describe('validateProjectName', () => {
194
194
  it('200文字のプロジェクト名を拒否する', () => {
195
195
  const name = 'a'.repeat(200);
196
196
  const result = validateProjectName(name);
197
- expect(result.isValid).toBe(false);
197
+ expect(result.success).toBe(false);
198
198
  expect(result.errors).toContain(
199
199
  'Project name must be between 1 and 100 characters',
200
200
  );
@@ -204,7 +204,7 @@ describe('validateProjectName', () => {
204
204
  describe('複合エラーケース', () => {
205
205
  it('複数のバリデーションエラーを同時に検出する', () => {
206
206
  const result = validateProjectName('../project\x00/name');
207
- expect(result.isValid).toBe(false);
207
+ expect(result.success).toBe(false);
208
208
  expect(result.errors.length).toBeGreaterThan(1);
209
209
  expect(result.errors).toContain(
210
210
  'Project name must not contain path traversal characters (/, \\)',
@@ -217,7 +217,7 @@ describe('validateProjectName', () => {
217
217
  it('長すぎるプロジェクト名とパストラバーサル文字を同時に検出する', () => {
218
218
  const name = 'a'.repeat(101) + '/';
219
219
  const result = validateProjectName(name);
220
- expect(result.isValid).toBe(false);
220
+ expect(result.success).toBe(false);
221
221
  expect(result.errors).toContain(
222
222
  'Project name must be between 1 and 100 characters',
223
223
  );
@@ -232,31 +232,31 @@ describe('validateJiraKey', () => {
232
232
  describe('正常ケース', () => {
233
233
  it('2文字の大文字英字を受け入れる', () => {
234
234
  const result = validateJiraKey('AB');
235
- expect(result.isValid).toBe(true);
235
+ expect(result.success).toBe(true);
236
236
  expect(result.errors).toHaveLength(0);
237
237
  });
238
238
 
239
239
  it('10文字の大文字英字を受け入れる', () => {
240
240
  const result = validateJiraKey('ABCDEFGHIJ');
241
- expect(result.isValid).toBe(true);
241
+ expect(result.success).toBe(true);
242
242
  expect(result.errors).toHaveLength(0);
243
243
  });
244
244
 
245
245
  it('一般的なJIRAキー形式を受け入れる (PROJ)', () => {
246
246
  const result = validateJiraKey('PROJ');
247
- expect(result.isValid).toBe(true);
247
+ expect(result.success).toBe(true);
248
248
  expect(result.errors).toHaveLength(0);
249
249
  });
250
250
 
251
251
  it('一般的なJIRAキー形式を受け入れる (TICKET)', () => {
252
252
  const result = validateJiraKey('TICKET');
253
- expect(result.isValid).toBe(true);
253
+ expect(result.success).toBe(true);
254
254
  expect(result.errors).toHaveLength(0);
255
255
  });
256
256
 
257
257
  it('一般的なJIRAキー形式を受け入れる (MYPROJECT)', () => {
258
258
  const result = validateJiraKey('MYPROJECT');
259
- expect(result.isValid).toBe(true);
259
+ expect(result.success).toBe(true);
260
260
  expect(result.errors).toHaveLength(0);
261
261
  });
262
262
  });
@@ -264,19 +264,19 @@ describe('validateJiraKey', () => {
264
264
  describe('小文字エラー', () => {
265
265
  it('小文字のみのJIRAキーを拒否する', () => {
266
266
  const result = validateJiraKey('abc');
267
- expect(result.isValid).toBe(false);
267
+ expect(result.success).toBe(false);
268
268
  expect(result.errors).toContain('JIRA key must be 2-10 uppercase letters');
269
269
  });
270
270
 
271
271
  it('大文字と小文字が混在するJIRAキーを拒否する', () => {
272
272
  const result = validateJiraKey('Proj');
273
- expect(result.isValid).toBe(false);
273
+ expect(result.success).toBe(false);
274
274
  expect(result.errors).toContain('JIRA key must be 2-10 uppercase letters');
275
275
  });
276
276
 
277
277
  it('小文字を含むJIRAキーを拒否する', () => {
278
278
  const result = validateJiraKey('PROJect');
279
- expect(result.isValid).toBe(false);
279
+ expect(result.success).toBe(false);
280
280
  expect(result.errors).toContain('JIRA key must be 2-10 uppercase letters');
281
281
  });
282
282
  });
@@ -284,25 +284,25 @@ describe('validateJiraKey', () => {
284
284
  describe('長さエラー', () => {
285
285
  it('1文字のJIRAキーを拒否する(短すぎる)', () => {
286
286
  const result = validateJiraKey('A');
287
- expect(result.isValid).toBe(false);
287
+ expect(result.success).toBe(false);
288
288
  expect(result.errors).toContain('JIRA key must be 2-10 uppercase letters');
289
289
  });
290
290
 
291
291
  it('11文字のJIRAキーを拒否する(長すぎる)', () => {
292
292
  const result = validateJiraKey('ABCDEFGHIJK');
293
- expect(result.isValid).toBe(false);
293
+ expect(result.success).toBe(false);
294
294
  expect(result.errors).toContain('JIRA key must be 2-10 uppercase letters');
295
295
  });
296
296
 
297
297
  it('15文字のJIRAキーを拒否する(長すぎる)', () => {
298
298
  const result = validateJiraKey('ABCDEFGHIJKLMNO');
299
- expect(result.isValid).toBe(false);
299
+ expect(result.success).toBe(false);
300
300
  expect(result.errors).toContain('JIRA key must be 2-10 uppercase letters');
301
301
  });
302
302
 
303
303
  it('空文字列のJIRAキーを拒否する', () => {
304
304
  const result = validateJiraKey('');
305
- expect(result.isValid).toBe(false);
305
+ expect(result.success).toBe(false);
306
306
  expect(result.errors).toContain('JIRA key must be 2-10 uppercase letters');
307
307
  });
308
308
  });
@@ -310,25 +310,25 @@ describe('validateJiraKey', () => {
310
310
  describe('数字を含むエラー', () => {
311
311
  it('数字のみのJIRAキーを拒否する', () => {
312
312
  const result = validateJiraKey('123');
313
- expect(result.isValid).toBe(false);
313
+ expect(result.success).toBe(false);
314
314
  expect(result.errors).toContain('JIRA key must be 2-10 uppercase letters');
315
315
  });
316
316
 
317
317
  it('数字を含むJIRAキーを拒否する (ABC123)', () => {
318
318
  const result = validateJiraKey('ABC123');
319
- expect(result.isValid).toBe(false);
319
+ expect(result.success).toBe(false);
320
320
  expect(result.errors).toContain('JIRA key must be 2-10 uppercase letters');
321
321
  });
322
322
 
323
323
  it('数字で始まるJIRAキーを拒否する', () => {
324
324
  const result = validateJiraKey('123ABC');
325
- expect(result.isValid).toBe(false);
325
+ expect(result.success).toBe(false);
326
326
  expect(result.errors).toContain('JIRA key must be 2-10 uppercase letters');
327
327
  });
328
328
 
329
329
  it('数字が混在するJIRAキーを拒否する', () => {
330
330
  const result = validateJiraKey('AB1CD2');
331
- expect(result.isValid).toBe(false);
331
+ expect(result.success).toBe(false);
332
332
  expect(result.errors).toContain('JIRA key must be 2-10 uppercase letters');
333
333
  });
334
334
  });
@@ -336,25 +336,25 @@ describe('validateJiraKey', () => {
336
336
  describe('特殊文字エラー', () => {
337
337
  it('ハイフンを含むJIRAキーを拒否する', () => {
338
338
  const result = validateJiraKey('PROJ-123');
339
- expect(result.isValid).toBe(false);
339
+ expect(result.success).toBe(false);
340
340
  expect(result.errors).toContain('JIRA key must be 2-10 uppercase letters');
341
341
  });
342
342
 
343
343
  it('アンダースコアを含むJIRAキーを拒否する', () => {
344
344
  const result = validateJiraKey('PROJ_NAME');
345
- expect(result.isValid).toBe(false);
345
+ expect(result.success).toBe(false);
346
346
  expect(result.errors).toContain('JIRA key must be 2-10 uppercase letters');
347
347
  });
348
348
 
349
349
  it('スペースを含むJIRAキーを拒否する', () => {
350
350
  const result = validateJiraKey('PROJ NAME');
351
- expect(result.isValid).toBe(false);
351
+ expect(result.success).toBe(false);
352
352
  expect(result.errors).toContain('JIRA key must be 2-10 uppercase letters');
353
353
  });
354
354
 
355
355
  it('記号を含むJIRAキーを拒否する', () => {
356
356
  const result = validateJiraKey('PROJ@NAME');
357
- expect(result.isValid).toBe(false);
357
+ expect(result.success).toBe(false);
358
358
  expect(result.errors).toContain('JIRA key must be 2-10 uppercase letters');
359
359
  });
360
360
  });
@@ -366,7 +366,7 @@ describe('validateRepositoryUrl', () => {
366
366
  const result = validateRepositoryUrl(
367
367
  'https://github.com/owner/repository',
368
368
  );
369
- expect(result.isValid).toBe(true);
369
+ expect(result.success).toBe(true);
370
370
  expect(result.errors).toHaveLength(0);
371
371
  });
372
372
 
@@ -374,7 +374,7 @@ describe('validateRepositoryUrl', () => {
374
374
  const result = validateRepositoryUrl(
375
375
  'https://github.com/my-org/my-repo',
376
376
  );
377
- expect(result.isValid).toBe(true);
377
+ expect(result.success).toBe(true);
378
378
  expect(result.errors).toHaveLength(0);
379
379
  });
380
380
 
@@ -382,7 +382,7 @@ describe('validateRepositoryUrl', () => {
382
382
  const result = validateRepositoryUrl(
383
383
  'https://github.com/org123/repo456',
384
384
  );
385
- expect(result.isValid).toBe(true);
385
+ expect(result.success).toBe(true);
386
386
  expect(result.errors).toHaveLength(0);
387
387
  });
388
388
 
@@ -390,7 +390,7 @@ describe('validateRepositoryUrl', () => {
390
390
  const result = validateRepositoryUrl(
391
391
  'https://github.com/my-org/my-project-test',
392
392
  );
393
- expect(result.isValid).toBe(true);
393
+ expect(result.success).toBe(true);
394
394
  expect(result.errors).toHaveLength(0);
395
395
  });
396
396
  });
@@ -398,13 +398,13 @@ describe('validateRepositoryUrl', () => {
398
398
  describe('空文字列エラー', () => {
399
399
  it('空文字列を拒否する', () => {
400
400
  const result = validateRepositoryUrl('');
401
- expect(result.isValid).toBe(false);
401
+ expect(result.success).toBe(false);
402
402
  expect(result.errors).toContain('Repository URL is empty');
403
403
  });
404
404
 
405
405
  it('スペースのみの文字列を拒否する', () => {
406
406
  const result = validateRepositoryUrl(' ');
407
- expect(result.isValid).toBe(false);
407
+ expect(result.success).toBe(false);
408
408
  expect(result.errors).toContain('Repository URL is empty');
409
409
  });
410
410
  });
@@ -414,7 +414,7 @@ describe('validateRepositoryUrl', () => {
414
414
  const result = validateRepositoryUrl(
415
415
  'git@github.com:owner/repository.git',
416
416
  );
417
- expect(result.isValid).toBe(false);
417
+ expect(result.success).toBe(false);
418
418
  expect(result.errors).toContain(
419
419
  'Repository URL must be in GitHub format: https://github.com/{owner}/{repo}',
420
420
  );
@@ -426,7 +426,7 @@ describe('validateRepositoryUrl', () => {
426
426
  const result = validateRepositoryUrl(
427
427
  'http://github.com/owner/repository',
428
428
  );
429
- expect(result.isValid).toBe(false);
429
+ expect(result.success).toBe(false);
430
430
  expect(result.errors).toContain('Repository URL must use HTTPS protocol');
431
431
  });
432
432
  });
@@ -436,7 +436,7 @@ describe('validateRepositoryUrl', () => {
436
436
  const result = validateRepositoryUrl(
437
437
  'https://gitlab.com/owner/repository',
438
438
  );
439
- expect(result.isValid).toBe(false);
439
+ expect(result.success).toBe(false);
440
440
  expect(result.errors).toContain(
441
441
  'Repository URL must be in GitHub format: https://github.com/{owner}/{repo}',
442
442
  );
@@ -446,7 +446,7 @@ describe('validateRepositoryUrl', () => {
446
446
  const result = validateRepositoryUrl(
447
447
  'https://github.com/owner/repository/issues',
448
448
  );
449
- expect(result.isValid).toBe(false);
449
+ expect(result.success).toBe(false);
450
450
  expect(result.errors).toContain(
451
451
  'Repository URL must be in GitHub format: https://github.com/{owner}/{repo}',
452
452
  );
@@ -454,7 +454,7 @@ describe('validateRepositoryUrl', () => {
454
454
 
455
455
  it('ownerのみのURLを拒否する', () => {
456
456
  const result = validateRepositoryUrl('https://github.com/owner');
457
- expect(result.isValid).toBe(false);
457
+ expect(result.success).toBe(false);
458
458
  expect(result.errors).toContain(
459
459
  'Repository URL must be in GitHub format: https://github.com/{owner}/{repo}',
460
460
  );
@@ -466,7 +466,7 @@ describe('validateRepositoryUrl', () => {
466
466
  const result = validateRepositoryUrl(
467
467
  'https://github.com/owner/repository.git',
468
468
  );
469
- expect(result.isValid).toBe(false);
469
+ expect(result.success).toBe(false);
470
470
  expect(result.errors).toContain(
471
471
  'Repository URL must not include .git extension',
472
472
  );
@@ -478,7 +478,7 @@ describe('validateRepositoryUrl', () => {
478
478
  const result = validateRepositoryUrl(
479
479
  'https://github.com/your-org/repository',
480
480
  );
481
- expect(result.isValid).toBe(false);
481
+ expect(result.success).toBe(false);
482
482
  expect(result.errors).toContain(
483
483
  'Repository URL contains placeholder values',
484
484
  );
@@ -488,7 +488,7 @@ describe('validateRepositoryUrl', () => {
488
488
  const result = validateRepositoryUrl(
489
489
  'https://github.com/owner/your-repo',
490
490
  );
491
- expect(result.isValid).toBe(false);
491
+ expect(result.success).toBe(false);
492
492
  expect(result.errors).toContain(
493
493
  'Repository URL contains placeholder values',
494
494
  );
@@ -498,7 +498,7 @@ describe('validateRepositoryUrl', () => {
498
498
  const result = validateRepositoryUrl(
499
499
  'https://github.com/owner/repo-name',
500
500
  );
501
- expect(result.isValid).toBe(false);
501
+ expect(result.success).toBe(false);
502
502
  expect(result.errors).toContain(
503
503
  'Repository URL contains placeholder values',
504
504
  );
@@ -508,7 +508,7 @@ describe('validateRepositoryUrl', () => {
508
508
  describe('無効なURL形式', () => {
509
509
  it('無効なURL形式を拒否する', () => {
510
510
  const result = validateRepositoryUrl('not-a-url');
511
- expect(result.isValid).toBe(false);
511
+ expect(result.success).toBe(false);
512
512
  expect(result.errors).toContain('Repository URL format is invalid');
513
513
  });
514
514
 
@@ -522,7 +522,7 @@ describe('validateRepositoryUrl', () => {
522
522
  // URLコンストラクタはスペースを自動エンコードするため、
523
523
  // GitHub形式チェックでは通過する可能性があります
524
524
  // このテストは実装の動作を反映して調整します
525
- expect(result.isValid).toBe(true); // URLエンコードされるため有効
525
+ expect(result.success).toBe(true); // URLエンコードされるため有効
526
526
  expect(result.errors).toHaveLength(0);
527
527
  });
528
528
  });
@@ -15,6 +15,18 @@ vi.mock('fs', () => ({
15
15
  writeFileSync: vi.fn(),
16
16
  }));
17
17
 
18
+ // safe-file-reader のモック(実際のreadFileSyncモックを使用するため)
19
+ vi.mock('../utils/safe-file-reader.js', async (importOriginal) => {
20
+ const mockFs = await import('fs');
21
+ return {
22
+ safeReadFileOrThrow: vi.fn((filePath: string, encoding: BufferEncoding = 'utf-8') => {
23
+ return (mockFs.readFileSync as ReturnType<typeof vi.fn>)(filePath, encoding);
24
+ }),
25
+ safeReadFile: vi.fn(),
26
+ safeReadJsonFile: vi.fn(),
27
+ };
28
+ });
29
+
18
30
  import {
19
31
  canArchiveSpec,
20
32
  archiveSpec,
@@ -61,7 +61,7 @@ describe('validatePhase', () => {
61
61
  const result = validatePhase('test-feature', 'requirements');
62
62
 
63
63
  // Assert
64
- expect(result.valid).toBe(true);
64
+ expect(result.success).toBe(true);
65
65
  expect(result.errors).toHaveLength(0);
66
66
  expect(result.phase).toBe('requirements');
67
67
  });
@@ -82,7 +82,7 @@ describe('validatePhase', () => {
82
82
  const result = validatePhase('test-feature', 'requirements');
83
83
 
84
84
  // Assert
85
- expect(result.valid).toBe(false);
85
+ expect(result.success).toBe(false);
86
86
  expect(result.errors).toContain(
87
87
  '❌ Confluenceページ(要件定義)が作成されていません',
88
88
  );
@@ -110,7 +110,7 @@ describe('validatePhase', () => {
110
110
  const result = validatePhase('test-feature', 'design');
111
111
 
112
112
  // Assert
113
- expect(result.valid).toBe(false);
113
+ expect(result.success).toBe(false);
114
114
  expect(result.errors).toContain(
115
115
  '❌ 要件定義が完了していません(前提条件)',
116
116
  );
@@ -139,7 +139,7 @@ describe('validatePhase', () => {
139
139
  const result = validatePhase('test-feature', 'tasks');
140
140
 
141
141
  // Assert
142
- expect(result.valid).toBe(false);
142
+ expect(result.success).toBe(false);
143
143
  expect(result.errors).toContain('❌ JIRA Epicが作成されていません');
144
144
  });
145
145
 
@@ -170,7 +170,7 @@ describe('validatePhase', () => {
170
170
  const result = validatePhase('test-feature', 'tasks');
171
171
 
172
172
  // Assert
173
- expect(result.valid).toBe(true); // 警告だけなのでvalid
173
+ expect(result.success).toBe(true); // 警告だけなのでvalid
174
174
  expect(result.warnings).toContain(
175
175
  '⚠️ tasks.mdに曜日表記(月、火、水...)が含まれていません',
176
176
  );
@@ -290,7 +290,7 @@ describe('validatePhase', () => {
290
290
  const result = validatePhase('test-feature', 'requirements');
291
291
 
292
292
  // Assert: エラーをスローせず、errors配列にエラーを含めて返す
293
- expect(result.valid).toBe(false);
293
+ expect(result.success).toBe(false);
294
294
  expect(result.errors).toContainEqual(
295
295
  expect.stringContaining('spec.json読み込みエラー'),
296
296
  );
@@ -0,0 +1,24 @@
1
+ # Build Scripts (ビルドスクリプト)
2
+
3
+ ## 目的
4
+
5
+ プロダクションビルドに必要なスクリプトを配置。
6
+
7
+ ## 配置するもの
8
+
9
+ - **copy-static-assets.js**: 静的ファイルのコピー
10
+ - `.kiro/settings/` 配下のテンプレートファイル
11
+ - その他のビルド時に必要な静的アセット
12
+ - **set-permissions.js**: 実行権限の設定
13
+ - ビルド成果物の権限設定
14
+
15
+ ## 実行タイミング
16
+
17
+ - `npm run build` 実行時
18
+ - `npm run postbuild` 実行時
19
+
20
+ ## 注意事項
21
+
22
+ - このディレクトリにはビルドに関連するスクリプトのみを配置
23
+ - プロダクションコードは `src/` 配下に配置
24
+ - 開発ツールは `scripts/dev-tools/` に配置
@@ -8,7 +8,7 @@ import { dirname, resolve, join } from 'path';
8
8
  import { fileURLToPath } from 'url';
9
9
 
10
10
  const __dirname = dirname(fileURLToPath(import.meta.url));
11
- const projectRoot = resolve(__dirname, '..');
11
+ const projectRoot = resolve(__dirname, '..', '..');
12
12
 
13
13
  /**
14
14
  * ファイルをコピーし、ディレクトリが存在しない場合は作成
@@ -11,7 +11,7 @@ import { fileURLToPath } from 'url';
11
11
  const __filename = fileURLToPath(import.meta.url);
12
12
  const __dirname = dirname(__filename);
13
13
 
14
- const cliPath = join(__dirname, '..', 'dist', 'src', 'cli.js');
14
+ const cliPath = join(__dirname, '..', '..', 'dist', 'src', 'cli.js');
15
15
 
16
16
  // Skip on Windows where chmod is not needed
17
17
  if (process.platform === 'win32') {