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,418 +0,0 @@
1
- import fs from 'fs/promises';
2
- import path from 'path';
3
- import ora from 'ora';
4
- import chalk from 'chalk';
5
- import { getMessages } from '../utils/messages.js';
6
- import { getToolDirectory as getToolDirectoryPath } from '../utils/paths.js';
7
-
8
- // Backup file patterns for each tool
9
- const BACKUP_PATTERNS = {
10
- claudeCode: /^claude-commands-aiwf-.*\.bak$/,
11
- geminiCLI: /^gemini-prompts-aiwf-.*\.bak$/,
12
- cursor: /^cursor-rules-.*\.bak$/,
13
- windsurf: /^windsurf-rules-.*\.bak$/,
14
- aiwf: /^aiwf-.*\.bak$/
15
- };
16
-
17
- // Backup file prefixes
18
- const BACKUP_PREFIXES = {
19
- claudeCode: 'claude-commands-aiwf-',
20
- geminiCLI: 'gemini-prompts-aiwf-',
21
- cursor: 'cursor-rules-',
22
- windsurf: 'windsurf-rules-',
23
- aiwf: 'aiwf-'
24
- };
25
-
26
- // Tool names for localization
27
- const TOOL_NAMES = {
28
- ko: {
29
- aiwf: 'AIWF 코어 구조',
30
- claudeCode: 'Claude Code 명령어',
31
- 'claude-code': 'Claude Code 명령어',
32
- geminiCLI: 'Gemini-CLI 프롬프트',
33
- 'gemini-cli': 'Gemini-CLI 프롬프트',
34
- cursor: 'Cursor IDE 규칙',
35
- windsurf: 'Windsurf IDE 규칙'
36
- },
37
- en: {
38
- aiwf: 'AIWF Core Structure',
39
- claudeCode: 'Claude Code Commands',
40
- 'claude-code': 'Claude Code Commands',
41
- geminiCLI: 'Gemini-CLI Prompts',
42
- 'gemini-cli': 'Gemini-CLI Prompts',
43
- cursor: 'Cursor IDE Rules',
44
- windsurf: 'Windsurf IDE Rules'
45
- }
46
- };
47
-
48
- /**
49
- * Get tool directory path
50
- * @param {string} tool - Tool name
51
- * @returns {string|null} Directory path or null
52
- */
53
- export function getToolDirectory(tool) {
54
- return getToolDirectoryPath(tool);
55
- }
56
-
57
- /**
58
- * Get localized tool name
59
- * @param {string} tool - Tool name
60
- * @param {string} language - Language code
61
- * @returns {string} Localized tool name
62
- */
63
- export function getToolName(tool, language) {
64
- return TOOL_NAMES[language]?.[tool] || tool;
65
- }
66
-
67
- /**
68
- * Restore original path from backup filename
69
- * @param {string} backupFileName - Backup file name
70
- * @param {string} tool - Tool name
71
- * @returns {string|null} Original path or null
72
- */
73
- function restoreOriginalPath(backupFileName, tool) {
74
- const baseDir = getToolDirectory(tool);
75
- if (!baseDir) return null;
76
-
77
- let originalFileName = backupFileName;
78
-
79
- // Remove tool-specific prefix
80
- const prefix = BACKUP_PREFIXES[tool];
81
- if (prefix && originalFileName.startsWith(prefix)) {
82
- originalFileName = originalFileName.substring(prefix.length);
83
- }
84
-
85
- // Remove .bak extension
86
- if (originalFileName.endsWith('.bak')) {
87
- originalFileName = originalFileName.substring(0, originalFileName.length - 4);
88
- }
89
-
90
- // Replace hyphens with slashes (subdirectory structure)
91
- originalFileName = originalFileName.replace(/-/g, '/');
92
-
93
- return path.join(baseDir, originalFileName);
94
- }
95
-
96
- /**
97
- * Get backup files for a specific tool
98
- * @param {string} tool - Tool name
99
- * @param {string} backupDir - Backup directory path
100
- * @returns {Promise<Array>} Array of backup file info
101
- */
102
- async function getBackupFilesForTool(tool, backupDir) {
103
- const toolBackupFiles = [];
104
-
105
- try {
106
- const backupFiles = await fs.readdir(backupDir);
107
- const pattern = BACKUP_PATTERNS[tool];
108
-
109
- if (pattern) {
110
- const matchingFiles = backupFiles.filter(file => pattern.test(file));
111
- for (const file of matchingFiles) {
112
- toolBackupFiles.push({
113
- backupFile: path.join(backupDir, file),
114
- originalPath: restoreOriginalPath(file, tool)
115
- });
116
- }
117
- }
118
- } catch (error) {
119
- // Backup directory doesn't exist or can't be read
120
- }
121
-
122
- return toolBackupFiles;
123
- }
124
-
125
- /**
126
- * Restore a single backup file
127
- * @param {Object} backup - Backup file info
128
- * @returns {Promise<boolean>} Success status
129
- */
130
- async function restoreBackupFile(backup) {
131
- try {
132
- // Ensure target directory exists
133
- const targetDir = path.dirname(backup.originalPath);
134
- await fs.mkdir(targetDir, { recursive: true });
135
-
136
- // Copy backup file to original location
137
- await fs.copyFile(backup.backupFile, backup.originalPath);
138
- return true;
139
- } catch (error) {
140
- return false;
141
- }
142
- }
143
-
144
- /**
145
- * Rollback a specific tool
146
- * @param {string} tool - Tool name
147
- * @param {string} backupDir - Backup directory path
148
- * @param {string} language - Language code
149
- * @returns {Promise<Object>} Rollback result
150
- */
151
- export async function rollbackTool(tool, backupDir, language = 'ko') {
152
- const messages = getMessages(language);
153
- const spinner = ora(
154
- language === 'ko' ? `${tool} 도구를 롤백하는 중...` : `Rolling back ${tool}...`
155
- ).start();
156
-
157
- try {
158
- // 1. Remove tool directory
159
- const toolDir = getToolDirectory(tool);
160
- if (toolDir) {
161
- const dirExists = await fs
162
- .access(toolDir)
163
- .then(() => true)
164
- .catch(() => false);
165
- if (dirExists) {
166
- await fs.rm(toolDir, { recursive: true, force: true });
167
- spinner.text =
168
- language === 'ko' ? `${tool} 디렉토리 삭제 완료` : `${tool} directory removed`;
169
- }
170
- }
171
-
172
- // 2. Restore from backup
173
- const backupFiles = await getBackupFilesForTool(tool, backupDir);
174
- let restoredCount = 0;
175
-
176
- for (const backup of backupFiles) {
177
- const restored = await restoreBackupFile(backup);
178
- if (restored) {
179
- restoredCount++;
180
- }
181
- }
182
-
183
- if (restoredCount > 0) {
184
- spinner.succeed(
185
- chalk.green(
186
- language === 'ko'
187
- ? `${tool} 롤백 완료 (${restoredCount}개 파일 복원)`
188
- : `${tool} rolled back successfully (${restoredCount} files restored)`
189
- )
190
- );
191
- return { success: true, restoredCount };
192
- } else {
193
- spinner.warn(
194
- chalk.yellow(
195
- language === 'ko'
196
- ? `${tool} 롤백: 복원할 백업 파일이 없음`
197
- : `${tool} rollback: No backup files to restore`
198
- )
199
- );
200
- return { success: true, restoredCount: 0 };
201
- }
202
- } catch (error) {
203
- spinner.fail(
204
- chalk.red(
205
- language === 'ko'
206
- ? `${tool} 롤백 실패: ${error.message}`
207
- : `Failed to rollback ${tool}: ${error.message}`
208
- )
209
- );
210
- return { success: false, error: error.message };
211
- }
212
- }
213
-
214
- /**
215
- * Enhanced rollback function with backup directory
216
- * @param {string} tool - Tool name
217
- * @param {string} backupDir - Backup directory path
218
- * @param {string} language - Language code
219
- * @returns {Promise<boolean>} Success status
220
- */
221
- export async function rollbackToolEnhanced(tool, backupDir, language = 'ko') {
222
- const spinner = ora(`Rolling back ${tool}...`).start();
223
-
224
- try {
225
- // Get tool directory mapping
226
- const toolDir = getToolDirectory(tool);
227
- if (!toolDir) {
228
- spinner.fail(`Unknown tool: ${tool}`);
229
- return false;
230
- }
231
-
232
- // Remove installed directory
233
- try {
234
- await fs.access(toolDir);
235
- await fs.rm(toolDir, { recursive: true, force: true });
236
- spinner.text = `Removed ${toolDir}`;
237
- } catch (error) {
238
- // Directory doesn't exist, skip
239
- }
240
-
241
- // Restore from backup if available
242
- if (backupDir) {
243
- const backupFiles = await getBackupFilesForTool(tool, backupDir);
244
- for (const backup of backupFiles) {
245
- await restoreBackupFile(backup);
246
- spinner.text = `Restored ${backup.originalPath}`;
247
- }
248
- }
249
-
250
- spinner.succeed(`${tool} rolled back successfully`);
251
- return true;
252
- } catch (error) {
253
- spinner.fail(`Failed to rollback ${tool}: ${error.message}`);
254
- return false;
255
- }
256
- }
257
-
258
- /**
259
- * Generate installation report
260
- * @param {Object} validationResults - Validation results
261
- * @param {string} language - Language code
262
- * @param {string} installationType - Installation type
263
- */
264
- export function generateInstallationReport(
265
- validationResults,
266
- language,
267
- installationType = 'install'
268
- ) {
269
- const messages = getMessages(language);
270
-
271
- // Header
272
- console.log(chalk.blue.bold('\n' + '='.repeat(60)));
273
- console.log(
274
- chalk.blue.bold(
275
- language === 'ko'
276
- ? '🔍 AIWF 설치 검증 및 리포트'
277
- : '🔍 AIWF Installation Validation & Report'
278
- )
279
- );
280
- console.log(chalk.blue.bold('='.repeat(60)));
281
-
282
- // Installation type
283
- const installTypeText = {
284
- install: language === 'ko' ? '새 설치' : 'Fresh Installation',
285
- update: language === 'ko' ? '업데이트' : 'Update',
286
- reinstall: language === 'ko' ? '재설치' : 'Reinstallation'
287
- };
288
- console.log(
289
- chalk.gray(
290
- `설치 유형 / Installation Type: ${installTypeText[installationType] || installTypeText.install}`
291
- )
292
- );
293
- console.log(chalk.gray(`검증 시간 / Validation Time: ${new Date().toLocaleString()}`));
294
-
295
- // Overall summary
296
- const { overall } = validationResults;
297
- const statusIcon = overall.success ? '✅' : '❌';
298
- const statusColor = overall.success ? chalk.green : chalk.red;
299
-
300
- console.log(
301
- statusColor(
302
- `\n${statusIcon} 전체 상태 / Overall Status: ${overall.success ? 'PASSED' : 'FAILED'}`
303
- )
304
- );
305
- console.log(chalk.gray(` 검증한 도구 / Tools Checked: ${overall.toolsChecked}`));
306
- console.log(chalk.gray(` 성공한 도구 / Tools Passed: ${overall.toolsPassed}`));
307
-
308
- if (overall.toolsFailed > 0) {
309
- console.log(chalk.red(` 실패한 도구 / Tools Failed: ${overall.toolsFailed}`));
310
- console.log(chalk.red(` 총 이슈 수 / Total Issues: ${overall.totalIssues}`));
311
- }
312
-
313
- // Individual tool results
314
- console.log(chalk.blue('\n=== 개별 도구 결과 / Individual Tool Results ==='));
315
-
316
- for (const [toolName, result] of Object.entries(validationResults.tools)) {
317
- const toolIcon = result.success ? '✅' : '❌';
318
- const toolColor = result.success ? chalk.green : chalk.red;
319
-
320
- console.log(toolColor(`\n${toolIcon} ${result.description} (${toolName})`));
321
- console.log(chalk.gray(` 디렉토리 / Directory: ${result.baseDir}`));
322
- console.log(chalk.gray(` 파일 수 / Files Found: ${result.checks.fileCount}`));
323
- console.log(
324
- chalk.gray(` 총 크기 / Total Size: ${(result.checks.totalSize / 1024).toFixed(2)} KB`)
325
- );
326
-
327
- if (result.checks.issues.length > 0) {
328
- console.log(chalk.red(` 이슈 / Issues:`));
329
- for (const issue of result.checks.issues) {
330
- console.log(chalk.red(` • ${issue}`));
331
- }
332
- }
333
-
334
- if (result.checks.requiredFiles.length > 0) {
335
- console.log(chalk.gray(` 필수 파일 / Required Files:`));
336
- for (const fileCheck of result.checks.requiredFiles) {
337
- const fileIcon = fileCheck.valid ? '✅' : '❌';
338
- const fileColor = fileCheck.valid ? chalk.gray : chalk.red;
339
- console.log(
340
- fileColor(
341
- ` ${fileIcon} ${fileCheck.file} (${(fileCheck.size / 1024).toFixed(2)} KB)`
342
- )
343
- );
344
- }
345
- }
346
- }
347
-
348
- // Recommendations
349
- console.log(chalk.blue('\n=== 권장사항 / Recommendations ==='));
350
- if (overall.success) {
351
- console.log(chalk.green('🎉 모든 도구가 올바르게 설치되어 검증되었습니다!'));
352
- console.log(chalk.green('🎉 All tools are properly installed and validated!'));
353
- console.log(chalk.blue('\n다음 단계 / Next Steps:'));
354
- console.log(chalk.white(' 1. Claude Code에서 프로젝트를 열어보세요'));
355
- console.log(chalk.white(' 2. /project:aiwf:initialize 명령어로 프로젝트를 초기화하세요'));
356
- console.log(chalk.white(' 3. 프로젝트 관리를 시작하세요!'));
357
- } else {
358
- console.log(chalk.yellow('⚠️ 일부 이슈가 발견되었습니다. 위의 세부사항을 확인하세요.'));
359
- console.log(chalk.yellow('⚠️ Some issues were found. See details above.'));
360
-
361
- // Solutions for failed tools
362
- const failedTools = Object.entries(validationResults.tools)
363
- .filter(([_, result]) => !result.success)
364
- .map(([tool, _]) => tool);
365
-
366
- if (failedTools.length > 0) {
367
- console.log(chalk.blue('\n해결 방안 / Solutions:'));
368
- console.log(chalk.yellow(' • 전체 재설치를 시도해보세요'));
369
- console.log(chalk.yellow(' • 실패한 도구만 롤백 후 다시 설치하세요'));
370
- console.log(chalk.yellow(' • 네트워크 연결을 확인하고 다시 시도하세요'));
371
- }
372
- }
373
-
374
- console.log(chalk.blue.bold('\n' + '='.repeat(60)));
375
- }
376
-
377
- /**
378
- * Enhanced installation report generation
379
- * @param {Object} results - Installation results
380
- * @param {string} language - Language code
381
- */
382
- export function generateInstallationReportEnhanced(results, language) {
383
- const msg = getMessages(language);
384
-
385
- console.log(
386
- '\n' + chalk.bold(language === 'ko' ? '📋 설치 리포트' : '📋 Installation Report')
387
- );
388
- console.log('─'.repeat(50));
389
-
390
- if (results.success.length > 0) {
391
- console.log(
392
- chalk.green(
393
- language === 'ko' ? '✅ 성공적으로 설치된 도구:' : '✅ Successfully Installed Tools:'
394
- )
395
- );
396
- results.success.forEach(tool => {
397
- console.log(chalk.green(` ✓ ${getToolName(tool, language)}`));
398
- });
399
- }
400
-
401
- if (results.failed.length > 0) {
402
- console.log(
403
- chalk.red(language === 'ko' ? '\n❌ 설치 실패한 도구:' : '\n❌ Failed to Install:')
404
- );
405
- results.failed.forEach(({ tool, reason }) => {
406
- console.log(chalk.red(` ✗ ${getToolName(tool, language)}: ${reason}`));
407
- });
408
- }
409
-
410
- if (results.warnings.length > 0) {
411
- console.log(chalk.yellow(language === 'ko' ? '\n⚠️ 경고:' : '\n⚠️ Warnings:'));
412
- results.warnings.forEach(warning => {
413
- console.log(chalk.yellow(` ⚠ ${warning}`));
414
- });
415
- }
416
-
417
- console.log('─'.repeat(50));
418
- }
@@ -1,217 +0,0 @@
1
- /**
2
- * AIWF Priority Calculator
3
- * 태스크 우선순위 계산 및 관리
4
- */
5
-
6
- export class PriorityCalculator {
7
- constructor(workflowRules) {
8
- this.weights = workflowRules?.priority_weights || {
9
- urgency: 0.4,
10
- importance: 0.3,
11
- dependencies: 0.2,
12
- effort: 0.1
13
- };
14
- }
15
-
16
- /**
17
- * 태스크의 긴급도 계산
18
- * - 마감일까지 남은 시간
19
- * - 차단된 다른 태스크 수
20
- * - 마일스톤 내 위치
21
- */
22
- calculateUrgency(task, stateIndex) {
23
- let urgencyScore = 0;
24
-
25
- // 마감일 기반 점수 (0-1)
26
- if (task.due_date) {
27
- const dueDate = new Date(task.due_date);
28
- const now = new Date();
29
- const daysUntilDue = Math.ceil((dueDate - now) / (1000 * 60 * 60 * 24));
30
-
31
- if (daysUntilDue <= 0) urgencyScore += 1.0; // 이미 지남
32
- else if (daysUntilDue <= 1) urgencyScore += 0.9; // 1일 이내
33
- else if (daysUntilDue <= 3) urgencyScore += 0.7; // 3일 이내
34
- else if (daysUntilDue <= 7) urgencyScore += 0.5; // 1주 이내
35
- else urgencyScore += Math.max(0, 1 - daysUntilDue / 30); // 선형 감소
36
- }
37
-
38
- // 차단된 태스크 수 기반 점수
39
- const blockedByThis = this.countTasksBlockedBy(task.id, stateIndex);
40
- urgencyScore += Math.min(blockedByThis * 0.2, 0.5);
41
-
42
- // 스프린트 진행도 기반 점수
43
- if (task.sprint_id && stateIndex.sprint_summary[task.sprint_id]) {
44
- const sprintProgress = stateIndex.sprint_summary[task.sprint_id].progress || 0;
45
- if (sprintProgress > 0.8) urgencyScore += 0.3; // 스프린트 거의 완료
46
- else if (sprintProgress > 0.5) urgencyScore += 0.1;
47
- }
48
-
49
- return Math.min(urgencyScore, 1.0);
50
- }
51
-
52
- /**
53
- * 태스크의 중요도 계산
54
- * - 비즈니스 가치
55
- * - 아키텍처적 영향
56
- * - 프로젝트 목표와의 연관성
57
- */
58
- calculateImportance(task, stateIndex) {
59
- let importanceScore = 0;
60
-
61
- // 태스크 타입별 기본 중요도
62
- const typeWeights = {
63
- 'architecture': 0.9,
64
- 'security': 0.8,
65
- 'core-feature': 0.7,
66
- 'bug-fix': 0.6,
67
- 'enhancement': 0.5,
68
- 'documentation': 0.3,
69
- 'refactoring': 0.4,
70
- 'testing': 0.5
71
- };
72
-
73
- importanceScore += typeWeights[task.type] || 0.5;
74
-
75
- // 마일스톤 중요도 반영
76
- if (task.milestone_id) {
77
- const milestoneId = task.milestone_id;
78
- // M01, M02 등에서 숫자 추출하여 초기 마일스톤일수록 높은 점수
79
- const milestoneNum = parseInt(milestoneId.replace(/\D/g, ''));
80
- if (milestoneNum <= 2) importanceScore += 0.2;
81
- else if (milestoneNum <= 5) importanceScore += 0.1;
82
- }
83
-
84
- // 태그 기반 중요도 조정
85
- if (task.tags) {
86
- if (task.tags.includes('critical')) importanceScore += 0.3;
87
- if (task.tags.includes('high-priority')) importanceScore += 0.2;
88
- if (task.tags.includes('low-priority')) importanceScore -= 0.2;
89
- }
90
-
91
- return Math.min(importanceScore, 1.0);
92
- }
93
-
94
- /**
95
- * 종속성 점수 계산
96
- * - 이 태스크에 의존하는 태스크 수
97
- * - 이 태스크가 의존하는 태스크의 완료 상태
98
- */
99
- calculateDependencyScore(task, stateIndex) {
100
- let dependencyScore = 0;
101
-
102
- // 이 태스크를 차단하는 미완료 종속성
103
- const blockingDependencies = task.dependencies?.filter(depId => {
104
- const depTask = stateIndex.tasks[depId];
105
- return depTask && depTask.status !== 'completed';
106
- }) || [];
107
-
108
- if (blockingDependencies.length === 0) {
109
- dependencyScore += 0.5; // 차단 요소 없음
110
- } else {
111
- dependencyScore -= blockingDependencies.length * 0.2; // 차단 요소마다 감점
112
- }
113
-
114
- // 이 태스크에 의존하는 태스크 수
115
- const dependentCount = this.countTasksBlockedBy(task.id, stateIndex);
116
- dependencyScore += Math.min(dependentCount * 0.15, 0.5);
117
-
118
- return Math.max(0, Math.min(dependencyScore, 1.0));
119
- }
120
-
121
- /**
122
- * 노력 점수 계산 (낮을수록 높은 점수)
123
- * - 예상 작업 시간
124
- * - 복잡도
125
- * - 필요한 리소스
126
- */
127
- calculateEffortScore(task) {
128
- let effortScore = 1.0; // 기본값: 쉬운 태스크
129
-
130
- // 예상 시간 기반 점수
131
- if (task.estimated_hours) {
132
- if (task.estimated_hours <= 1) effortScore = 1.0; // 1시간 이하
133
- else if (task.estimated_hours <= 4) effortScore = 0.8; // 4시간 이하
134
- else if (task.estimated_hours <= 8) effortScore = 0.6; // 1일 이하
135
- else if (task.estimated_hours <= 16) effortScore = 0.4; // 2일 이하
136
- else effortScore = 0.2; // 2일 초과
137
- }
138
-
139
- // 복잡도 기반 조정
140
- if (task.complexity) {
141
- const complexityWeights = {
142
- 'low': 1.0,
143
- 'medium': 0.7,
144
- 'high': 0.4,
145
- 'very-high': 0.2
146
- };
147
- effortScore *= complexityWeights[task.complexity] || 0.7;
148
- }
149
-
150
- // 태그 기반 조정 (간단한 태스크들)
151
- if (task.tags) {
152
- if (task.tags.includes('quick-fix')) effortScore += 0.2;
153
- if (task.tags.includes('research-heavy')) effortScore -= 0.3;
154
- }
155
-
156
- return Math.max(0.1, Math.min(effortScore, 1.0));
157
- }
158
-
159
- /**
160
- * 전체 우선순위 점수 계산
161
- */
162
- calculatePriority(task, stateIndex) {
163
- const urgency = this.calculateUrgency(task, stateIndex);
164
- const importance = this.calculateImportance(task, stateIndex);
165
- const dependency = this.calculateDependencyScore(task, stateIndex);
166
- const effort = this.calculateEffortScore(task);
167
-
168
- const priority = (
169
- urgency * this.weights.urgency +
170
- importance * this.weights.importance +
171
- dependency * this.weights.dependencies +
172
- effort * this.weights.effort
173
- );
174
-
175
- return {
176
- total: Math.round(priority * 100) / 100,
177
- breakdown: {
178
- urgency: Math.round(urgency * 100) / 100,
179
- importance: Math.round(importance * 100) / 100,
180
- dependency: Math.round(dependency * 100) / 100,
181
- effort: Math.round(effort * 100) / 100
182
- }
183
- };
184
- }
185
-
186
- /**
187
- * 특정 태스크에 의해 차단된 태스크 수 계산
188
- */
189
- countTasksBlockedBy(taskId, stateIndex) {
190
- let count = 0;
191
- for (const [, task] of Object.entries(stateIndex.tasks)) {
192
- if (task.dependencies?.includes(taskId) && task.status !== 'completed') {
193
- count++;
194
- }
195
- }
196
- return count;
197
- }
198
-
199
- /**
200
- * 모든 태스크의 우선순위 재계산
201
- */
202
- recalculateAllPriorities(stateIndex) {
203
- const updatedTasks = {};
204
-
205
- for (const [taskId, task] of Object.entries(stateIndex.tasks)) {
206
- const priorityData = this.calculatePriority(task, stateIndex);
207
- updatedTasks[taskId] = {
208
- ...task,
209
- priority_score: priorityData.total,
210
- priority_breakdown: priorityData.breakdown,
211
- last_priority_update: new Date().toISOString()
212
- };
213
- }
214
-
215
- return updatedTasks;
216
- }
217
- }