@sk8metal/michi-cli 0.14.1 → 0.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (623) hide show
  1. package/CHANGELOG.md +268 -2
  2. package/README.md +27 -2
  3. package/dist/scripts/config/config-schema.d.ts +5 -333
  4. package/dist/scripts/config/config-schema.d.ts.map +1 -1
  5. package/dist/scripts/config/config-schema.js +6 -233
  6. package/dist/scripts/config/config-schema.js.map +1 -1
  7. package/dist/scripts/config-global.d.ts.map +1 -1
  8. package/dist/scripts/config-global.js +3 -2
  9. package/dist/scripts/config-global.js.map +1 -1
  10. package/dist/scripts/confluence-sync.d.ts +5 -73
  11. package/dist/scripts/confluence-sync.d.ts.map +1 -1
  12. package/dist/scripts/confluence-sync.js +14 -392
  13. package/dist/scripts/confluence-sync.js.map +1 -1
  14. package/dist/scripts/constants/environments.d.ts +3 -30
  15. package/dist/scripts/constants/environments.d.ts.map +1 -1
  16. package/dist/scripts/constants/environments.js +3 -41
  17. package/dist/scripts/constants/environments.js.map +1 -1
  18. package/dist/scripts/constants/languages.d.ts +3 -20
  19. package/dist/scripts/constants/languages.d.ts.map +1 -1
  20. package/dist/scripts/constants/languages.js +3 -50
  21. package/dist/scripts/constants/languages.js.map +1 -1
  22. package/dist/scripts/constants/test-commands.d.ts +3 -33
  23. package/dist/scripts/constants/test-commands.d.ts.map +1 -1
  24. package/dist/scripts/constants/test-commands.js +3 -67
  25. package/dist/scripts/constants/test-commands.js.map +1 -1
  26. package/dist/scripts/dev-tools/mermaid-converter.d.ts.map +1 -0
  27. package/dist/scripts/dev-tools/mermaid-converter.js.map +1 -0
  28. package/dist/scripts/dev-tools/test-interactive.d.ts.map +1 -0
  29. package/dist/scripts/{test-interactive.js → dev-tools/test-interactive.js} +4 -3
  30. package/dist/scripts/dev-tools/test-interactive.js.map +1 -0
  31. package/dist/scripts/github-actions-client.d.ts +5 -75
  32. package/dist/scripts/github-actions-client.d.ts.map +1 -1
  33. package/dist/scripts/github-actions-client.js +4 -178
  34. package/dist/scripts/github-actions-client.js.map +1 -1
  35. package/dist/scripts/jira-sync.d.ts +3 -121
  36. package/dist/scripts/jira-sync.d.ts.map +1 -1
  37. package/dist/scripts/jira-sync.js +5 -879
  38. package/dist/scripts/jira-sync.js.map +1 -1
  39. package/dist/scripts/markdown-to-confluence.d.ts.map +1 -1
  40. package/dist/scripts/markdown-to-confluence.js +2 -2
  41. package/dist/scripts/markdown-to-confluence.js.map +1 -1
  42. package/dist/scripts/multi-project-estimate.d.ts.map +1 -1
  43. package/dist/scripts/multi-project-estimate.js +3 -2
  44. package/dist/scripts/multi-project-estimate.js.map +1 -1
  45. package/dist/scripts/phase-runner.d.ts.map +1 -1
  46. package/dist/scripts/phase-runner.js +34 -18
  47. package/dist/scripts/phase-runner.js.map +1 -1
  48. package/dist/scripts/pre-flight-check.d.ts.map +1 -1
  49. package/dist/scripts/pre-flight-check.js +27 -11
  50. package/dist/scripts/pre-flight-check.js.map +1 -1
  51. package/dist/scripts/template/multi-repo-renderer.js +2 -2
  52. package/dist/scripts/template/multi-repo-renderer.js.map +1 -1
  53. package/dist/scripts/test-execution-generator.d.ts.map +1 -1
  54. package/dist/scripts/test-execution-generator.js +5 -4
  55. package/dist/scripts/test-execution-generator.js.map +1 -1
  56. package/dist/scripts/utils/aidlc-parser.d.ts +5 -82
  57. package/dist/scripts/utils/aidlc-parser.d.ts.map +1 -1
  58. package/dist/scripts/utils/aidlc-parser.js +4 -204
  59. package/dist/scripts/utils/aidlc-parser.js.map +1 -1
  60. package/dist/scripts/utils/ci-generator.d.ts.map +1 -1
  61. package/dist/scripts/utils/ci-generator.js +4 -3
  62. package/dist/scripts/utils/ci-generator.js.map +1 -1
  63. package/dist/scripts/utils/config-loader.d.ts.map +1 -1
  64. package/dist/scripts/utils/config-loader.js +46 -49
  65. package/dist/scripts/utils/config-loader.js.map +1 -1
  66. package/dist/scripts/utils/config-validator.d.ts +9 -10
  67. package/dist/scripts/utils/config-validator.d.ts.map +1 -1
  68. package/dist/scripts/utils/config-validator.js +68 -70
  69. package/dist/scripts/utils/config-validator.js.map +1 -1
  70. package/dist/scripts/utils/docker-requirement-detector.d.ts.map +1 -1
  71. package/dist/scripts/utils/docker-requirement-detector.js +5 -4
  72. package/dist/scripts/utils/docker-requirement-detector.js.map +1 -1
  73. package/dist/scripts/utils/env-config.d.ts.map +1 -1
  74. package/dist/scripts/utils/env-config.js +55 -38
  75. package/dist/scripts/utils/env-config.js.map +1 -1
  76. package/dist/scripts/utils/feature-name-validator.d.ts +4 -9
  77. package/dist/scripts/utils/feature-name-validator.d.ts.map +1 -1
  78. package/dist/scripts/utils/feature-name-validator.js +12 -21
  79. package/dist/scripts/utils/feature-name-validator.js.map +1 -1
  80. package/dist/scripts/utils/interactive-helpers.d.ts +5 -29
  81. package/dist/scripts/utils/interactive-helpers.d.ts.map +1 -1
  82. package/dist/scripts/utils/interactive-helpers.js +5 -89
  83. package/dist/scripts/utils/interactive-helpers.js.map +1 -1
  84. package/dist/scripts/utils/language-detector.d.ts.map +1 -1
  85. package/dist/scripts/utils/language-detector.js +4 -3
  86. package/dist/scripts/utils/language-detector.js.map +1 -1
  87. package/dist/scripts/utils/markdown-parser.d.ts +6 -52
  88. package/dist/scripts/utils/markdown-parser.d.ts.map +1 -1
  89. package/dist/scripts/utils/markdown-parser.js +5 -286
  90. package/dist/scripts/utils/markdown-parser.js.map +1 -1
  91. package/dist/scripts/utils/multi-repo-validator.d.ts +9 -10
  92. package/dist/scripts/utils/multi-repo-validator.d.ts.map +1 -1
  93. package/dist/scripts/utils/multi-repo-validator.js +15 -17
  94. package/dist/scripts/utils/multi-repo-validator.js.map +1 -1
  95. package/dist/scripts/utils/project-analyzer.d.ts +120 -0
  96. package/dist/scripts/utils/project-analyzer.d.ts.map +1 -0
  97. package/dist/scripts/utils/project-analyzer.js +358 -0
  98. package/dist/scripts/utils/project-analyzer.js.map +1 -0
  99. package/dist/scripts/utils/project-detector.d.ts.map +1 -1
  100. package/dist/scripts/utils/project-detector.js +6 -5
  101. package/dist/scripts/utils/project-detector.js.map +1 -1
  102. package/dist/scripts/utils/project-finder.d.ts +1 -21
  103. package/dist/scripts/utils/project-finder.d.ts.map +1 -1
  104. package/dist/scripts/utils/project-finder.js +2 -121
  105. package/dist/scripts/utils/project-finder.js.map +1 -1
  106. package/dist/scripts/utils/project-meta.d.ts +4 -27
  107. package/dist/scripts/utils/project-meta.d.ts.map +1 -1
  108. package/dist/scripts/utils/project-meta.js +3 -67
  109. package/dist/scripts/utils/project-meta.js.map +1 -1
  110. package/dist/scripts/utils/safe-file-reader.d.ts +84 -0
  111. package/dist/scripts/utils/safe-file-reader.d.ts.map +1 -0
  112. package/dist/scripts/utils/safe-file-reader.js +122 -0
  113. package/dist/scripts/utils/safe-file-reader.js.map +1 -0
  114. package/dist/scripts/utils/security-validator.d.ts +8 -19
  115. package/dist/scripts/utils/security-validator.d.ts.map +1 -1
  116. package/dist/scripts/utils/security-validator.js +28 -58
  117. package/dist/scripts/utils/security-validator.js.map +1 -1
  118. package/dist/scripts/utils/spec-archiver.d.ts.map +1 -1
  119. package/dist/scripts/utils/spec-archiver.js +7 -6
  120. package/dist/scripts/utils/spec-archiver.js.map +1 -1
  121. package/dist/scripts/utils/spec-updater.d.ts.map +1 -1
  122. package/dist/scripts/utils/spec-updater.js +10 -7
  123. package/dist/scripts/utils/spec-updater.js.map +1 -1
  124. package/dist/scripts/utils/tasks-converter.js +2 -2
  125. package/dist/scripts/utils/tasks-converter.js.map +1 -1
  126. package/dist/scripts/utils/tasks-format-validator.js +4 -4
  127. package/dist/scripts/utils/tasks-format-validator.js.map +1 -1
  128. package/dist/scripts/utils/template-applier.d.ts.map +1 -1
  129. package/dist/scripts/utils/template-applier.js +4 -3
  130. package/dist/scripts/utils/template-applier.js.map +1 -1
  131. package/dist/scripts/utils/types/validation.d.ts +57 -0
  132. package/dist/scripts/utils/types/validation.d.ts.map +1 -0
  133. package/dist/scripts/utils/types/validation.js +50 -0
  134. package/dist/scripts/utils/types/validation.js.map +1 -0
  135. package/dist/scripts/validate-phase.d.ts +6 -1
  136. package/dist/scripts/validate-phase.d.ts.map +1 -1
  137. package/dist/scripts/validate-phase.js +42 -20
  138. package/dist/scripts/validate-phase.js.map +1 -1
  139. package/dist/scripts/workflow-orchestrator.d.ts +4 -40
  140. package/dist/scripts/workflow-orchestrator.d.ts.map +1 -1
  141. package/dist/scripts/workflow-orchestrator.js +7 -194
  142. package/dist/scripts/workflow-orchestrator.js.map +1 -1
  143. package/dist/src/application/interfaces/config-provider.d.ts +89 -0
  144. package/dist/src/application/interfaces/config-provider.d.ts.map +1 -0
  145. package/dist/src/application/interfaces/config-provider.js +8 -0
  146. package/dist/src/application/interfaces/config-provider.js.map +1 -0
  147. package/dist/src/application/interfaces/external-api.d.ts +80 -0
  148. package/dist/src/application/interfaces/external-api.d.ts.map +1 -0
  149. package/dist/src/application/interfaces/external-api.js +8 -0
  150. package/dist/src/application/interfaces/external-api.js.map +1 -0
  151. package/dist/src/application/interfaces/spec-repository.d.ts +52 -0
  152. package/dist/src/application/interfaces/spec-repository.d.ts.map +1 -0
  153. package/dist/src/application/interfaces/spec-repository.js +8 -0
  154. package/dist/src/application/interfaces/spec-repository.js.map +1 -0
  155. package/dist/src/application/services/spec-service.d.ts +49 -0
  156. package/dist/src/application/services/spec-service.d.ts.map +1 -0
  157. package/dist/src/application/services/spec-service.js +94 -0
  158. package/dist/src/application/services/spec-service.js.map +1 -0
  159. package/dist/src/application/services/workflow-service.d.ts +58 -0
  160. package/dist/src/application/services/workflow-service.d.ts.map +1 -0
  161. package/dist/src/application/services/workflow-service.js +125 -0
  162. package/dist/src/application/services/workflow-service.js.map +1 -0
  163. package/dist/src/application/templates/processor.d.ts +31 -0
  164. package/dist/src/application/templates/processor.d.ts.map +1 -0
  165. package/dist/src/application/templates/processor.js +58 -0
  166. package/dist/src/application/templates/processor.js.map +1 -0
  167. package/dist/src/application/use-cases/spec/archive-spec.d.ts +34 -0
  168. package/dist/src/application/use-cases/spec/archive-spec.d.ts.map +1 -0
  169. package/dist/src/application/use-cases/spec/archive-spec.js +56 -0
  170. package/dist/src/application/use-cases/spec/archive-spec.js.map +1 -0
  171. package/dist/src/application/use-cases/spec/generate-design.d.ts +34 -0
  172. package/dist/src/application/use-cases/spec/generate-design.d.ts.map +1 -0
  173. package/dist/src/application/use-cases/spec/generate-design.js +58 -0
  174. package/dist/src/application/use-cases/spec/generate-design.js.map +1 -0
  175. package/dist/src/application/use-cases/spec/generate-requirements.d.ts +34 -0
  176. package/dist/src/application/use-cases/spec/generate-requirements.d.ts.map +1 -0
  177. package/dist/src/application/use-cases/spec/generate-requirements.js +58 -0
  178. package/dist/src/application/use-cases/spec/generate-requirements.js.map +1 -0
  179. package/dist/src/application/use-cases/spec/generate-tasks.d.ts +34 -0
  180. package/dist/src/application/use-cases/spec/generate-tasks.d.ts.map +1 -0
  181. package/dist/src/application/use-cases/spec/generate-tasks.js +58 -0
  182. package/dist/src/application/use-cases/spec/generate-tasks.js.map +1 -0
  183. package/dist/src/application/use-cases/spec/init-spec.d.ts +48 -0
  184. package/dist/src/application/use-cases/spec/init-spec.d.ts.map +1 -0
  185. package/dist/src/application/use-cases/spec/init-spec.js +121 -0
  186. package/dist/src/application/use-cases/spec/init-spec.js.map +1 -0
  187. package/dist/src/cli.d.ts +6 -7
  188. package/dist/src/cli.d.ts.map +1 -1
  189. package/dist/src/cli.js +6 -745
  190. package/dist/src/cli.js.map +1 -1
  191. package/dist/src/commands/config-validate.js +2 -2
  192. package/dist/src/commands/init.d.ts +6 -21
  193. package/dist/src/commands/init.d.ts.map +1 -1
  194. package/dist/src/commands/init.js +5 -508
  195. package/dist/src/commands/init.js.map +1 -1
  196. package/dist/src/commands/migrate.js +4 -3
  197. package/dist/src/commands/migrate.js.map +1 -1
  198. package/dist/src/commands/spec-archive.d.ts +6 -13
  199. package/dist/src/commands/spec-archive.d.ts.map +1 -1
  200. package/dist/src/commands/spec-archive.js +5 -36
  201. package/dist/src/commands/spec-archive.js.map +1 -1
  202. package/dist/src/commands/spec-list.d.ts +6 -11
  203. package/dist/src/commands/spec-list.d.ts.map +1 -1
  204. package/dist/src/commands/spec-list.js +5 -51
  205. package/dist/src/commands/spec-list.js.map +1 -1
  206. package/dist/src/domain/constants/approval.d.ts +18 -0
  207. package/dist/src/domain/constants/approval.d.ts.map +1 -0
  208. package/dist/src/domain/constants/approval.js +23 -0
  209. package/dist/src/domain/constants/approval.js.map +1 -0
  210. package/dist/src/domain/constants/environments.d.ts +33 -0
  211. package/dist/src/domain/constants/environments.d.ts.map +1 -0
  212. package/dist/src/domain/constants/environments.js +44 -0
  213. package/dist/src/domain/constants/environments.js.map +1 -0
  214. package/dist/src/domain/constants/index.d.ts +12 -0
  215. package/dist/src/domain/constants/index.d.ts.map +1 -0
  216. package/dist/src/domain/constants/index.js +18 -0
  217. package/dist/src/domain/constants/index.js.map +1 -0
  218. package/dist/src/domain/constants/languages.d.ts +23 -0
  219. package/dist/src/domain/constants/languages.d.ts.map +1 -0
  220. package/dist/src/domain/constants/languages.js +53 -0
  221. package/dist/src/domain/constants/languages.js.map +1 -0
  222. package/dist/src/domain/constants/phases.d.ts +32 -0
  223. package/dist/src/domain/constants/phases.d.ts.map +1 -0
  224. package/dist/src/domain/constants/phases.js +52 -0
  225. package/dist/src/domain/constants/phases.js.map +1 -0
  226. package/dist/src/domain/constants/test-commands.d.ts +36 -0
  227. package/dist/src/domain/constants/test-commands.d.ts.map +1 -0
  228. package/dist/src/domain/constants/test-commands.js +70 -0
  229. package/dist/src/domain/constants/test-commands.js.map +1 -0
  230. package/dist/src/domain/constants/validation-rules.d.ts +32 -0
  231. package/dist/src/domain/constants/validation-rules.d.ts.map +1 -0
  232. package/dist/src/domain/constants/validation-rules.js +51 -0
  233. package/dist/src/domain/constants/validation-rules.js.map +1 -0
  234. package/dist/src/domain/entities/spec.d.ts +66 -0
  235. package/dist/src/domain/entities/spec.d.ts.map +1 -0
  236. package/dist/src/domain/entities/spec.js +112 -0
  237. package/dist/src/domain/entities/spec.js.map +1 -0
  238. package/dist/src/domain/entities/task.d.ts +43 -0
  239. package/dist/src/domain/entities/task.d.ts.map +1 -0
  240. package/dist/src/domain/entities/task.js +65 -0
  241. package/dist/src/domain/entities/task.js.map +1 -0
  242. package/dist/src/domain/services/spec-validator.d.ts +46 -0
  243. package/dist/src/domain/services/spec-validator.d.ts.map +1 -0
  244. package/dist/src/domain/services/spec-validator.js +99 -0
  245. package/dist/src/domain/services/spec-validator.js.map +1 -0
  246. package/dist/src/domain/value-objects/feature-name.d.ts +24 -0
  247. package/dist/src/domain/value-objects/feature-name.d.ts.map +1 -0
  248. package/dist/src/domain/value-objects/feature-name.js +36 -0
  249. package/dist/src/domain/value-objects/feature-name.js.map +1 -0
  250. package/dist/src/domain/value-objects/index.d.ts +7 -0
  251. package/dist/src/domain/value-objects/index.d.ts.map +1 -0
  252. package/dist/src/domain/value-objects/index.js +7 -0
  253. package/dist/src/domain/value-objects/index.js.map +1 -0
  254. package/dist/src/infrastructure/config/index.d.ts +5 -0
  255. package/dist/src/infrastructure/config/index.d.ts.map +1 -0
  256. package/dist/src/infrastructure/config/index.js +6 -0
  257. package/dist/src/infrastructure/config/index.js.map +1 -0
  258. package/dist/src/infrastructure/config/schema.d.ts +337 -0
  259. package/dist/src/infrastructure/config/schema.d.ts.map +1 -0
  260. package/dist/src/infrastructure/config/schema.js +237 -0
  261. package/dist/src/infrastructure/config/schema.js.map +1 -0
  262. package/dist/src/infrastructure/external-apis/atlassian/confluence/approval.d.ts +14 -0
  263. package/dist/src/infrastructure/external-apis/atlassian/confluence/approval.d.ts.map +1 -0
  264. package/dist/src/infrastructure/external-apis/atlassian/confluence/approval.js +102 -0
  265. package/dist/src/infrastructure/external-apis/atlassian/confluence/approval.js.map +1 -0
  266. package/dist/src/infrastructure/external-apis/atlassian/confluence/client.d.ts +23 -0
  267. package/dist/src/infrastructure/external-apis/atlassian/confluence/client.d.ts.map +1 -0
  268. package/dist/src/infrastructure/external-apis/atlassian/confluence/client.js +192 -0
  269. package/dist/src/infrastructure/external-apis/atlassian/confluence/client.js.map +1 -0
  270. package/dist/src/infrastructure/external-apis/atlassian/confluence/hierarchy.d.ts +48 -0
  271. package/dist/src/infrastructure/external-apis/atlassian/confluence/hierarchy.d.ts.map +1 -0
  272. package/dist/src/infrastructure/external-apis/atlassian/confluence/hierarchy.js +531 -0
  273. package/dist/src/infrastructure/external-apis/atlassian/confluence/hierarchy.js.map +1 -0
  274. package/dist/src/infrastructure/external-apis/atlassian/confluence/index.d.ts +10 -0
  275. package/dist/src/infrastructure/external-apis/atlassian/confluence/index.d.ts.map +1 -0
  276. package/dist/src/infrastructure/external-apis/atlassian/confluence/index.js +12 -0
  277. package/dist/src/infrastructure/external-apis/atlassian/confluence/index.js.map +1 -0
  278. package/dist/src/infrastructure/external-apis/atlassian/confluence/sync-service.d.ts +13 -0
  279. package/dist/src/infrastructure/external-apis/atlassian/confluence/sync-service.d.ts.map +1 -0
  280. package/dist/src/infrastructure/external-apis/atlassian/confluence/sync-service.js +129 -0
  281. package/dist/src/infrastructure/external-apis/atlassian/confluence/sync-service.js.map +1 -0
  282. package/dist/src/infrastructure/external-apis/atlassian/confluence/types.d.ts +113 -0
  283. package/dist/src/infrastructure/external-apis/atlassian/confluence/types.d.ts.map +1 -0
  284. package/dist/src/infrastructure/external-apis/atlassian/confluence/types.js +5 -0
  285. package/dist/src/infrastructure/external-apis/atlassian/confluence/types.js.map +1 -0
  286. package/dist/src/infrastructure/external-apis/atlassian/jira/adf-converter.d.ts +15 -0
  287. package/dist/src/infrastructure/external-apis/atlassian/jira/adf-converter.d.ts.map +1 -0
  288. package/dist/src/infrastructure/external-apis/atlassian/jira/adf-converter.js +141 -0
  289. package/dist/src/infrastructure/external-apis/atlassian/jira/adf-converter.js.map +1 -0
  290. package/dist/src/infrastructure/external-apis/atlassian/jira/client.d.ts +50 -0
  291. package/dist/src/infrastructure/external-apis/atlassian/jira/client.d.ts.map +1 -0
  292. package/dist/src/infrastructure/external-apis/atlassian/jira/client.js +226 -0
  293. package/dist/src/infrastructure/external-apis/atlassian/jira/client.js.map +1 -0
  294. package/dist/src/infrastructure/external-apis/atlassian/jira/index.d.ts +12 -0
  295. package/dist/src/infrastructure/external-apis/atlassian/jira/index.d.ts.map +1 -0
  296. package/dist/src/infrastructure/external-apis/atlassian/jira/index.js +16 -0
  297. package/dist/src/infrastructure/external-apis/atlassian/jira/index.js.map +1 -0
  298. package/dist/src/infrastructure/external-apis/atlassian/jira/issue-builder.d.ts +49 -0
  299. package/dist/src/infrastructure/external-apis/atlassian/jira/issue-builder.d.ts.map +1 -0
  300. package/dist/src/infrastructure/external-apis/atlassian/jira/issue-builder.js +165 -0
  301. package/dist/src/infrastructure/external-apis/atlassian/jira/issue-builder.js.map +1 -0
  302. package/dist/src/infrastructure/external-apis/atlassian/jira/status-mapper.d.ts +14 -0
  303. package/dist/src/infrastructure/external-apis/atlassian/jira/status-mapper.d.ts.map +1 -0
  304. package/dist/src/infrastructure/external-apis/atlassian/jira/status-mapper.js +110 -0
  305. package/dist/src/infrastructure/external-apis/atlassian/jira/status-mapper.js.map +1 -0
  306. package/dist/src/infrastructure/external-apis/atlassian/jira/sync-service.d.ts +32 -0
  307. package/dist/src/infrastructure/external-apis/atlassian/jira/sync-service.d.ts.map +1 -0
  308. package/dist/src/infrastructure/external-apis/atlassian/jira/sync-service.js +284 -0
  309. package/dist/src/infrastructure/external-apis/atlassian/jira/sync-service.js.map +1 -0
  310. package/dist/src/infrastructure/external-apis/atlassian/jira/types.d.ts +114 -0
  311. package/dist/src/infrastructure/external-apis/atlassian/jira/types.d.ts.map +1 -0
  312. package/dist/src/infrastructure/external-apis/atlassian/jira/types.js +7 -0
  313. package/dist/src/infrastructure/external-apis/atlassian/jira/types.js.map +1 -0
  314. package/dist/src/infrastructure/external-apis/github/client.d.ts +25 -0
  315. package/dist/src/infrastructure/external-apis/github/client.d.ts.map +1 -0
  316. package/dist/src/infrastructure/external-apis/github/client.js +109 -0
  317. package/dist/src/infrastructure/external-apis/github/client.js.map +1 -0
  318. package/dist/src/infrastructure/external-apis/github/index.d.ts +7 -0
  319. package/dist/src/infrastructure/external-apis/github/index.d.ts.map +1 -0
  320. package/dist/src/infrastructure/external-apis/github/index.js +8 -0
  321. package/dist/src/infrastructure/external-apis/github/index.js.map +1 -0
  322. package/dist/src/infrastructure/external-apis/github/types.d.ts +69 -0
  323. package/dist/src/infrastructure/external-apis/github/types.d.ts.map +1 -0
  324. package/dist/src/infrastructure/external-apis/github/types.js +5 -0
  325. package/dist/src/infrastructure/external-apis/github/types.js.map +1 -0
  326. package/dist/src/infrastructure/external-apis/github/utils.d.ts +18 -0
  327. package/dist/src/infrastructure/external-apis/github/utils.d.ts.map +1 -0
  328. package/dist/src/infrastructure/external-apis/github/utils.js +84 -0
  329. package/dist/src/infrastructure/external-apis/github/utils.js.map +1 -0
  330. package/dist/src/infrastructure/filesystem/index.d.ts +6 -0
  331. package/dist/src/infrastructure/filesystem/index.d.ts.map +1 -0
  332. package/dist/src/infrastructure/filesystem/index.js +5 -0
  333. package/dist/src/infrastructure/filesystem/index.js.map +1 -0
  334. package/dist/src/infrastructure/filesystem/project-meta.d.ts +32 -0
  335. package/dist/src/infrastructure/filesystem/project-meta.d.ts.map +1 -0
  336. package/dist/src/infrastructure/filesystem/project-meta.js +75 -0
  337. package/dist/src/infrastructure/filesystem/project-meta.js.map +1 -0
  338. package/dist/src/infrastructure/parsers/aidlc-parser.d.ts +86 -0
  339. package/dist/src/infrastructure/parsers/aidlc-parser.d.ts.map +1 -0
  340. package/dist/src/infrastructure/parsers/aidlc-parser.js +208 -0
  341. package/dist/src/infrastructure/parsers/aidlc-parser.js.map +1 -0
  342. package/dist/src/infrastructure/parsers/index.d.ts +8 -0
  343. package/dist/src/infrastructure/parsers/index.d.ts.map +1 -0
  344. package/dist/src/infrastructure/parsers/index.js +6 -0
  345. package/dist/src/infrastructure/parsers/index.js.map +1 -0
  346. package/dist/src/infrastructure/parsers/markdown-parser.d.ts +51 -0
  347. package/dist/src/infrastructure/parsers/markdown-parser.d.ts.map +1 -0
  348. package/dist/src/infrastructure/parsers/markdown-parser.js +253 -0
  349. package/dist/src/infrastructure/parsers/markdown-parser.js.map +1 -0
  350. package/dist/src/presentation/cli/config.d.ts +12 -0
  351. package/dist/src/presentation/cli/config.d.ts.map +1 -0
  352. package/dist/src/presentation/cli/config.js +22 -0
  353. package/dist/src/presentation/cli/config.js.map +1 -0
  354. package/dist/src/presentation/cli/version.d.ts +10 -0
  355. package/dist/src/presentation/cli/version.d.ts.map +1 -0
  356. package/dist/src/presentation/cli/version.js +41 -0
  357. package/dist/src/presentation/cli/version.js.map +1 -0
  358. package/dist/src/presentation/cli.d.ts +22 -0
  359. package/dist/src/presentation/cli.d.ts.map +1 -0
  360. package/dist/src/presentation/cli.js +85 -0
  361. package/dist/src/presentation/cli.js.map +1 -0
  362. package/dist/src/presentation/commands/config/register.d.ts +11 -0
  363. package/dist/src/presentation/commands/config/register.d.ts.map +1 -0
  364. package/dist/src/presentation/commands/config/register.js +98 -0
  365. package/dist/src/presentation/commands/config/register.js.map +1 -0
  366. package/dist/src/presentation/commands/confluence/register.d.ts +11 -0
  367. package/dist/src/presentation/commands/confluence/register.d.ts.map +1 -0
  368. package/dist/src/presentation/commands/confluence/register.js +32 -0
  369. package/dist/src/presentation/commands/confluence/register.js.map +1 -0
  370. package/dist/src/presentation/commands/confluence/sync.d.ts +17 -0
  371. package/dist/src/presentation/commands/confluence/sync.d.ts.map +1 -0
  372. package/dist/src/presentation/commands/confluence/sync.js +25 -0
  373. package/dist/src/presentation/commands/confluence/sync.js.map +1 -0
  374. package/dist/src/presentation/commands/init/handler.d.ts +10 -0
  375. package/dist/src/presentation/commands/init/handler.d.ts.map +1 -0
  376. package/dist/src/presentation/commands/init/handler.js +64 -0
  377. package/dist/src/presentation/commands/init/handler.js.map +1 -0
  378. package/dist/src/presentation/commands/init/prompts.d.ts +41 -0
  379. package/dist/src/presentation/commands/init/prompts.d.ts.map +1 -0
  380. package/dist/src/presentation/commands/init/prompts.js +119 -0
  381. package/dist/src/presentation/commands/init/prompts.js.map +1 -0
  382. package/dist/src/presentation/commands/init/register.d.ts +11 -0
  383. package/dist/src/presentation/commands/init/register.d.ts.map +1 -0
  384. package/dist/src/presentation/commands/init/register.js +141 -0
  385. package/dist/src/presentation/commands/init/register.js.map +1 -0
  386. package/dist/src/presentation/commands/init/setup.d.ts +26 -0
  387. package/dist/src/presentation/commands/init/setup.d.ts.map +1 -0
  388. package/dist/src/presentation/commands/init/setup.js +196 -0
  389. package/dist/src/presentation/commands/init/setup.js.map +1 -0
  390. package/dist/src/presentation/commands/init/templates.d.ts +19 -0
  391. package/dist/src/presentation/commands/init/templates.d.ts.map +1 -0
  392. package/dist/src/presentation/commands/init/templates.js +140 -0
  393. package/dist/src/presentation/commands/init/templates.js.map +1 -0
  394. package/dist/src/presentation/commands/init/validation.d.ts +21 -0
  395. package/dist/src/presentation/commands/init/validation.d.ts.map +1 -0
  396. package/dist/src/presentation/commands/init/validation.js +65 -0
  397. package/dist/src/presentation/commands/init/validation.js.map +1 -0
  398. package/dist/src/presentation/commands/jira/register.d.ts +11 -0
  399. package/dist/src/presentation/commands/jira/register.d.ts.map +1 -0
  400. package/dist/src/presentation/commands/jira/register.js +75 -0
  401. package/dist/src/presentation/commands/jira/register.js.map +1 -0
  402. package/dist/src/presentation/commands/jira/sync.d.ts +29 -0
  403. package/dist/src/presentation/commands/jira/sync.d.ts.map +1 -0
  404. package/dist/src/presentation/commands/jira/sync.js +37 -0
  405. package/dist/src/presentation/commands/jira/sync.js.map +1 -0
  406. package/dist/src/{commands/multi-repo-add-repo.d.ts → presentation/commands/multi-repo/add-repo.d.ts} +1 -1
  407. package/dist/src/presentation/commands/multi-repo/add-repo.d.ts.map +1 -0
  408. package/dist/src/{commands/multi-repo-add-repo.js → presentation/commands/multi-repo/add-repo.js} +4 -4
  409. package/dist/src/presentation/commands/multi-repo/add-repo.js.map +1 -0
  410. package/dist/src/{commands/multi-repo-ci-status.d.ts → presentation/commands/multi-repo/ci-status.d.ts} +2 -2
  411. package/dist/src/presentation/commands/multi-repo/ci-status.d.ts.map +1 -0
  412. package/dist/src/{commands/multi-repo-ci-status.js → presentation/commands/multi-repo/ci-status.js} +95 -81
  413. package/dist/src/presentation/commands/multi-repo/ci-status.js.map +1 -0
  414. package/dist/src/{commands/multi-repo-confluence-sync.d.ts → presentation/commands/multi-repo/confluence-sync.d.ts} +1 -1
  415. package/dist/src/presentation/commands/multi-repo/confluence-sync.d.ts.map +1 -0
  416. package/dist/src/{commands/multi-repo-confluence-sync.js → presentation/commands/multi-repo/confluence-sync.js} +7 -6
  417. package/dist/src/presentation/commands/multi-repo/confluence-sync.js.map +1 -0
  418. package/dist/src/{commands/multi-repo-init.d.ts → presentation/commands/multi-repo/init.d.ts} +1 -1
  419. package/dist/src/presentation/commands/multi-repo/init.d.ts.map +1 -0
  420. package/dist/src/{commands/multi-repo-init.js → presentation/commands/multi-repo/init.js} +6 -6
  421. package/dist/src/presentation/commands/multi-repo/init.js.map +1 -0
  422. package/dist/src/{commands/multi-repo-list.d.ts → presentation/commands/multi-repo/list.d.ts} +1 -1
  423. package/dist/src/presentation/commands/multi-repo/list.d.ts.map +1 -0
  424. package/dist/src/{commands/multi-repo-list.js → presentation/commands/multi-repo/list.js} +2 -2
  425. package/dist/src/presentation/commands/multi-repo/list.js.map +1 -0
  426. package/dist/src/presentation/commands/multi-repo/register.d.ts +12 -0
  427. package/dist/src/presentation/commands/multi-repo/register.d.ts.map +1 -0
  428. package/dist/src/presentation/commands/multi-repo/register.js +249 -0
  429. package/dist/src/presentation/commands/multi-repo/register.js.map +1 -0
  430. package/dist/src/{commands/multi-repo-test.d.ts → presentation/commands/multi-repo/test.d.ts} +1 -1
  431. package/dist/src/presentation/commands/multi-repo/test.d.ts.map +1 -0
  432. package/dist/src/{commands/multi-repo-test.js → presentation/commands/multi-repo/test.js} +4 -4
  433. package/dist/src/presentation/commands/multi-repo/test.js.map +1 -0
  434. package/dist/src/presentation/commands/phase/register.d.ts +11 -0
  435. package/dist/src/presentation/commands/phase/register.d.ts.map +1 -0
  436. package/dist/src/presentation/commands/phase/register.js +97 -0
  437. package/dist/src/presentation/commands/phase/register.js.map +1 -0
  438. package/dist/src/presentation/commands/spec/archive.d.ts +17 -0
  439. package/dist/src/presentation/commands/spec/archive.d.ts.map +1 -0
  440. package/dist/src/presentation/commands/spec/archive.js +40 -0
  441. package/dist/src/presentation/commands/spec/archive.js.map +1 -0
  442. package/dist/src/presentation/commands/spec/list.d.ts +15 -0
  443. package/dist/src/presentation/commands/spec/list.d.ts.map +1 -0
  444. package/dist/src/presentation/commands/spec/list.js +55 -0
  445. package/dist/src/presentation/commands/spec/list.js.map +1 -0
  446. package/dist/src/presentation/commands/spec/register.d.ts +11 -0
  447. package/dist/src/presentation/commands/spec/register.d.ts.map +1 -0
  448. package/dist/src/presentation/commands/spec/register.js +45 -0
  449. package/dist/src/presentation/commands/spec/register.js.map +1 -0
  450. package/dist/src/presentation/commands/workflow/orchestrator.d.ts +50 -0
  451. package/dist/src/presentation/commands/workflow/orchestrator.d.ts.map +1 -0
  452. package/dist/src/presentation/commands/workflow/orchestrator.js +174 -0
  453. package/dist/src/presentation/commands/workflow/orchestrator.js.map +1 -0
  454. package/dist/src/presentation/commands/workflow/register.d.ts +11 -0
  455. package/dist/src/presentation/commands/workflow/register.d.ts.map +1 -0
  456. package/dist/src/presentation/commands/workflow/register.js +58 -0
  457. package/dist/src/presentation/commands/workflow/register.js.map +1 -0
  458. package/dist/src/presentation/formatters/error-formatter.d.ts +79 -0
  459. package/dist/src/presentation/formatters/error-formatter.d.ts.map +1 -0
  460. package/dist/src/presentation/formatters/error-formatter.js +150 -0
  461. package/dist/src/presentation/formatters/error-formatter.js.map +1 -0
  462. package/dist/src/presentation/formatters/index.d.ts +8 -0
  463. package/dist/src/presentation/formatters/index.d.ts.map +1 -0
  464. package/dist/src/presentation/formatters/index.js +11 -0
  465. package/dist/src/presentation/formatters/index.js.map +1 -0
  466. package/dist/src/presentation/formatters/output-formatter.d.ts +98 -0
  467. package/dist/src/presentation/formatters/output-formatter.d.ts.map +1 -0
  468. package/dist/src/presentation/formatters/output-formatter.js +165 -0
  469. package/dist/src/presentation/formatters/output-formatter.js.map +1 -0
  470. package/dist/src/presentation/formatters/progress-formatter.d.ts +121 -0
  471. package/dist/src/presentation/formatters/progress-formatter.d.ts.map +1 -0
  472. package/dist/src/presentation/formatters/progress-formatter.js +235 -0
  473. package/dist/src/presentation/formatters/progress-formatter.js.map +1 -0
  474. package/dist/src/presentation/interactive/config/env-wizard.d.ts +9 -0
  475. package/dist/src/presentation/interactive/config/env-wizard.d.ts.map +1 -0
  476. package/dist/src/presentation/interactive/config/env-wizard.js +193 -0
  477. package/dist/src/presentation/interactive/config/env-wizard.js.map +1 -0
  478. package/dist/src/presentation/interactive/config/index.d.ts +5 -0
  479. package/dist/src/presentation/interactive/config/index.d.ts.map +1 -0
  480. package/dist/src/presentation/interactive/config/index.js +5 -0
  481. package/dist/src/presentation/interactive/config/index.js.map +1 -0
  482. package/dist/src/presentation/interactive/confirmation.d.ts +24 -0
  483. package/dist/src/presentation/interactive/confirmation.d.ts.map +1 -0
  484. package/dist/src/presentation/interactive/confirmation.js +54 -0
  485. package/dist/src/presentation/interactive/confirmation.js.map +1 -0
  486. package/dist/src/presentation/interactive/index.d.ts +8 -0
  487. package/dist/src/presentation/interactive/index.d.ts.map +1 -0
  488. package/dist/src/presentation/interactive/index.js +11 -0
  489. package/dist/src/presentation/interactive/index.js.map +1 -0
  490. package/dist/src/presentation/interactive/prompts.d.ts +30 -0
  491. package/dist/src/presentation/interactive/prompts.d.ts.map +1 -0
  492. package/dist/src/presentation/interactive/prompts.js +69 -0
  493. package/dist/src/presentation/interactive/prompts.js.map +1 -0
  494. package/dist/src/presentation/interactive/selection.d.ts +31 -0
  495. package/dist/src/presentation/interactive/selection.d.ts.map +1 -0
  496. package/dist/src/presentation/interactive/selection.js +138 -0
  497. package/dist/src/presentation/interactive/selection.js.map +1 -0
  498. package/dist/src/shared/types/errors.d.ts +132 -0
  499. package/dist/src/shared/types/errors.d.ts.map +1 -0
  500. package/dist/src/shared/types/errors.js +61 -0
  501. package/dist/src/shared/types/errors.js.map +1 -0
  502. package/dist/src/shared/types/result.d.ts +53 -0
  503. package/dist/src/shared/types/result.d.ts.map +1 -0
  504. package/dist/src/shared/types/result.js +42 -0
  505. package/dist/src/shared/types/result.js.map +1 -0
  506. package/dist/test-confluence-auth.d.ts +6 -0
  507. package/dist/test-confluence-auth.d.ts.map +1 -0
  508. package/dist/test-confluence-auth.js +128 -0
  509. package/dist/test-confluence-auth.js.map +1 -0
  510. package/docs/MIGRATION.md +513 -0
  511. package/docs/architecture.md +774 -0
  512. package/docs/guides/comprehensive-verification-guide.md +1926 -0
  513. package/docs/guides/interactive-config.md +285 -0
  514. package/docs/onion-architecture-phase0-complete.md +91 -0
  515. package/package.json +6 -6
  516. package/scripts/README.md +148 -0
  517. package/scripts/__tests__/jira-transitions.test.ts +44 -30
  518. package/scripts/__tests__/mermaid-converter.test.ts +2 -2
  519. package/scripts/__tests__/multi-repo-validator.test.ts +62 -62
  520. package/scripts/__tests__/spec-archiver.test.ts +12 -0
  521. package/scripts/__tests__/validate-phase.test.ts +6 -6
  522. package/scripts/build/README.md +24 -0
  523. package/scripts/{copy-static-assets.js → build/copy-static-assets.js} +1 -1
  524. package/scripts/{set-permissions.js → build/set-permissions.js} +1 -1
  525. package/scripts/config/config-schema.ts +43 -302
  526. package/scripts/config-global.ts +3 -2
  527. package/scripts/confluence-sync.ts +17 -538
  528. package/scripts/constants/environments.ts +3 -53
  529. package/scripts/constants/languages.ts +3 -68
  530. package/scripts/constants/test-commands.ts +3 -94
  531. package/scripts/dev-tools/README.md +22 -0
  532. package/scripts/{test-interactive.ts → dev-tools/test-interactive.ts} +4 -3
  533. package/scripts/github-actions-client.ts +18 -256
  534. package/scripts/jira-sync.ts +5 -1270
  535. package/scripts/markdown-to-confluence.ts +5 -5
  536. package/scripts/multi-project-estimate.ts +3 -2
  537. package/scripts/phase-runner.ts +41 -19
  538. package/scripts/pre-flight-check.ts +27 -11
  539. package/scripts/template/__tests__/multi-repo-renderer.test.ts +12 -0
  540. package/scripts/template/multi-repo-renderer.ts +2 -2
  541. package/scripts/test-execution-generator.ts +5 -4
  542. package/scripts/utils/__tests__/config-validator.test.ts +19 -19
  543. package/scripts/utils/__tests__/feature-name-validator.test.ts +13 -13
  544. package/scripts/utils/__tests__/multi-repo-validator.test.ts +34 -34
  545. package/scripts/utils/__tests__/project-analyzer.test.ts +542 -0
  546. package/scripts/utils/__tests__/safe-file-reader.test.ts +208 -0
  547. package/scripts/utils/__tests__/security-validator.test.ts +33 -33
  548. package/scripts/utils/__tests__/validation-result.test.ts +112 -0
  549. package/scripts/utils/aidlc-parser.ts +18 -287
  550. package/scripts/utils/ci-generator.ts +4 -3
  551. package/scripts/utils/config-loader.ts +54 -50
  552. package/scripts/utils/config-validator.ts +89 -80
  553. package/scripts/utils/docker-requirement-detector.ts +5 -4
  554. package/scripts/utils/env-config.ts +59 -40
  555. package/scripts/utils/feature-name-validator.ts +25 -40
  556. package/scripts/utils/interactive-helpers.ts +24 -132
  557. package/scripts/utils/language-detector.ts +4 -3
  558. package/scripts/utils/markdown-parser.ts +18 -373
  559. package/scripts/utils/multi-repo-validator.ts +27 -28
  560. package/scripts/utils/project-analyzer.ts +429 -0
  561. package/scripts/utils/project-detector.ts +6 -5
  562. package/scripts/utils/project-finder.ts +2 -154
  563. package/scripts/utils/project-meta.ts +8 -91
  564. package/scripts/utils/safe-file-reader.ts +158 -0
  565. package/scripts/utils/security-validator.ts +42 -78
  566. package/scripts/utils/spec-archiver.ts +7 -6
  567. package/scripts/utils/spec-updater.ts +12 -6
  568. package/scripts/utils/tasks-converter.ts +2 -2
  569. package/scripts/utils/tasks-format-validator.ts +4 -4
  570. package/scripts/utils/template-applier.ts +4 -3
  571. package/scripts/utils/types/validation.ts +92 -0
  572. package/scripts/validate-phase.ts +51 -23
  573. package/scripts/workflow-orchestrator.ts +16 -251
  574. package/dist/scripts/mermaid-converter.d.ts.map +0 -1
  575. package/dist/scripts/mermaid-converter.js.map +0 -1
  576. package/dist/scripts/resource-dashboard.d.ts +0 -7
  577. package/dist/scripts/resource-dashboard.d.ts.map +0 -1
  578. package/dist/scripts/resource-dashboard.js +0 -157
  579. package/dist/scripts/resource-dashboard.js.map +0 -1
  580. package/dist/scripts/test-interactive.d.ts.map +0 -1
  581. package/dist/scripts/test-interactive.js.map +0 -1
  582. package/dist/scripts/test-new-features.d.ts +0 -5
  583. package/dist/scripts/test-new-features.d.ts.map +0 -1
  584. package/dist/scripts/test-new-features.js +0 -148
  585. package/dist/scripts/test-new-features.js.map +0 -1
  586. package/dist/scripts/test-spec-generator.d.ts +0 -29
  587. package/dist/scripts/test-spec-generator.d.ts.map +0 -1
  588. package/dist/scripts/test-spec-generator.js +0 -493
  589. package/dist/scripts/test-spec-generator.js.map +0 -1
  590. package/dist/scripts/utils/confluence-approval.d.ts +0 -46
  591. package/dist/scripts/utils/confluence-approval.d.ts.map +0 -1
  592. package/dist/scripts/utils/confluence-approval.js +0 -120
  593. package/dist/scripts/utils/confluence-approval.js.map +0 -1
  594. package/dist/scripts/utils/template-finder.d.ts +0 -37
  595. package/dist/scripts/utils/template-finder.d.ts.map +0 -1
  596. package/dist/scripts/utils/template-finder.js +0 -58
  597. package/dist/scripts/utils/template-finder.js.map +0 -1
  598. package/dist/src/commands/multi-repo-add-repo.d.ts.map +0 -1
  599. package/dist/src/commands/multi-repo-add-repo.js.map +0 -1
  600. package/dist/src/commands/multi-repo-ci-status.d.ts.map +0 -1
  601. package/dist/src/commands/multi-repo-ci-status.js.map +0 -1
  602. package/dist/src/commands/multi-repo-confluence-sync.d.ts.map +0 -1
  603. package/dist/src/commands/multi-repo-confluence-sync.js.map +0 -1
  604. package/dist/src/commands/multi-repo-init.d.ts.map +0 -1
  605. package/dist/src/commands/multi-repo-init.js.map +0 -1
  606. package/dist/src/commands/multi-repo-list.d.ts.map +0 -1
  607. package/dist/src/commands/multi-repo-list.js.map +0 -1
  608. package/dist/src/commands/multi-repo-test.d.ts.map +0 -1
  609. package/dist/src/commands/multi-repo-test.js.map +0 -1
  610. package/dist/src/commands/setup-existing.d.ts +0 -22
  611. package/dist/src/commands/setup-existing.d.ts.map +0 -1
  612. package/dist/src/commands/setup-existing.js +0 -606
  613. package/dist/src/commands/setup-existing.js.map +0 -1
  614. package/scripts/__tests__/setup-existing-project.test.ts +0 -244
  615. package/scripts/resource-dashboard.ts +0 -189
  616. package/scripts/test-new-features.ts +0 -171
  617. package/scripts/test-spec-generator.ts +0 -570
  618. package/scripts/utils/confluence-approval.ts +0 -169
  619. package/scripts/utils/template-finder.ts +0 -69
  620. /package/dist/scripts/{mermaid-converter.d.ts → dev-tools/mermaid-converter.d.ts} +0 -0
  621. /package/dist/scripts/{mermaid-converter.js → dev-tools/mermaid-converter.js} +0 -0
  622. /package/dist/scripts/{test-interactive.d.ts → dev-tools/test-interactive.d.ts} +0 -0
  623. /package/scripts/{mermaid-converter.ts → dev-tools/mermaid-converter.ts} +0 -0
@@ -1,557 +1,36 @@
1
1
  /**
2
- * Confluence同期スクリプト
3
- * GitHub Markdown ファイルを Confluence に同期
2
+ * Confluence同期スクリプト - Entry Point
3
+ * The actual logic has been moved to src/presentation/commands/confluence/
4
4
  */
5
5
 
6
- import { readFileSync } from 'fs';
7
- import { resolve } from 'path';
8
- import axios from 'axios';
9
6
  import { loadEnv } from './utils/env-loader.js';
10
- import { loadProjectMeta } from './utils/project-meta.js';
11
- import { validateFeatureNameOrThrow } from './utils/feature-name-validator.js';
12
- import { getConfig, getConfigPath } from './utils/config-loader.js';
13
- import { createPagesByGranularity } from './utils/confluence-hierarchy.js';
14
- import { validateForConfluenceSync } from './utils/config-validator.js';
15
- import { updateSpecJsonAfterConfluenceSync, loadSpecJson } from './utils/spec-updater.js';
7
+ import { confluenceSyncCommand } from '../src/presentation/commands/confluence/sync.js';
8
+ import { syncToConfluence, ConfluenceClient, getConfluenceConfig } from '../src/infrastructure/external-apis/atlassian/confluence/index.js';
16
9
 
17
- // 環境変数読み込み
18
10
  loadEnv();
19
11
 
20
- /**
21
- * セキュリティ: CQLクエリ文字列のエスケープ
22
- * CQLインジェクション対策: バックスラッシュと引用符を適切にエスケープ
23
- *
24
- * @param str - エスケープする文字列
25
- * @returns エスケープされた文字列
26
- */
27
- function escapeCQL(str: string): string {
28
- return str
29
- .replace(/\\/g, '\\\\') // バックスラッシュを先にエスケープ(重要: 最初に実行)
30
- .replace(/"/g, '\\"') // ダブルクォート
31
- .replace(/'/g, '\\\''); // シングルクォート
32
- }
33
-
34
- /**
35
- * Confluence APIページレスポンス
36
- */
37
- export interface ConfluencePage {
38
- id: string;
39
- title: string;
40
- type: string;
41
- version?: {
42
- number: number;
43
- };
44
- _links?: {
45
- webui: string;
46
- };
47
- ancestors?: Array<{ id: string }>;
48
- results?: ConfluencePage[];
49
- }
50
-
51
- /**
52
- * Confluenceエラーオブジェクト
53
- */
54
- interface ConfluenceError extends Error {
55
- response?: {
56
- status: number;
57
- data: unknown;
58
- };
59
- config?: {
60
- url?: string;
61
- params?: unknown;
62
- };
63
- }
64
-
65
- /**
66
- * Confluenceページ作成ペイロード
67
- */
68
- interface ConfluenceCreatePagePayload {
69
- type: 'page';
70
- title: string;
71
- space: { key: string };
72
- body: {
73
- storage: {
74
- value: string;
75
- representation: 'storage';
76
- };
77
- };
78
- metadata: {
79
- labels: Array<{ name: string }>;
80
- };
81
- ancestors?: Array<{ id: string }>;
82
- }
83
-
84
- /**
85
- * リクエスト間のスリープ処理(レートリミット対策)
86
- */
87
- function sleep(ms: number): Promise<void> {
88
- return new Promise(resolve => setTimeout(resolve, ms));
89
- }
90
-
91
- /**
92
- * リクエスト間の待機時間(ミリ秒)
93
- * 環境変数 ATLASSIAN_REQUEST_DELAY で調整可能(デフォルト: 500ms)
94
- */
95
- function getRequestDelay(): number {
96
- return parseInt(process.env.ATLASSIAN_REQUEST_DELAY || '500', 10);
97
- }
98
-
99
- interface ConfluenceConfig {
100
- url: string;
101
- email: string;
102
- apiToken: string;
103
- space: string;
104
- }
105
-
106
- /**
107
- * Confluence設定を環境変数から取得
108
- */
109
- export function getConfluenceConfig(): ConfluenceConfig {
110
- const url = process.env.ATLASSIAN_URL;
111
- const email = process.env.ATLASSIAN_EMAIL;
112
- const apiToken = process.env.ATLASSIAN_API_TOKEN;
113
- const space = process.env.CONFLUENCE_PRD_SPACE || 'PRD';
114
-
115
- if (!url || !email || !apiToken) {
116
- throw new Error('Missing Confluence credentials in .env file');
117
- }
118
-
119
- return { url, email, apiToken, space };
120
- }
121
-
122
- /**
123
- * Confluence REST API クライアント
124
- */
125
- class ConfluenceClient {
126
- private baseUrl: string;
127
- private auth: string;
128
- private requestDelay: number;
129
-
130
- constructor(config: ConfluenceConfig) {
131
- this.baseUrl = `${config.url}/wiki/rest/api`;
132
- this.auth = Buffer.from(`${config.email}:${config.apiToken}`).toString('base64');
133
- this.requestDelay = getRequestDelay();
134
- }
135
-
136
- /**
137
- * ページを検索
138
- * @param spaceKey スペースキー
139
- * @param title ページタイトル
140
- * @param parentId 親ページID(オプション)。指定された場合、その親ページの子ページのみを検索
141
- */
142
- async searchPage(spaceKey: string, title: string, parentId?: string): Promise<ConfluencePage | null> {
143
- // レートリミット対策: リクエスト前に待機
144
- await sleep(this.requestDelay);
145
-
146
- try {
147
- // 親ページIDが指定されている場合、CQLクエリを使用して親ページの子ページのみを検索
148
- if (parentId) {
149
- // CQLクエリ: スペース、タイトル、親ページIDで検索
150
- // セキュリティ: CQLインジェクション対策 - タイトルを適切にエスケープ
151
- const escapedTitle = escapeCQL(title);
152
- // ancestorの代わりにparentを使用(Confluence CQLの正しい構文)
153
- const cql = `space = ${spaceKey} AND title = "${escapedTitle}" AND parent = ${parentId}`;
154
- console.log(` CQL Query: ${cql}`);
155
-
156
- const response = await axios.get(`${this.baseUrl}/content/search`, {
157
- params: {
158
- cql,
159
- expand: 'version'
160
- },
161
- headers: {
162
- 'Authorization': `Basic ${this.auth}`,
163
- 'Content-Type': 'application/json'
164
- }
165
- });
166
-
167
- console.log(` CQL Search results: ${response.data.results?.length || 0} pages found`);
168
-
169
- if (response.data.results && response.data.results.length > 0) {
170
- return response.data.results[0];
171
- }
172
-
173
- // CQLクエリで見つからない場合、従来の方法で検索(親ページIDでフィルタリング)
174
- console.log(' Falling back to standard search (may find pages in different parent)');
175
- return null;
176
- }
177
-
178
- // 親ページIDが指定されていない場合、従来の方法で検索
179
- const response = await axios.get(`${this.baseUrl}/content`, {
180
- params: {
181
- spaceKey,
182
- title,
183
- expand: 'version'
184
- },
185
- headers: {
186
- 'Authorization': `Basic ${this.auth}`,
187
- 'Content-Type': 'application/json'
188
- }
189
- });
190
-
191
- if (response.data.results && response.data.results.length > 0) {
192
- return response.data.results[0];
193
- }
194
-
195
- return null;
196
- } catch (error: unknown) {
197
- const isAxiosError = axios.isAxiosError(error);
198
-
199
- // 404エラーは既存ページがないことを意味するので、nullを返す
200
- if (isAxiosError && error.response?.status === 404) {
201
- return null;
202
- }
203
-
204
- // その他のエラーは詳細をログ出力
205
- const message = error instanceof Error ? error.message : String(error);
206
- console.error('Error searching page:', message);
207
-
208
- if (isAxiosError && error.response) {
209
- console.error(' Status:', error.response.status);
210
- console.error(' Data:', JSON.stringify(error.response.data, null, 2));
211
- }
212
-
213
- // 404以外のエラーは再スロー(認証、権限、ネットワーク、サーバーエラーなど)
214
- // エラーの詳細情報を含めて再スロー
215
- if (isAxiosError && error.response) {
216
- // HTTPレスポンスがある場合(4xx/5xxエラー)
217
- const enhancedError: ConfluenceError = new Error(
218
- `Confluence API error: ${message} (status: ${error.response.status})`
219
- );
220
- enhancedError.response = {
221
- status: error.response.status,
222
- data: error.response.data
223
- };
224
- throw enhancedError;
225
- } else {
226
- // ネットワークエラーなど、レスポンスがない場合
227
- throw error;
228
- }
229
- }
230
- }
231
-
232
- /**
233
- * ページを作成
234
- */
235
- async createPage(spaceKey: string, title: string, content: string, labels: string[] = [], parentId?: string): Promise<ConfluencePage> {
236
- // レートリミット対策: リクエスト前に待機
237
- await sleep(this.requestDelay);
238
-
239
- const payload: ConfluenceCreatePagePayload = {
240
- type: 'page',
241
- title,
242
- space: { key: spaceKey },
243
- body: {
244
- storage: {
245
- value: content,
246
- representation: 'storage'
247
- }
248
- },
249
- metadata: {
250
- labels: labels.map(label => ({ name: label }))
251
- }
252
- };
253
-
254
- // 親ページが指定されている場合、ancestorsを追加
255
- if (parentId) {
256
- payload.ancestors = [{ id: parentId }];
257
- }
258
-
259
- const response = await axios.post(`${this.baseUrl}/content`, payload, {
260
- headers: {
261
- 'Authorization': `Basic ${this.auth}`,
262
- 'Content-Type': 'application/json'
263
- }
264
- });
265
-
266
- return response.data;
267
- }
268
-
269
- /**
270
- * 親ページの下に子ページを作成
271
- */
272
- async createPageUnderParent(
273
- spaceKey: string,
274
- title: string,
275
- content: string,
276
- labels: string[] = [],
277
- parentId: string
278
- ): Promise<ConfluencePage> {
279
- return this.createPage(spaceKey, title, content, labels, parentId);
280
- }
281
-
282
- /**
283
- * ページを更新
284
- */
285
- async updatePage(pageId: string, title: string, content: string, version: number): Promise<ConfluencePage> {
286
- // レートリミット対策: リクエスト前に待機
287
- await sleep(this.requestDelay);
288
-
289
- const payload = {
290
- version: { number: version + 1 },
291
- title,
292
- type: 'page',
293
- body: {
294
- storage: {
295
- value: content,
296
- representation: 'storage'
297
- }
298
- }
299
- };
300
-
301
- const response = await axios.put(`${this.baseUrl}/content/${pageId}`, payload, {
302
- headers: {
303
- 'Authorization': `Basic ${this.auth}`,
304
- 'Content-Type': 'application/json'
305
- }
306
- });
307
-
308
- return response.data;
309
- }
310
-
311
- /**
312
- * ページの親情報を取得
313
- * @param pageId ページID
314
- * @returns 親ページID(ルートページの場合はnull)
315
- */
316
- async getPageParentId(pageId: string): Promise<string | null> {
317
- // レートリミット対策: リクエスト前に待機
318
- await sleep(this.requestDelay);
319
-
320
- try {
321
- const response = await axios.get(`${this.baseUrl}/content/${pageId}`, {
322
- params: {
323
- expand: 'ancestors'
324
- },
325
- headers: {
326
- 'Authorization': `Basic ${this.auth}`,
327
- 'Content-Type': 'application/json'
328
- }
329
- });
330
-
331
- // ancestors配列の最後の要素が直接の親ページ
332
- const ancestors = response.data.ancestors;
333
- if (ancestors && ancestors.length > 0) {
334
- return ancestors[ancestors.length - 1].id;
335
- }
336
-
337
- return null; // ルートページ
338
- } catch (error: unknown) {
339
- const isAxiosError = axios.isAxiosError(error);
340
-
341
- // 404エラーはページが存在しないことを意味する
342
- if (isAxiosError && error.response?.status === 404) {
343
- return null;
344
- }
345
-
346
- // その他のエラーは詳細をログ出力
347
- const message = error instanceof Error ? error.message : String(error);
348
- console.error('Error getting page parent:', message);
349
-
350
- if (isAxiosError && error.response) {
351
- console.error(' Status:', error.response.status);
352
- console.error(' Data:', JSON.stringify(error.response.data, null, 2));
353
- }
354
-
355
- // 404以外のエラーは再スロー
356
- if (isAxiosError && error.response) {
357
- const enhancedError: ConfluenceError = new Error(
358
- `Confluence API error: ${message} (status: ${error.response.status})`
359
- );
360
- enhancedError.response = {
361
- status: error.response.status,
362
- data: error.response.data
363
- };
364
- throw enhancedError;
365
- } else {
366
- throw error;
367
- }
368
- }
369
- }
370
-
371
- /**
372
- * ページのラベルを追加
373
- */
374
- async addLabels(pageId: string, labels: string[]): Promise<void> {
375
- for (const label of labels) {
376
- // レートリミット対策: リクエスト前に待機
377
- await sleep(this.requestDelay);
378
-
379
- await axios.post(
380
- `${this.baseUrl}/content/${pageId}/label`,
381
- [{ name: label }],
382
- {
383
- headers: {
384
- 'Authorization': `Basic ${this.auth}`,
385
- 'Content-Type': 'application/json'
386
- }
387
- }
388
- );
389
- }
390
- }
391
- }
392
-
393
-
394
- /**
395
- * Markdownファイルを Confluence に同期
396
- */
397
- async function syncToConfluence(
398
- featureName: string,
399
- docType: 'requirements' | 'design' | 'tasks' = 'requirements'
400
- ): Promise<string> {
401
- console.log(`Syncing ${docType} for feature: ${featureName}`);
402
-
403
- // feature名のバリデーション(必須)
404
- validateFeatureNameOrThrow(featureName);
405
-
406
- // 実行前の必須設定値チェック
407
- const validation = validateForConfluenceSync(docType);
408
-
409
- if (validation.info.length > 0) {
410
- validation.info.forEach(msg => console.log(`ℹ️ ${msg}`));
411
- }
412
-
413
- if (validation.warnings.length > 0) {
414
- console.warn('⚠️ Warnings:');
415
- validation.warnings.forEach(warning => console.warn(` ${warning}`));
416
- }
417
-
418
- if (validation.errors.length > 0) {
419
- console.error('❌ Configuration errors:');
420
- validation.errors.forEach(error => console.error(` ${error}`));
421
- const configPath = getConfigPath();
422
- console.error(`\n設定ファイル: ${configPath}`);
423
- throw new Error('Confluence同期に必要な設定値が不足しています。上記のエラーを確認して設定を修正してください。');
424
- }
425
-
426
- console.log(`⏳ Request delay: ${getRequestDelay()}ms (set ATLASSIAN_REQUEST_DELAY to adjust)`);
427
-
428
- // プロジェクトメタデータ読み込み
429
- const projectMeta = loadProjectMeta();
430
- console.log(`Project: ${projectMeta.projectName} (${projectMeta.projectId})`);
431
-
432
- // 設定を読み込み
433
- const appConfig = getConfig();
434
- const confluenceConfig = appConfig.confluence || {
435
- pageCreationGranularity: 'single',
436
- pageTitleFormat: '[{projectName}] {featureName} {docTypeLabel}',
437
- autoLabels: ['{projectLabel}', '{docType}', '{featureName}', 'github-sync']
438
- };
439
-
440
- console.log(`📋 Page creation granularity: ${confluenceConfig.pageCreationGranularity}`);
441
-
442
- // 設定ソースのログ出力
443
- if (confluenceConfig.spaces?.[docType]) {
444
- console.log(`📝 Config source: config.json (spaces.${docType} = ${confluenceConfig.spaces[docType]})`);
445
- } else if (process.env.CONFLUENCE_PRD_SPACE) {
446
- console.log(`📝 Config source: environment variable (CONFLUENCE_PRD_SPACE = ${process.env.CONFLUENCE_PRD_SPACE})`);
447
- } else {
448
- console.log('📝 Config source: default config');
449
- }
450
-
451
- // Markdownファイル読み込み
452
- const markdownPath = resolve(`.kiro/specs/${featureName}/${docType}.md`);
453
- const markdown = readFileSync(markdownPath, 'utf-8');
454
-
455
- // GitHub URL生成
456
- const githubUrl = `${projectMeta.repository}/blob/main/.kiro/specs/${featureName}/${docType}.md`;
457
-
458
- // Confluence設定を取得
459
- const confluenceApiConfig = getConfluenceConfig();
460
-
461
- // spec.jsonを読み込み
462
- const specJson = loadSpecJson(featureName);
463
-
464
- // スペースキーを決定(優先順位: spec.json → config.json → 環境変数/デフォルト)
465
- let spaceKey: string;
466
- let spaceKeySource: string;
467
-
468
- if (specJson.confluence?.spaceKey) {
469
- spaceKey = specJson.confluence.spaceKey;
470
- spaceKeySource = 'spec.json';
471
- } else if (confluenceConfig.spaces?.[docType]) {
472
- spaceKey = confluenceConfig.spaces[docType];
473
- spaceKeySource = 'config.json';
474
- } else {
475
- // confluenceApiConfig.space は常に存在(getConfluenceConfig()で 'PRD' がデフォルト)
476
- spaceKey = confluenceApiConfig.space;
477
- spaceKeySource = process.env.CONFLUENCE_PRD_SPACE ? 'environment variable' : 'default from config';
478
- }
479
-
480
- console.log(`📌 Using Confluence space: ${spaceKey} (source: ${spaceKeySource})`);
481
-
482
- // Confluenceクライアント初期化
483
- const client = new ConfluenceClient(confluenceApiConfig);
484
-
485
- // 階層構造に応じてページを作成
486
- const result = await createPagesByGranularity(
487
- client,
488
- spaceKey,
489
- markdown,
490
- confluenceConfig,
491
- projectMeta,
492
- featureName,
493
- docType,
494
- githubUrl
495
- );
496
-
497
- // 最初のページのURLを返す(後方互換性のため)
498
- if (result.pages.length === 0) {
499
- throw new Error('No pages were created');
500
- }
501
-
502
- const firstPageUrl = result.pages[0].url;
503
- console.log(`✅ Sync completed: ${result.pages.length} page(s) created/updated`);
504
-
505
- if (result.pages.length > 1) {
506
- console.log('📄 Created pages:');
507
- result.pages.forEach((page, index) => {
508
- console.log(` ${index + 1}. ${page.title} - ${page.url}`);
509
- });
510
- }
511
-
512
- // spec.json を更新
513
- const firstPage = result.pages[0];
514
- updateSpecJsonAfterConfluenceSync(featureName, docType, {
515
- pageId: firstPage.id,
516
- url: firstPage.url,
517
- title: firstPage.title,
518
- spaceKey: spaceKey
519
- });
520
-
521
- return firstPageUrl;
522
- }
523
-
524
12
  // CLI実行
525
13
  if (import.meta.url === `file://${process.argv[1]}`) {
526
14
  const args = process.argv.slice(2);
527
-
528
- if (args.length === 0) {
529
- console.error('Usage: npm run confluence:sync <feature-name> [doc-type]');
530
- console.error(' doc-type: requirements (default) | design | tasks');
15
+ const featureName = args[0];
16
+ const docType = (args[1] as 'requirements' | 'design' | 'tasks') || 'requirements';
17
+
18
+ if (!featureName) {
19
+ console.error('Usage: npm run confluence:sync <feature-name> [docType]');
20
+ console.error(' docType: requirements (default), design, or tasks');
531
21
  process.exit(1);
532
22
  }
533
-
534
- const featureName = args[0];
535
- const docType = (args[1] as 'requirements' | 'design' | 'tasks' | undefined) || 'requirements';
536
-
537
- syncToConfluence(featureName, docType)
538
- .then(() => {
539
- console.log('✅ Sync completed');
23
+
24
+ confluenceSyncCommand({ featureName, docType })
25
+ .then((url) => {
26
+ console.log(`\nConfluence URL: ${url}`);
540
27
  process.exit(0);
541
28
  })
542
29
  .catch((error) => {
543
- console.error('❌ Sync failed:', error.message);
544
- if (error.response) {
545
- console.error('Response status:', error.response.status);
546
- console.error('Response data:', JSON.stringify(error.response.data, null, 2));
547
- }
548
- if (error.config) {
549
- console.error('Request URL:', error.config.url);
550
- console.error('Request params:', JSON.stringify(error.config.params, null, 2));
551
- }
30
+ console.error('❌ Confluence sync failed:', error.message);
552
31
  process.exit(1);
553
32
  });
554
33
  }
555
34
 
556
- export { syncToConfluence, ConfluenceClient };
557
-
35
+ export { syncToConfluence, ConfluenceClient, getConfluenceConfig };
36
+ export type { ConfluencePage } from '../src/infrastructure/external-apis/atlassian/confluence/index.js';
@@ -1,55 +1,5 @@
1
1
  /**
2
- * Environment configuration mapping for cc-sdd environments
3
- *
4
- * Issue #37: 環境別コピー実装
2
+ * Re-export from Domain layer for backward compatibility
3
+ * @deprecated Import from @domain/constants instead
5
4
  */
6
-
7
- export interface EnvironmentConfig {
8
- rulesDir: string;
9
- commandsDir: string;
10
- templateSource: string;
11
- }
12
-
13
- export type Environment = 'claude' | 'claude-agent';
14
-
15
- export const ENV_CONFIG: Record<Environment, EnvironmentConfig> = {
16
- claude: {
17
- rulesDir: '.claude/rules',
18
- commandsDir: '.claude/commands',
19
- templateSource: 'claude',
20
- },
21
- 'claude-agent': {
22
- rulesDir: '.claude/agents',
23
- commandsDir: '.claude/commands',
24
- templateSource: 'claude-agent',
25
- },
26
- };
27
-
28
- /**
29
- * Get environment configuration
30
- *
31
- * @param env - Environment name
32
- * @returns Environment configuration
33
- */
34
- export const getEnvironmentConfig = (env: Environment): EnvironmentConfig => {
35
- return ENV_CONFIG[env];
36
- };
37
-
38
- /**
39
- * Validate if an environment is supported
40
- *
41
- * @param env - Environment name to validate
42
- * @returns True if supported, false otherwise
43
- */
44
- export const isSupportedEnvironment = (env: string): env is Environment => {
45
- return env in ENV_CONFIG;
46
- };
47
-
48
- /**
49
- * Get all supported environments
50
- *
51
- * @returns Array of supported environment names
52
- */
53
- export const getSupportedEnvironments = (): Environment[] => {
54
- return Object.keys(ENV_CONFIG) as Environment[];
55
- };
5
+ export * from '../../src/domain/constants/environments.js';
@@ -1,70 +1,5 @@
1
1
  /**
2
- * Supported languages and development guidelines map
3
- *
4
- * Issue #37: 環境別コピー実装
2
+ * Re-export from Domain layer for backward compatibility
3
+ * @deprecated Import from @domain/constants instead
5
4
  */
6
-
7
- export const supportedLanguages = [
8
- 'ja', 'en', 'zh-TW', 'zh', 'es', 'pt',
9
- 'de', 'fr', 'ru', 'it', 'ko', 'ar'
10
- ] as const;
11
-
12
- export type SupportedLanguage = typeof supportedLanguages[number];
13
-
14
- export const DEV_GUIDELINES_MAP: Record<SupportedLanguage, string> = {
15
- en: '- Think in English, generate responses in English',
16
-
17
- ja: '- Think in English, but generate responses in Japanese ' +
18
- '(思考は英語、回答の生成は日本語で行うように)',
19
-
20
- 'zh-TW': '- 以英文思考,但以繁體中文生成回應' +
21
- '(Think in English, generate in Traditional Chinese)',
22
-
23
- zh: '- 以英文思考,但以简体中文生成回复' +
24
- '(Think in English, generate in Simplified Chinese)',
25
-
26
- es: '- Think in English, generate responses in Spanish ' +
27
- '(Piensa en inglés, genera respuestas en español)',
28
-
29
- pt: '- Think in English, generate responses in Portuguese ' +
30
- '(Pense em inglês, gere respostas em português)',
31
-
32
- de: '- Think in English, generate responses in German ' +
33
- '(Denke auf Englisch, formuliere Antworten auf Deutsch)',
34
-
35
- fr: '- Think in English, generate responses in French ' +
36
- '(Pensez en anglais, générez des réponses en français)',
37
-
38
- ru: '- Think in English, generate responses in Russian ' +
39
- '(Думай по-английски, отвечай по-русски)',
40
-
41
- it: '- Think in English, generate responses in Italian ' +
42
- '(Pensa in inglese, genera risposte in italiano)',
43
-
44
- ko: '- Think in English, generate responses in Korean ' +
45
- '(영어로 사고하고, 한국어로 응답을 생성하세요)',
46
-
47
- ar: '- Think in English, generate responses in Arabic ' +
48
- '(فكر بالإنجليزية وأجب بالعربية)',
49
- };
50
-
51
- /**
52
- * Get development guidelines for a specific language
53
- *
54
- * @param lang - Language code
55
- * @returns Development guidelines string
56
- */
57
- export const getDevGuidelines = (lang: SupportedLanguage): string => {
58
- return DEV_GUIDELINES_MAP[lang];
59
- };
60
-
61
- /**
62
- * Validate if a language code is supported
63
- *
64
- * @param lang - Language code to validate
65
- * @returns True if supported, false otherwise
66
- */
67
- export const isSupportedLanguage = (lang: string): lang is SupportedLanguage => {
68
- return (supportedLanguages as readonly string[]).includes(lang);
69
- };
70
-
5
+ export * from '../../src/domain/constants/languages.js';