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,331 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- /**
4
- * 언어 관리 유틸리티 모듈
5
- * AIWF 프레임워크의 언어 감지, 설정 저장/복원, 라우팅을 담당합니다.
6
- */
7
-
8
- import fs from 'fs/promises';
9
- import path from 'path';
10
- import { FILES } from './paths.js';
11
-
12
- // 지원되는 언어 목록
13
- export const SUPPORTED_LANGUAGES = ['ko', 'en'];
14
- export const DEFAULT_LANGUAGE = 'en';
15
- export const LANGUAGE_CONFIG_PATH = FILES.LANGUAGE_CONFIG;
16
-
17
- /**
18
- * 언어 감지 알고리즘
19
- * 1. 사용자 명시적 설정 (.aiwf/config/language.json)
20
- * 2. 환경 변수 (LANG, LC_ALL)
21
- * 3. 시스템 로케일 (process.env.LANG)
22
- * 4. 폴백: 영어 (en)
23
- */
24
- export async function detectLanguage() {
25
- try {
26
- // 1. 사용자 설정 확인
27
- const userConfig = await loadUserLanguageConfig();
28
- if (userConfig?.language && SUPPORTED_LANGUAGES.includes(userConfig.language)) {
29
- return userConfig.language;
30
- }
31
-
32
- // 2. 환경 변수 확인
33
- const envLang = process.env.LANG || process.env.LC_ALL;
34
- if (envLang) {
35
- // 한국어 로케일 감지
36
- if (envLang.toLowerCase().startsWith('ko')) {
37
- return 'ko';
38
- }
39
- // 영어 로케일 감지
40
- if (envLang.toLowerCase().startsWith('en')) {
41
- return 'en';
42
- }
43
- }
44
-
45
- // 3. 폴백: 기본 언어
46
- return DEFAULT_LANGUAGE;
47
- } catch (error) {
48
- console.warn(`언어 감지 중 오류 발생: ${error.message}`);
49
- return DEFAULT_LANGUAGE;
50
- }
51
- }
52
-
53
- /**
54
- * 사용자 언어 설정 로드
55
- */
56
- export async function loadUserLanguageConfig() {
57
- try {
58
- const configExists = await fs.access(LANGUAGE_CONFIG_PATH).then(() => true).catch(() => false);
59
- if (!configExists) {
60
- return null;
61
- }
62
-
63
- const configContent = await fs.readFile(LANGUAGE_CONFIG_PATH, 'utf8');
64
- const config = JSON.parse(configContent);
65
-
66
- // 설정 유효성 검증
67
- if (config.language && SUPPORTED_LANGUAGES.includes(config.language)) {
68
- return config;
69
- }
70
-
71
- return null;
72
- } catch (error) {
73
- console.warn(`언어 설정 로드 중 오류 발생: ${error.message}`);
74
- return null;
75
- }
76
- }
77
-
78
- /**
79
- * 사용자 언어 설정 저장
80
- */
81
- export async function saveUserLanguageConfig(language, options = {}) {
82
- try {
83
- // 언어 유효성 검증
84
- if (!SUPPORTED_LANGUAGES.includes(language)) {
85
- throw new Error(`지원되지 않는 언어: ${language}. 지원 언어: ${SUPPORTED_LANGUAGES.join(', ')}`);
86
- }
87
-
88
- // 설정 디렉토리 생성
89
- const configDir = path.dirname(LANGUAGE_CONFIG_PATH);
90
- await fs.mkdir(configDir, { recursive: true });
91
-
92
- // 설정 객체 생성
93
- const config = {
94
- language: language,
95
- auto_detect: options.auto_detect !== undefined ? options.auto_detect : true,
96
- last_updated: new Date().toISOString(),
97
- fallback: options.fallback || DEFAULT_LANGUAGE
98
- };
99
-
100
- // 설정 파일 저장
101
- await fs.writeFile(LANGUAGE_CONFIG_PATH, JSON.stringify(config, null, 2), 'utf8');
102
-
103
- return config;
104
- } catch (error) {
105
- console.error(`언어 설정 저장 중 오류 발생: ${error.message}`);
106
- throw error;
107
- }
108
- }
109
-
110
- /**
111
- * 명령어 파일 경로 라우팅
112
- * 언어별 명령어 파일 경로를 동적으로 생성합니다.
113
- */
114
- export function getCommandPath(commandName, language = null) {
115
- // 언어가 지정되지 않은 경우 현재 언어 사용
116
- if (!language) {
117
- language = DEFAULT_LANGUAGE; // 동기 버전에서는 기본 언어 사용
118
- }
119
-
120
- // 언어 유효성 검증
121
- if (!SUPPORTED_LANGUAGES.includes(language)) {
122
- language = DEFAULT_LANGUAGE;
123
- }
124
-
125
- // 한국어 명령어 경로
126
- if (language === 'ko') {
127
- return `claude-code/aiwf/ko/.claude/commands/aiwf/${commandName}.md`;
128
- }
129
-
130
- // 영어 명령어 경로 (기본)
131
- return `claude-code/aiwf/en/.claude/commands/aiwf/${commandName}.md`;
132
- }
133
-
134
- /**
135
- * 명령어 파일 존재 여부 확인 및 폴백
136
- */
137
- export async function resolveCommandPath(commandName, preferredLanguage = null) {
138
- try {
139
- const language = preferredLanguage || await detectLanguage();
140
-
141
- // 선호 언어로 명령어 파일 경로 생성
142
- let commandPath = getCommandPath(commandName, language);
143
-
144
- // 파일 존재 여부 확인
145
- const exists = await fs.access(commandPath).then(() => true).catch(() => false);
146
- if (exists) {
147
- return {
148
- path: commandPath,
149
- language: language,
150
- fallback: false
151
- };
152
- }
153
-
154
- // 폴백 언어로 재시도
155
- const fallbackLanguage = language === 'ko' ? 'en' : 'ko';
156
- commandPath = getCommandPath(commandName, fallbackLanguage);
157
-
158
- const fallbackExists = await fs.access(commandPath).then(() => true).catch(() => false);
159
- if (fallbackExists) {
160
- return {
161
- path: commandPath,
162
- language: fallbackLanguage,
163
- fallback: true
164
- };
165
- }
166
-
167
- // 둘 다 없는 경우
168
- return {
169
- path: null,
170
- language: null,
171
- fallback: false,
172
- error: `명령어 파일을 찾을 수 없습니다: ${commandName}`
173
- };
174
-
175
- } catch (error) {
176
- return {
177
- path: null,
178
- language: null,
179
- fallback: false,
180
- error: `명령어 경로 해결 중 오류: ${error.message}`
181
- };
182
- }
183
- }
184
-
185
- /**
186
- * 템플릿 파일 경로 라우팅
187
- */
188
- export function getTemplatePath(templateName, language = null) {
189
- if (!language) {
190
- language = DEFAULT_LANGUAGE;
191
- }
192
-
193
- if (!SUPPORTED_LANGUAGES.includes(language)) {
194
- language = DEFAULT_LANGUAGE;
195
- }
196
-
197
- return `.aiwf/99_TEMPLATES/${language}/${templateName}`;
198
- }
199
-
200
- /**
201
- * 다국어 에러 메시지 시스템
202
- */
203
- export const ERROR_MESSAGES = {
204
- ko: {
205
- LANGUAGE_NOT_SUPPORTED: '지원되지 않는 언어입니다',
206
- CONFIG_LOAD_FAILED: '언어 설정을 불러올 수 없습니다',
207
- CONFIG_SAVE_FAILED: '언어 설정을 저장할 수 없습니다',
208
- COMMAND_NOT_FOUND: '명령어를 찾을 수 없습니다',
209
- TEMPLATE_NOT_FOUND: '템플릿을 찾을 수 없습니다',
210
- LANGUAGE_SWITCH_SUCCESS: '언어가 성공적으로 변경되었습니다',
211
- LANGUAGE_SWITCH_FAILED: '언어 변경에 실패했습니다'
212
- },
213
- en: {
214
- LANGUAGE_NOT_SUPPORTED: 'Language not supported',
215
- CONFIG_LOAD_FAILED: 'Failed to load language configuration',
216
- CONFIG_SAVE_FAILED: 'Failed to save language configuration',
217
- COMMAND_NOT_FOUND: 'Command not found',
218
- TEMPLATE_NOT_FOUND: 'Template not found',
219
- LANGUAGE_SWITCH_SUCCESS: 'Language changed successfully',
220
- LANGUAGE_SWITCH_FAILED: 'Failed to change language'
221
- }
222
- };
223
-
224
- /**
225
- * 다국어 메시지 가져오기
226
- */
227
- export function getLocalizedMessage(messageKey, language = null) {
228
- if (!language) {
229
- language = DEFAULT_LANGUAGE;
230
- }
231
-
232
- if (!SUPPORTED_LANGUAGES.includes(language)) {
233
- language = DEFAULT_LANGUAGE;
234
- }
235
-
236
- return ERROR_MESSAGES[language]?.[messageKey] || ERROR_MESSAGES[DEFAULT_LANGUAGE]?.[messageKey] || messageKey;
237
- }
238
-
239
- /**
240
- * 언어 전환 함수
241
- */
242
- export async function switchLanguage(newLanguage) {
243
- try {
244
- // 언어 유효성 검증
245
- if (!SUPPORTED_LANGUAGES.includes(newLanguage)) {
246
- throw new Error(`지원되지 않는 언어: ${newLanguage}. 지원 언어: ${SUPPORTED_LANGUAGES.join(', ')}`);
247
- }
248
-
249
- // 현재 언어 설정 로드
250
- const currentConfig = await loadUserLanguageConfig() || {};
251
-
252
- // 새 언어로 설정 저장
253
- const newConfig = await saveUserLanguageConfig(newLanguage, {
254
- autoDetect: currentConfig.auto_detect,
255
- fallback: currentConfig.fallback
256
- });
257
-
258
- return {
259
- success: true,
260
- previousLanguage: currentConfig.language || DEFAULT_LANGUAGE,
261
- newLanguage: newLanguage,
262
- message: getLocalizedMessage('LANGUAGE_SWITCH_SUCCESS', newLanguage)
263
- };
264
-
265
- } catch (error) {
266
- return {
267
- success: false,
268
- error: error.message,
269
- message: getLocalizedMessage('LANGUAGE_SWITCH_FAILED')
270
- };
271
- }
272
- }
273
-
274
- /**
275
- * 언어 설정 상태 확인
276
- */
277
- export async function getLanguageStatus() {
278
- try {
279
- const detectedLanguage = await detectLanguage();
280
- const userConfig = await loadUserLanguageConfig();
281
-
282
- return {
283
- detectedLanguage: detectedLanguage,
284
- configuredLanguage: userConfig?.language || null,
285
- effectiveLanguage: userConfig?.language || detectedLanguage,
286
- autoDetect: userConfig?.auto_detect !== false,
287
- fallbackLanguage: userConfig?.fallback || DEFAULT_LANGUAGE,
288
- supportedLanguages: SUPPORTED_LANGUAGES,
289
- configPath: LANGUAGE_CONFIG_PATH
290
- };
291
- } catch (error) {
292
- return {
293
- detectedLanguage: DEFAULT_LANGUAGE,
294
- configuredLanguage: null,
295
- effectiveLanguage: DEFAULT_LANGUAGE,
296
- autoDetect: true,
297
- fallbackLanguage: DEFAULT_LANGUAGE,
298
- supportedLanguages: SUPPORTED_LANGUAGES,
299
- configPath: LANGUAGE_CONFIG_PATH,
300
- error: error.message
301
- };
302
- }
303
- }
304
-
305
- /**
306
- * 언어별 설치 경로 생성
307
- */
308
- export function getInstallationLanguagePath(language) {
309
- if (!SUPPORTED_LANGUAGES.includes(language)) {
310
- language = DEFAULT_LANGUAGE;
311
- }
312
-
313
- return language;
314
- }
315
-
316
- // 기본 내보내기
317
- export default {
318
- detectLanguage,
319
- loadUserLanguageConfig,
320
- saveUserLanguageConfig,
321
- getCommandPath,
322
- resolveCommandPath,
323
- getTemplatePath,
324
- getLocalizedMessage,
325
- switchLanguage,
326
- getLanguageStatus,
327
- getInstallationLanguagePath,
328
- SUPPORTED_LANGUAGES,
329
- DEFAULT_LANGUAGE,
330
- ERROR_MESSAGES
331
- };
@@ -1,166 +0,0 @@
1
- /**
2
- * Localized messages for AIWF installer
3
- */
4
- export const messages = {
5
- ko: {
6
- welcome: '\n🎉 AIWF에 오신 것을 환영합니다!\n',
7
- description: '이 설치 프로그램은 AIWF AI 프롬프트 프레임워크를 설정합니다',
8
- optimized: '특별히 Claude Code 에 최적화 되어있습니다.\n',
9
- selectLanguage: 'Please select language / 언어를 선택해주세요:',
10
- korean: '한국어 (Korean)',
11
- english: 'English',
12
- existingDetected: '기존 AIWF 설치가 감지되었습니다. 무엇을 하시겠습니까?',
13
- updateOption: '업데이트 (명령어와 문서만 업데이트하고 작업 내용은 보존)',
14
- reinstallOption: '완전 재설치 (모든 내용을 새로 설치, 기존 프로젝트 덮어쓰기)',
15
- skipOption: '설치 건너뛰기',
16
- cancelOption: '취소',
17
- projectDetected: '기존 프로젝트가 감지되었습니다. 프로젝트 파일을 어떻게 처리하시겠습니까?',
18
- preserveProject: '프로젝트 보존 (기존 프로젝트 파일 유지)',
19
- overwriteProject: '덮어쓰기 (새로 설치하고 기존 프로젝트 삭제)',
20
- checkingProject: '기존 프로젝트 확인 중...',
21
- projectFound: '기존 프로젝트가 발견되었습니다:',
22
- projectPreserved: '💾 프로젝트가 보존되었습니다.',
23
- projectOverwritten: '🔄 프로젝트가 새로 설치되었습니다.',
24
- installCancelled: '\n설치가 취소되었습니다.',
25
- backingUp: '기존 명령어 및 문서 백업 중...',
26
- fetching: 'GitHub에서 AIWF 프레임워크를 가져오는 중...',
27
- downloading: 'AIWF 프레임워크 파일을 다운로드하는 중...',
28
- updatingDocs: '문서를 업데이트하는 중...',
29
- downloadingCommands: 'AIWF 명령어를 새로 다운로드하는 중...',
30
- updateSuccess: '✅ AIWF 프레임워크가 성공적으로 업데이트되었습니다!',
31
- installSuccess: '✅ AIWF 프레임워크가 성공적으로 설치되었습니다!',
32
- enjoy: '\nEnjoy AIWF! 🚀\n',
33
- backupComplete: '{count}개 파일 백업 완료 (*.bak)',
34
- noFilesToBackup: '백업할 기존 파일이 없습니다',
35
- backupFailed: '백업 실패',
36
- downloadingFile: '{path} 다운로드 중...',
37
- downloadingTemplates: '템플릿 디렉토리를 다운로드 중...',
38
- templatesNotFound: '템플릿 디렉토리를 찾을 수 없어 건너뜁니다...',
39
- deletingOldCommands: '기존 AIWF 명령어 폴더를 삭제하는 중...',
40
- commandsNotFound: '명령어 디렉토리를 찾을 수 없어 건너뜁니다...',
41
- downloadingRulesGlobal: 'rules/global 폴더를 다운로드 중...',
42
- rulesGlobalNotFound: 'rules/global 폴더를 찾을 수 없어 건너뜁니다...',
43
- downloadingRulesManual: 'rules/manual 폴더를 다운로드 중...',
44
- rulesManualNotFound: 'rules/manual 폴더를 찾을 수 없어 건너뜁니다...',
45
- updateHistory: '🔄 업데이트 내역:',
46
- updatedCommands: '내의 명령어',
47
- updatedDocs: '문서 (CLAUDE.md 파일)',
48
- workPreserved: '💾 작업 내용은 보존되었습니다:',
49
- allFilesPreserved: '모든 작업, 스프린트, 및 프로젝트 파일이 변경되지 않음',
50
- backupCreated: '백업은 *.bak 파일로 만들어짐',
51
- structureCreated: '📁 생성된 구조:',
52
- aiwfRoot: '프로젝트 관리 루트',
53
- claudeCommands: 'Claude 사용자 명령어',
54
- nextSteps: '🚀 다음 단계:',
55
- nextStep1: 'Claude Code에서 이 프로젝트를 엽니다',
56
- nextStep2: '/aiwf_<command> 명령어를 사용하여 프로젝트를 관리하세요',
57
- nextStep3: '/aiwf_initialize를 실행하여 프로젝트를 설정하세요',
58
- gettingStarted: '✨ 시작하려면:',
59
- startStep1: '새 터미널을 열거나 쉘 프로필을 소싱하세요 (예: source ~/.zshrc)',
60
- startStep2: '다음을 실행하세요: claude 를 실행하여 사용 가능한 명령어를 확인하세요.',
61
- checkDocs: '자세한 내용은 .aiwf 디렉토리의 문서를 확인하세요.',
62
- updateFailed: '업데이트 실패',
63
- installFailed: '설치 실패',
64
- noBackupFound: '복원할 백업 폴더가 없습니다.',
65
- restoringFromBackup: '백업에서 복원 중...',
66
- restoreSuccess: '성공적으로 복원되었습니다.',
67
- restoreFailed: '복원에 실패했습니다.',
68
- cannotRestore: '파일을 복원할 수 없습니다. 수동 확인이 필요합니다.',
69
- checkingInstallation: 'AIWF 설치 상태를 확인하는 중...',
70
- creatingDirectories: 'AIWF 디렉토리 구조를 생성하는 중...',
71
- restoringBackup: '백업에서 파일을 복원하는 중...',
72
- backupRestored: '{count}개 파일이 복원되었습니다',
73
- checkingExistingTools: '기존 도구 디렉토리를 확인하는 중...',
74
- foundExistingCursor: 'Cursor 규칙 파일이 발견되었습니다',
75
- foundExistingWindsurf: 'Windsurf 규칙 파일이 발견되었습니다',
76
- backingUpToolFiles: '기존 도구 파일을 백업하는 중...',
77
- toolBackupCreated: '도구 파일 백업이 생성되었습니다',
78
- installingToolRules: '도구 규칙을 설치하는 중...',
79
- toolRulesInstalled: '도구 규칙이 성공적으로 설치되었습니다',
80
- },
81
- en: {
82
- welcome: '\n🎉 Welcome to AIWF!\n',
83
- description: 'This installer sets up the AIWF AI prompt framework',
84
- optimized: 'Specially optimized for Claude Code.\n',
85
- selectLanguage: 'Please select language / 언어를 선택해주세요:',
86
- korean: '한국어 (Korean)',
87
- english: 'English',
88
- existingDetected: 'Existing AIWF installation detected. What would you like to do?',
89
- updateOption: 'Update (Update commands and docs only, preserve work content)',
90
- reinstallOption: 'Complete reinstall (Install everything fresh, overwrite existing project)',
91
- skipOption: 'Skip installation',
92
- cancelOption: 'Cancel',
93
- projectDetected: 'Existing project detected. How would you like to handle project files?',
94
- preserveProject: 'Preserve project (Keep existing project files)',
95
- overwriteProject: 'Overwrite (Fresh install and remove existing project)',
96
- checkingProject: 'Checking for existing project...',
97
- projectFound: 'Existing project found:',
98
- projectPreserved: '💾 Project has been preserved.',
99
- projectOverwritten: '🔄 Project has been freshly installed.',
100
- installCancelled: '\nInstallation cancelled.',
101
- backingUp: 'Backing up existing commands and documents...',
102
- fetching: 'Fetching AIWF framework from GitHub...',
103
- downloading: 'Downloading AIWF framework files...',
104
- updatingDocs: 'Updating documentation...',
105
- downloadingCommands: 'Downloading AIWF commands...',
106
- updateSuccess: '✅ AIWF framework updated successfully!',
107
- installSuccess: '✅ AIWF framework installed successfully!',
108
- enjoy: '\nEnjoy AIWF! 🚀\n',
109
- backupComplete: '{count} files backed up (*.bak)',
110
- noFilesToBackup: 'No existing files to backup',
111
- backupFailed: 'Backup failed',
112
- downloadingFile: 'Downloading {path}...',
113
- downloadingTemplates: 'Downloading template directories...',
114
- templatesNotFound: 'Template directories not found, skipping...',
115
- deletingOldCommands: 'Deleting existing AIWF commands folder...',
116
- commandsNotFound: 'Commands directory not found, skipping...',
117
- downloadingRulesGlobal: 'Downloading rules/global folder...',
118
- rulesGlobalNotFound: 'rules/global folder not found, skipping...',
119
- downloadingRulesManual: 'Downloading rules/manual folder...',
120
- rulesManualNotFound: 'rules/manual folder not found, skipping...',
121
- updateHistory: '🔄 Update History:',
122
- updatedCommands: '/ commands',
123
- updatedDocs: 'Documentation (CLAUDE.md files)',
124
- workPreserved: '💾 Work preserved:',
125
- allFilesPreserved: 'All work, sprints, and project files unchanged',
126
- backupCreated: 'Backups created as *.bak files',
127
- structureCreated: '📁 Structure created:',
128
- aiwfRoot: 'Project management root',
129
- claudeCommands: 'Claude user commands',
130
- nextSteps: '🚀 Next steps:',
131
- nextStep1: 'Open this project in Claude Code',
132
- nextStep2: 'Use /aiwf_<command> commands to manage your project',
133
- nextStep3: 'Run /aiwf_initialize to set up your project',
134
- gettingStarted: '✨ Getting started:',
135
- startStep1: 'Open a new terminal or source your shell profile (e.g. source ~/.zshrc)',
136
- startStep2: 'Run: claude to see available commands.',
137
- checkDocs: 'For more details, check the documentation in the .aiwf directory.',
138
- updateFailed: 'Update failed',
139
- installFailed: 'Installation failed',
140
- noBackupFound: 'No backup folder found to restore.',
141
- restoringFromBackup: 'Restoring from backup...',
142
- restoreSuccess: 'Successfully restored.',
143
- restoreFailed: 'Restore failed.',
144
- cannotRestore: 'Cannot restore file. Manual verification required.',
145
- checkingInstallation: 'Checking AIWF installation status...',
146
- creatingDirectories: 'Creating AIWF directory structure...',
147
- restoringBackup: 'Restoring files from backup...',
148
- backupRestored: '{count} files restored',
149
- checkingExistingTools: 'Checking existing tool directories...',
150
- foundExistingCursor: 'Found existing Cursor rules',
151
- foundExistingWindsurf: 'Found existing Windsurf rules',
152
- backingUpToolFiles: 'Backing up existing tool files...',
153
- toolBackupCreated: 'Tool files backup created',
154
- installingToolRules: 'Installing tool rules...',
155
- toolRulesInstalled: 'Tool rules installed successfully',
156
- }
157
- };
158
-
159
- /**
160
- * Get messages for a specific language
161
- * @param {string} language - Language code ('ko' or 'en')
162
- * @returns {Object} Messages object for the specified language
163
- */
164
- export function getMessages(language) {
165
- return messages[language] || messages.en;
166
- }
@@ -1,112 +0,0 @@
1
- /**
2
- * AIWF Directory Paths Configuration
3
- * Central location for all directory paths used in the AIWF framework
4
- */
5
-
6
- import path from 'path';
7
- import os from 'os';
8
-
9
- // Base directories
10
- export const BASE_DIRS = {
11
- AIWF: '.aiwf',
12
- CLAUDE: '.claude',
13
- GEMINI: '.gemini',
14
- CURSOR: '.cursor',
15
- WINDSURF: '.windsurf'
16
- };
17
-
18
- // AIWF subdirectories
19
- export const AIWF_DIRS = {
20
- ROOT: BASE_DIRS.AIWF,
21
- PROJECT_DOCS: path.join(BASE_DIRS.AIWF, '01_PROJECT_DOCS'),
22
- REQUIREMENTS: path.join(BASE_DIRS.AIWF, '02_REQUIREMENTS'),
23
- SPRINTS: path.join(BASE_DIRS.AIWF, '03_SPRINTS'),
24
- GENERAL_TASKS: path.join(BASE_DIRS.AIWF, '04_GENERAL_TASKS'),
25
- ARCHITECTURAL_DECISIONS: path.join(BASE_DIRS.AIWF, '05_ARCHITECTURAL_DECISIONS'),
26
- STATE_OF_PROJECT: path.join(BASE_DIRS.AIWF, '10_STATE_OF_PROJECT'),
27
- PROMPTS: path.join(BASE_DIRS.AIWF, '98_PROMPTS'),
28
- TEMPLATES: path.join(BASE_DIRS.AIWF, '99_TEMPLATES'),
29
- CACHE: path.join(BASE_DIRS.AIWF, 'cache'),
30
- METRICS: path.join(BASE_DIRS.AIWF, 'metrics'),
31
- CONFIG: path.join(BASE_DIRS.AIWF, 'config'),
32
- PERSONAS: path.join(BASE_DIRS.AIWF, 'personas'),
33
- AI_TOOLS: path.join(BASE_DIRS.AIWF, 'ai-tools'),
34
- CONTEXT_CACHE: path.join(BASE_DIRS.AIWF, 'cache', 'context')
35
- };
36
-
37
- // Tool-specific directories
38
- export const TOOL_DIRS = {
39
- CLAUDE_COMMANDS: path.join(BASE_DIRS.CLAUDE, 'commands', 'aiwf'),
40
- CLAUDE_AGENTS: path.join(BASE_DIRS.CLAUDE, 'agents'),
41
- GEMINI_PROMPTS: path.join(BASE_DIRS.GEMINI, 'prompts', 'aiwf'),
42
- CURSOR_RULES: path.join(BASE_DIRS.CURSOR, 'rules'),
43
- WINDSURF_RULES: path.join(BASE_DIRS.WINDSURF, 'rules')
44
- };
45
-
46
- // Files
47
- export const FILES = {
48
- INSTALLED_FLAG: path.join(AIWF_DIRS.ROOT, 'installed.flag'),
49
- PROJECT_MANIFEST: path.join(AIWF_DIRS.ROOT, '00_PROJECT_MANIFEST.md'),
50
- LANGUAGE_CONFIG: path.join(AIWF_DIRS.CONFIG, 'language.json'),
51
- CLAUDE_MD: {
52
- ROOT: path.join(AIWF_DIRS.ROOT, 'CLAUDE.md'),
53
- REQUIREMENTS: path.join(AIWF_DIRS.REQUIREMENTS, 'CLAUDE.md'),
54
- SPRINTS: path.join(AIWF_DIRS.SPRINTS, 'CLAUDE.md'),
55
- GENERAL_TASKS: path.join(AIWF_DIRS.GENERAL_TASKS, 'CLAUDE.md')
56
- }
57
- };
58
-
59
-
60
- // User cache directory (for global cache)
61
- export const USER_CACHE_DIR = path.join(
62
- os.homedir(),
63
- BASE_DIRS.AIWF,
64
- 'cache'
65
- );
66
-
67
- // Get all AIWF directories as array
68
- export function getAllAiwfDirectories() {
69
- return [
70
- AIWF_DIRS.ROOT,
71
- AIWF_DIRS.PROJECT_DOCS,
72
- AIWF_DIRS.REQUIREMENTS,
73
- AIWF_DIRS.SPRINTS,
74
- AIWF_DIRS.GENERAL_TASKS,
75
- AIWF_DIRS.ARCHITECTURAL_DECISIONS,
76
- AIWF_DIRS.STATE_OF_PROJECT,
77
- AIWF_DIRS.PROMPTS,
78
- AIWF_DIRS.TEMPLATES
79
- ];
80
- }
81
-
82
- // Get all CLAUDE.md files as array
83
- export function getAllClaudeMdFiles() {
84
- return Object.values(FILES.CLAUDE_MD);
85
- }
86
-
87
- // Get tool directory by name
88
- export function getToolDirectory(tool) {
89
- const mapping = {
90
- claudeCode: TOOL_DIRS.CLAUDE_COMMANDS,
91
- 'claude-code': TOOL_DIRS.CLAUDE_COMMANDS,
92
- geminiCLI: TOOL_DIRS.GEMINI_PROMPTS,
93
- 'gemini-cli': TOOL_DIRS.GEMINI_PROMPTS,
94
- cursor: TOOL_DIRS.CURSOR_RULES,
95
- windsurf: TOOL_DIRS.WINDSURF_RULES,
96
- aiwf: AIWF_DIRS.ROOT
97
- };
98
- return mapping[tool] || null;
99
- }
100
-
101
-
102
- // Export all for convenience
103
- export default {
104
- BASE_DIRS,
105
- AIWF_DIRS,
106
- TOOL_DIRS,
107
- FILES,
108
- USER_CACHE_DIR,
109
- getAllAiwfDirectories,
110
- getAllClaudeMdFiles,
111
- getToolDirectory
112
- };