aiwf 0.3.6 → 0.3.8

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 (271) hide show
  1. package/.aiwf/00_PROJECT_MANIFEST.md +226 -2
  2. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/S03_M02_sprint_meta.md +112 -0
  3. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T01_S03_new_test_task.md +39 -0
  4. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T02_S03_first_task.md +39 -0
  5. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T03_S03_test_task.md +39 -0
  6. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T04_S03_task_with_special_characters.md +39 -0
  7. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T05_S03_test.md +39 -0
  8. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T06_S03_test_task.md +39 -0
  9. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T07_S03_next_task.md +39 -0
  10. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T08_S03_next_task.md +39 -0
  11. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T09_S03_new_test_task.md +39 -0
  12. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T100_S03_task_with_special_characters.md +39 -0
  13. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T101_S03_test.md +39 -0
  14. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T102_S03_test_task.md +39 -0
  15. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T103_S03_next_task.md +39 -0
  16. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T104_S03_next_task.md +39 -0
  17. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T105_S03_new_test_task.md +39 -0
  18. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T106_S03_first_task.md +39 -0
  19. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T107_S03_test_task.md +39 -0
  20. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T108_S03_task_with_special_characters.md +39 -0
  21. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T109_S03_test.md +39 -0
  22. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T10_S03_first_task.md +39 -0
  23. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T110_S03_test_task.md +39 -0
  24. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T111_S03_next_task.md +39 -0
  25. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T112_S03_next_task.md +39 -0
  26. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T11_S03_test_task.md +39 -0
  27. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T12_S03_task_with_special_characters.md +39 -0
  28. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T13_S03_test.md +39 -0
  29. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T14_S03_test_task.md +39 -0
  30. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T15_S03_next_task.md +39 -0
  31. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T16_S03_next_task.md +39 -0
  32. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T17_S03_new_test_task.md +39 -0
  33. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T18_S03_first_task.md +39 -0
  34. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T19_S03_test_task.md +39 -0
  35. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T20_S03_task_with_special_characters.md +39 -0
  36. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T21_S03_test.md +39 -0
  37. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T22_S03_test_task.md +39 -0
  38. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T23_S03_next_task.md +39 -0
  39. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T24_S03_next_task.md +39 -0
  40. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T25_S03_new_test_task.md +39 -0
  41. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T26_S03_first_task.md +39 -0
  42. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T27_S03_test_task.md +39 -0
  43. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T28_S03_task_with_special_characters.md +39 -0
  44. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T29_S03_test.md +39 -0
  45. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T30_S03_test_task.md +39 -0
  46. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T31_S03_next_task.md +39 -0
  47. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T32_S03_next_task.md +39 -0
  48. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T33_S03_new_test_task.md +39 -0
  49. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T34_S03_first_task.md +39 -0
  50. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T35_S03_test_task.md +39 -0
  51. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T36_S03_task_with_special_characters.md +39 -0
  52. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T37_S03_test.md +39 -0
  53. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T38_S03_test_task.md +39 -0
  54. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T39_S03_next_task.md +39 -0
  55. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T40_S03_next_task.md +39 -0
  56. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T41_S03_new_test_task.md +39 -0
  57. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T42_S03_first_task.md +39 -0
  58. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T43_S03_test_task.md +39 -0
  59. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T44_S03_task_with_special_characters.md +39 -0
  60. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T45_S03_test.md +39 -0
  61. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T46_S03_test_task.md +39 -0
  62. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T47_S03_next_task.md +39 -0
  63. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T48_S03_next_task.md +39 -0
  64. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T49_S03_new_test_task.md +39 -0
  65. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T50_S03_first_task.md +39 -0
  66. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T51_S03_test_task.md +39 -0
  67. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T52_S03_task_with_special_characters.md +39 -0
  68. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T53_S03_test.md +39 -0
  69. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T54_S03_test_task.md +39 -0
  70. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T55_S03_next_task.md +39 -0
  71. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T56_S03_next_task.md +39 -0
  72. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T57_S03_new_test_task.md +39 -0
  73. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T58_S03_first_task.md +39 -0
  74. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T59_S03_test_task.md +39 -0
  75. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T60_S03_task_with_special_characters.md +39 -0
  76. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T61_S03_test.md +39 -0
  77. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T62_S03_test_task.md +39 -0
  78. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T63_S03_next_task.md +39 -0
  79. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T64_S03_next_task.md +39 -0
  80. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T65_S03_new_test_task.md +39 -0
  81. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T66_S03_first_task.md +39 -0
  82. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T67_S03_test_task.md +39 -0
  83. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T68_S03_task_with_special_characters.md +39 -0
  84. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T69_S03_test.md +39 -0
  85. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T70_S03_test_task.md +39 -0
  86. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T71_S03_next_task.md +39 -0
  87. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T72_S03_next_task.md +39 -0
  88. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T73_S03_new_test_task.md +39 -0
  89. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T74_S03_first_task.md +39 -0
  90. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T75_S03_test_task.md +39 -0
  91. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T76_S03_task_with_special_characters.md +39 -0
  92. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T77_S03_test.md +39 -0
  93. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T78_S03_test_task.md +39 -0
  94. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T79_S03_next_task.md +39 -0
  95. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T80_S03_next_task.md +39 -0
  96. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T81_S03_new_test_task.md +39 -0
  97. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T82_S03_first_task.md +39 -0
  98. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T83_S03_test_task.md +39 -0
  99. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T84_S03_task_with_special_characters.md +39 -0
  100. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T85_S03_test.md +39 -0
  101. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T86_S03_test_task.md +39 -0
  102. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T87_S03_next_task.md +39 -0
  103. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T88_S03_next_task.md +39 -0
  104. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T89_S03_new_test_task.md +39 -0
  105. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T90_S03_first_task.md +39 -0
  106. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T91_S03_test_task.md +39 -0
  107. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T92_S03_task_with_special_characters.md +39 -0
  108. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T93_S03_test.md +39 -0
  109. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T94_S03_test_task.md +39 -0
  110. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T95_S03_next_task.md +39 -0
  111. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T96_S03_next_task.md +39 -0
  112. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T97_S03_new_test_task.md +39 -0
  113. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T98_S03_first_task.md +39 -0
  114. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T99_S03_test_task.md +39 -0
  115. package/.aiwf/test-results-s02.json +5 -5
  116. package/.claude/commands/aiwf/aiwf_compress_aggressive_persona.md +3 -15
  117. package/.claude/commands/aiwf/aiwf_compress_minimal_persona.md +2 -15
  118. package/.claude/commands/aiwf/aiwf_compress_stats.md +2 -51
  119. package/.claude/commands/aiwf/aiwf_compress_with_persona.md +5 -18
  120. package/.claude/commands/aiwf/aiwf_create_feature_ledger.md +1 -1
  121. package/.claude/commands/aiwf/aiwf_default_mode.md +1 -1
  122. package/.claude/commands/aiwf/aiwf_evaluate.md +3 -16
  123. package/.claude/commands/aiwf/aiwf_get_feature_details.md +1 -1
  124. package/.claude/commands/aiwf/aiwf_link_feature_to_milestone.md +1 -1
  125. package/.claude/commands/aiwf/aiwf_list_features.md +1 -1
  126. package/.claude/commands/aiwf/aiwf_switch_language.md +48 -120
  127. package/.claude/commands/aiwf/aiwf_update_feature_status.md +1 -1
  128. package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_create_testcase.md +561 -0
  129. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_compress_aggressive_persona.md +2 -2
  130. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_compress_minimal_persona.md +2 -2
  131. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_compress_stats.md +10 -47
  132. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_compress_with_persona.md +2 -2
  133. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_create_feature_ledger.md +1 -1
  134. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_create_testcase.md +561 -0
  135. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_default_mode.md +1 -1
  136. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_evaluate.md +2 -2
  137. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_get_feature_details.md +1 -1
  138. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_link_feature_to_milestone.md +1 -1
  139. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_list_features.md +1 -1
  140. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_persona_architect.md +1 -1
  141. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_persona_backend.md +1 -1
  142. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_persona_data_analyst.md +1 -1
  143. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_persona_frontend.md +1 -1
  144. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_persona_security.md +1 -1
  145. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_persona_status.md +1 -1
  146. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_update_feature_status.md +1 -1
  147. package/package.json +1 -1
  148. package/src/cli/index.js +174 -0
  149. package/src/commands/compress.js +60 -0
  150. package/src/commands/create-project.js +23 -17
  151. package/src/commands/evaluate.js +459 -0
  152. package/src/commands/feature.js +365 -0
  153. package/src/commands/persona.js +37 -16
  154. package/src/commands/token.js +312 -0
  155. package/src/lib/file-downloader.js +189 -33
  156. package/src/lib/installer.js +38 -11
  157. package/src/lib/resource-loader.js +250 -0
  158. package/src/lib/resources/commands/ai-persona.js +602 -0
  159. package/src/lib/resources/commands/compress-context.js +389 -0
  160. package/src/lib/resources/commands/evaluate.js +246 -0
  161. package/src/lib/resources/commands/feature-ledger.js +565 -0
  162. package/src/lib/resources/commands/feature_commit_report.js +370 -0
  163. package/src/lib/resources/commands/persona-context-apply.js +562 -0
  164. package/src/lib/resources/commands/scan_git_history.js +234 -0
  165. package/src/lib/resources/commands/sync_feature_commits.js +154 -0
  166. package/src/lib/resources/commands/token-tracking.js +443 -0
  167. package/src/lib/resources/config/commit-patterns.js +103 -0
  168. package/src/lib/resources/config/language.json +6 -0
  169. package/src/lib/resources/personas/PERSONA_INDEX.md +57 -0
  170. package/src/lib/resources/personas/analyst.json +44 -0
  171. package/src/lib/resources/personas/architect/best_practices.md +136 -0
  172. package/src/lib/resources/personas/architect/knowledge_base.md +377 -0
  173. package/src/lib/resources/personas/architect.json +44 -0
  174. package/src/lib/resources/personas/backend/best_practices.md +766 -0
  175. package/src/lib/resources/personas/backend/knowledge_base.md +1070 -0
  176. package/src/lib/resources/personas/data_analyst/best_practices.md +594 -0
  177. package/src/lib/resources/personas/data_analyst/knowledge_base.md +1057 -0
  178. package/src/lib/resources/personas/developer.json +44 -0
  179. package/src/lib/resources/personas/developer.md +37 -0
  180. package/src/lib/resources/personas/evaluation_criteria.json +137 -0
  181. package/src/lib/resources/personas/frontend/best_practices.md +445 -0
  182. package/src/lib/resources/personas/frontend/knowledge_base.md +729 -0
  183. package/src/lib/resources/personas/persona-index.json +31 -0
  184. package/src/lib/resources/personas/reviewer.json +44 -0
  185. package/src/lib/resources/personas/security/best_practices.md +307 -0
  186. package/src/lib/resources/personas/security/knowledge_base.md +498 -0
  187. package/src/lib/resources/personas/tester.json +44 -0
  188. package/src/lib/resources/templates/README.md +78 -0
  189. package/src/lib/resources/templates/api-server/config.json +64 -0
  190. package/src/lib/resources/templates/api-server/template/.aiwf/config.json +56 -0
  191. package/src/lib/resources/templates/api-server/template/.aiwf/feature-ledger.json +42 -0
  192. package/src/lib/resources/templates/api-server/template/.aiwf/personas/backend-engineer.json +40 -0
  193. package/src/lib/resources/templates/api-server/template/.aiwf/scripts/cli.js +111 -0
  194. package/src/lib/resources/templates/api-server/template/.env.example +29 -0
  195. package/src/lib/resources/templates/api-server/template/.eslintrc.json +23 -0
  196. package/src/lib/resources/templates/api-server/template/README.md +171 -0
  197. package/src/lib/resources/templates/api-server/template/jest.config.js +26 -0
  198. package/src/lib/resources/templates/api-server/template/nodemon.json +9 -0
  199. package/src/lib/resources/templates/api-server/template/package.json +61 -0
  200. package/src/lib/resources/templates/api-server/template/src/app.ts +60 -0
  201. package/src/lib/resources/templates/api-server/template/src/config/swagger.ts +38 -0
  202. package/src/lib/resources/templates/api-server/template/src/controllers/aiwfController.ts +68 -0
  203. package/src/lib/resources/templates/api-server/template/src/controllers/authController.ts +128 -0
  204. package/src/lib/resources/templates/api-server/template/src/controllers/statusController.ts +28 -0
  205. package/src/lib/resources/templates/api-server/template/src/index.ts +28 -0
  206. package/src/lib/resources/templates/api-server/template/src/middleware/aiwfMiddleware.ts +50 -0
  207. package/src/lib/resources/templates/api-server/template/src/middleware/authMiddleware.ts +41 -0
  208. package/src/lib/resources/templates/api-server/template/src/middleware/errorHandler.ts +42 -0
  209. package/src/lib/resources/templates/api-server/template/src/middleware/notFoundHandler.ts +14 -0
  210. package/src/lib/resources/templates/api-server/template/src/middleware/requestLogger.ts +20 -0
  211. package/src/lib/resources/templates/api-server/template/src/routes/aiwf.ts +42 -0
  212. package/src/lib/resources/templates/api-server/template/src/routes/index.ts +13 -0
  213. package/src/lib/resources/templates/api-server/template/src/routes/v1/index.ts +67 -0
  214. package/src/lib/resources/templates/api-server/template/src/utils/logger.ts +37 -0
  215. package/src/lib/resources/templates/api-server/template/tests/app.test.ts +40 -0
  216. package/src/lib/resources/templates/api-server/template/tsconfig.json +43 -0
  217. package/src/lib/resources/templates/npm-library/config.json +61 -0
  218. package/src/lib/resources/templates/npm-library/template/LICENSE +21 -0
  219. package/src/lib/resources/templates/npm-library/template/README.md +201 -0
  220. package/src/lib/resources/templates/npm-library/template/package.json +78 -0
  221. package/src/lib/resources/templates/web-app/config.json +53 -0
  222. package/src/lib/resources/templates/web-app/template/.aiwf/config.json +54 -0
  223. package/src/lib/resources/templates/web-app/template/.aiwf/feature-ledger.json +37 -0
  224. package/src/lib/resources/templates/web-app/template/.aiwf/personas/fullstack-developer.json +40 -0
  225. package/src/lib/resources/templates/web-app/template/.aiwf/scripts/cli.js +110 -0
  226. package/src/lib/resources/templates/web-app/template/.eslintrc.cjs +20 -0
  227. package/src/lib/resources/templates/web-app/template/README.md +151 -0
  228. package/src/lib/resources/templates/web-app/template/index.html +14 -0
  229. package/src/lib/resources/templates/web-app/template/package.json +44 -0
  230. package/src/lib/resources/templates/web-app/template/postcss.config.js +6 -0
  231. package/src/lib/resources/templates/web-app/template/public/vite.svg +1 -0
  232. package/src/lib/resources/templates/web-app/template/src/App.tsx +21 -0
  233. package/src/lib/resources/templates/web-app/template/src/components/Layout.tsx +57 -0
  234. package/src/lib/resources/templates/web-app/template/src/components/aiwf/ContextStatus.tsx +107 -0
  235. package/src/lib/resources/templates/web-app/template/src/components/aiwf/FeatureLedger.tsx +93 -0
  236. package/src/lib/resources/templates/web-app/template/src/components/aiwf/TokenUsage.tsx +71 -0
  237. package/src/lib/resources/templates/web-app/template/src/index.css +60 -0
  238. package/src/lib/resources/templates/web-app/template/src/main.tsx +10 -0
  239. package/src/lib/resources/templates/web-app/template/src/pages/AiwfDashboard.tsx +60 -0
  240. package/src/lib/resources/templates/web-app/template/src/pages/HomePage.tsx +89 -0
  241. package/src/lib/resources/templates/web-app/template/src/pages/NotFound.tsx +25 -0
  242. package/src/lib/resources/templates/web-app/template/src/stores/aiwfStore.ts +126 -0
  243. package/src/lib/resources/templates/web-app/template/src/types/global.d.ts +9 -0
  244. package/src/lib/resources/templates/web-app/template/src/vite-env.d.ts +1 -0
  245. package/src/lib/resources/templates/web-app/template/tailwind.config.js +30 -0
  246. package/src/lib/resources/templates/web-app/template/tsconfig.json +37 -0
  247. package/src/lib/resources/templates/web-app/template/tsconfig.node.json +10 -0
  248. package/src/lib/resources/templates/web-app/template/vite.config.ts +23 -0
  249. package/src/lib/resources/utils/background-monitor.js +223 -0
  250. package/src/lib/resources/utils/compression-metrics.js +1031 -0
  251. package/src/lib/resources/utils/compression-strategies.js +557 -0
  252. package/src/lib/resources/utils/content-normalizer.js +455 -0
  253. package/src/lib/resources/utils/context-compressor.js +583 -0
  254. package/src/lib/resources/utils/context-rule-parser.js +180 -0
  255. package/src/lib/resources/utils/context-token-monitor.js +463 -0
  256. package/src/lib/resources/utils/context-update-manager.js +502 -0
  257. package/src/lib/resources/utils/feature-updater.js +271 -0
  258. package/src/lib/resources/utils/git-utils.js +220 -0
  259. package/src/lib/resources/utils/importance-classifier.js +645 -0
  260. package/src/lib/resources/utils/information-filter.js +710 -0
  261. package/src/lib/resources/utils/persona-aware-compressor.js +598 -0
  262. package/src/lib/resources/utils/prompt-injector.js +242 -0
  263. package/src/lib/resources/utils/simplified-evaluator.js +119 -0
  264. package/src/lib/resources/utils/text-summarizer.js +492 -0
  265. package/src/lib/resources/utils/token-counter.js +177 -0
  266. package/src/lib/resources/utils/token-monitor.js +484 -0
  267. package/src/lib/resources/utils/token-reporter.js +453 -0
  268. package/src/lib/resources/utils/token-storage.js +433 -0
  269. package/src/lib/resources/utils/token-tracker.js +283 -0
  270. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_switch_language.md +0 -160
  271. /package/claude-code/aiwf/ko/.claude/commands/aiwf/{aiwf_update_docs_kr.md → aiwf_update_docs.md} +0 -0
@@ -0,0 +1,61 @@
1
+ {
2
+ "name": "npm-library",
3
+ "displayName": "NPM 라이브러리",
4
+ "description": "TypeScript 기반 NPM 패키지 라이브러리 템플릿",
5
+ "type": "npm-library",
6
+ "language": "typescript",
7
+ "framework": "none",
8
+ "features": [
9
+ "TypeScript",
10
+ "Rollup Build",
11
+ "Jest Testing",
12
+ "ESM & CommonJS",
13
+ "Type Definitions",
14
+ "Tree Shaking",
15
+ "AIWF Integration",
16
+ "Auto Versioning"
17
+ ],
18
+ "structure": {
19
+ "src": "소스 코드",
20
+ "tests": "테스트 파일",
21
+ "dist": "빌드 출력",
22
+ ".aiwf": "AIWF 설정 및 메타데이터",
23
+ "docs": "라이브러리 문서"
24
+ },
25
+ "dependencies": {},
26
+ "devDependencies": {
27
+ "@types/node": "^20.0.0",
28
+ "@typescript-eslint/eslint-plugin": "^5.60.0",
29
+ "@typescript-eslint/parser": "^5.60.0",
30
+ "typescript": "^5.1.0",
31
+ "rollup": "^3.25.0",
32
+ "@rollup/plugin-typescript": "^11.1.0",
33
+ "@rollup/plugin-node-resolve": "^15.1.0",
34
+ "@rollup/plugin-commonjs": "^25.0.0",
35
+ "@rollup/plugin-json": "^6.0.0",
36
+ "rollup-plugin-terser": "^7.0.2",
37
+ "eslint": "^8.43.0",
38
+ "jest": "^29.5.0",
39
+ "@types/jest": "^29.5.0",
40
+ "ts-jest": "^29.1.0",
41
+ "np": "^8.0.0",
42
+ "husky": "^8.0.0",
43
+ "lint-staged": "^13.0.0",
44
+ "prettier": "^2.8.0"
45
+ },
46
+ "scripts": {
47
+ "build": "rollup -c",
48
+ "dev": "rollup -c -w",
49
+ "test": "jest",
50
+ "test:watch": "jest --watch",
51
+ "test:coverage": "jest --coverage",
52
+ "lint": "eslint . --ext .ts",
53
+ "format": "prettier --write \"src/**/*.ts\"",
54
+ "prepublishOnly": "npm run build",
55
+ "release": "np",
56
+ "aiwf": "node .aiwf/scripts/cli.js"
57
+ },
58
+ "publishConfig": {
59
+ "access": "public"
60
+ }
61
+ }
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) {{year}} {{author}}
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,201 @@
1
+ # {{projectName}}
2
+
3
+ {{description}}
4
+
5
+ ## 설치
6
+
7
+ ```bash
8
+ npm install {{projectName}}
9
+ ```
10
+
11
+ ## 사용법
12
+
13
+ ### 기본 사용
14
+
15
+ ```typescript
16
+ import { AiwfIntegration } from '{{projectName}}';
17
+
18
+ const aiwf = new AiwfIntegration({
19
+ projectName: 'my-project',
20
+ projectType: 'npm-library',
21
+ features: {
22
+ featureLedger: true,
23
+ contextCompression: true,
24
+ aiPersona: false,
25
+ },
26
+ });
27
+
28
+ // Validate integration
29
+ const result = await aiwf.validate();
30
+ console.log(result);
31
+ ```
32
+
33
+ ### Feature Tracking
34
+
35
+ ```typescript
36
+ const tracker = aiwf.getFeatureTracker();
37
+
38
+ // Add a new feature
39
+ const feature = tracker.addFeature({
40
+ name: 'New API Endpoint',
41
+ description: 'Add user authentication endpoint',
42
+ type: 'feature',
43
+ status: 'planned',
44
+ tags: ['api', 'auth'],
45
+ });
46
+
47
+ // Update feature status
48
+ tracker.updateFeatureStatus(feature.id, 'in_progress');
49
+
50
+ // Get statistics
51
+ const stats = tracker.getStatistics();
52
+ console.log(stats); // { total: 1, completed: 0, inProgress: 1, planned: 0 }
53
+ ```
54
+
55
+ ### Context Compression
56
+
57
+ ```typescript
58
+ const contextManager = aiwf.getContextManager();
59
+
60
+ // Compress content
61
+ const compressed = contextManager.compress(largeContent);
62
+
63
+ // Check token limit
64
+ const isWithinLimit = contextManager.checkTokenLimit(content);
65
+
66
+ // Get token usage
67
+ const usage = contextManager.getTokenUsage();
68
+ console.log(`Token usage: ${usage.percentage}%`);
69
+ ```
70
+
71
+ ## API 문서
72
+
73
+ ### AiwfIntegration
74
+
75
+ 메인 통합 클래스입니다.
76
+
77
+ #### Constructor
78
+
79
+ ```typescript
80
+ new AiwfIntegration(config: AiwfConfig)
81
+ ```
82
+
83
+ #### Methods
84
+
85
+ - `getConfig(): AiwfConfig` - 현재 설정 반환
86
+ - `getFeatureTracker(): FeatureTracker | undefined` - Feature Tracker 인스턴스
87
+ - `getContextManager(): ContextManager | undefined` - Context Manager 인스턴스
88
+ - `validate(): Promise<IntegrationResult>` - 통합 유효성 검사
89
+
90
+ ### FeatureTracker
91
+
92
+ 기능 추적을 관리합니다.
93
+
94
+ #### Methods
95
+
96
+ - `addFeature(feature: Omit<Feature, 'id' | 'createdAt'>): Feature` - 새 기능 추가
97
+ - `updateFeatureStatus(featureId: string, status: Feature['status']): Feature | undefined` - 상태 업데이트
98
+ - `getAllFeatures(): Feature[]` - 모든 기능 조회
99
+ - `getFeaturesByStatus(status: Feature['status']): Feature[]` - 상태별 기능 조회
100
+ - `getStatistics(): Record<string, number>` - 통계 조회
101
+ - `exportToJSON(): string` - JSON으로 내보내기
102
+
103
+ ### ContextManager
104
+
105
+ 컨텍스트 압축과 토큰 관리를 담당합니다.
106
+
107
+ #### Methods
108
+
109
+ - `compress(content: string): string` - 컨텐츠 압축
110
+ - `estimateTokens(content: string): number` - 토큰 수 추정
111
+ - `checkTokenLimit(content: string): boolean` - 토큰 한도 확인
112
+ - `updateTokenUsage(tokens: number): void` - 토큰 사용량 업데이트
113
+ - `getTokenUsage(): { used: number; limit: number; percentage: number }` - 사용량 조회
114
+ - `clearCache(): void` - 캐시 초기화
115
+ - `getCacheStats(): { size: number; entries: number }` - 캐시 통계
116
+
117
+ ## 타입 정의
118
+
119
+ ```typescript
120
+ interface AiwfConfig {
121
+ projectName: string;
122
+ projectType: 'web-app' | 'api-server' | 'npm-library' | 'custom';
123
+ features: {
124
+ featureLedger?: boolean;
125
+ contextCompression?: boolean;
126
+ aiPersona?: boolean;
127
+ };
128
+ options?: Record<string, unknown>;
129
+ }
130
+
131
+ interface Feature {
132
+ id: string;
133
+ name: string;
134
+ description: string;
135
+ type: 'feature' | 'bugfix' | 'enhancement' | 'setup';
136
+ status: 'planned' | 'in_progress' | 'completed';
137
+ createdAt: Date;
138
+ completedAt?: Date;
139
+ tags: string[];
140
+ metadata?: Record<string, unknown>;
141
+ }
142
+ ```
143
+
144
+ ## 개발
145
+
146
+ ### 설치
147
+
148
+ ```bash
149
+ npm install
150
+ ```
151
+
152
+ ### 개발 모드
153
+
154
+ ```bash
155
+ npm run dev
156
+ ```
157
+
158
+ ### 테스트
159
+
160
+ ```bash
161
+ npm test
162
+ npm run test:coverage
163
+ ```
164
+
165
+ ### 빌드
166
+
167
+ ```bash
168
+ npm run build
169
+ ```
170
+
171
+ ### 릴리즈
172
+
173
+ ```bash
174
+ npm run release
175
+ ```
176
+
177
+ ## AIWF 기능
178
+
179
+ 이 라이브러리는 AIWF와 완벽하게 통합되어 있습니다:
180
+
181
+ - **Feature Ledger**: 라이브러리 기능 개발 추적
182
+ - **Context Compression**: 토큰 사용 최적화
183
+ - **AI Persona**: 라이브러리 개발에 특화된 AI 어시스턴트
184
+
185
+ ```bash
186
+ npm run aiwf:status # 프로젝트 상태 확인
187
+ npm run aiwf:feature # Feature 관리
188
+ npm run aiwf:version # 버전 관리
189
+ ```
190
+
191
+ ## 기여하기
192
+
193
+ 1. Fork the repository
194
+ 2. Create your feature branch (`git checkout -b feature/amazing-feature`)
195
+ 3. Commit your changes (`git commit -m 'Add some amazing feature'`)
196
+ 4. Push to the branch (`git push origin feature/amazing-feature`)
197
+ 5. Open a Pull Request
198
+
199
+ ## 라이선스
200
+
201
+ MIT License - see the [LICENSE](LICENSE) file for details
@@ -0,0 +1,78 @@
1
+ {
2
+ "name": "{{projectName}}",
3
+ "version": "0.0.1",
4
+ "description": "{{description}}",
5
+ "main": "dist/index.js",
6
+ "module": "dist/index.esm.js",
7
+ "types": "dist/index.d.ts",
8
+ "files": [
9
+ "dist",
10
+ "README.md",
11
+ "LICENSE"
12
+ ],
13
+ "scripts": {
14
+ "build": "rollup -c",
15
+ "dev": "rollup -c -w",
16
+ "test": "jest",
17
+ "test:watch": "jest --watch",
18
+ "test:coverage": "jest --coverage",
19
+ "lint": "eslint . --ext .ts",
20
+ "format": "prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"",
21
+ "prepublishOnly": "npm run lint && npm test && npm run build",
22
+ "prepare": "husky install",
23
+ "release": "np",
24
+ "aiwf": "node .aiwf/scripts/cli.js",
25
+ "aiwf:status": "npm run aiwf status",
26
+ "aiwf:feature": "npm run aiwf feature",
27
+ "aiwf:version": "npm run aiwf version"
28
+ },
29
+ "keywords": [
30
+ "typescript",
31
+ "library",
32
+ "aiwf"
33
+ ],
34
+ "author": "{{author}}",
35
+ "license": "MIT",
36
+ "repository": {
37
+ "type": "git",
38
+ "url": "https://github.com/{{username}}/{{projectName}}"
39
+ },
40
+ "bugs": {
41
+ "url": "https://github.com/{{username}}/{{projectName}}/issues"
42
+ },
43
+ "homepage": "https://github.com/{{username}}/{{projectName}}#readme",
44
+ "devDependencies": {
45
+ "@types/node": "^20.0.0",
46
+ "@typescript-eslint/eslint-plugin": "^5.60.0",
47
+ "@typescript-eslint/parser": "^5.60.0",
48
+ "typescript": "^5.1.0",
49
+ "rollup": "^3.25.0",
50
+ "@rollup/plugin-typescript": "^11.1.0",
51
+ "@rollup/plugin-node-resolve": "^15.1.0",
52
+ "@rollup/plugin-commonjs": "^25.0.0",
53
+ "@rollup/plugin-json": "^6.0.0",
54
+ "rollup-plugin-terser": "^7.0.2",
55
+ "rollup-plugin-dts": "^5.3.0",
56
+ "eslint": "^8.43.0",
57
+ "jest": "^29.5.0",
58
+ "@types/jest": "^29.5.0",
59
+ "ts-jest": "^29.1.0",
60
+ "np": "^8.0.0",
61
+ "husky": "^8.0.0",
62
+ "lint-staged": "^13.0.0",
63
+ "prettier": "^2.8.0"
64
+ },
65
+ "lint-staged": {
66
+ "*.ts": [
67
+ "eslint --fix",
68
+ "prettier --write"
69
+ ]
70
+ },
71
+ "np": {
72
+ "yarn": false,
73
+ "tests": true
74
+ },
75
+ "engines": {
76
+ "node": ">=14.0.0"
77
+ }
78
+ }
@@ -0,0 +1,53 @@
1
+ {
2
+ "name": "web-app",
3
+ "displayName": "웹 애플리케이션 (React + TypeScript)",
4
+ "description": "React 18과 TypeScript로 구성된 모던 웹 애플리케이션 템플릿",
5
+ "type": "web-app",
6
+ "language": "typescript",
7
+ "framework": "react",
8
+ "features": [
9
+ "React 18",
10
+ "TypeScript",
11
+ "Vite",
12
+ "React Router",
13
+ "Zustand",
14
+ "Tailwind CSS",
15
+ "AIWF Dashboard"
16
+ ],
17
+ "structure": {
18
+ "src": "소스 코드",
19
+ "public": "정적 파일",
20
+ ".aiwf": "AIWF 설정 및 메타데이터",
21
+ "tests": "테스트 파일"
22
+ },
23
+ "dependencies": {
24
+ "react": "^18.2.0",
25
+ "react-dom": "^18.2.0",
26
+ "react-router-dom": "^6.14.0",
27
+ "zustand": "^4.3.8",
28
+ "axios": "^1.4.0"
29
+ },
30
+ "devDependencies": {
31
+ "@types/react": "^18.2.0",
32
+ "@types/react-dom": "^18.2.0",
33
+ "@typescript-eslint/eslint-plugin": "^5.60.0",
34
+ "@typescript-eslint/parser": "^5.60.0",
35
+ "@vitejs/plugin-react": "^4.0.0",
36
+ "autoprefixer": "^10.4.14",
37
+ "eslint": "^8.43.0",
38
+ "eslint-plugin-react-hooks": "^4.6.0",
39
+ "eslint-plugin-react-refresh": "^0.4.0",
40
+ "postcss": "^8.4.24",
41
+ "tailwindcss": "^3.3.2",
42
+ "typescript": "^5.1.0",
43
+ "vite": "^4.3.0"
44
+ },
45
+ "scripts": {
46
+ "dev": "vite",
47
+ "build": "tsc && vite build",
48
+ "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0",
49
+ "preview": "vite preview",
50
+ "test": "jest",
51
+ "aiwf": "node .aiwf/scripts/cli.js"
52
+ }
53
+ }
@@ -0,0 +1,54 @@
1
+ {
2
+ "project_name": "{{projectName}}",
3
+ "project_type": "web-app",
4
+ "framework": "react",
5
+ "language": "typescript",
6
+ "created_at": "{{createdAt}}",
7
+ "version": "0.0.1",
8
+ "features": {
9
+ "feature_ledger": {
10
+ "enabled": true,
11
+ "auto_track": true,
12
+ "git_integration": true
13
+ },
14
+ "ai_persona": {
15
+ "enabled": true,
16
+ "default": "fullstack-developer",
17
+ "available": [
18
+ "fullstack-developer",
19
+ "frontend-specialist",
20
+ "ui-ux-designer",
21
+ "performance-optimizer",
22
+ "security-auditor"
23
+ ]
24
+ },
25
+ "context_compression": {
26
+ "enabled": true,
27
+ "level": "balanced",
28
+ "token_limit": 100000,
29
+ "cache_enabled": true
30
+ },
31
+ "token_tracking": {
32
+ "enabled": true,
33
+ "alert_threshold": 80000,
34
+ "history_days": 30
35
+ }
36
+ },
37
+ "structure": {
38
+ "src_dir": "src",
39
+ "test_dir": "tests",
40
+ "build_dir": "dist",
41
+ "public_dir": "public"
42
+ },
43
+ "conventions": {
44
+ "component_style": "functional",
45
+ "state_management": "zustand",
46
+ "styling": "tailwind",
47
+ "testing": "jest",
48
+ "linting": "eslint"
49
+ },
50
+ "scripts": {
51
+ "pre_commit": "npm run lint && npm test",
52
+ "post_feature": "npm run aiwf:feature update"
53
+ }
54
+ }
@@ -0,0 +1,37 @@
1
+ {
2
+ "version": "1.0.0",
3
+ "project": "{{projectName}}",
4
+ "created": "{{createdAt}}",
5
+ "features": [
6
+ {
7
+ "id": "F001",
8
+ "name": "프로젝트 초기 설정",
9
+ "description": "React + TypeScript + Vite 기반 웹 애플리케이션 초기 설정",
10
+ "type": "setup",
11
+ "status": "completed",
12
+ "created_at": "{{createdAt}}",
13
+ "completed_at": "{{createdAt}}",
14
+ "components": [
15
+ "프로젝트 구조",
16
+ "빌드 설정",
17
+ "TypeScript 설정",
18
+ "ESLint 설정",
19
+ "Tailwind CSS 설정"
20
+ ],
21
+ "files": [
22
+ "package.json",
23
+ "vite.config.ts",
24
+ "tsconfig.json",
25
+ "tailwind.config.js",
26
+ ".eslintrc.cjs"
27
+ ],
28
+ "tags": ["초기설정", "인프라", "설정"]
29
+ }
30
+ ],
31
+ "statistics": {
32
+ "total_features": 1,
33
+ "completed": 1,
34
+ "in_progress": 0,
35
+ "planned": 0
36
+ }
37
+ }
@@ -0,0 +1,40 @@
1
+ {
2
+ "id": "fullstack-developer",
3
+ "name": "풀스택 개발자",
4
+ "description": "React 웹 애플리케이션 전체 스택 개발 전문가",
5
+ "expertise": [
6
+ "React 18+ 최신 기능",
7
+ "TypeScript 고급 패턴",
8
+ "상태 관리 (Zustand, Redux)",
9
+ "API 통합 및 데이터 페칭",
10
+ "성능 최적화",
11
+ "테스트 전략"
12
+ ],
13
+ "context": {
14
+ "focus_areas": [
15
+ "컴포넌트 설계 및 구현",
16
+ "타입 안정성",
17
+ "코드 재사용성",
18
+ "성능 최적화",
19
+ "접근성 (a11y)"
20
+ ],
21
+ "code_style": {
22
+ "components": "함수형 컴포넌트 + Hooks",
23
+ "naming": "camelCase (함수), PascalCase (컴포넌트)",
24
+ "imports": "절대 경로 사용 (@/...)",
25
+ "types": "인터페이스 우선, 필요시 타입 별칭"
26
+ },
27
+ "best_practices": [
28
+ "컴포넌트 단일 책임 원칙",
29
+ "Props 타입 명시",
30
+ "커스텀 훅 활용",
31
+ "메모이제이션 적절히 사용",
32
+ "에러 바운더리 구현"
33
+ ]
34
+ },
35
+ "prompts": {
36
+ "component_creation": "React 18의 최신 기능을 활용하여 재사용 가능하고 타입 안전한 컴포넌트를 만들어주세요.",
37
+ "optimization": "React.memo, useMemo, useCallback을 적절히 사용하여 성능을 최적화해주세요.",
38
+ "testing": "Jest와 React Testing Library를 사용하여 컴포넌트 테스트를 작성해주세요."
39
+ }
40
+ }
@@ -0,0 +1,110 @@
1
+ #!/usr/bin/env node
2
+
3
+ const fs = require('fs');
4
+ const path = require('path');
5
+
6
+ const args = process.argv.slice(2);
7
+ const command = args[0];
8
+ const subcommand = args[1];
9
+
10
+ const projectRoot = path.resolve(__dirname, '../..');
11
+ const aiwfDir = path.join(projectRoot, '.aiwf');
12
+ const featureLedgerPath = path.join(aiwfDir, 'feature-ledger.json');
13
+ const configPath = path.join(aiwfDir, 'config.json');
14
+
15
+ // Feature Ledger 관련 명령어
16
+ if (command === 'feature') {
17
+ const ledger = JSON.parse(fs.readFileSync(featureLedgerPath, 'utf8'));
18
+
19
+ switch (subcommand) {
20
+ case 'list':
21
+ console.log('\n📋 Feature Ledger\n');
22
+ ledger.features.forEach(feature => {
23
+ const status = {
24
+ completed: '✅',
25
+ in_progress: '🔄',
26
+ planned: '📝'
27
+ }[feature.status];
28
+ console.log(`${status} [${feature.id}] ${feature.name}`);
29
+ console.log(` ${feature.description}`);
30
+ console.log(` Tags: ${feature.tags.join(', ')}`);
31
+ console.log();
32
+ });
33
+ console.log(`총 ${ledger.features.length}개 기능`);
34
+ break;
35
+
36
+ case 'add':
37
+ console.log('새 기능 추가는 아직 구현되지 않았습니다.');
38
+ break;
39
+
40
+ case 'update':
41
+ console.log('기능 업데이트는 아직 구현되지 않았습니다.');
42
+ break;
43
+
44
+ default:
45
+ console.log('사용법: npm run aiwf feature [list|add|update]');
46
+ }
47
+ }
48
+
49
+ // Context 관련 명령어
50
+ else if (command === 'context') {
51
+ const config = JSON.parse(fs.readFileSync(configPath, 'utf8'));
52
+
53
+ switch (subcommand) {
54
+ case 'status':
55
+ console.log('\n📊 Context 상태\n');
56
+ console.log(`압축 레벨: ${config.features.context_compression.level}`);
57
+ console.log(`캐시 활성화: ${config.features.context_compression.cache_enabled ? '예' : '아니오'}`);
58
+ console.log(`토큰 한도: ${config.features.context_compression.token_limit.toLocaleString()}`);
59
+ break;
60
+
61
+ case 'compress':
62
+ console.log('수동 압축은 아직 구현되지 않았습니다.');
63
+ break;
64
+
65
+ default:
66
+ console.log('사용법: npm run aiwf context [status|compress]');
67
+ }
68
+ }
69
+
70
+ // 상태 명령어
71
+ else if (command === 'status') {
72
+ const config = JSON.parse(fs.readFileSync(configPath, 'utf8'));
73
+ const ledger = JSON.parse(fs.readFileSync(featureLedgerPath, 'utf8'));
74
+
75
+ console.log('\n🚀 AIWF 프로젝트 상태\n');
76
+ console.log(`프로젝트: ${config.project_name}`);
77
+ console.log(`타입: ${config.project_type}`);
78
+ console.log(`버전: ${config.version}`);
79
+ console.log();
80
+ console.log('📊 통계:');
81
+ console.log(`- 총 기능: ${ledger.statistics.total_features}`);
82
+ console.log(`- 완료: ${ledger.statistics.completed}`);
83
+ console.log(`- 진행중: ${ledger.statistics.in_progress}`);
84
+ console.log(`- 계획됨: ${ledger.statistics.planned}`);
85
+ console.log();
86
+ console.log('🤖 AI 페르소나:', config.features.ai_persona.default);
87
+ console.log('📦 Context 압축:', config.features.context_compression.level);
88
+ }
89
+
90
+ // 도움말
91
+ else {
92
+ console.log(`
93
+ AIWF CLI - AI Workflow Framework
94
+
95
+ 사용법: npm run aiwf [command] [subcommand]
96
+
97
+ 명령어:
98
+ status 프로젝트 상태 보기
99
+ feature list 기능 목록 보기
100
+ feature add 새 기능 추가
101
+ feature update 기능 상태 업데이트
102
+ context status Context 압축 상태 보기
103
+ context compress 수동 압축 실행
104
+
105
+ 예시:
106
+ npm run aiwf status
107
+ npm run aiwf feature list
108
+ npm run aiwf context status
109
+ `);
110
+ }
@@ -0,0 +1,20 @@
1
+ module.exports = {
2
+ root: true,
3
+ env: { browser: true, es2020: true },
4
+ extends: [
5
+ 'eslint:recommended',
6
+ 'plugin:@typescript-eslint/recommended',
7
+ 'plugin:react-hooks/recommended',
8
+ ],
9
+ ignorePatterns: ['dist', '.eslintrc.cjs'],
10
+ parser: '@typescript-eslint/parser',
11
+ plugins: ['react-refresh'],
12
+ rules: {
13
+ 'react-refresh/only-export-components': [
14
+ 'warn',
15
+ { allowConstantExport: true },
16
+ ],
17
+ '@typescript-eslint/no-explicit-any': 'warn',
18
+ '@typescript-eslint/no-unused-vars': ['warn', { argsIgnorePattern: '^_' }],
19
+ },
20
+ }