aiwf 0.3.22 → 0.4.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 (456) hide show
  1. package/.claude-plugin/marketplace.json +146 -0
  2. package/CHANGELOG.md +49 -1
  3. package/README.ko.md +118 -309
  4. package/README.md +68 -254
  5. package/docs/modernization/BROWNFIELD-GREENFIELD.ko.md +105 -0
  6. package/docs/modernization/CLAUDE-PLAN-REVIEW-2026-10-03.ko.md +77 -0
  7. package/docs/modernization/CLI-PRODUCTIVITY-REVIEWED-2026-10-03.ko.md +177 -0
  8. package/docs/modernization/CLI-PRODUCTIVITY.ko.md +193 -0
  9. package/docs/modernization/CORE-PACKAGE-PLAN.md +7 -0
  10. package/docs/modernization/DEEP-REVERSE-ENGINEERING.ko.md +88 -0
  11. package/docs/modernization/DELEGATION-OPTIONAL.ko.md +57 -0
  12. package/docs/modernization/DIRECTION.ko.md +56 -0
  13. package/docs/modernization/FULL-TEST-2026-10-03.md +49 -0
  14. package/docs/modernization/LEGACY-REMOVAL-PLAN.md +9 -0
  15. package/docs/modernization/PILOT-RESULT-2026-10-03.ko.md +85 -0
  16. package/docs/modernization/PILOT-UC-001.ko.md +79 -0
  17. package/docs/modernization/PLAN.md +28 -0
  18. package/docs/modernization/SKILLS.ko.md +105 -0
  19. package/docs/modernization/SPRINTABLE.ko.md +47 -0
  20. package/docs/modernization/SYNC-DOCS-VALIDATION-2026-10-04.ko.md +38 -0
  21. package/docs/modernization/VALIDATION.md +79 -0
  22. package/docs/modernization/evidence/example-review-packet.json +115 -0
  23. package/docs/modernization/evidence/example-spec-pin.json +48 -0
  24. package/docs/modernization/evidence/full-test-20261003/claude-lint.md +22 -0
  25. package/docs/modernization/evidence/full-test-20261003/claude-review-retry.md +56 -0
  26. package/docs/modernization/evidence/full-test-20261003/codex-review-packet.json +159 -0
  27. package/docs/modernization/evidence/full-test-20261003/src/expense.mjs +40 -0
  28. package/docs/modernization/evidence/full-test-20261003/summary.json +106 -0
  29. package/docs/modernization/evidence/full-test-20261003/tests/expense.test.mjs +61 -0
  30. package/docs/modernization/evidence/local-pilot-20261003/README.ko.md +40 -0
  31. package/docs/modernization/evidence/local-pilot-20261003/execution.json +1055 -0
  32. package/docs/modernization/evidence/local-pilot-20261003/maintenance/dependencies.json +24 -0
  33. package/docs/modernization/evidence/local-pilot-20261003/maintenance/dependencies.stderr.txt +0 -0
  34. package/docs/modernization/evidence/local-pilot-20261003/maintenance/dependencies.stdout.txt +5 -0
  35. package/docs/modernization/evidence/local-pilot-20261003/maintenance/docs.json +24 -0
  36. package/docs/modernization/evidence/local-pilot-20261003/maintenance/docs.stderr.txt +0 -0
  37. package/docs/modernization/evidence/local-pilot-20261003/maintenance/docs.stdout.txt +6 -0
  38. package/docs/modernization/evidence/local-pilot-20261003/maintenance/example.json +24 -0
  39. package/docs/modernization/evidence/local-pilot-20261003/maintenance/example.stderr.txt +0 -0
  40. package/docs/modernization/evidence/local-pilot-20261003/maintenance/example.stdout.txt +5 -0
  41. package/docs/modernization/evidence/local-pilot-20261003/maintenance/local-docs.json +24 -0
  42. package/docs/modernization/evidence/local-pilot-20261003/maintenance/local-docs.stderr.txt +0 -0
  43. package/docs/modernization/evidence/local-pilot-20261003/maintenance/local-docs.stdout.txt +6 -0
  44. package/docs/modernization/evidence/local-pilot-20261003/maintenance/node.json +23 -0
  45. package/docs/modernization/evidence/local-pilot-20261003/maintenance/node.stderr.txt +0 -0
  46. package/docs/modernization/evidence/local-pilot-20261003/maintenance/node.stdout.txt +535 -0
  47. package/docs/modernization/evidence/local-pilot-20261003/maintenance/provenance.json +24 -0
  48. package/docs/modernization/evidence/local-pilot-20261003/maintenance/provenance.stderr.txt +0 -0
  49. package/docs/modernization/evidence/local-pilot-20261003/maintenance/provenance.stdout.txt +5 -0
  50. package/docs/modernization/evidence/local-pilot-20261003/maintenance/readme-replay.json +24 -0
  51. package/docs/modernization/evidence/local-pilot-20261003/maintenance/readme-replay.stderr.txt +0 -0
  52. package/docs/modernization/evidence/local-pilot-20261003/maintenance/readme-replay.stdout.txt +273 -0
  53. package/docs/modernization/evidence/local-pilot-20261003/maintenance/upstream.json +24 -0
  54. package/docs/modernization/evidence/local-pilot-20261003/maintenance/upstream.stderr.txt +0 -0
  55. package/docs/modernization/evidence/local-pilot-20261003/maintenance/upstream.stdout.txt +7 -0
  56. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/archive-service.stderr.txt +0 -0
  57. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/archive-service.stdout.txt +148 -0
  58. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/archive-structure.stderr.txt +0 -0
  59. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/archive-structure.stdout.txt +9 -0
  60. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/baseline-check.stderr.txt +0 -0
  61. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/baseline-check.stdout.txt +67 -0
  62. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/baseline-evidence.json +34 -0
  63. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/baseline-packet.json +128 -0
  64. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/baseline-packet.stderr.txt +0 -0
  65. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/baseline-packet.stdout.txt +128 -0
  66. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/baseline-pin.json +54 -0
  67. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/baseline-pin.stderr.txt +0 -0
  68. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/baseline-pin.stdout.txt +60 -0
  69. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/baseline-readback.json +15 -0
  70. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/baseline-service.stderr.txt +0 -0
  71. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/baseline-service.stdout.txt +82 -0
  72. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/baseline-structure.stderr.txt +0 -0
  73. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/baseline-structure.stdout.txt +9 -0
  74. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/changed-check.stderr.txt +0 -0
  75. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/changed-check.stdout.txt +79 -0
  76. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/changed-packet-refused.stderr.txt +0 -0
  77. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/changed-packet-refused.stdout.txt +7 -0
  78. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/changed-pin-refresh.stderr.txt +0 -0
  79. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/changed-pin-refresh.stdout.txt +66 -0
  80. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/changed-pin.json +60 -0
  81. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/changed-structure.stderr.txt +0 -0
  82. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/changed-structure.stdout.txt +9 -0
  83. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/final-check.stderr.txt +0 -0
  84. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/final-check.stdout.txt +73 -0
  85. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/final-evidence.json +34 -0
  86. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/final-packet.json +134 -0
  87. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/final-packet.stderr.txt +0 -0
  88. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/final-packet.stdout.txt +134 -0
  89. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/final-readback.json +15 -0
  90. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/final-service.stderr.txt +0 -0
  91. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/final-service.stdout.txt +148 -0
  92. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/final-structure.stderr.txt +0 -0
  93. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/final-structure.stdout.txt +9 -0
  94. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/node-version.stderr.txt +0 -0
  95. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/node-version.stdout.txt +1 -0
  96. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/python-version.stderr.txt +0 -0
  97. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/python-version.stdout.txt +1 -0
  98. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/red-evidence.json +34 -0
  99. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/red-packet.json +134 -0
  100. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/red-packet.stderr.txt +0 -0
  101. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/red-packet.stdout.txt +134 -0
  102. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/red-readback.json +15 -0
  103. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/red-service.stderr.txt +0 -0
  104. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/red-service.stdout.txt +266 -0
  105. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/red-structure.stderr.txt +0 -0
  106. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/red-structure.stdout.txt +9 -0
  107. package/docs/modernization/evidence/local-pilot-20261003/project/docs/entity_model.md +33 -0
  108. package/docs/modernization/evidence/local-pilot-20261003/project/docs/glossary.md +9 -0
  109. package/docs/modernization/evidence/local-pilot-20261003/project/docs/plans/UC-001.md +20 -0
  110. package/docs/modernization/evidence/local-pilot-20261003/project/docs/requirements.md +10 -0
  111. package/docs/modernization/evidence/local-pilot-20261003/project/docs/test_cases/TC-001-submit-expense.md +37 -0
  112. package/docs/modernization/evidence/local-pilot-20261003/project/docs/test_cases/TC-002-description-limit.md +42 -0
  113. package/docs/modernization/evidence/local-pilot-20261003/project/docs/use_cases/UC-001-submit-expense.md +76 -0
  114. package/docs/modernization/evidence/local-pilot-20261003/project/docs/use_cases.puml +12 -0
  115. package/docs/modernization/evidence/local-pilot-20261003/project/docs/vision.md +21 -0
  116. package/docs/modernization/evidence/local-pilot-20261003/project/src/expense.mjs +48 -0
  117. package/docs/modernization/evidence/local-pilot-20261003/project/tests/expense.test.mjs +116 -0
  118. package/docs/modernization/evidence/local-pilot-20261003/scope.json +31 -0
  119. package/docs/modernization/reviews/2026-10-03-claude-cli/CONTRACTS.ko.md +122 -0
  120. package/docs/modernization/reviews/2026-10-03-claude-cli/DIRECTION.ko.md +84 -0
  121. package/examples/spec-workflow/README.md +54 -0
  122. package/examples/spec-workflow/docs/entity_model.md +33 -0
  123. package/examples/spec-workflow/docs/glossary.md +9 -0
  124. package/examples/spec-workflow/docs/requirements.md +10 -0
  125. package/examples/spec-workflow/docs/test_cases/TC-001-submit-expense.md +37 -0
  126. package/examples/spec-workflow/docs/use_cases/UC-001-submit-expense.md +63 -0
  127. package/examples/spec-workflow/docs/use_cases.puml +12 -0
  128. package/examples/spec-workflow/docs/vision.md +21 -0
  129. package/package.json +37 -104
  130. package/plugins/aiwf-angular-jpa/.claude-plugin/plugin.json +11 -0
  131. package/plugins/aiwf-angular-jpa/LICENSE +201 -0
  132. package/plugins/aiwf-angular-jpa/NOTICE +16 -0
  133. package/plugins/aiwf-angular-jpa/README.md +54 -0
  134. package/plugins/aiwf-angular-jpa/UPSTREAM.json +35 -0
  135. package/plugins/aiwf-angular-jpa/agents/uc-coverage.md +263 -0
  136. package/plugins/aiwf-angular-jpa/rules/mcp-servers.md +64 -0
  137. package/plugins/aiwf-angular-jpa/skills/coverage-check/SKILL.md +190 -0
  138. package/plugins/aiwf-angular-jpa/skills/flyway-migration/SKILL.md +119 -0
  139. package/plugins/aiwf-angular-jpa/skills/implement/SKILL.md +528 -0
  140. package/plugins/aiwf-angular-jpa/skills/implement/references/module-layout.md +95 -0
  141. package/plugins/aiwf-angular-jpa/skills/playwright-test/SKILL.md +360 -0
  142. package/plugins/aiwf-angular-jpa/skills/spring-boot-test/SKILL.md +504 -0
  143. package/plugins/aiwf-angular-jpa/skills/vitest-test/SKILL.md +309 -0
  144. package/plugins/aiwf-blazor-dotnet/.claude-plugin/plugin.json +11 -0
  145. package/plugins/aiwf-blazor-dotnet/LICENSE +201 -0
  146. package/plugins/aiwf-blazor-dotnet/NOTICE +16 -0
  147. package/plugins/aiwf-blazor-dotnet/README.md +53 -0
  148. package/plugins/aiwf-blazor-dotnet/UPSTREAM.json +31 -0
  149. package/plugins/aiwf-blazor-dotnet/rules/mcp-servers.md +25 -0
  150. package/plugins/aiwf-blazor-dotnet/skills/bunit-test/SKILL.md +110 -0
  151. package/plugins/aiwf-blazor-dotnet/skills/dotnet-test/SKILL.md +108 -0
  152. package/plugins/aiwf-blazor-dotnet/skills/ef-migration/SKILL.md +43 -0
  153. package/plugins/aiwf-blazor-dotnet/skills/implement/SKILL.md +149 -0
  154. package/plugins/aiwf-blazor-dotnet/skills/playwright-test/SKILL.md +130 -0
  155. package/plugins/aiwf-core/.claude-plugin/plugin.json +11 -0
  156. package/plugins/aiwf-core/LICENSE +201 -0
  157. package/plugins/aiwf-core/NOTICE +20 -0
  158. package/plugins/aiwf-core/README.md +38 -0
  159. package/plugins/aiwf-core/UPSTREAM.json +50 -0
  160. package/plugins/aiwf-core/skills/entity-model/SKILL.md +160 -0
  161. package/plugins/aiwf-core/skills/entity-model/references/REFERENCE.md +36 -0
  162. package/plugins/aiwf-core/skills/requirements/SKILL.md +157 -0
  163. package/plugins/aiwf-core/skills/requirements/references/REFERENCE.md +70 -0
  164. package/plugins/aiwf-core/skills/requirements/references/glossary.md +7 -0
  165. package/plugins/aiwf-core/skills/reverse-engineer/SKILL.md +509 -0
  166. package/plugins/aiwf-core/skills/reverse-engineer/references/stack-signals.md +210 -0
  167. package/plugins/aiwf-core/skills/spec-review/SKILL.md +197 -0
  168. package/plugins/aiwf-core/skills/spec-review/references/lint-codes.md +63 -0
  169. package/plugins/aiwf-core/skills/spec-review/references/review-checklist.md +189 -0
  170. package/plugins/aiwf-core/skills/spec-review/scripts/spec_lint.py +1216 -0
  171. package/plugins/aiwf-core/skills/test-case/SKILL.md +138 -0
  172. package/plugins/aiwf-core/skills/test-case/references/example-process.bpmn +118 -0
  173. package/plugins/aiwf-core/skills/test-case/references/example.md +38 -0
  174. package/plugins/aiwf-core/skills/test-case/references/test-case.md +35 -0
  175. package/plugins/aiwf-core/skills/test-case/scripts/bpmn_paths.py +542 -0
  176. package/plugins/aiwf-core/skills/use-case-diagram/SKILL.md +99 -0
  177. package/plugins/aiwf-core/skills/use-case-spec/SKILL.md +257 -0
  178. package/plugins/aiwf-core/skills/use-case-spec/references/clarify-checklist.md +70 -0
  179. package/plugins/aiwf-core/skills/use-case-spec/references/example.md +88 -0
  180. package/plugins/aiwf-core/skills/use-case-spec/references/format-spec.md +246 -0
  181. package/plugins/aiwf-core/skills/use-case-spec/references/use-case.md +50 -0
  182. package/plugins/aiwf-core/skills/use-case-spec/scripts/validate_use_case.py +941 -0
  183. package/plugins/aiwf-delegate-claude/.claude-plugin/plugin.json +9 -0
  184. package/{src/lib/resources/templates/npm-library/template → plugins/aiwf-delegate-claude}/LICENSE +2 -2
  185. package/plugins/aiwf-delegate-claude/NOTICE +4 -0
  186. package/plugins/aiwf-delegate-claude/README.md +10 -0
  187. package/plugins/aiwf-delegate-claude/plugin.json +13 -0
  188. package/plugins/aiwf-delegate-claude/skills/delegate-claude/LICENSE +21 -0
  189. package/plugins/aiwf-delegate-claude/skills/delegate-claude/NOTICE +4 -0
  190. package/plugins/aiwf-delegate-claude/skills/delegate-claude/SKILL.md +49 -0
  191. package/plugins/aiwf-delegate-claude/skills/delegate-claude/agents/openai.yaml +2 -0
  192. package/plugins/aiwf-delegate-codex/.claude-plugin/plugin.json +9 -0
  193. package/plugins/aiwf-delegate-codex/LICENSE +21 -0
  194. package/plugins/aiwf-delegate-codex/NOTICE +4 -0
  195. package/plugins/aiwf-delegate-codex/README.md +10 -0
  196. package/plugins/aiwf-delegate-codex/plugin.json +13 -0
  197. package/plugins/aiwf-delegate-codex/skills/delegate-codex/LICENSE +21 -0
  198. package/plugins/aiwf-delegate-codex/skills/delegate-codex/NOTICE +4 -0
  199. package/plugins/aiwf-delegate-codex/skills/delegate-codex/SKILL.md +47 -0
  200. package/plugins/aiwf-delegate-codex/skills/delegate-codex/agents/openai.yaml +2 -0
  201. package/plugins/aiwf-nestjs-nextjs/.claude-plugin/plugin.json +11 -0
  202. package/plugins/aiwf-nestjs-nextjs/LICENSE +201 -0
  203. package/plugins/aiwf-nestjs-nextjs/NOTICE +16 -0
  204. package/plugins/aiwf-nestjs-nextjs/README.md +53 -0
  205. package/plugins/aiwf-nestjs-nextjs/UPSTREAM.json +32 -0
  206. package/plugins/aiwf-nestjs-nextjs/rules/mcp-servers.md +59 -0
  207. package/plugins/aiwf-nestjs-nextjs/skills/drizzle-migration/SKILL.md +222 -0
  208. package/plugins/aiwf-nestjs-nextjs/skills/implement/SKILL.md +393 -0
  209. package/plugins/aiwf-nestjs-nextjs/skills/implement/references/project-layout.md +158 -0
  210. package/plugins/aiwf-nestjs-nextjs/skills/nest-test/SKILL.md +300 -0
  211. package/plugins/aiwf-nestjs-nextjs/skills/playwright-test/SKILL.md +245 -0
  212. package/plugins/aiwf-nestjs-nextjs/skills/react-test/SKILL.md +217 -0
  213. package/plugins/aiwf-spec/.claude-plugin/plugin.json +9 -0
  214. package/plugins/aiwf-spec/LICENSE +201 -0
  215. package/plugins/aiwf-spec/NOTICE +20 -0
  216. package/plugins/aiwf-spec/README.md +36 -0
  217. package/plugins/aiwf-spec/skills/sync-docs/SKILL.md +47 -0
  218. package/plugins/aiwf-spec/skills/workflow/SKILL.md +42 -0
  219. package/plugins/aiwf-vaadin-jooq/.claude-plugin/plugin.json +11 -0
  220. package/plugins/aiwf-vaadin-jooq/LICENSE +201 -0
  221. package/plugins/aiwf-vaadin-jooq/NOTICE +16 -0
  222. package/plugins/aiwf-vaadin-jooq/README.md +56 -0
  223. package/plugins/aiwf-vaadin-jooq/UPSTREAM.json +43 -0
  224. package/plugins/aiwf-vaadin-jooq/agents/uc-coverage.md +260 -0
  225. package/plugins/aiwf-vaadin-jooq/rules/mcp-servers.md +44 -0
  226. package/plugins/aiwf-vaadin-jooq/skills/browserless-test/SKILL.md +407 -0
  227. package/plugins/aiwf-vaadin-jooq/skills/browserless-test/references/UC001ManagePersonsTest.java +111 -0
  228. package/plugins/aiwf-vaadin-jooq/skills/coverage-check/SKILL.md +190 -0
  229. package/plugins/aiwf-vaadin-jooq/skills/flyway-migration/SKILL.md +70 -0
  230. package/plugins/aiwf-vaadin-jooq/skills/hilla-test/SKILL.md +350 -0
  231. package/plugins/aiwf-vaadin-jooq/skills/hilla-test/references/UC001ManagePersonsServiceTest.java +81 -0
  232. package/plugins/aiwf-vaadin-jooq/skills/hilla-test/references/UC001ManagePersonsViewTest.tsx +87 -0
  233. package/plugins/aiwf-vaadin-jooq/skills/implement/SKILL.md +196 -0
  234. package/plugins/aiwf-vaadin-jooq/skills/implement-hilla/SKILL.md +216 -0
  235. package/plugins/aiwf-vaadin-jooq/skills/karibu-test/SKILL.md +298 -0
  236. package/plugins/aiwf-vaadin-jooq/skills/karibu-test/references/UC001ManagePersonsTest.java +93 -0
  237. package/plugins/aiwf-vaadin-jooq/skills/playwright-test/SKILL.md +237 -0
  238. package/plugins/aiwf-vaadin-jooq/skills/playwright-test/references/ExampleViewIT.java +143 -0
  239. package/plugins/aiwf-vaadin-jooq/skills/playwright-test/references/TC001CustomerOnboardingIT.java +144 -0
  240. package/plugins/aiwf-vaadin-jooq/skills/playwright-test/references/dramafinder-api.md +190 -0
  241. package/scripts/check-dependencies.js +26 -96
  242. package/scripts/install-spec-skills.mjs +126 -0
  243. package/scripts/validate-spec-plugin.mjs +145 -0
  244. package/src/cli/spec-cli.js +292 -0
  245. package/src/lib/spec-workflow.js +982 -0
  246. package/docs/ADR_MANAGEMENT_GUIDE.ko.md +0 -602
  247. package/docs/ADR_MANAGEMENT_GUIDE.md +0 -602
  248. package/docs/AI-WORKFLOW.ko.md +0 -299
  249. package/docs/AI-WORKFLOW.md +0 -401
  250. package/docs/API_REFERENCE_FULL.ko.md +0 -1135
  251. package/docs/API_REFERENCE_FULL.md +0 -1135
  252. package/docs/ARCHITECTURE.ko.md +0 -314
  253. package/docs/ARCHITECTURE.md +0 -314
  254. package/docs/CLI_USAGE_GUIDE.ko.md +0 -634
  255. package/docs/CLI_USAGE_GUIDE.md +0 -640
  256. package/docs/CODE_CLEANUP_GUIDE.ko.md +0 -415
  257. package/docs/CODE_CLEANUP_GUIDE.md +0 -415
  258. package/docs/COMMANDS_GUIDE.ko.md +0 -1037
  259. package/docs/COMMANDS_GUIDE.md +0 -1037
  260. package/docs/CONTRIBUTING.ko.md +0 -408
  261. package/docs/CONTRIBUTING.md +0 -408
  262. package/docs/DEVELOPMENT_GUIDE.ko.md +0 -440
  263. package/docs/DEVELOPMENT_GUIDE.md +0 -727
  264. package/docs/EXAMPLES.ko.md +0 -695
  265. package/docs/EXAMPLES.md +0 -693
  266. package/docs/GETTING_STARTED.ko.md +0 -219
  267. package/docs/GETTING_STARTED.md +0 -476
  268. package/docs/MODULE_MANAGEMENT_GUIDE.ko.md +0 -289
  269. package/docs/MODULE_MANAGEMENT_GUIDE.md +0 -289
  270. package/docs/PERFORMANCE_ARCHITECTURE.md +0 -494
  271. package/docs/PERFORMANCE_GUIDELINES.ko.md +0 -388
  272. package/docs/PERFORMANCE_GUIDELINES.md +0 -553
  273. package/docs/PRD.ko.md +0 -148
  274. package/docs/PRD.md +0 -150
  275. package/docs/ROADMAP_v0.4.0.md +0 -286
  276. package/docs/STATE_MANAGEMENT_GUIDE.ko.md +0 -278
  277. package/docs/STATE_MANAGEMENT_GUIDE.md +0 -278
  278. package/docs/TROUBLESHOOTING.ko.md +0 -366
  279. package/docs/TROUBLESHOOTING.md +0 -722
  280. package/docs/VALIDATOR_API.ko.md +0 -324
  281. package/docs/VALIDATOR_API.md +0 -324
  282. package/docs/YOLO_SYSTEM_GUIDE.ko.md +0 -542
  283. package/docs/YOLO_SYSTEM_GUIDE.md +0 -542
  284. package/docs/designs/AI_PERSONA_SYSTEM_DESIGN.md +0 -516
  285. package/docs/designs/API_DOCUMENTATION.md +0 -932
  286. package/docs/designs/API_REFERENCE.md +0 -979
  287. package/docs/designs/Enhanced_Installation_Flow_Design.md +0 -498
  288. package/docs/designs/aiwf-metadata-system-prd.md +0 -127
  289. package/docs/designs/offline-template-cache.md +0 -323
  290. package/docs/designs/persona-aware-compression.md +0 -168
  291. package/docs/guides/ai-personas-guide-ko.md +0 -239
  292. package/docs/guides/ai-personas-guide.md +0 -239
  293. package/docs/guides/checkpoint-system-guide-ko.md +0 -356
  294. package/docs/guides/checkpoint-system-guide.md +0 -356
  295. package/docs/guides/context-compression-guide-ko.md +0 -313
  296. package/docs/guides/context-compression-guide.md +0 -313
  297. package/docs/guides/independent-sprint-guide-ko.md +0 -321
  298. package/docs/guides/independent-sprint-guide.md +0 -321
  299. package/rules/global/aiwf-code-style-guide.md +0 -30
  300. package/rules/global/aiwf-coding-principles.md +0 -33
  301. package/rules/global/aiwf-development-process.md +0 -41
  302. package/rules/global/aiwf-global-rules.md +0 -84
  303. package/rules/manual/aiwf-generate-plan-docs.md +0 -280
  304. package/scripts/run-integration-tests.js +0 -317
  305. package/scripts/update-file-lists.js +0 -267
  306. package/scripts/validate-commands.js +0 -254
  307. package/src/DEPENDENCY_MAP.md +0 -90
  308. package/src/cli/cache-cli.js +0 -459
  309. package/src/cli/checkpoint-cli.js +0 -417
  310. package/src/cli/index.js +0 -481
  311. package/src/cli/language-cli.js +0 -286
  312. package/src/cli/sprint-cli.js +0 -287
  313. package/src/commands/ai-tool.js +0 -383
  314. package/src/commands/compress.js +0 -60
  315. package/src/commands/create-project.js +0 -160
  316. package/src/commands/evaluate.js +0 -459
  317. package/src/commands/persona.js +0 -309
  318. package/src/commands/sprint-independent.js +0 -393
  319. package/src/commands/sprint-task.js +0 -262
  320. package/src/commands/state.js +0 -1164
  321. package/src/commands/token.js +0 -312
  322. package/src/commands/yolo-config.js +0 -502
  323. package/src/config/file-lists.js +0 -147
  324. package/src/config/yolo-config-template.yaml +0 -168
  325. package/src/lib/ai-persona-manager.js +0 -711
  326. package/src/lib/backup-manager.js +0 -271
  327. package/src/lib/cache-system.js +0 -332
  328. package/src/lib/context-engine.js +0 -568
  329. package/src/lib/file-downloader.js +0 -304
  330. package/src/lib/github-integration.js +0 -402
  331. package/src/lib/installer.js +0 -1066
  332. package/src/lib/memory-profiler.js +0 -471
  333. package/src/lib/metrics-collector.js +0 -885
  334. package/src/lib/offline-detector.js +0 -386
  335. package/src/lib/resource-loader-enhanced.js +0 -399
  336. package/src/lib/resource-loader.js +0 -250
  337. package/src/lib/resources/commands/ai-persona.js +0 -602
  338. package/src/lib/resources/commands/compress-context.js +0 -389
  339. package/src/lib/resources/commands/evaluate.js +0 -246
  340. package/src/lib/resources/commands/persona-context-apply.js +0 -562
  341. package/src/lib/resources/commands/token-tracking.js +0 -443
  342. package/src/lib/resources/config/commit-patterns.js +0 -103
  343. package/src/lib/resources/config/language.json +0 -6
  344. package/src/lib/resources/personas/PERSONA_INDEX.md +0 -57
  345. package/src/lib/resources/personas/analyst.json +0 -44
  346. package/src/lib/resources/personas/architect/best_practices.md +0 -136
  347. package/src/lib/resources/personas/architect/knowledge_base.md +0 -377
  348. package/src/lib/resources/personas/architect.json +0 -44
  349. package/src/lib/resources/personas/backend/best_practices.md +0 -766
  350. package/src/lib/resources/personas/backend/knowledge_base.md +0 -1070
  351. package/src/lib/resources/personas/data_analyst/best_practices.md +0 -594
  352. package/src/lib/resources/personas/data_analyst/knowledge_base.md +0 -1057
  353. package/src/lib/resources/personas/developer.json +0 -44
  354. package/src/lib/resources/personas/developer.md +0 -37
  355. package/src/lib/resources/personas/evaluation_criteria.json +0 -137
  356. package/src/lib/resources/personas/frontend/best_practices.md +0 -445
  357. package/src/lib/resources/personas/frontend/knowledge_base.md +0 -729
  358. package/src/lib/resources/personas/persona-index.json +0 -31
  359. package/src/lib/resources/personas/reviewer.json +0 -44
  360. package/src/lib/resources/personas/security/best_practices.md +0 -307
  361. package/src/lib/resources/personas/security/knowledge_base.md +0 -498
  362. package/src/lib/resources/personas/tester.json +0 -44
  363. package/src/lib/resources/templates/README.md +0 -78
  364. package/src/lib/resources/templates/api-server/config.json +0 -64
  365. package/src/lib/resources/templates/api-server/template/.aiwf/config.json +0 -56
  366. package/src/lib/resources/templates/api-server/template/.aiwf/feature-ledger.json +0 -42
  367. package/src/lib/resources/templates/api-server/template/.aiwf/personas/backend-engineer.json +0 -40
  368. package/src/lib/resources/templates/api-server/template/.aiwf/scripts/cli.js +0 -111
  369. package/src/lib/resources/templates/api-server/template/.env.example +0 -29
  370. package/src/lib/resources/templates/api-server/template/.eslintrc.json +0 -23
  371. package/src/lib/resources/templates/api-server/template/README.md +0 -171
  372. package/src/lib/resources/templates/api-server/template/jest.config.js +0 -26
  373. package/src/lib/resources/templates/api-server/template/nodemon.json +0 -9
  374. package/src/lib/resources/templates/api-server/template/package.json +0 -61
  375. package/src/lib/resources/templates/api-server/template/src/app.ts +0 -60
  376. package/src/lib/resources/templates/api-server/template/src/config/swagger.ts +0 -38
  377. package/src/lib/resources/templates/api-server/template/src/controllers/aiwfController.ts +0 -54
  378. package/src/lib/resources/templates/api-server/template/src/controllers/authController.ts +0 -128
  379. package/src/lib/resources/templates/api-server/template/src/controllers/statusController.ts +0 -28
  380. package/src/lib/resources/templates/api-server/template/src/index.ts +0 -28
  381. package/src/lib/resources/templates/api-server/template/src/middleware/aiwfMiddleware.ts +0 -50
  382. package/src/lib/resources/templates/api-server/template/src/middleware/authMiddleware.ts +0 -41
  383. package/src/lib/resources/templates/api-server/template/src/middleware/errorHandler.ts +0 -42
  384. package/src/lib/resources/templates/api-server/template/src/middleware/notFoundHandler.ts +0 -14
  385. package/src/lib/resources/templates/api-server/template/src/middleware/requestLogger.ts +0 -20
  386. package/src/lib/resources/templates/api-server/template/src/routes/aiwf.ts +0 -31
  387. package/src/lib/resources/templates/api-server/template/src/routes/index.ts +0 -13
  388. package/src/lib/resources/templates/api-server/template/src/routes/v1/index.ts +0 -67
  389. package/src/lib/resources/templates/api-server/template/src/utils/logger.ts +0 -37
  390. package/src/lib/resources/templates/api-server/template/tests/app.test.ts +0 -40
  391. package/src/lib/resources/templates/api-server/template/tsconfig.json +0 -43
  392. package/src/lib/resources/templates/npm-library/config.json +0 -61
  393. package/src/lib/resources/templates/npm-library/template/README.md +0 -201
  394. package/src/lib/resources/templates/npm-library/template/package.json +0 -78
  395. package/src/lib/resources/templates/web-app/config.json +0 -53
  396. package/src/lib/resources/templates/web-app/template/.aiwf/config.json +0 -54
  397. package/src/lib/resources/templates/web-app/template/.aiwf/feature-ledger.json +0 -37
  398. package/src/lib/resources/templates/web-app/template/.aiwf/personas/fullstack-developer.json +0 -40
  399. package/src/lib/resources/templates/web-app/template/.aiwf/scripts/cli.js +0 -110
  400. package/src/lib/resources/templates/web-app/template/.eslintrc.cjs +0 -20
  401. package/src/lib/resources/templates/web-app/template/README.md +0 -151
  402. package/src/lib/resources/templates/web-app/template/index.html +0 -14
  403. package/src/lib/resources/templates/web-app/template/package.json +0 -44
  404. package/src/lib/resources/templates/web-app/template/postcss.config.js +0 -6
  405. package/src/lib/resources/templates/web-app/template/public/vite.svg +0 -1
  406. package/src/lib/resources/templates/web-app/template/src/App.tsx +0 -21
  407. package/src/lib/resources/templates/web-app/template/src/components/Layout.tsx +0 -57
  408. package/src/lib/resources/templates/web-app/template/src/components/aiwf/ContextStatus.tsx +0 -107
  409. package/src/lib/resources/templates/web-app/template/src/components/aiwf/TokenUsage.tsx +0 -71
  410. package/src/lib/resources/templates/web-app/template/src/index.css +0 -60
  411. package/src/lib/resources/templates/web-app/template/src/main.tsx +0 -10
  412. package/src/lib/resources/templates/web-app/template/src/pages/AiwfDashboard.tsx +0 -57
  413. package/src/lib/resources/templates/web-app/template/src/pages/HomePage.tsx +0 -89
  414. package/src/lib/resources/templates/web-app/template/src/pages/NotFound.tsx +0 -25
  415. package/src/lib/resources/templates/web-app/template/src/stores/aiwfStore.ts +0 -126
  416. package/src/lib/resources/templates/web-app/template/src/types/global.d.ts +0 -9
  417. package/src/lib/resources/templates/web-app/template/src/vite-env.d.ts +0 -1
  418. package/src/lib/resources/templates/web-app/template/tailwind.config.js +0 -30
  419. package/src/lib/resources/templates/web-app/template/tsconfig.json +0 -37
  420. package/src/lib/resources/templates/web-app/template/tsconfig.node.json +0 -10
  421. package/src/lib/resources/templates/web-app/template/vite.config.ts +0 -23
  422. package/src/lib/resources/utils/background-monitor.js +0 -223
  423. package/src/lib/resources/utils/compression-metrics.js +0 -1031
  424. package/src/lib/resources/utils/compression-strategies.js +0 -557
  425. package/src/lib/resources/utils/content-normalizer.js +0 -455
  426. package/src/lib/resources/utils/context-compressor.js +0 -583
  427. package/src/lib/resources/utils/context-rule-parser.js +0 -180
  428. package/src/lib/resources/utils/context-token-monitor.js +0 -463
  429. package/src/lib/resources/utils/context-update-manager.js +0 -502
  430. package/src/lib/resources/utils/git-utils.js +0 -220
  431. package/src/lib/resources/utils/importance-classifier.js +0 -645
  432. package/src/lib/resources/utils/information-filter.js +0 -710
  433. package/src/lib/resources/utils/persona-aware-compressor.js +0 -598
  434. package/src/lib/resources/utils/prompt-injector.js +0 -242
  435. package/src/lib/resources/utils/simplified-evaluator.js +0 -119
  436. package/src/lib/resources/utils/text-summarizer.js +0 -492
  437. package/src/lib/resources/utils/token-counter.js +0 -177
  438. package/src/lib/resources/utils/token-monitor.js +0 -484
  439. package/src/lib/resources/utils/token-reporter.js +0 -452
  440. package/src/lib/resources/utils/token-storage.js +0 -433
  441. package/src/lib/resources/utils/token-tracker.js +0 -283
  442. package/src/lib/rollback-manager.js +0 -418
  443. package/src/lib/state/priority-calculator.js +0 -217
  444. package/src/lib/state/state-index.js +0 -155
  445. package/src/lib/state/task-scanner.js +0 -328
  446. package/src/lib/task-analyzer.js +0 -599
  447. package/src/lib/template-cache-system.js +0 -559
  448. package/src/lib/template-downloader.js +0 -467
  449. package/src/lib/template-version-manager.js +0 -491
  450. package/src/lib/token-optimizer.js +0 -517
  451. package/src/lib/validator.js +0 -376
  452. package/src/utils/checkpoint-manager.js +0 -435
  453. package/src/utils/engineering-guard.js +0 -399
  454. package/src/utils/language-utils.js +0 -331
  455. package/src/utils/messages.js +0 -166
  456. package/src/utils/paths.js +0 -112
@@ -1,317 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- /**
4
- * 통합 테스트 실행 자동화 스크립트
5
- */
6
-
7
- import { spawn } from 'child_process';
8
- import fs from 'fs/promises';
9
- import path from 'path';
10
- import { fileURLToPath } from 'url';
11
-
12
- const __filename = fileURLToPath(import.meta.url);
13
- const __dirname = path.dirname(__filename);
14
-
15
- // 색상 출력을 위한 헬퍼
16
- const colors = {
17
- reset: '\x1b[0m',
18
- bright: '\x1b[1m',
19
- red: '\x1b[31m',
20
- green: '\x1b[32m',
21
- yellow: '\x1b[33m',
22
- blue: '\x1b[34m',
23
- magenta: '\x1b[35m',
24
- cyan: '\x1b[36m'
25
- };
26
-
27
- const log = {
28
- info: (msg) => console.log(`${colors.blue}[INFO]${colors.reset} ${msg}`),
29
- success: (msg) => console.log(`${colors.green}[SUCCESS]${colors.reset} ${msg}`),
30
- warning: (msg) => console.log(`${colors.yellow}[WARNING]${colors.reset} ${msg}`),
31
- error: (msg) => console.log(`${colors.red}[ERROR]${colors.reset} ${msg}`),
32
- header: (msg) => console.log(`${colors.bright}${colors.cyan}${msg}${colors.reset}`)
33
- };
34
-
35
- async function runCommand(command, args, options = {}) {
36
- return new Promise((resolve, reject) => {
37
- const child = spawn(command, args, {
38
- stdio: 'inherit',
39
- shell: true,
40
- ...options
41
- });
42
-
43
- child.on('close', (code) => {
44
- if (code === 0) {
45
- resolve(code);
46
- } else {
47
- reject(new Error(`Command failed with exit code ${code}`));
48
- }
49
- });
50
-
51
- child.on('error', reject);
52
- });
53
- }
54
-
55
- async function checkTestEnvironment() {
56
- log.info('테스트 환경 확인 중...');
57
-
58
- // Node.js 버전 확인
59
- const nodeVersion = process.version;
60
- log.info(`Node.js 버전: ${nodeVersion}`);
61
-
62
- // 필요한 디렉토리 확인
63
- const requiredDirs = [
64
- 'tests',
65
- 'tests/integration'
66
- ];
67
-
68
- for (const dir of requiredDirs) {
69
- const dirPath = path.join(__dirname, '..', dir);
70
- try {
71
- await fs.access(dirPath);
72
- log.success(`디렉토리 확인: ${dir}`);
73
- } catch {
74
- log.error(`디렉토리 누락: ${dir}`);
75
- return false;
76
- }
77
- }
78
-
79
- return true;
80
- }
81
-
82
- async function runBasicTests() {
83
- log.header('=== 기본 테스트 실행 ===');
84
-
85
- try {
86
- await runCommand('npm', ['test', '--', '--testPathPattern=tests/(?!integration).*\\.test\\.js$']);
87
- log.success('기본 테스트 완료');
88
- return true;
89
- } catch (error) {
90
- log.error('기본 테스트 실패');
91
- return false;
92
- }
93
- }
94
-
95
- async function runIntegrationTests() {
96
- log.header('=== 통합 테스트 실행 ===');
97
-
98
- try {
99
- await runCommand('npm', ['test', '--', '--testPathPattern=tests/integration/.*\\.test\\.js$']);
100
- log.success('통합 테스트 완료');
101
- return true;
102
- } catch (error) {
103
- log.error('통합 테스트 실패');
104
- return false;
105
- }
106
- }
107
-
108
- async function runCoverageReport() {
109
- log.header('=== 커버리지 리포트 생성 ===');
110
-
111
- try {
112
- await runCommand('npm', ['test', '--', '--coverage']);
113
- log.success('커버리지 리포트 생성 완료');
114
-
115
- // 커버리지 결과 파일 확인
116
- const coverageFile = path.join(__dirname, '..', 'coverage', 'coverage-summary.json');
117
- try {
118
- const coverageData = JSON.parse(await fs.readFile(coverageFile, 'utf8'));
119
- const total = coverageData.total;
120
-
121
- log.info(`커버리지 결과:`);
122
- log.info(` - Lines: ${total.lines.pct}%`);
123
- log.info(` - Functions: ${total.functions.pct}%`);
124
- log.info(` - Branches: ${total.branches.pct}%`);
125
- log.info(` - Statements: ${total.statements.pct}%`);
126
-
127
- // 80% 이상 커버리지 확인
128
- const threshold = 80;
129
- const coverageOK = total.lines.pct >= threshold &&
130
- total.functions.pct >= threshold &&
131
- total.branches.pct >= threshold &&
132
- total.statements.pct >= threshold;
133
-
134
- if (coverageOK) {
135
- log.success(`커버리지 목표 달성 (${threshold}% 이상)`);
136
- } else {
137
- log.warning(`커버리지 목표 미달성 (${threshold}% 미만)`);
138
- }
139
-
140
- return coverageOK;
141
- } catch (error) {
142
- log.warning('커버리지 결과 파일을 읽을 수 없습니다.');
143
- return false;
144
- }
145
- } catch (error) {
146
- log.error('커버리지 리포트 생성 실패');
147
- return false;
148
- }
149
- }
150
-
151
- async function generateTestReport() {
152
- log.header('=== 테스트 리포트 생성 ===');
153
-
154
- const reportData = {
155
- timestamp: new Date().toISOString(),
156
- testSuites: {
157
- basic: { executed: false, passed: false },
158
- integration: { executed: false, passed: false },
159
- coverage: { executed: false, passed: false }
160
- },
161
- summary: {
162
- totalTests: 0,
163
- passedTests: 0,
164
- failedTests: 0,
165
- coverageThreshold: '80%'
166
- }
167
- };
168
-
169
- // 테스트 결과 수집
170
- try {
171
- const testResults = await runCommand('npm', ['test', '--', '--json', '--outputFile=test-results.json'], {
172
- stdio: 'pipe'
173
- });
174
-
175
- try {
176
- const resultsFile = path.join(__dirname, '..', 'test-results.json');
177
- const results = JSON.parse(await fs.readFile(resultsFile, 'utf8'));
178
-
179
- reportData.summary.totalTests = results.numTotalTests;
180
- reportData.summary.passedTests = results.numPassedTests;
181
- reportData.summary.failedTests = results.numFailedTests;
182
-
183
- // 임시 파일 정리
184
- await fs.unlink(resultsFile);
185
- } catch (error) {
186
- log.warning('테스트 결과 파일을 읽을 수 없습니다.');
187
- }
188
- } catch (error) {
189
- log.warning('테스트 결과 수집 중 오류가 발생했습니다.');
190
- }
191
-
192
- // 리포트 파일 생성
193
- const reportPath = path.join(__dirname, '..', 'test-report.json');
194
- await fs.writeFile(reportPath, JSON.stringify(reportData, null, 2));
195
-
196
- log.success(`테스트 리포트 생성: ${reportPath}`);
197
- return true;
198
- }
199
-
200
- async function cleanupTestFiles() {
201
- log.info('테스트 임시 파일 정리 중...');
202
-
203
- const tempDirs = [
204
- path.join(__dirname, '..', 'tmp'),
205
- path.join(__dirname, '..', 'coverage')
206
- ];
207
-
208
- for (const dir of tempDirs) {
209
- try {
210
- await fs.rm(dir, { recursive: true, force: true });
211
- log.success(`정리 완료: ${dir}`);
212
- } catch (error) {
213
- // 디렉토리가 존재하지 않는 경우는 무시
214
- }
215
- }
216
- }
217
-
218
- async function main() {
219
- log.header('🧪 AIWF 통합 테스트 Suite 실행');
220
-
221
- const startTime = Date.now();
222
- let allTestsPassed = true;
223
-
224
- try {
225
- // 1. 테스트 환경 확인
226
- if (!await checkTestEnvironment()) {
227
- log.error('테스트 환경 확인 실패');
228
- process.exit(1);
229
- }
230
-
231
- // 2. 기본 테스트 실행
232
- const basicTestsOK = await runBasicTests();
233
- if (!basicTestsOK) {
234
- allTestsPassed = false;
235
- }
236
-
237
- // 3. 통합 테스트 실행
238
- const integrationTestsOK = await runIntegrationTests();
239
- if (!integrationTestsOK) {
240
- allTestsPassed = false;
241
- }
242
-
243
- // 4. 커버리지 리포트 생성
244
- const coverageOK = await runCoverageReport();
245
- if (!coverageOK) {
246
- allTestsPassed = false;
247
- }
248
-
249
- // 5. 테스트 리포트 생성
250
- await generateTestReport();
251
-
252
- // 6. 정리
253
- await cleanupTestFiles();
254
-
255
- const endTime = Date.now();
256
- const duration = Math.round((endTime - startTime) / 1000);
257
-
258
- log.header('=== 테스트 실행 완료 ===');
259
- log.info(`총 실행 시간: ${duration}초`);
260
-
261
- if (allTestsPassed) {
262
- log.success('모든 테스트가 성공적으로 완료되었습니다! 🎉');
263
- process.exit(0);
264
- } else {
265
- log.error('일부 테스트가 실패했습니다. 자세한 내용을 확인해 주세요.');
266
- process.exit(1);
267
- }
268
-
269
- } catch (error) {
270
- log.error(`테스트 실행 중 오류 발생: ${error.message}`);
271
- process.exit(1);
272
- }
273
- }
274
-
275
- // 명령줄 인수 처리
276
- const args = process.argv.slice(2);
277
- if (args.includes('--help') || args.includes('-h')) {
278
- console.log(`
279
- AIWF 통합 테스트 Suite 실행 스크립트
280
-
281
- 사용법:
282
- node scripts/run-integration-tests.js [옵션]
283
-
284
- 옵션:
285
- --help, -h 이 도움말 표시
286
- --basic-only 기본 테스트만 실행
287
- --integration-only 통합 테스트만 실행
288
- --coverage-only 커버리지 리포트만 생성
289
- --no-cleanup 테스트 후 정리 작업 생략
290
-
291
- 예시:
292
- node scripts/run-integration-tests.js
293
- node scripts/run-integration-tests.js --basic-only
294
- node scripts/run-integration-tests.js --coverage-only
295
- `);
296
- process.exit(0);
297
- }
298
-
299
- // 개별 테스트 실행 옵션
300
- if (args.includes('--basic-only')) {
301
- (async () => {
302
- await checkTestEnvironment();
303
- await runBasicTests();
304
- })();
305
- } else if (args.includes('--integration-only')) {
306
- (async () => {
307
- await checkTestEnvironment();
308
- await runIntegrationTests();
309
- })();
310
- } else if (args.includes('--coverage-only')) {
311
- (async () => {
312
- await checkTestEnvironment();
313
- await runCoverageReport();
314
- })();
315
- } else {
316
- main();
317
- }
@@ -1,267 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- /**
4
- * AIWF 파일 목록 자동 업데이트 스크립트
5
- *
6
- * 이 스크립트는 claude-code 디렉토리를 스캔하여
7
- * src/config/file-lists.js 파일을 자동으로 업데이트합니다.
8
- *
9
- * 사용법:
10
- * npm run update:file-lists
11
- * npm run update:file-lists -- --dry-run # 미리보기만
12
- */
13
-
14
- import fs from 'fs/promises';
15
- import path from 'path';
16
- import { fileURLToPath } from 'url';
17
- import chalk from 'chalk';
18
-
19
- const __filename = fileURLToPath(import.meta.url);
20
- const __dirname = path.dirname(__filename);
21
- const ROOT_DIR = path.resolve(__dirname, '..');
22
-
23
- // 스캔할 디렉토리 경로들
24
- const SCAN_PATHS = {
25
- commands: {
26
- en: path.join(ROOT_DIR, 'claude-code/aiwf/en/.claude/commands/aiwf'),
27
- ko: path.join(ROOT_DIR, 'claude-code/aiwf/ko/.claude/commands/aiwf')
28
- },
29
- globalRules: path.join(ROOT_DIR, 'rules/global'),
30
- manualRules: path.join(ROOT_DIR, 'rules/manual')
31
- };
32
-
33
- const OUTPUT_FILE = path.join(ROOT_DIR, 'src/config/file-lists.js');
34
-
35
- /**
36
- * 디렉토리에서 .md 파일들을 스캔
37
- */
38
- async function scanDirectory(dirPath) {
39
- try {
40
- const files = await fs.readdir(dirPath);
41
- return files
42
- .filter(file => file.endsWith('.md'))
43
- .sort();
44
- } catch (error) {
45
- console.warn(chalk.yellow(`Warning: Could not scan directory ${dirPath}: ${error.message}`));
46
- return [];
47
- }
48
- }
49
-
50
- /**
51
- * 두 언어 버전에서 공통으로 존재하는 파일들만 추출
52
- */
53
- async function getCommonCommandFiles() {
54
- const [enFiles, koFiles] = await Promise.all([
55
- scanDirectory(SCAN_PATHS.commands.en),
56
- scanDirectory(SCAN_PATHS.commands.ko)
57
- ]);
58
-
59
- // 두 언어에 모두 존재하는 파일들만 포함
60
- const commonFiles = enFiles.filter(file => koFiles.includes(file));
61
-
62
- // 언어별 특수 파일들도 포함 (선택적)
63
- const enOnlyFiles = enFiles.filter(file => !koFiles.includes(file));
64
- const koOnlyFiles = koFiles.filter(file => !enFiles.includes(file));
65
-
66
- console.log(chalk.blue('📊 Command Files Analysis:'));
67
- console.log(` Common files: ${chalk.green(commonFiles.length)}`);
68
- console.log(` English only: ${chalk.yellow(enOnlyFiles.length)} ${enOnlyFiles.length > 0 ? `(${enOnlyFiles.join(', ')})` : ''}`);
69
- console.log(` Korean only: ${chalk.yellow(koOnlyFiles.length)} ${koOnlyFiles.length > 0 ? `(${koOnlyFiles.join(', ')})` : ''}`);
70
-
71
- // 공통 파일들 + 언어별 특수 파일들을 모두 포함
72
- return [...commonFiles, ...enOnlyFiles, ...koOnlyFiles].sort();
73
- }
74
-
75
- /**
76
- * file-lists.js 파일 생성
77
- */
78
- async function generateFileListsContent(commandFiles, globalRulesFiles, manualRulesFiles) {
79
- const template = `/**
80
- * AIWF 설치 시 다운로드할 파일 목록들
81
- * 이 파일은 GitHub에서 다운로드할 파일들의 사전 정의된 목록을 포함합니다.
82
- *
83
- * ⚠️ 이 파일은 자동 생성됩니다. 수동으로 편집하지 마세요!
84
- * 업데이트하려면: npm run update:file-lists
85
- *
86
- * Generated at: ${new Date().toISOString()}
87
- */
88
-
89
- // Claude Code 명령어 파일 목록 (한국어와 영어 공통)
90
- export const COMMAND_FILES = [
91
- ${commandFiles.map(file => ` '${file}'`).join(',\n')}
92
- ];
93
-
94
- // 글로벌 룰 파일 목록
95
- export const GLOBAL_RULES_FILES = [
96
- ${globalRulesFiles.map(file => ` '${file}'`).join(',\n')}
97
- ];
98
-
99
- // 수동 룰 파일 목록
100
- export const MANUAL_RULES_FILES = [
101
- ${manualRulesFiles.map(file => ` '${file}'`).join(',\n')}
102
- ];
103
-
104
- // 템플릿 파일 목록 (향후 추가 예정)
105
- export const TEMPLATE_FILES = [
106
- // 템플릿 파일들이 추가되면 여기에 나열
107
- ];
108
-
109
- // 프롬프트 파일 목록 (향후 추가 예정)
110
- export const PROMPT_FILES = [
111
- // 프롬프트 파일들이 추가되면 여기에 나열
112
- ];
113
-
114
- // 모든 파일 목록을 하나의 객체로 export
115
- export const FILE_LISTS = {
116
- COMMAND_FILES,
117
- GLOBAL_RULES_FILES,
118
- MANUAL_RULES_FILES,
119
- TEMPLATE_FILES,
120
- PROMPT_FILES
121
- };
122
-
123
- // 개별 카테고리별 파일 수 정보
124
- export const FILE_COUNTS = {
125
- commands: COMMAND_FILES.length,
126
- globalRules: GLOBAL_RULES_FILES.length,
127
- manualRules: MANUAL_RULES_FILES.length,
128
- templates: TEMPLATE_FILES.length,
129
- prompts: PROMPT_FILES.length,
130
- total: COMMAND_FILES.length + GLOBAL_RULES_FILES.length + MANUAL_RULES_FILES.length + TEMPLATE_FILES.length + PROMPT_FILES.length
131
- };
132
-
133
- /**
134
- * 특정 언어의 파일 존재 여부 확인을 위한 헬퍼 함수들
135
- */
136
-
137
- /**
138
- * 언어별로 존재하지 않을 수 있는 파일들을 필터링
139
- * @param {Array<string>} fileList - 원본 파일 목록
140
- * @param {string} language - 언어 코드 (ko, en)
141
- * @returns {Array<string>} 필터링된 파일 목록
142
- */
143
- export function filterFilesByLanguage(fileList, language) {
144
- // 일부 파일들은 특정 언어에만 존재할 수 있음
145
- const languageSpecificFiles = {
146
- ko: [
147
- // 한국어에만 있는 파일들 (현재는 없음)
148
- ],
149
- en: [
150
- // 영어에만 있는 파일들 (현재는 없음)
151
- ]
152
- };
153
-
154
- // 현재는 모든 파일이 두 언어 모두 존재한다고 가정
155
- return fileList;
156
- }
157
-
158
- /**
159
- * 파일 목록 업데이트를 위한 헬퍼 함수
160
- * 실제 디렉토리를 스캔하여 파일 목록을 업데이트할 수 있는 함수
161
- */
162
- export function getLatestFileList() {
163
- // 이 함수는 향후 자동 업데이트 기능 구현 시 사용
164
- return {
165
- commands: COMMAND_FILES,
166
- globalRules: GLOBAL_RULES_FILES,
167
- manualRules: MANUAL_RULES_FILES,
168
- templates: TEMPLATE_FILES,
169
- prompts: PROMPT_FILES
170
- };
171
- }`;
172
-
173
- return template;
174
- }
175
-
176
- /**
177
- * 기존 파일과 비교하여 변경사항 확인
178
- */
179
- async function compareWithExisting(newContent) {
180
- try {
181
- const existingContent = await fs.readFile(OUTPUT_FILE, 'utf-8');
182
-
183
- // 생성 시간 라인 제외하고 비교 (Generated at: 부분)
184
- const normalizeContent = (content) => {
185
- return content.replace(/Generated at: .*$/m, 'Generated at: <timestamp>');
186
- };
187
-
188
- return normalizeContent(existingContent) === normalizeContent(newContent);
189
- } catch {
190
- return false; // 파일이 없으면 변경사항이 있다고 간주
191
- }
192
- }
193
-
194
- /**
195
- * 메인 실행 함수
196
- */
197
- async function main() {
198
- const isDryRun = process.argv.includes('--dry-run');
199
- const isVerbose = process.argv.includes('--verbose');
200
-
201
- console.log(chalk.blue.bold('🔄 AIWF File Lists Update Script'));
202
- console.log(chalk.gray(`Scanning directories and updating file lists...\n`));
203
-
204
- try {
205
- // 각 디렉토리 스캔
206
- const [commandFiles, globalRulesFiles, manualRulesFiles] = await Promise.all([
207
- getCommonCommandFiles(),
208
- scanDirectory(SCAN_PATHS.globalRules),
209
- scanDirectory(SCAN_PATHS.manualRules)
210
- ]);
211
-
212
- // 통계 출력
213
- console.log(chalk.blue('📊 Scan Results:'));
214
- console.log(` Command files: ${chalk.green(commandFiles.length)}`);
215
- console.log(` Global rules: ${chalk.green(globalRulesFiles.length)}`);
216
- console.log(` Manual rules: ${chalk.green(manualRulesFiles.length)}`);
217
- console.log(` Total files: ${chalk.green(commandFiles.length + globalRulesFiles.length + manualRulesFiles.length)}`);
218
-
219
- if (isVerbose) {
220
- console.log(chalk.gray('\n📝 Detailed file lists:'));
221
- console.log(chalk.gray('Commands:'), commandFiles.join(', '));
222
- console.log(chalk.gray('Global rules:'), globalRulesFiles.join(', '));
223
- console.log(chalk.gray('Manual rules:'), manualRulesFiles.join(', '));
224
- }
225
-
226
- // 새 내용 생성
227
- const newContent = await generateFileListsContent(commandFiles, globalRulesFiles, manualRulesFiles);
228
-
229
- // 변경사항 확인
230
- const hasChanges = !(await compareWithExisting(newContent));
231
-
232
- if (!hasChanges) {
233
- console.log(chalk.green('\n✅ File lists are already up to date!'));
234
- return;
235
- }
236
-
237
- if (isDryRun) {
238
- console.log(chalk.yellow('\n🔍 Dry run mode - Changes detected but not saved:'));
239
- console.log(chalk.gray(`Would update: ${OUTPUT_FILE}`));
240
- console.log(chalk.gray(`Content length: ${newContent.length} characters`));
241
- return;
242
- }
243
-
244
- // 파일 업데이트
245
- await fs.writeFile(OUTPUT_FILE, newContent, 'utf-8');
246
-
247
- console.log(chalk.green('\n✅ Successfully updated file lists!'));
248
- console.log(chalk.gray(`Updated: ${OUTPUT_FILE}`));
249
- console.log(chalk.blue('\n💡 Next steps:'));
250
- console.log(chalk.gray(' 1. Review the changes: git diff src/config/file-lists.js'));
251
- console.log(chalk.gray(' 2. Test the changes: npm test'));
252
- console.log(chalk.gray(' 3. Commit the changes: git add . && git commit -m "update: refresh file lists"'));
253
-
254
- } catch (error) {
255
- console.error(chalk.red('\n❌ Error updating file lists:'));
256
- console.error(chalk.red(error.message));
257
- console.error(chalk.gray(error.stack));
258
- process.exit(1);
259
- }
260
- }
261
-
262
- // 스크립트가 직접 실행될 때만 main 함수 호출
263
- if (import.meta.url === `file://${process.argv[1]}`) {
264
- main();
265
- }
266
-
267
- export { main as updateFileLists };