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,383 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- import fs from 'fs-extra';
4
- import path from 'path';
5
- import { fileURLToPath } from 'url';
6
- import chalk from 'chalk';
7
- import ora from 'ora';
8
- // import { table } from 'table'; // 임시로 비활성화
9
-
10
- const __dirname = path.dirname(fileURLToPath(import.meta.url));
11
-
12
- /**
13
- * AI Tool integration command for AIWF
14
- * Manages AI tool templates and configurations
15
- */
16
- export class AIToolCommand {
17
- constructor() {
18
- this.toolsPath = path.join(process.cwd(), '.aiwf', 'ai-tools');
19
- this.availableTools = ['claude-code', 'github-copilot', 'cursor', 'windsurf', 'augment'];
20
- }
21
-
22
- /**
23
- * Main command handler
24
- */
25
- async execute(args) {
26
- const subcommand = args[0];
27
- const toolName = args[1];
28
-
29
- switch (subcommand) {
30
- case 'install':
31
- return await this.install(toolName);
32
- case 'list':
33
- return await this.list();
34
- case 'update':
35
- return await this.update(toolName);
36
- case 'verify':
37
- return await this.verify(toolName);
38
- case 'check':
39
- return await this.check(toolName);
40
- case 'version':
41
- return await this.version(toolName);
42
- default:
43
- return this.showHelp();
44
- }
45
- }
46
-
47
- /**
48
- * Install an AI tool template
49
- */
50
- async install(toolName) {
51
- if (!toolName) {
52
- console.error(chalk.red('Error: Tool name is required'));
53
- console.log('Usage: aiwf ai-tool install <tool-name>');
54
- console.log(`Available tools: ${this.availableTools.join(', ')}`);
55
- return;
56
- }
57
-
58
- if (!this.availableTools.includes(toolName)) {
59
- console.error(chalk.red(`Error: Unknown tool '${toolName}'`));
60
- console.log(`Available tools: ${this.availableTools.join(', ')}`);
61
- return;
62
- }
63
-
64
- const spinner = ora(`Installing ${toolName} template...`).start();
65
-
66
- try {
67
- const toolPath = path.join(this.toolsPath, toolName);
68
- const configPath = path.join(toolPath, 'config.json');
69
-
70
- // Check if tool template exists
71
- if (!await fs.pathExists(configPath)) {
72
- spinner.fail(`Template for ${toolName} not found`);
73
- return;
74
- }
75
-
76
- // Read configuration
77
- const config = await fs.readJson(configPath);
78
-
79
- // Copy template files
80
- for (const fileToCopy of config.files_to_copy) {
81
- const sourcePath = path.join(toolPath, fileToCopy.source);
82
- const destPath = path.join(process.cwd(), fileToCopy.destination);
83
-
84
- if (await fs.pathExists(sourcePath)) {
85
- await fs.copy(sourcePath, destPath, { overwrite: true });
86
- spinner.text = `Copying ${fileToCopy.destination}...`;
87
- }
88
- }
89
-
90
- // Run setup commands if any
91
- if (config.setup_commands && config.setup_commands.length > 0) {
92
- spinner.text = 'Running setup commands...';
93
- const { exec } = await import('child_process');
94
- const { promisify } = await import('util');
95
- const execAsync = promisify(exec);
96
-
97
- for (const command of config.setup_commands) {
98
- await execAsync(command);
99
- }
100
- }
101
-
102
- // Create installation record
103
- const installRecord = {
104
- tool: toolName,
105
- version: config.version,
106
- installedAt: new Date().toISOString(),
107
- features: config.features
108
- };
109
-
110
- const recordPath = path.join(process.cwd(), '.aiwf', 'ai-tools-installed.json');
111
- let installedTools = {};
112
-
113
- if (await fs.pathExists(recordPath)) {
114
- installedTools = await fs.readJson(recordPath);
115
- }
116
-
117
- installedTools[toolName] = installRecord;
118
- await fs.writeJson(recordPath, installedTools, { spaces: 2 });
119
-
120
- spinner.succeed(chalk.green(`Successfully installed ${toolName} template`));
121
-
122
- // Show post-installation message
123
- console.log('\n' + chalk.cyan('Next steps:'));
124
- console.log(`1. Review the installed files`);
125
- console.log(`2. Customize settings as needed`);
126
- console.log(`3. Read the documentation in .aiwf/ai-tools/${toolName}/README.md`);
127
-
128
- // Show feature status
129
- if (config.features) {
130
- console.log('\n' + chalk.cyan('Enabled features:'));
131
- Object.entries(config.features).forEach(([feature, enabled]) => {
132
- if (enabled) {
133
- console.log(` ✓ ${feature}`);
134
- }
135
- });
136
- }
137
-
138
- } catch (error) {
139
- spinner.fail(`Failed to install ${toolName}: ${error.message}`);
140
- console.error(chalk.red(error.stack));
141
- }
142
- }
143
-
144
- /**
145
- * List available and installed AI tools
146
- */
147
- async list() {
148
- console.log(chalk.cyan('\n🤖 AI Tool Templates\n'));
149
-
150
- const installedPath = path.join(process.cwd(), '.aiwf', 'ai-tools-installed.json');
151
- let installedTools = {};
152
-
153
- if (await fs.pathExists(installedPath)) {
154
- installedTools = await fs.readJson(installedPath);
155
- }
156
-
157
- const tableData = [
158
- ['Tool', 'Status', 'Version', 'Features']
159
- ];
160
-
161
- for (const toolName of this.availableTools) {
162
- const toolPath = path.join(this.toolsPath, toolName);
163
- const configPath = path.join(toolPath, 'config.json');
164
-
165
- if (await fs.pathExists(configPath)) {
166
- const config = await fs.readJson(configPath);
167
- const isInstalled = installedTools[toolName] ? '✓ Installed' : 'Available';
168
- const status = isInstalled === '✓ Installed' ? chalk.green(isInstalled) : chalk.gray(isInstalled);
169
- const version = installedTools[toolName]?.version || config.version;
170
- const features = Object.entries(config.features)
171
- .filter(([_, enabled]) => enabled)
172
- .map(([feature]) => feature)
173
- .slice(0, 3)
174
- .join(', ') + (Object.keys(config.features).length > 3 ? '...' : '');
175
-
176
- tableData.push([
177
- chalk.bold(toolName),
178
- status,
179
- version,
180
- features
181
- ]);
182
- }
183
- }
184
-
185
- console.log(table(tableData, {
186
- border: {
187
- topBody: '─',
188
- topJoin: '┬',
189
- topLeft: '┌',
190
- topRight: '┐',
191
- bottomBody: '─',
192
- bottomJoin: '┴',
193
- bottomLeft: '└',
194
- bottomRight: '┘',
195
- bodyLeft: '│',
196
- bodyRight: '│',
197
- bodyJoin: '│',
198
- joinBody: '─',
199
- joinLeft: '├',
200
- joinRight: '┤',
201
- joinJoin: '┼'
202
- }
203
- }));
204
-
205
- console.log('\n' + chalk.cyan('Commands:'));
206
- console.log(' Install a tool: aiwf ai-tool install <tool-name>');
207
- console.log(' Update a tool: aiwf ai-tool update <tool-name>');
208
- console.log(' Verify a tool: aiwf ai-tool verify <tool-name>');
209
- }
210
-
211
- /**
212
- * Update an installed AI tool template
213
- */
214
- async update(toolName) {
215
- if (!toolName) {
216
- console.error(chalk.red('Error: Tool name is required'));
217
- return;
218
- }
219
-
220
- const installedPath = path.join(process.cwd(), '.aiwf', 'ai-tools-installed.json');
221
-
222
- if (!await fs.pathExists(installedPath)) {
223
- console.error(chalk.red('No AI tools installed'));
224
- return;
225
- }
226
-
227
- const installedTools = await fs.readJson(installedPath);
228
-
229
- if (!installedTools[toolName]) {
230
- console.error(chalk.red(`${toolName} is not installed`));
231
- return;
232
- }
233
-
234
- console.log(chalk.cyan(`Updating ${toolName}...`));
235
-
236
- // Reinstall with latest template
237
- await this.install(toolName);
238
- }
239
-
240
- /**
241
- * Verify an installed AI tool
242
- */
243
- async verify(toolName) {
244
- if (!toolName) {
245
- console.error(chalk.red('Error: Tool name is required'));
246
- return;
247
- }
248
-
249
- const spinner = ora(`Verifying ${toolName} installation...`).start();
250
-
251
- try {
252
- const toolPath = path.join(this.toolsPath, toolName);
253
- const configPath = path.join(toolPath, 'config.json');
254
- const config = await fs.readJson(configPath);
255
-
256
- let allFilesExist = true;
257
- const missingFiles = [];
258
-
259
- // Check if all required files exist
260
- for (const fileToCopy of config.files_to_copy) {
261
- const destPath = path.join(process.cwd(), fileToCopy.destination);
262
- if (!await fs.pathExists(destPath)) {
263
- allFilesExist = false;
264
- missingFiles.push(fileToCopy.destination);
265
- }
266
- }
267
-
268
- if (allFilesExist) {
269
- spinner.succeed(chalk.green(`${toolName} installation verified successfully`));
270
- } else {
271
- spinner.fail(chalk.red(`${toolName} installation incomplete`));
272
- console.log(chalk.yellow('\nMissing files:'));
273
- missingFiles.forEach(file => console.log(` - ${file}`));
274
- console.log(chalk.cyan(`\nRun 'aiwf ai-tool install ${toolName}' to fix`));
275
- }
276
-
277
- } catch (error) {
278
- spinner.fail(`Failed to verify ${toolName}: ${error.message}`);
279
- }
280
- }
281
-
282
- /**
283
- * Check for updates for a tool
284
- */
285
- async check(toolName) {
286
- if (!toolName) {
287
- // Check all installed tools
288
- const installedPath = path.join(process.cwd(), '.aiwf', 'ai-tools-installed.json');
289
-
290
- if (!await fs.pathExists(installedPath)) {
291
- console.log(chalk.yellow('No AI tools installed'));
292
- return;
293
- }
294
-
295
- const installedTools = await fs.readJson(installedPath);
296
- console.log(chalk.cyan('\nChecking for updates...\n'));
297
-
298
- for (const [tool, info] of Object.entries(installedTools)) {
299
- await this.checkSingleTool(tool, info.version);
300
- }
301
- } else {
302
- await this.checkSingleTool(toolName);
303
- }
304
- }
305
-
306
- /**
307
- * Check a single tool for updates
308
- */
309
- async checkSingleTool(toolName, installedVersion) {
310
- const toolPath = path.join(this.toolsPath, toolName);
311
- const configPath = path.join(toolPath, 'config.json');
312
-
313
- if (await fs.pathExists(configPath)) {
314
- const config = await fs.readJson(configPath);
315
- const latestVersion = config.version;
316
-
317
- if (!installedVersion) {
318
- // Get installed version
319
- const installedPath = path.join(process.cwd(), '.aiwf', 'ai-tools-installed.json');
320
- if (await fs.pathExists(installedPath)) {
321
- const installedTools = await fs.readJson(installedPath);
322
- installedVersion = installedTools[toolName]?.version;
323
- }
324
- }
325
-
326
- if (installedVersion && installedVersion !== latestVersion) {
327
- console.log(chalk.yellow(`${toolName}: Update available (${installedVersion} → ${latestVersion})`));
328
- } else if (installedVersion) {
329
- console.log(chalk.green(`${toolName}: Up to date (${latestVersion})`));
330
- } else {
331
- console.log(chalk.gray(`${toolName}: Not installed`));
332
- }
333
- }
334
- }
335
-
336
- /**
337
- * Show version of a tool
338
- */
339
- async version(toolName) {
340
- if (!toolName) {
341
- console.error(chalk.red('Error: Tool name is required'));
342
- return;
343
- }
344
-
345
- const installedPath = path.join(process.cwd(), '.aiwf', 'ai-tools-installed.json');
346
-
347
- if (await fs.pathExists(installedPath)) {
348
- const installedTools = await fs.readJson(installedPath);
349
- if (installedTools[toolName]) {
350
- console.log(`${toolName}: ${installedTools[toolName].version}`);
351
- return;
352
- }
353
- }
354
-
355
- console.log(chalk.yellow(`${toolName} is not installed`));
356
- }
357
-
358
- /**
359
- * Show help message
360
- */
361
- showHelp() {
362
- console.log(chalk.cyan('\n🤖 AIWF AI Tool Integration\n'));
363
- console.log('Usage: aiwf ai-tool <command> [tool-name]');
364
- console.log('\nCommands:');
365
- console.log(' install <tool> Install an AI tool template');
366
- console.log(' list List available and installed tools');
367
- console.log(' update <tool> Update an installed tool');
368
- console.log(' verify <tool> Verify tool installation');
369
- console.log(' check [tool] Check for updates');
370
- console.log(' version <tool> Show installed version');
371
- console.log('\nAvailable tools:');
372
- this.availableTools.forEach(tool => {
373
- console.log(` - ${tool}`);
374
- });
375
- console.log('\nExamples:');
376
- console.log(' aiwf ai-tool install claude-code');
377
- console.log(' aiwf ai-tool list');
378
- console.log(' aiwf ai-tool update cursor');
379
- }
380
- }
381
-
382
- // Export for use in main CLI
383
- export default AIToolCommand;
@@ -1,60 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- /**
4
- * AIWF 컨텍스트 압축 명령어
5
- * 대용량 컨텍스트를 효율적으로 압축하여 토큰 사용량 감소
6
- */
7
-
8
- import { ResourceLoader } from '../lib/resource-loader.js';
9
- import chalk from 'chalk';
10
-
11
- class CompressCommand {
12
- constructor() {
13
- this.resourceLoader = new ResourceLoader();
14
- }
15
-
16
- /**
17
- * 압축 명령어 실행
18
- */
19
- async execute(args) {
20
- try {
21
- // compress-context 모듈 동적 로드
22
- const compressModule = await this.resourceLoader.loadUtil('compress-context.js');
23
- const executeCompressContext = compressModule.executeCompressContext || compressModule.default;
24
-
25
- if (typeof executeCompressContext !== 'function') {
26
- throw new Error('compress-context 모듈을 로드할 수 없습니다.');
27
- }
28
-
29
- // 실행
30
- await executeCompressContext(args);
31
-
32
- } catch (error) {
33
- console.error(chalk.red('❌ 압축 실행 중 오류가 발생했습니다:'), error.message);
34
- this.showHelp();
35
- }
36
- }
37
-
38
- /**
39
- * 도움말 표시
40
- */
41
- showHelp() {
42
- console.log(chalk.cyan('\n🗜️ AIWF 컨텍스트 압축'));
43
- console.log(chalk.gray('-'.repeat(50)));
44
- console.log('사용법: aiwf compress [옵션] [경로]');
45
- console.log('');
46
- console.log('옵션:');
47
- console.log(' aggressive 공격적 압축 (50-70% 토큰 감소)');
48
- console.log(' balanced 균형잡힌 압축 (30-50% 토큰 감소) [기본값]');
49
- console.log(' minimal 최소 압축 (10-30% 토큰 감소)');
50
- console.log(' --persona 페르소나 인식 압축 활성화');
51
- console.log('');
52
- console.log('예시:');
53
- console.log(' aiwf compress # 기본 압축');
54
- console.log(' aiwf compress aggressive # 공격적 압축');
55
- console.log(' aiwf compress --persona balanced # 페르소나 인식 압축');
56
- console.log(' aiwf compress .aiwf # 특정 경로 압축');
57
- }
58
- }
59
-
60
- export default CompressCommand;
@@ -1,160 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- import fs from 'fs-extra';
4
- import path from 'path';
5
- import { fileURLToPath } from 'url';
6
- import prompts from 'prompts';
7
- import chalk from 'chalk';
8
- import ora from 'ora';
9
- import { ResourceLoader } from '../lib/resource-loader.js';
10
-
11
- const __filename = fileURLToPath(import.meta.url);
12
- const __dirname = path.dirname(__filename);
13
-
14
- // ResourceLoader를 사용하여 템플릿 관리
15
- const resourceLoader = new ResourceLoader();
16
-
17
- async function createProject() {
18
- console.log(chalk.cyan('\n🚀 AIWF 프로젝트 생성기\n'));
19
-
20
- // ResourceLoader를 사용하여 템플릿 찾기
21
- const templates = await resourceLoader.listTemplates();
22
-
23
- const templateConfigs = [];
24
- for (const template of templates) {
25
- try {
26
- const config = await resourceLoader.loadTemplateConfig(template);
27
- templateConfigs.push({
28
- value: template,
29
- title: config.displayName,
30
- description: config.description
31
- });
32
- } catch (error) {
33
- console.error(`템플릿 ${template} 로드 실패:`, error.message);
34
- }
35
- }
36
-
37
- const questions = [
38
- {
39
- type: 'select',
40
- name: 'template',
41
- message: '템플릿을 선택하세요',
42
- choices: templateConfigs,
43
- },
44
- {
45
- type: 'text',
46
- name: 'projectName',
47
- message: '프로젝트 이름',
48
- validate: value => {
49
- if (!value) return '프로젝트 이름을 입력하세요';
50
- if (!/^[a-z0-9-]+$/.test(value)) {
51
- return '소문자, 숫자, 하이픈만 사용 가능합니다';
52
- }
53
- return true;
54
- }
55
- },
56
- {
57
- type: prev => prev === 'npm-library' ? 'text' : null,
58
- name: 'description',
59
- message: '프로젝트 설명',
60
- initial: 'A new AIWF project'
61
- },
62
- {
63
- type: prev => prev === 'npm-library' ? 'text' : null,
64
- name: 'author',
65
- message: '작성자',
66
- initial: ''
67
- },
68
- {
69
- type: 'text',
70
- name: 'directory',
71
- message: '프로젝트 디렉토리',
72
- initial: prev => prev.projectName,
73
- validate: value => {
74
- if (!value) return '디렉토리를 입력하세요';
75
- if (fs.existsSync(value)) {
76
- return '이미 존재하는 디렉토리입니다';
77
- }
78
- return true;
79
- }
80
- }
81
- ];
82
-
83
- const answers = await prompts(questions);
84
-
85
- if (!answers.template || !answers.projectName) {
86
- console.log(chalk.red('\n❌ 프로젝트 생성이 취소되었습니다.'));
87
- return;
88
- }
89
-
90
- const spinner = ora('프로젝트 생성 중...').start();
91
-
92
- try {
93
- // ResourceLoader를 사용하여 템플릿 경로 가져오기
94
- const templatePath = await resourceLoader.getTemplatePath(answers.template);
95
- const targetPath = path.resolve(answers.directory);
96
-
97
- // 템플릿 복사
98
- await fs.copy(templatePath, targetPath);
99
-
100
- // 플레이스홀더 교체
101
- const replacements = {
102
- '{{projectName}}': answers.projectName,
103
- '{{description}}': answers.description || '',
104
- '{{author}}': answers.author || '',
105
- '{{year}}': new Date().getFullYear().toString(),
106
- '{{createdAt}}': new Date().toISOString(),
107
- '{{username}}': answers.author?.toLowerCase().replace(/\s+/g, '') || 'username'
108
- };
109
-
110
- // 모든 파일에서 플레이스홀더 교체
111
- await replacePlaceholders(targetPath, replacements);
112
-
113
- spinner.succeed('프로젝트가 성공적으로 생성되었습니다!');
114
-
115
- console.log(chalk.green(`\n✅ ${answers.projectName} 프로젝트가 생성되었습니다!\n`));
116
- console.log('다음 명령어로 시작하세요:\n');
117
- console.log(chalk.cyan(` cd ${answers.directory}`));
118
- console.log(chalk.cyan(' npm install'));
119
- console.log(chalk.cyan(' npm run dev\n'));
120
- console.log('AIWF 명령어:');
121
- console.log(chalk.gray(' npm run aiwf status # 프로젝트 상태 확인'));
122
- console.log(chalk.gray(' npm run aiwf feature # Feature Ledger 관리\n'));
123
-
124
- } catch (error) {
125
- spinner.fail('프로젝트 생성 중 오류가 발생했습니다.');
126
- console.error(chalk.red(error.message));
127
- process.exit(1);
128
- }
129
- }
130
-
131
- async function replacePlaceholders(dir, replacements) {
132
- const files = await fs.readdir(dir);
133
-
134
- for (const file of files) {
135
- const filePath = path.join(dir, file);
136
- const stat = await fs.stat(filePath);
137
-
138
- if (stat.isDirectory()) {
139
- await replacePlaceholders(filePath, replacements);
140
- } else if (stat.isFile()) {
141
- let content = await fs.readFile(filePath, 'utf8');
142
-
143
- for (const [placeholder, value] of Object.entries(replacements)) {
144
- content = content.replace(new RegExp(placeholder, 'g'), value);
145
- }
146
-
147
- await fs.writeFile(filePath, content, 'utf8');
148
- }
149
- }
150
- }
151
-
152
- // CLI 실행
153
- if (import.meta.url === `file://${process.argv[1]}`) {
154
- createProject().catch(error => {
155
- console.error(chalk.red('오류:', error.message));
156
- process.exit(1);
157
- });
158
- }
159
-
160
- export { createProject };