aiwf 0.3.8 → 0.3.13

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 (712) hide show
  1. package/CHANGELOG.md +97 -0
  2. package/README.ko.md +114 -28
  3. package/README.md +152 -40
  4. package/docs/AI-WORKFLOW.md +121 -19
  5. package/docs/API_DOCUMENTATION.md +1 -1
  6. package/docs/API_REFERENCE.md +1 -1
  7. package/docs/CLI_USAGE_GUIDE.ko.md +634 -0
  8. package/docs/CLI_USAGE_GUIDE.md +339 -178
  9. package/docs/COMMANDS_GUIDE.ko.md +308 -4
  10. package/docs/COMMANDS_GUIDE.md +117 -0
  11. package/docs/CONTRIBUTING.ko.md +6 -6
  12. package/docs/CONTRIBUTING.md +6 -6
  13. package/docs/DEVELOPMENT_GUIDE.ko.md +440 -0
  14. package/docs/DEVELOPMENT_GUIDE.md +1 -1
  15. package/docs/EXAMPLES.md +8 -6
  16. package/docs/GETTING_STARTED.md +6 -3
  17. package/docs/STATE_MANAGEMENT_GUIDE.ko.md +278 -0
  18. package/docs/STATE_MANAGEMENT_GUIDE.md +278 -0
  19. package/docs/TROUBLESHOOTING.md +14 -13
  20. package/docs/guides/checkpoint-system-guide-ko.md +356 -0
  21. package/docs/guides/checkpoint-system-guide.md +356 -0
  22. package/docs/guides/independent-sprint-guide-ko.md +321 -0
  23. package/docs/guides/independent-sprint-guide.md +321 -0
  24. package/package.json +37 -4
  25. package/scripts/check-dependencies.js +101 -0
  26. package/scripts/update-file-lists.js +267 -0
  27. package/src/cli/checkpoint-cli.js +417 -0
  28. package/src/cli/index.js +337 -50
  29. package/src/cli/sprint-cli.js +287 -0
  30. package/src/commands/sprint-independent.js +393 -0
  31. package/src/commands/state-refactored.js +419 -0
  32. package/src/commands/state.js +1164 -0
  33. package/src/commands/yolo-config.js +502 -0
  34. package/src/config/file-lists.js +147 -0
  35. package/src/config/yolo-config-template.yaml +168 -0
  36. package/src/lib/file-downloader.js +7 -72
  37. package/src/lib/github-integration.js +402 -0
  38. package/src/lib/resource-loader-enhanced.js +399 -0
  39. package/src/lib/state/priority-calculator.js +217 -0
  40. package/src/lib/state/state-index.js +155 -0
  41. package/src/lib/state/task-scanner.js +328 -0
  42. package/src/utils/checkpoint-manager.js +425 -0
  43. package/src/utils/engineering-guard.js +389 -0
  44. package/.aiwf/00_PROJECT_MANIFEST.md +0 -420
  45. package/.aiwf/01_PROJECT_DOCS/ARCHITECTURE.md +0 -121
  46. package/.aiwf/01_PROJECT_DOCS/FEATURE_LEDGER_ADVANCED_USE_CASES.md +0 -412
  47. package/.aiwf/01_PROJECT_DOCS/FEATURE_LEDGER_API_REFERENCE.md +0 -361
  48. package/.aiwf/01_PROJECT_DOCS/FEATURE_LEDGER_COMMANDS_GUIDE.md +0 -254
  49. package/.aiwf/01_PROJECT_DOCS/FEATURE_LEDGER_FAQ.md +0 -365
  50. package/.aiwf/01_PROJECT_DOCS/FEATURE_LEDGER_SYSTEM_OVERVIEW.md +0 -305
  51. package/.aiwf/01_PROJECT_DOCS/FEATURE_LEDGER_USER_GUIDE.md +0 -416
  52. package/.aiwf/01_PROJECT_DOCS/FEATURE_LEDGER_/354/213/234/354/236/221_/352/260/200/354/235/264/353/223/234.md +0 -247
  53. package/.aiwf/02_REQUIREMENTS/CLAUDE.md +0 -78
  54. package/.aiwf/02_REQUIREMENTS/M02_Context_Engineering_Enhancement/M02_milestone_meta.md +0 -34
  55. package/.aiwf/02_REQUIREMENTS/M02_Context_Engineering_Enhancement/PRD_Context_Engineering_Enhancement.md +0 -108
  56. package/.aiwf/02_REQUIREMENTS/M02_Context_Engineering_Enhancement/SPECS_AI_Persona_System.md +0 -299
  57. package/.aiwf/02_REQUIREMENTS/M02_Context_Engineering_Enhancement/SPECS_Feature_Ledger_System.md +0 -330
  58. package/.aiwf/02_REQUIREMENTS/M02_Context_Engineering_Enhancement/SPECS_Token_Optimization.md +0 -833
  59. package/.aiwf/02_REQUIREMENTS/M03_Simone_Integration_Enhancement/M03_milestone_meta.md +0 -55
  60. package/.aiwf/02_REQUIREMENTS/M03_Simone_Integration_Enhancement/SPECS_AIWF_Simplified_Plan.md +0 -221
  61. package/.aiwf/03_SPRINTS/CLAUDE.md +0 -83
  62. package/.aiwf/03_SPRINTS/S01_M02_context_foundation/S01_M02_sprint_meta.md +0 -95
  63. package/.aiwf/03_SPRINTS/S01_M02_context_foundation/TX01_S01_Feature_Ledger_/353/215/260/354/235/264/355/204/260_/352/265/254/354/241/260_/354/204/244/352/263/204.md +0 -111
  64. package/.aiwf/03_SPRINTS/S01_M02_context_foundation/TX02_S01_Feature_Ledger_CLI_/353/252/205/353/240/271/354/226/264_/352/260/234/353/260/234.md +0 -115
  65. package/.aiwf/03_SPRINTS/S01_M02_context_foundation/TX03_S01_Git_/354/227/260/353/217/231_Feature_/354/266/224/354/240/201.md +0 -141
  66. package/.aiwf/03_SPRINTS/S01_M02_context_foundation/TX04_S01_Feature_Ledger_/353/254/270/354/204/234/355/231/224.md +0 -114
  67. package/.aiwf/03_SPRINTS/S01_M02_context_foundation/TX05_S01_AI_/355/216/230/353/245/264/354/206/214/353/202/230_/353/215/260/354/235/264/355/204/260_/352/265/254/354/241/260_/354/204/244/352/263/204.md +0 -123
  68. package/.aiwf/03_SPRINTS/S01_M02_context_foundation/TX06_S01_/355/216/230/353/245/264/354/206/214/353/202/230_/352/264/200/353/246/254_/353/252/205/353/240/271/354/226/264_/352/265/254/355/230/204.md +0 -114
  69. package/.aiwf/03_SPRINTS/S01_M02_context_foundation/TX07_S01_Context_/354/225/225/354/266/225_/354/225/204/355/202/244/355/205/215/354/262/230_/354/204/244/352/263/204.md +0 -114
  70. package/.aiwf/03_SPRINTS/S01_M02_context_foundation/TX08_S01_/355/206/240/355/201/260_/354/266/224/354/240/201_/354/213/234/354/212/244/355/205/234_/355/224/204/353/241/234/355/206/240/355/203/200/354/236/205.md +0 -112
  71. package/.aiwf/03_SPRINTS/S01_M02_context_foundation/TX09_S01_/354/225/225/354/266/225_/354/225/214/352/263/240/353/246/254/354/246/230_/355/224/204/353/241/234/355/206/240/355/203/200/354/236/205.md +0 -118
  72. package/.aiwf/03_SPRINTS/S01_M02_context_foundation/TX10_S01_update_docs_/353/252/205/353/240/271/354/226/264_/353/263/265/352/265/254.md +0 -118
  73. package/.aiwf/03_SPRINTS/S01_M02_context_foundation/TX11_S01_/355/206/265/355/225/251_/355/205/214/354/212/244/355/212/270_Suite_/352/265/254/354/266/225.md +0 -128
  74. package/.aiwf/03_SPRINTS/S01_M02_context_foundation/TX12_S01_/354/204/261/353/212/245_/354/265/234/354/240/201/355/231/224_/353/260/217_/353/254/270/354/204/234/355/231/224.md +0 -122
  75. package/.aiwf/03_SPRINTS/S02_M02_ai_enhancement/S02_M02_sprint_meta.md +0 -107
  76. package/.aiwf/03_SPRINTS/S02_M02_ai_enhancement/TX01_S02_AI_/355/216/230/353/245/264/354/206/214/353/202/230_/353/252/205/353/240/271/354/226/264_/352/265/254/355/230/204.md +0 -129
  77. package/.aiwf/03_SPRINTS/S02_M02_ai_enhancement/TX02_S02_/355/216/230/353/245/264/354/206/214/353/202/230_/354/273/250/355/205/215/354/212/244/355/212/270_/354/240/201/354/232/251_/354/213/234/354/212/244/355/205/234.md +0 -152
  78. package/.aiwf/03_SPRINTS/S02_M02_ai_enhancement/TX03_S02_Context_/354/225/225/354/266/225_/354/225/214/352/263/240/353/246/254/354/246/230_/352/265/254/355/230/204.md +0 -186
  79. package/.aiwf/03_SPRINTS/S02_M02_ai_enhancement/TX05_S02_S02_/355/206/265/355/225/251_/355/205/214/354/212/244/355/212/270_/353/260/217_/353/254/270/354/204/234/355/231/224.md +0 -192
  80. package/.aiwf/03_SPRINTS/S02_M02_ai_enhancement/TX4_S02_Feature_Git_/354/227/260/353/217/231_/353/260/217_/354/236/220/353/217/231/355/231/224.md +0 -162
  81. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/S03_FINAL_SPRINT_SUMMARY.md +0 -137
  82. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/S03_M02_sprint_meta.md +0 -217
  83. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T01_S03_new_test_task.md +0 -39
  84. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T02_S03_first_task.md +0 -39
  85. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T03_S03_test_task.md +0 -39
  86. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T04_S03_task_with_special_characters.md +0 -39
  87. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T05_S03_test.md +0 -39
  88. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T06_S03_test_task.md +0 -39
  89. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T07_S03_next_task.md +0 -39
  90. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T08_S03_next_task.md +0 -39
  91. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T09_S03_new_test_task.md +0 -39
  92. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T100_S03_task_with_special_characters.md +0 -39
  93. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T101_S03_test.md +0 -39
  94. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T102_S03_test_task.md +0 -39
  95. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T103_S03_next_task.md +0 -39
  96. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T104_S03_next_task.md +0 -39
  97. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T105_S03_new_test_task.md +0 -39
  98. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T106_S03_first_task.md +0 -39
  99. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T107_S03_test_task.md +0 -39
  100. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T108_S03_task_with_special_characters.md +0 -39
  101. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T109_S03_test.md +0 -39
  102. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T10_S03_first_task.md +0 -39
  103. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T110_S03_test_task.md +0 -39
  104. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T111_S03_next_task.md +0 -39
  105. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T112_S03_next_task.md +0 -39
  106. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T11_S03_test_task.md +0 -39
  107. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T12_S03_task_with_special_characters.md +0 -39
  108. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T13_S03_test.md +0 -39
  109. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T14_S03_test_task.md +0 -39
  110. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T15_S03_next_task.md +0 -39
  111. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T16_S03_next_task.md +0 -39
  112. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T17_S03_new_test_task.md +0 -39
  113. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T18_S03_first_task.md +0 -39
  114. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T19_S03_test_task.md +0 -39
  115. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T20_S03_task_with_special_characters.md +0 -39
  116. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T21_S03_test.md +0 -39
  117. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T22_S03_test_task.md +0 -39
  118. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T23_S03_next_task.md +0 -39
  119. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T24_S03_next_task.md +0 -39
  120. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T25_S03_new_test_task.md +0 -39
  121. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T26_S03_first_task.md +0 -39
  122. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T27_S03_test_task.md +0 -39
  123. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T28_S03_task_with_special_characters.md +0 -39
  124. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T29_S03_test.md +0 -39
  125. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T30_S03_test_task.md +0 -39
  126. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T31_S03_next_task.md +0 -39
  127. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T32_S03_next_task.md +0 -39
  128. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T33_S03_new_test_task.md +0 -39
  129. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T34_S03_first_task.md +0 -39
  130. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T35_S03_test_task.md +0 -39
  131. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T36_S03_task_with_special_characters.md +0 -39
  132. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T37_S03_test.md +0 -39
  133. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T38_S03_test_task.md +0 -39
  134. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T39_S03_next_task.md +0 -39
  135. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T40_S03_next_task.md +0 -39
  136. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T41_S03_new_test_task.md +0 -39
  137. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T42_S03_first_task.md +0 -39
  138. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T43_S03_test_task.md +0 -39
  139. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T44_S03_task_with_special_characters.md +0 -39
  140. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T45_S03_test.md +0 -39
  141. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T46_S03_test_task.md +0 -39
  142. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T47_S03_next_task.md +0 -39
  143. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T48_S03_next_task.md +0 -39
  144. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T49_S03_new_test_task.md +0 -39
  145. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T50_S03_first_task.md +0 -39
  146. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T51_S03_test_task.md +0 -39
  147. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T52_S03_task_with_special_characters.md +0 -39
  148. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T53_S03_test.md +0 -39
  149. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T54_S03_test_task.md +0 -39
  150. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T55_S03_next_task.md +0 -39
  151. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T56_S03_next_task.md +0 -39
  152. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T57_S03_new_test_task.md +0 -39
  153. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T58_S03_first_task.md +0 -39
  154. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T59_S03_test_task.md +0 -39
  155. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T60_S03_task_with_special_characters.md +0 -39
  156. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T61_S03_test.md +0 -39
  157. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T62_S03_test_task.md +0 -39
  158. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T63_S03_next_task.md +0 -39
  159. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T64_S03_next_task.md +0 -39
  160. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T65_S03_new_test_task.md +0 -39
  161. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T66_S03_first_task.md +0 -39
  162. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T67_S03_test_task.md +0 -39
  163. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T68_S03_task_with_special_characters.md +0 -39
  164. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T69_S03_test.md +0 -39
  165. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T70_S03_test_task.md +0 -39
  166. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T71_S03_next_task.md +0 -39
  167. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T72_S03_next_task.md +0 -39
  168. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T73_S03_new_test_task.md +0 -39
  169. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T74_S03_first_task.md +0 -39
  170. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T75_S03_test_task.md +0 -39
  171. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T76_S03_task_with_special_characters.md +0 -39
  172. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T77_S03_test.md +0 -39
  173. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T78_S03_test_task.md +0 -39
  174. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T79_S03_next_task.md +0 -39
  175. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T80_S03_next_task.md +0 -39
  176. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T81_S03_new_test_task.md +0 -39
  177. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T82_S03_first_task.md +0 -39
  178. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T83_S03_test_task.md +0 -39
  179. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T84_S03_task_with_special_characters.md +0 -39
  180. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T85_S03_test.md +0 -39
  181. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T86_S03_test_task.md +0 -39
  182. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T87_S03_next_task.md +0 -39
  183. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T88_S03_next_task.md +0 -39
  184. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T89_S03_new_test_task.md +0 -39
  185. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T90_S03_first_task.md +0 -39
  186. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T91_S03_test_task.md +0 -39
  187. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T92_S03_task_with_special_characters.md +0 -39
  188. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T93_S03_test.md +0 -39
  189. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T94_S03_test_task.md +0 -39
  190. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T95_S03_next_task.md +0 -39
  191. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T96_S03_next_task.md +0 -39
  192. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T97_S03_new_test_task.md +0 -39
  193. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T98_S03_first_task.md +0 -39
  194. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/T99_S03_test_task.md +0 -39
  195. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/TX14_S03_M02_/353/247/210/354/235/274/354/212/244/355/206/244_/354/265/234/354/242/205_/352/262/200/354/246/235_/353/260/217_/353/254/270/354/204/234/355/231/224.md +0 -214
  196. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/TX15_S03_/352/270/260/353/263/270_/355/224/204/353/241/234/354/240/235/355/212/270_/355/205/234/355/224/214/353/246/277_/352/260/234/353/260/234.md +0 -177
  197. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/TX16_S03_/354/230/244/355/224/204/353/235/274/354/235/270_/355/205/234/355/224/214/353/246/277_/354/272/220/354/213/234_/354/213/234/354/212/244/355/205/234.md +0 -206
  198. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/TX_T13_S03_AI_/353/217/204/352/265/254_/355/206/265/355/225/251_/355/205/234/355/224/214/353/246/277_/352/260/234/353/260/234.md +0 -151
  199. package/.aiwf/04_GENERAL_TASKS/CLAUDE.md +0 -96
  200. package/.aiwf/04_GENERAL_TASKS/TX001_complete_english_translation.md +0 -127
  201. package/.aiwf/06_FEATURE_LEDGERS/FEATURE_GIT_INTEGRATION.md +0 -314
  202. package/.aiwf/06_FEATURE_LEDGERS/FEATURE_INTEGRATION_GUIDE.md +0 -227
  203. package/.aiwf/06_FEATURE_LEDGERS/FEATURE_LEDGER_INDEX.md +0 -23
  204. package/.aiwf/06_FEATURE_LEDGERS/FEATURE_SCHEMA.md +0 -205
  205. package/.aiwf/06_FEATURE_LEDGERS/FEATURE_STATE_DIAGRAM.md +0 -190
  206. package/.aiwf/06_FEATURE_LEDGERS/active/FL001_user_authentication_system.md +0 -47
  207. package/.aiwf/06_FEATURE_LEDGERS/active/FL002_user_authentication_system.md +0 -47
  208. package/.aiwf/07_AI_PERSONAS/PERSONA_INDEX.md +0 -57
  209. package/.aiwf/07_AI_PERSONAS/architect/best_practices.md +0 -104
  210. package/.aiwf/07_AI_PERSONAS/architect/context_rules.md +0 -46
  211. package/.aiwf/07_AI_PERSONAS/architect/knowledge_base.md +0 -235
  212. package/.aiwf/07_AI_PERSONAS/backend/best_practices.md +0 -363
  213. package/.aiwf/07_AI_PERSONAS/backend/context_rules.md +0 -61
  214. package/.aiwf/07_AI_PERSONAS/backend/knowledge_base.md +0 -623
  215. package/.aiwf/07_AI_PERSONAS/data_analyst/best_practices.md +0 -32
  216. package/.aiwf/07_AI_PERSONAS/data_analyst/context_rules.md +0 -43
  217. package/.aiwf/07_AI_PERSONAS/data_analyst/knowledge_base.md +0 -36
  218. package/.aiwf/07_AI_PERSONAS/frontend/best_practices.md +0 -31
  219. package/.aiwf/07_AI_PERSONAS/frontend/context_rules.md +0 -43
  220. package/.aiwf/07_AI_PERSONAS/frontend/knowledge_base.md +0 -32
  221. package/.aiwf/07_AI_PERSONAS/security/best_practices.md +0 -63
  222. package/.aiwf/07_AI_PERSONAS/security/context_rules.md +0 -53
  223. package/.aiwf/07_AI_PERSONAS/security/knowledge_base.md +0 -93
  224. package/.aiwf/10_PERSONAS/active.json +0 -1
  225. package/.aiwf/10_PERSONAS/developer.md +0 -37
  226. package/.aiwf/10_STATE_OF_PROJECT/2025-07-09-07-20-solid-progress.md +0 -144
  227. package/.aiwf/98_PROMPTS/SAAS_DEVELOPMENT_GUIDE.md +0 -302
  228. package/.aiwf/98_PROMPTS/github_integration.md +0 -130
  229. package/.aiwf/98_PROMPTS/useful-prompts.md +0 -31
  230. package/.aiwf/98_PROMPTS/vibe-front-prompts.md +0 -89
  231. package/.aiwf/99_TEMPLATES/adr_template.md +0 -49
  232. package/.aiwf/99_TEMPLATES/feature_template.md +0 -263
  233. package/.aiwf/99_TEMPLATES/milestone_meta_template.md +0 -25
  234. package/.aiwf/99_TEMPLATES/project_manifest_template.md +0 -39
  235. package/.aiwf/99_TEMPLATES/sprint_meta_template.md +0 -23
  236. package/.aiwf/99_TEMPLATES/task_template.md +0 -36
  237. package/.aiwf/CLAUDE.md +0 -76
  238. package/.aiwf/ai-tools/README.md +0 -105
  239. package/.aiwf/ai-tools/augment/README.md +0 -371
  240. package/.aiwf/ai-tools/augment/config.json +0 -30
  241. package/.aiwf/ai-tools/augment/template/.augment/aiwf-integration.md +0 -387
  242. package/.aiwf/ai-tools/augment/template/.augment/augment.yaml +0 -347
  243. package/.aiwf/ai-tools/augment/template/augment.config.json +0 -64
  244. package/.aiwf/ai-tools/claude-code/README.md +0 -151
  245. package/.aiwf/ai-tools/claude-code/config.json +0 -28
  246. package/.aiwf/ai-tools/claude-code/template/CLAUDE.md +0 -91
  247. package/.aiwf/ai-tools/cursor/README.md +0 -314
  248. package/.aiwf/ai-tools/cursor/config.json +0 -29
  249. package/.aiwf/ai-tools/cursor/template/.cursorrules +0 -362
  250. package/.aiwf/ai-tools/github-copilot/README.md +0 -195
  251. package/.aiwf/ai-tools/github-copilot/config.json +0 -24
  252. package/.aiwf/ai-tools/github-copilot/template/.github/copilot-instructions.md +0 -202
  253. package/.aiwf/ai-tools/windsurf/README.md +0 -355
  254. package/.aiwf/ai-tools/windsurf/config.json +0 -29
  255. package/.aiwf/ai-tools/windsurf/template/.windsurf/aiwf-rules.md +0 -260
  256. package/.aiwf/ai-tools/windsurf/template/.windsurf/windsurf.config.js +0 -312
  257. package/.aiwf/ai-tools/windsurf/template/windsurf.config.json +0 -63
  258. package/.aiwf/config/language.json +0 -6
  259. package/.aiwf/feature-ledger/FL-001-authentication.json +0 -52
  260. package/.aiwf/feature-ledger/feature-index.json +0 -20
  261. package/.aiwf/installed.flag +0 -1
  262. package/.aiwf/metrics/metrics.json +0 -18
  263. package/.aiwf/personas/analyst.json +0 -44
  264. package/.aiwf/personas/architect/best_practices.md +0 -136
  265. package/.aiwf/personas/architect/knowledge_base.md +0 -377
  266. package/.aiwf/personas/architect.json +0 -44
  267. package/.aiwf/personas/backend/best_practices.md +0 -766
  268. package/.aiwf/personas/backend/knowledge_base.md +0 -1070
  269. package/.aiwf/personas/current.json +0 -5
  270. package/.aiwf/personas/data_analyst/best_practices.md +0 -594
  271. package/.aiwf/personas/data_analyst/knowledge_base.md +0 -1057
  272. package/.aiwf/personas/developer.json +0 -44
  273. package/.aiwf/personas/evaluation_criteria.json +0 -137
  274. package/.aiwf/personas/frontend/best_practices.md +0 -445
  275. package/.aiwf/personas/frontend/knowledge_base.md +0 -729
  276. package/.aiwf/personas/persona-index.json +0 -31
  277. package/.aiwf/personas/reviewer.json +0 -44
  278. package/.aiwf/personas/security/best_practices.md +0 -307
  279. package/.aiwf/personas/security/knowledge_base.md +0 -498
  280. package/.aiwf/personas/tester.json +0 -44
  281. package/.aiwf/scripts/cache-templates.js +0 -209
  282. package/.aiwf/scripts/create-offline.js +0 -86
  283. package/.aiwf/scripts/create-project.js +0 -151
  284. package/.aiwf/scripts/feature-progress-calculator.cjs +0 -236
  285. package/.aiwf/scripts/git-integration.cjs +0 -391
  286. package/.aiwf/scripts/install-git-hooks.cjs +0 -226
  287. package/.aiwf/scripts/test-commit-parsing.cjs +0 -125
  288. package/.aiwf/scripts/update-feature-status.cjs +0 -198
  289. package/.aiwf/test-results-s02.json +0 -36
  290. package/.claude/commands/aiwf/aiwf_add_task_to_sprint.md +0 -283
  291. package/.claude/commands/aiwf/aiwf_changelog.md +0 -82
  292. package/.claude/commands/aiwf/aiwf_code_review.md +0 -88
  293. package/.claude/commands/aiwf/aiwf_commit.md +0 -160
  294. package/.claude/commands/aiwf/aiwf_compress_aggressive_persona.md +0 -41
  295. package/.claude/commands/aiwf/aiwf_compress_context.md +0 -116
  296. package/.claude/commands/aiwf/aiwf_compress_minimal_persona.md +0 -35
  297. package/.claude/commands/aiwf/aiwf_compress_stats.md +0 -30
  298. package/.claude/commands/aiwf/aiwf_compress_with_persona.md +0 -38
  299. package/.claude/commands/aiwf/aiwf_create_feature_ledger.md +0 -54
  300. package/.claude/commands/aiwf/aiwf_create_general_task.md +0 -147
  301. package/.claude/commands/aiwf/aiwf_create_milestone_plan.md +0 -194
  302. package/.claude/commands/aiwf/aiwf_create_prd.md +0 -280
  303. package/.claude/commands/aiwf/aiwf_create_sprint_tasks.md +0 -189
  304. package/.claude/commands/aiwf/aiwf_create_sprints_from_milestone.md +0 -121
  305. package/.claude/commands/aiwf/aiwf_default_mode.md +0 -44
  306. package/.claude/commands/aiwf/aiwf_discuss_review.md +0 -29
  307. package/.claude/commands/aiwf/aiwf_do_task.md +0 -109
  308. package/.claude/commands/aiwf/aiwf_docs.md +0 -225
  309. package/.claude/commands/aiwf/aiwf_evaluate.md +0 -79
  310. package/.claude/commands/aiwf/aiwf_get_feature_details.md +0 -78
  311. package/.claude/commands/aiwf/aiwf_infinite.md +0 -202
  312. package/.claude/commands/aiwf/aiwf_initialize.md +0 -134
  313. package/.claude/commands/aiwf/aiwf_install_git_hooks.md +0 -63
  314. package/.claude/commands/aiwf/aiwf_issue_create.md +0 -65
  315. package/.claude/commands/aiwf/aiwf_link_feature_branch.md +0 -43
  316. package/.claude/commands/aiwf/aiwf_link_feature_commit.md +0 -46
  317. package/.claude/commands/aiwf/aiwf_link_feature_to_milestone.md +0 -57
  318. package/.claude/commands/aiwf/aiwf_list_features.md +0 -54
  319. package/.claude/commands/aiwf/aiwf_mermaid.md +0 -272
  320. package/.claude/commands/aiwf/aiwf_persona_architect.md +0 -48
  321. package/.claude/commands/aiwf/aiwf_persona_backend.md +0 -37
  322. package/.claude/commands/aiwf/aiwf_persona_data_analyst.md +0 -37
  323. package/.claude/commands/aiwf/aiwf_persona_frontend.md +0 -37
  324. package/.claude/commands/aiwf/aiwf_persona_security.md +0 -48
  325. package/.claude/commands/aiwf/aiwf_persona_status.md +0 -50
  326. package/.claude/commands/aiwf/aiwf_pr_create.md +0 -76
  327. package/.claude/commands/aiwf/aiwf_prime.md +0 -9
  328. package/.claude/commands/aiwf/aiwf_project_review.md +0 -261
  329. package/.claude/commands/aiwf/aiwf_switch_language.md +0 -88
  330. package/.claude/commands/aiwf/aiwf_test.md +0 -124
  331. package/.claude/commands/aiwf/aiwf_testing_review.md +0 -198
  332. package/.claude/commands/aiwf/aiwf_tm-run-all-subtask.md +0 -210
  333. package/.claude/commands/aiwf/aiwf_ultrathink_code_advanced.md +0 -460
  334. package/.claude/commands/aiwf/aiwf_ultrathink_code_basic.md +0 -165
  335. package/.claude/commands/aiwf/aiwf_ultrathink_general.md +0 -305
  336. package/.claude/commands/aiwf/aiwf_update_docs_kr.md +0 -25
  337. package/.claude/commands/aiwf/aiwf_update_feature_status.md +0 -53
  338. package/.claude/commands/aiwf/aiwf_yolo.md +0 -300
  339. package/.eslintrc.json +0 -26
  340. package/.prettierrc +0 -10
  341. package/CLAUDE.md +0 -254
  342. package/RELEASE_NOTES_M02.md +0 -177
  343. package/TEST_RECOVERY_PLAN.md +0 -68
  344. package/claude-code/aiwf/en/.aiwf/00_PROJECT_MANIFEST.md +0 -49
  345. package/claude-code/aiwf/en/.aiwf/01_PROJECT_DOCS/ARCHITECTURE.md +0 -55
  346. package/claude-code/aiwf/en/.aiwf/02_REQUIREMENTS/CLAUDE.md +0 -78
  347. package/claude-code/aiwf/en/.aiwf/02_REQUIREMENTS/M01_Backend_Setup/M01_milestone_meta.md +0 -42
  348. package/claude-code/aiwf/en/.aiwf/02_REQUIREMENTS/M01_Backend_Setup/PRD_AMEND_01_Auth_Flow_Update.md +0 -73
  349. package/claude-code/aiwf/en/.aiwf/02_REQUIREMENTS/M01_Backend_Setup/PRD_Backend_Setup.md +0 -98
  350. package/claude-code/aiwf/en/.aiwf/02_REQUIREMENTS/M01_Backend_Setup/SPECS_API_V1.md +0 -232
  351. package/claude-code/aiwf/en/.aiwf/03_SPRINTS/CLAUDE.md +0 -83
  352. package/claude-code/aiwf/en/.aiwf/03_SPRINTS/S01_M01_Initial_API/S01_sprint_meta.md +0 -49
  353. package/claude-code/aiwf/en/.aiwf/03_SPRINTS/S01_M01_Initial_API/T01_S01_Setup_Project_Structure.md +0 -60
  354. package/claude-code/aiwf/en/.aiwf/04_GENERAL_TASKS/CLAUDE.md +0 -96
  355. package/claude-code/aiwf/en/.aiwf/04_GENERAL_TASKS/T002_API_Rate_Limiting.md +0 -54
  356. package/claude-code/aiwf/en/.aiwf/04_GENERAL_TASKS/TX001_Refactor_Logging_Module.md +0 -58
  357. package/claude-code/aiwf/en/.aiwf/05_ARCHITECTURAL_DECISIONS/ADR001_Chosen_Database_System.md +0 -119
  358. package/claude-code/aiwf/en/.aiwf/05_ARCHITECTURAL_DECISIONS/ADR002_API_Authentication_Method.md +0 -124
  359. package/claude-code/aiwf/en/.aiwf/10_STATE_OF_PROJECT/2025-06-12-12-00-needs-focus.md +0 -139
  360. package/claude-code/aiwf/en/.aiwf/10_STATE_OF_PROJECT/2025-06-12-12-00-test-alignment.md +0 -155
  361. package/claude-code/aiwf/en/.aiwf/10_STATE_OF_PROJECT/2025-06-13-00-50-solid-progress.md +0 -122
  362. package/claude-code/aiwf/en/.aiwf/10_STATE_OF_PROJECT/2025-06-14-08-30-infrastructure-challenges.md +0 -141
  363. package/claude-code/aiwf/en/.aiwf/10_STATE_OF_PROJECT/2025-06-16-21-48-critical-foundation-issues.md +0 -177
  364. package/claude-code/aiwf/en/.aiwf/10_STATE_OF_PROJECT/2025-06-17-15-08-solid-progress.md +0 -149
  365. package/claude-code/aiwf/en/.aiwf/10_STATE_OF_PROJECT/index.json +0 -5
  366. package/claude-code/aiwf/en/.aiwf/10_STATE_OF_PROJECT/sync-index.js +0 -78
  367. package/claude-code/aiwf/en/.aiwf/98_PROMPTS/github_integration.md +0 -130
  368. package/claude-code/aiwf/en/.aiwf/98_PROMPTS/useful-prompts.md +0 -31
  369. package/claude-code/aiwf/en/.aiwf/98_PROMPTS/vibe-front-prompts.md +0 -89
  370. package/claude-code/aiwf/en/.aiwf/99_TEMPLATES/adr_template.md +0 -49
  371. package/claude-code/aiwf/en/.aiwf/99_TEMPLATES/milestone_meta_template.md +0 -25
  372. package/claude-code/aiwf/en/.aiwf/99_TEMPLATES/project_manifest_template.md +0 -39
  373. package/claude-code/aiwf/en/.aiwf/99_TEMPLATES/sprint_meta_template.md +0 -23
  374. package/claude-code/aiwf/en/.aiwf/99_TEMPLATES/task_template.md +0 -36
  375. package/claude-code/aiwf/en/.aiwf/CLAUDE.md +0 -74
  376. package/claude-code/aiwf/en/.aiwf/README.md +0 -97
  377. package/claude-code/aiwf/en/.claude/CLAUDE_BE.md +0 -276
  378. package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_changelog.md +0 -82
  379. package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_code_review.md +0 -88
  380. package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_commit.md +0 -160
  381. package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_create_feature_ledger.md +0 -54
  382. package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_create_general_task.md +0 -147
  383. package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_create_milestone_plan.md +0 -194
  384. package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_create_prd.md +0 -272
  385. package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_create_sprint_tasks.md +0 -189
  386. package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_create_sprints_from_milestone.md +0 -121
  387. package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_create_testcase.md +0 -561
  388. package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_default_mode.md +0 -66
  389. package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_discuss_review.md +0 -29
  390. package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_do_task.md +0 -109
  391. package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_docs.md +0 -225
  392. package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_get_feature_details.md +0 -78
  393. package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_infinite.md +0 -202
  394. package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_initialize.md +0 -134
  395. package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_issue_create.md +0 -65
  396. package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_link_feature_to_milestone.md +0 -57
  397. package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_list_features.md +0 -54
  398. package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_mermaid.md +0 -272
  399. package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_persona_architect.md +0 -60
  400. package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_persona_backend.md +0 -60
  401. package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_persona_data_analyst.md +0 -60
  402. package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_persona_frontend.md +0 -60
  403. package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_persona_security.md +0 -60
  404. package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_persona_status.md +0 -72
  405. package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_pr_create.md +0 -76
  406. package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_prime.md +0 -9
  407. package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_project_review.md +0 -261
  408. package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_switch_language.md +0 -160
  409. package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_test.md +0 -125
  410. package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_testing_review.md +0 -198
  411. package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_tm-run-all-subtask.md +0 -206
  412. package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_ultrathink_code_advanced.md +0 -460
  413. package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_ultrathink_code_basic.md +0 -165
  414. package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_ultrathink_general.md +0 -362
  415. package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_update_feature_status.md +0 -53
  416. package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_yolo.md +0 -300
  417. package/claude-code/aiwf/en/.claude/mcp.json +0 -31
  418. package/claude-code/aiwf/en/.claude/settings.json +0 -102
  419. package/claude-code/aiwf/en/commands/ai-persona.js +0 -667
  420. package/claude-code/aiwf/en/commands/compress-context.js +0 -355
  421. package/claude-code/aiwf/en/commands/feature-ledger.js +0 -565
  422. package/claude-code/aiwf/en/commands/feature_commit_report.js +0 -370
  423. package/claude-code/aiwf/en/commands/scan_git_history.js +0 -234
  424. package/claude-code/aiwf/en/commands/sync_feature_commits.js +0 -154
  425. package/claude-code/aiwf/en/commands/token-tracking.js +0 -443
  426. package/claude-code/aiwf/en/config/commit-patterns.js +0 -103
  427. package/claude-code/aiwf/en/hooks/install-hooks.sh +0 -100
  428. package/claude-code/aiwf/en/hooks/post-commit +0 -84
  429. package/claude-code/aiwf/en/tests/compression-test-suite.js +0 -1252
  430. package/claude-code/aiwf/en/tests/test-git-integration.js +0 -164
  431. package/claude-code/aiwf/en/tests/token-tracking.test.js +0 -537
  432. package/claude-code/aiwf/en/utils/compression-metrics.js +0 -1031
  433. package/claude-code/aiwf/en/utils/compression-strategies.js +0 -557
  434. package/claude-code/aiwf/en/utils/content-normalizer.js +0 -455
  435. package/claude-code/aiwf/en/utils/context-compressor.js +0 -583
  436. package/claude-code/aiwf/en/utils/feature-updater.js +0 -271
  437. package/claude-code/aiwf/en/utils/git-utils.js +0 -220
  438. package/claude-code/aiwf/en/utils/importance-classifier.js +0 -645
  439. package/claude-code/aiwf/en/utils/information-filter.js +0 -710
  440. package/claude-code/aiwf/en/utils/text-summarizer.js +0 -487
  441. package/claude-code/aiwf/en/utils/token-counter.js +0 -177
  442. package/claude-code/aiwf/en/utils/token-monitor.js +0 -484
  443. package/claude-code/aiwf/en/utils/token-reporter.js +0 -453
  444. package/claude-code/aiwf/en/utils/token-storage.js +0 -433
  445. package/claude-code/aiwf/en/utils/token-tracker.js +0 -283
  446. package/claude-code/aiwf/ko/.aiwf/00_PROJECT_MANIFEST.md +0 -49
  447. package/claude-code/aiwf/ko/.aiwf/01_PROJECT_DOCS/ARCHITECTURE.md +0 -55
  448. package/claude-code/aiwf/ko/.aiwf/02_REQUIREMENTS/CLAUDE.md +0 -78
  449. package/claude-code/aiwf/ko/.aiwf/02_REQUIREMENTS/M01_Backend_Setup/M01_milestone_meta.md +0 -42
  450. package/claude-code/aiwf/ko/.aiwf/02_REQUIREMENTS/M01_Backend_Setup/PRD_AMEND_01_Auth_Flow_Update.md +0 -73
  451. package/claude-code/aiwf/ko/.aiwf/02_REQUIREMENTS/M01_Backend_Setup/PRD_Backend_Setup.md +0 -98
  452. package/claude-code/aiwf/ko/.aiwf/02_REQUIREMENTS/M01_Backend_Setup/SPECS_API_V1.md +0 -232
  453. package/claude-code/aiwf/ko/.aiwf/03_SPRINTS/CLAUDE.md +0 -83
  454. package/claude-code/aiwf/ko/.aiwf/03_SPRINTS/S01_M01_Initial_API/S01_sprint_meta.md +0 -49
  455. package/claude-code/aiwf/ko/.aiwf/03_SPRINTS/S01_M01_Initial_API/T01_S01_Setup_Project_Structure.md +0 -60
  456. package/claude-code/aiwf/ko/.aiwf/04_GENERAL_TASKS/CLAUDE.md +0 -96
  457. package/claude-code/aiwf/ko/.aiwf/04_GENERAL_TASKS/T002_API_Rate_Limiting.md +0 -54
  458. package/claude-code/aiwf/ko/.aiwf/04_GENERAL_TASKS/TX001_Refactor_Logging_Module.md +0 -58
  459. package/claude-code/aiwf/ko/.aiwf/05_ARCHITECTURAL_DECISIONS/ADR001_Chosen_Database_System.md +0 -119
  460. package/claude-code/aiwf/ko/.aiwf/05_ARCHITECTURAL_DECISIONS/ADR002_API_Authentication_Method.md +0 -124
  461. package/claude-code/aiwf/ko/.aiwf/06_FEATURE_LEDGERS/FEATURE_ID_GENERATOR.md +0 -138
  462. package/claude-code/aiwf/ko/.aiwf/06_FEATURE_LEDGERS/FEATURE_INDEX.md +0 -186
  463. package/claude-code/aiwf/ko/.aiwf/06_FEATURE_LEDGERS/FEATURE_METADATA.md +0 -240
  464. package/claude-code/aiwf/ko/.aiwf/06_FEATURE_LEDGERS/FEATURE_WORKFLOW.md +0 -183
  465. package/claude-code/aiwf/ko/.aiwf/06_FEATURE_LEDGERS/README.md +0 -94
  466. package/claude-code/aiwf/ko/.aiwf/06_FEATURE_LEDGERS/active/FL001_/354/202/254/354/232/251/354/236/220_/354/235/270/354/246/235_/354/213/234/354/212/244/355/205/234.md +0 -154
  467. package/claude-code/aiwf/ko/.aiwf/06_FEATURE_LEDGERS/active/FL002_ai_/355/216/230/353/245/264/354/206/214/353/202/230_/354/213/234/354/212/244/355/205/234.md +0 -272
  468. package/claude-code/aiwf/ko/.aiwf/06_FEATURE_LEDGERS/completed/FL003_/353/213/244/352/265/255/354/226/264_/353/252/205/353/240/271/354/226/264_/355/221/234/354/244/200/355/231/224.md +0 -266
  469. package/claude-code/aiwf/ko/.aiwf/06_FEATURE_LEDGERS/schemas/feature_schema.json +0 -122
  470. package/claude-code/aiwf/ko/.aiwf/06_FEATURE_LEDGERS/schemas/feature_validator.cjs +0 -406
  471. package/claude-code/aiwf/ko/.aiwf/10_STATE_OF_PROJECT/2025-06-12-12-00-needs-focus.md +0 -139
  472. package/claude-code/aiwf/ko/.aiwf/10_STATE_OF_PROJECT/2025-06-12-12-00-test-alignment.md +0 -155
  473. package/claude-code/aiwf/ko/.aiwf/10_STATE_OF_PROJECT/2025-06-13-00-50-solid-progress.md +0 -122
  474. package/claude-code/aiwf/ko/.aiwf/10_STATE_OF_PROJECT/2025-06-14-08-30-infrastructure-challenges.md +0 -141
  475. package/claude-code/aiwf/ko/.aiwf/10_STATE_OF_PROJECT/2025-06-16-21-48-critical-foundation-issues.md +0 -177
  476. package/claude-code/aiwf/ko/.aiwf/10_STATE_OF_PROJECT/2025-06-17-15-08-solid-progress.md +0 -149
  477. package/claude-code/aiwf/ko/.aiwf/10_STATE_OF_PROJECT/index.json +0 -5
  478. package/claude-code/aiwf/ko/.aiwf/10_STATE_OF_PROJECT/sync-index.js +0 -78
  479. package/claude-code/aiwf/ko/.aiwf/98_PROMPTS/github_integration.md +0 -130
  480. package/claude-code/aiwf/ko/.aiwf/98_PROMPTS/useful-prompts.md +0 -31
  481. package/claude-code/aiwf/ko/.aiwf/98_PROMPTS/vibe-front-prompts.md +0 -89
  482. package/claude-code/aiwf/ko/.aiwf/99_TEMPLATES/adr_template.md +0 -49
  483. package/claude-code/aiwf/ko/.aiwf/99_TEMPLATES/milestone_meta_template.md +0 -25
  484. package/claude-code/aiwf/ko/.aiwf/99_TEMPLATES/project_manifest_template.md +0 -39
  485. package/claude-code/aiwf/ko/.aiwf/99_TEMPLATES/sprint_meta_template.md +0 -23
  486. package/claude-code/aiwf/ko/.aiwf/99_TEMPLATES/task_template.md +0 -36
  487. package/claude-code/aiwf/ko/.aiwf/CLAUDE.md +0 -76
  488. package/claude-code/aiwf/ko/.aiwf/README.md +0 -97
  489. package/claude-code/aiwf/ko/.claude/CLAUDE_BE.md +0 -276
  490. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_changelog.md +0 -82
  491. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_code_review.md +0 -88
  492. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_commit.md +0 -160
  493. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_compress_aggressive_persona.md +0 -53
  494. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_compress_context.md +0 -116
  495. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_compress_minimal_persona.md +0 -48
  496. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_compress_stats.md +0 -42
  497. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_compress_with_persona.md +0 -51
  498. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_create_feature_ledger.md +0 -54
  499. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_create_general_task.md +0 -147
  500. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_create_milestone_plan.md +0 -194
  501. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_create_prd.md +0 -280
  502. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_create_sprint_tasks.md +0 -189
  503. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_create_sprints_from_milestone.md +0 -121
  504. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_create_testcase.md +0 -561
  505. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_default_mode.md +0 -44
  506. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_discuss_review.md +0 -29
  507. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_do_task.md +0 -109
  508. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_docs.md +0 -225
  509. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_evaluate.md +0 -92
  510. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_get_feature_details.md +0 -78
  511. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_infinite.md +0 -202
  512. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_initialize.md +0 -134
  513. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_issue_create.md +0 -65
  514. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_link_feature_to_milestone.md +0 -57
  515. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_list_features.md +0 -54
  516. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_mermaid.md +0 -272
  517. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_persona_architect.md +0 -48
  518. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_persona_backend.md +0 -37
  519. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_persona_data_analyst.md +0 -37
  520. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_persona_frontend.md +0 -37
  521. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_persona_security.md +0 -48
  522. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_persona_status.md +0 -50
  523. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_pr_create.md +0 -76
  524. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_prime.md +0 -9
  525. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_project_review.md +0 -261
  526. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_test.md +0 -124
  527. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_testing_review.md +0 -198
  528. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_tm-run-all-subtask.md +0 -210
  529. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_ultrathink_code_advanced.md +0 -460
  530. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_ultrathink_code_basic.md +0 -165
  531. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_ultrathink_general.md +0 -305
  532. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_update_docs.md +0 -25
  533. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_update_feature_status.md +0 -53
  534. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_yolo.md +0 -300
  535. package/claude-code/aiwf/ko/.claude/mcp.json +0 -31
  536. package/claude-code/aiwf/ko/.claude/settings.json +0 -102
  537. package/claude-code/aiwf/ko/CLAUDE.md +0 -76
  538. package/claude-code/aiwf/ko/ai-tools/README.md +0 -105
  539. package/claude-code/aiwf/ko/ai-tools/augment/README.md +0 -371
  540. package/claude-code/aiwf/ko/ai-tools/augment/config.json +0 -30
  541. package/claude-code/aiwf/ko/ai-tools/augment/template/.augment/aiwf-integration.md +0 -387
  542. package/claude-code/aiwf/ko/ai-tools/augment/template/.augment/augment.yaml +0 -347
  543. package/claude-code/aiwf/ko/ai-tools/augment/template/augment.config.json +0 -64
  544. package/claude-code/aiwf/ko/ai-tools/claude-code/README.md +0 -151
  545. package/claude-code/aiwf/ko/ai-tools/claude-code/config.json +0 -28
  546. package/claude-code/aiwf/ko/ai-tools/claude-code/template/CLAUDE.md +0 -91
  547. package/claude-code/aiwf/ko/ai-tools/cursor/README.md +0 -314
  548. package/claude-code/aiwf/ko/ai-tools/cursor/config.json +0 -29
  549. package/claude-code/aiwf/ko/ai-tools/cursor/template/.cursorrules +0 -362
  550. package/claude-code/aiwf/ko/ai-tools/github-copilot/README.md +0 -195
  551. package/claude-code/aiwf/ko/ai-tools/github-copilot/config.json +0 -24
  552. package/claude-code/aiwf/ko/ai-tools/github-copilot/template/.github/copilot-instructions.md +0 -202
  553. package/claude-code/aiwf/ko/ai-tools/windsurf/README.md +0 -355
  554. package/claude-code/aiwf/ko/ai-tools/windsurf/config.json +0 -29
  555. package/claude-code/aiwf/ko/ai-tools/windsurf/template/.windsurf/aiwf-rules.md +0 -260
  556. package/claude-code/aiwf/ko/ai-tools/windsurf/template/.windsurf/windsurf.config.js +0 -312
  557. package/claude-code/aiwf/ko/ai-tools/windsurf/template/windsurf.config.json +0 -63
  558. package/claude-code/aiwf/ko/commands/ai-persona.js +0 -602
  559. package/claude-code/aiwf/ko/commands/compress-context.js +0 -389
  560. package/claude-code/aiwf/ko/commands/evaluate.js +0 -246
  561. package/claude-code/aiwf/ko/commands/feature-ledger.js +0 -565
  562. package/claude-code/aiwf/ko/commands/feature_commit_report.js +0 -370
  563. package/claude-code/aiwf/ko/commands/persona-context-apply.js +0 -562
  564. package/claude-code/aiwf/ko/commands/scan_git_history.js +0 -234
  565. package/claude-code/aiwf/ko/commands/sync_feature_commits.js +0 -154
  566. package/claude-code/aiwf/ko/commands/token-tracking.js +0 -443
  567. package/claude-code/aiwf/ko/config/commit-patterns.js +0 -103
  568. package/claude-code/aiwf/ko/config/language.json +0 -6
  569. package/claude-code/aiwf/ko/feature-ledger/FL-001-authentication.json +0 -52
  570. package/claude-code/aiwf/ko/feature-ledger/feature-index.json +0 -20
  571. package/claude-code/aiwf/ko/hooks/install-hooks.sh +0 -100
  572. package/claude-code/aiwf/ko/hooks/post-commit +0 -84
  573. package/claude-code/aiwf/ko/personas/PERSONA_INDEX.md +0 -57
  574. package/claude-code/aiwf/ko/personas/analyst.json +0 -44
  575. package/claude-code/aiwf/ko/personas/architect/best_practices.md +0 -136
  576. package/claude-code/aiwf/ko/personas/architect/knowledge_base.md +0 -377
  577. package/claude-code/aiwf/ko/personas/architect.json +0 -44
  578. package/claude-code/aiwf/ko/personas/backend/best_practices.md +0 -766
  579. package/claude-code/aiwf/ko/personas/backend/knowledge_base.md +0 -1070
  580. package/claude-code/aiwf/ko/personas/data_analyst/best_practices.md +0 -594
  581. package/claude-code/aiwf/ko/personas/data_analyst/knowledge_base.md +0 -1057
  582. package/claude-code/aiwf/ko/personas/developer.json +0 -44
  583. package/claude-code/aiwf/ko/personas/developer.md +0 -37
  584. package/claude-code/aiwf/ko/personas/evaluation_criteria.json +0 -137
  585. package/claude-code/aiwf/ko/personas/frontend/best_practices.md +0 -445
  586. package/claude-code/aiwf/ko/personas/frontend/knowledge_base.md +0 -729
  587. package/claude-code/aiwf/ko/personas/persona-index.json +0 -31
  588. package/claude-code/aiwf/ko/personas/reviewer.json +0 -44
  589. package/claude-code/aiwf/ko/personas/security/best_practices.md +0 -307
  590. package/claude-code/aiwf/ko/personas/security/knowledge_base.md +0 -498
  591. package/claude-code/aiwf/ko/personas/tester.json +0 -44
  592. package/claude-code/aiwf/ko/scripts/cache-templates.js +0 -209
  593. package/claude-code/aiwf/ko/scripts/create-offline.js +0 -86
  594. package/claude-code/aiwf/ko/scripts/create-project.js +0 -151
  595. package/claude-code/aiwf/ko/scripts/feature-progress-calculator.cjs +0 -236
  596. package/claude-code/aiwf/ko/scripts/git-integration.cjs +0 -391
  597. package/claude-code/aiwf/ko/scripts/install-git-hooks.cjs +0 -226
  598. package/claude-code/aiwf/ko/scripts/test-commit-parsing.cjs +0 -125
  599. package/claude-code/aiwf/ko/scripts/update-feature-status.cjs +0 -198
  600. package/claude-code/aiwf/ko/templates/README.md +0 -78
  601. package/claude-code/aiwf/ko/templates/api-server/config.json +0 -64
  602. package/claude-code/aiwf/ko/templates/api-server/template/.aiwf/config.json +0 -56
  603. package/claude-code/aiwf/ko/templates/api-server/template/.aiwf/feature-ledger.json +0 -42
  604. package/claude-code/aiwf/ko/templates/api-server/template/.aiwf/personas/backend-engineer.json +0 -40
  605. package/claude-code/aiwf/ko/templates/api-server/template/.aiwf/scripts/cli.js +0 -111
  606. package/claude-code/aiwf/ko/templates/api-server/template/.env.example +0 -29
  607. package/claude-code/aiwf/ko/templates/api-server/template/.eslintrc.json +0 -23
  608. package/claude-code/aiwf/ko/templates/api-server/template/README.md +0 -171
  609. package/claude-code/aiwf/ko/templates/api-server/template/jest.config.js +0 -26
  610. package/claude-code/aiwf/ko/templates/api-server/template/nodemon.json +0 -9
  611. package/claude-code/aiwf/ko/templates/api-server/template/package.json +0 -61
  612. package/claude-code/aiwf/ko/templates/api-server/template/src/app.ts +0 -60
  613. package/claude-code/aiwf/ko/templates/api-server/template/src/config/swagger.ts +0 -38
  614. package/claude-code/aiwf/ko/templates/api-server/template/src/controllers/aiwfController.ts +0 -68
  615. package/claude-code/aiwf/ko/templates/api-server/template/src/controllers/authController.ts +0 -128
  616. package/claude-code/aiwf/ko/templates/api-server/template/src/controllers/statusController.ts +0 -28
  617. package/claude-code/aiwf/ko/templates/api-server/template/src/index.ts +0 -28
  618. package/claude-code/aiwf/ko/templates/api-server/template/src/middleware/aiwfMiddleware.ts +0 -50
  619. package/claude-code/aiwf/ko/templates/api-server/template/src/middleware/authMiddleware.ts +0 -41
  620. package/claude-code/aiwf/ko/templates/api-server/template/src/middleware/errorHandler.ts +0 -42
  621. package/claude-code/aiwf/ko/templates/api-server/template/src/middleware/notFoundHandler.ts +0 -14
  622. package/claude-code/aiwf/ko/templates/api-server/template/src/middleware/requestLogger.ts +0 -20
  623. package/claude-code/aiwf/ko/templates/api-server/template/src/routes/aiwf.ts +0 -42
  624. package/claude-code/aiwf/ko/templates/api-server/template/src/routes/index.ts +0 -13
  625. package/claude-code/aiwf/ko/templates/api-server/template/src/routes/v1/index.ts +0 -67
  626. package/claude-code/aiwf/ko/templates/api-server/template/src/utils/logger.ts +0 -37
  627. package/claude-code/aiwf/ko/templates/api-server/template/tests/app.test.ts +0 -40
  628. package/claude-code/aiwf/ko/templates/api-server/template/tsconfig.json +0 -43
  629. package/claude-code/aiwf/ko/templates/npm-library/config.json +0 -61
  630. package/claude-code/aiwf/ko/templates/npm-library/template/LICENSE +0 -21
  631. package/claude-code/aiwf/ko/templates/npm-library/template/README.md +0 -201
  632. package/claude-code/aiwf/ko/templates/npm-library/template/package.json +0 -78
  633. package/claude-code/aiwf/ko/templates/web-app/config.json +0 -53
  634. package/claude-code/aiwf/ko/templates/web-app/template/.aiwf/config.json +0 -54
  635. package/claude-code/aiwf/ko/templates/web-app/template/.aiwf/feature-ledger.json +0 -37
  636. package/claude-code/aiwf/ko/templates/web-app/template/.aiwf/personas/fullstack-developer.json +0 -40
  637. package/claude-code/aiwf/ko/templates/web-app/template/.aiwf/scripts/cli.js +0 -110
  638. package/claude-code/aiwf/ko/templates/web-app/template/.eslintrc.cjs +0 -20
  639. package/claude-code/aiwf/ko/templates/web-app/template/README.md +0 -151
  640. package/claude-code/aiwf/ko/templates/web-app/template/index.html +0 -14
  641. package/claude-code/aiwf/ko/templates/web-app/template/package.json +0 -44
  642. package/claude-code/aiwf/ko/templates/web-app/template/postcss.config.js +0 -6
  643. package/claude-code/aiwf/ko/templates/web-app/template/public/vite.svg +0 -1
  644. package/claude-code/aiwf/ko/templates/web-app/template/src/App.tsx +0 -21
  645. package/claude-code/aiwf/ko/templates/web-app/template/src/components/Layout.tsx +0 -57
  646. package/claude-code/aiwf/ko/templates/web-app/template/src/components/aiwf/ContextStatus.tsx +0 -107
  647. package/claude-code/aiwf/ko/templates/web-app/template/src/components/aiwf/FeatureLedger.tsx +0 -93
  648. package/claude-code/aiwf/ko/templates/web-app/template/src/components/aiwf/TokenUsage.tsx +0 -71
  649. package/claude-code/aiwf/ko/templates/web-app/template/src/index.css +0 -60
  650. package/claude-code/aiwf/ko/templates/web-app/template/src/main.tsx +0 -10
  651. package/claude-code/aiwf/ko/templates/web-app/template/src/pages/AiwfDashboard.tsx +0 -60
  652. package/claude-code/aiwf/ko/templates/web-app/template/src/pages/HomePage.tsx +0 -89
  653. package/claude-code/aiwf/ko/templates/web-app/template/src/pages/NotFound.tsx +0 -25
  654. package/claude-code/aiwf/ko/templates/web-app/template/src/stores/aiwfStore.ts +0 -126
  655. package/claude-code/aiwf/ko/templates/web-app/template/src/types/global.d.ts +0 -9
  656. package/claude-code/aiwf/ko/templates/web-app/template/src/vite-env.d.ts +0 -1
  657. package/claude-code/aiwf/ko/templates/web-app/template/tailwind.config.js +0 -30
  658. package/claude-code/aiwf/ko/templates/web-app/template/tsconfig.json +0 -37
  659. package/claude-code/aiwf/ko/templates/web-app/template/tsconfig.node.json +0 -10
  660. package/claude-code/aiwf/ko/templates/web-app/template/vite.config.ts +0 -23
  661. package/claude-code/aiwf/ko/tests/compression-test-suite.js +0 -1252
  662. package/claude-code/aiwf/ko/tests/test-git-integration.js +0 -164
  663. package/claude-code/aiwf/ko/tests/token-tracking.test.js +0 -537
  664. package/claude-code/aiwf/ko/utils/background-monitor.js +0 -223
  665. package/claude-code/aiwf/ko/utils/compression-metrics.js +0 -1031
  666. package/claude-code/aiwf/ko/utils/compression-strategies.js +0 -557
  667. package/claude-code/aiwf/ko/utils/content-normalizer.js +0 -455
  668. package/claude-code/aiwf/ko/utils/context-compressor.js +0 -583
  669. package/claude-code/aiwf/ko/utils/context-rule-parser.js +0 -180
  670. package/claude-code/aiwf/ko/utils/context-token-monitor.js +0 -463
  671. package/claude-code/aiwf/ko/utils/context-update-manager.js +0 -502
  672. package/claude-code/aiwf/ko/utils/feature-updater.js +0 -271
  673. package/claude-code/aiwf/ko/utils/git-utils.js +0 -220
  674. package/claude-code/aiwf/ko/utils/importance-classifier.js +0 -645
  675. package/claude-code/aiwf/ko/utils/information-filter.js +0 -710
  676. package/claude-code/aiwf/ko/utils/persona-aware-compressor.js +0 -598
  677. package/claude-code/aiwf/ko/utils/prompt-injector.js +0 -242
  678. package/claude-code/aiwf/ko/utils/simplified-evaluator.js +0 -119
  679. package/claude-code/aiwf/ko/utils/text-summarizer.js +0 -492
  680. package/claude-code/aiwf/ko/utils/token-counter.js +0 -177
  681. package/claude-code/aiwf/ko/utils/token-monitor.js +0 -484
  682. package/claude-code/aiwf/ko/utils/token-reporter.js +0 -453
  683. package/claude-code/aiwf/ko/utils/token-storage.js +0 -433
  684. package/claude-code/aiwf/ko/utils/token-tracker.js +0 -283
  685. package/claude-code/docker/Dockerfile +0 -117
  686. package/jest.config.js +0 -23
  687. package/scripts/update-feature-status.js +0 -70
  688. package/src/commands/feature.js +0 -365
  689. package/tests/application.test.js +0 -260
  690. package/tests/basic.test.js +0 -62
  691. package/tests/commands.test.js +0 -127
  692. package/tests/installer.test.js +0 -129
  693. package/tests/integration/ai-persona-system.test.js +0 -396
  694. package/tests/integration/ai-persona.test.js +0 -390
  695. package/tests/integration/command-integration.test.js +0 -600
  696. package/tests/integration/context-compression.test.js +0 -361
  697. package/tests/integration/feature-ledger.test.js +0 -226
  698. package/tests/integration/git-integration.test.js +0 -307
  699. package/tests/integration/m02-milestone.test.js +0 -420
  700. package/tests/integration/persona-context-application.test.js +0 -508
  701. package/tests/integration/setup.js +0 -174
  702. package/tests/integration/test-persona-aware-compression.js +0 -93
  703. package/tests/integration/test-persona-system/.aiwf/metrics/metrics.json +0 -833
  704. package/tests/integration/test-persona-system/docs/README.md +0 -1
  705. package/tests/integration/test-persona-system/package.json +0 -1
  706. package/tests/integration/test-persona-system/src/auth.js +0 -1
  707. package/tests/integration/test-persona-system/src/index.js +0 -1
  708. package/tests/integration/test-persona-system/test/test.js +0 -1
  709. package/tests/language-utils.test.js +0 -287
  710. package/tests/s02-integration.test.js +0 -422
  711. package/tests/unit/ai-persona-manager.test.js +0 -514
  712. package/tests/unit/sprint-task.test.js +0 -172
@@ -1,508 +0,0 @@
1
- /**
2
- * 페르소나 컨텍스트 적용 시스템 테스트 스위트
3
- */
4
-
5
- // 모듈이 아직 구현되지 않았으므로 테스트 스킵
6
- // const ContextRuleParser = require('../../aiwf/ko/utils/context-rule-parser');
7
- // const PromptInjector = require('../../aiwf/ko/utils/prompt-injector');
8
- // const PersonaBehaviorValidator = require('../../aiwf/ko/utils/persona-behavior-validator');
9
- // const ContextUpdateManager = require('../../aiwf/ko/utils/context-update-manager');
10
- // 모듈이 아직 구현되지 않았으므로 테스트 스킵
11
- // const ContextTokenMonitor = require('../../aiwf/ko/utils/context-token-monitor');
12
- // const PersonaQualityEvaluator = require('../../aiwf/ko/utils/persona-quality-evaluator');
13
- // const fs = require('fs').promises;
14
- // const path = require('path');
15
-
16
- describe.skip('페르소나 컨텍스트 적용 시스템', () => {
17
- let contextParser;
18
- let promptInjector;
19
- let behaviorValidator;
20
- let updateManager;
21
- let tokenMonitor;
22
- let qualityEvaluator;
23
-
24
- beforeEach(() => {
25
- contextParser = new ContextRuleParser();
26
- promptInjector = new PromptInjector();
27
- behaviorValidator = new PersonaBehaviorValidator();
28
- updateManager = new ContextUpdateManager();
29
- tokenMonitor = new ContextTokenMonitor();
30
- qualityEvaluator = new PersonaQualityEvaluator();
31
- });
32
-
33
- afterEach(() => {
34
- // 리소스 정리
35
- updateManager.stopWatching();
36
- contextParser.clearCache();
37
- });
38
-
39
- describe('컨텍스트 규칙 파싱', () => {
40
- test('페르소나 컨텍스트 규칙을 정확히 파싱해야 함', async () => {
41
- const personaName = 'architect';
42
- const context = await contextParser.parseContextRules(personaName);
43
-
44
- expect(context).toBeDefined();
45
- expect(context.persona_name).toBe(personaName);
46
- expect(context.analysis_approach).toBeDefined();
47
- expect(context.design_principles).toBeInstanceOf(Array);
48
- expect(context.communication_style).toBeDefined();
49
- });
50
-
51
- test('존재하지 않는 페르소나는 기본 컨텍스트를 반환해야 함', async () => {
52
- const context = await contextParser.parseContextRules('unknown_persona');
53
-
54
- expect(context).toBeDefined();
55
- expect(context.persona_name).toBe('unknown_persona');
56
- expect(context.analysis_approach).toBe('일반적 접근');
57
- });
58
-
59
- test('모든 페르소나 컨텍스트를 한 번에 로드할 수 있어야 함', async () => {
60
- const allContexts = await contextParser.loadAllPersonaContexts();
61
-
62
- expect(Object.keys(allContexts)).toHaveLength(5);
63
- expect(allContexts.architect).toBeDefined();
64
- expect(allContexts.frontend).toBeDefined();
65
- expect(allContexts.backend).toBeDefined();
66
- expect(allContexts.data_analyst).toBeDefined();
67
- expect(allContexts.security).toBeDefined();
68
- });
69
- });
70
-
71
- describe('프롬프트 주입 메커니즘', () => {
72
- test('컨텍스트를 프롬프트에 정확히 주입해야 함', async () => {
73
- const originalPrompt = '시스템 아키텍처를 설계해주세요.';
74
- const result = await promptInjector.injectContext(originalPrompt, 'architect');
75
-
76
- expect(result.success).toBe(true);
77
- expect(result.injectedPrompt).toContain('AI 페르소나 컨텍스트');
78
- expect(result.injectedPrompt).toContain(originalPrompt);
79
- expect(result.injectedPrompt).toContain('architect');
80
- });
81
-
82
- test('토큰 사용량을 정확히 계산해야 함', async () => {
83
- const originalPrompt = '간단한 API를 만들어주세요.';
84
- const result = await promptInjector.injectContext(originalPrompt, 'backend');
85
-
86
- expect(result.tokenMetrics).toBeDefined();
87
- expect(result.tokenMetrics.originalTokens).toBeGreaterThan(0);
88
- expect(result.tokenMetrics.injectedTokens).toBeGreaterThan(
89
- result.tokenMetrics.originalTokens
90
- );
91
- expect(result.tokenMetrics.contextTokens).toBeGreaterThan(0);
92
- });
93
-
94
- test('페르소나 전환이 올바르게 작동해야 함', async () => {
95
- await promptInjector.switchPersona('frontend');
96
- expect(promptInjector.getActivePersona()).toBe('frontend');
97
-
98
- await promptInjector.switchPersona('backend');
99
- expect(promptInjector.getActivePersona()).toBe('backend');
100
- });
101
-
102
- test('토큰 한계 초과 시 컨텍스트를 압축해야 함', async () => {
103
- const largeContext = {
104
- persona_name: 'test',
105
- analysis_approach: 'test approach',
106
- design_principles: Array(100).fill('principle'),
107
- communication_style: 'test style',
108
- content: 'x'.repeat(10000)
109
- };
110
-
111
- const compressed = await promptInjector.compressContext(largeContext, 1000);
112
-
113
- expect(compressed.design_principles.length).toBeLessThanOrEqual(3);
114
- expect(compressed.content).toContain('...');
115
- });
116
- });
117
-
118
- describe('페르소나 행동 패턴 검증', () => {
119
- test('아키텍트 페르소나 응답을 올바르게 검증해야 함', () => {
120
- const response = `
121
- 시스템 아키텍처 설계를 위해 다음과 같은 구조를 제안합니다:
122
-
123
- 1. 프레젠테이션 계층: React 기반 SPA
124
- 2. 비즈니스 로직 계층: Node.js 마이크로서비스
125
- 3. 데이터 계층: PostgreSQL + Redis 캐싱
126
-
127
- 이 설계는 확장성과 유지보수성을 고려하여 모듈화된 구조로 구성되었습니다.
128
- `;
129
-
130
- const validation = behaviorValidator.validateResponse(
131
- response,
132
- 'architect',
133
- '시스템 아키텍처를 설계해주세요.'
134
- );
135
-
136
- expect(validation.valid).toBe(true);
137
- expect(validation.scores.keywordMatch).toBeGreaterThan(0.5);
138
- expect(validation.scores.structureMatch).toBeGreaterThan(0.5);
139
- });
140
-
141
- test('페르소나별 행동 패턴이 명확히 구분되어야 함', () => {
142
- const prompt = '사용자 인증 시스템을 구현해주세요.';
143
-
144
- const responses = [
145
- {
146
- personaName: 'frontend',
147
- response: 'UI에서 로그인 폼을 만들고 사용자 경험을 개선하는 애니메이션을 추가합니다.',
148
- prompt
149
- },
150
- {
151
- personaName: 'backend',
152
- response: 'JWT 토큰 기반 인증 API를 구현하고 데이터베이스에 사용자 정보를 안전하게 저장합니다.',
153
- prompt
154
- },
155
- {
156
- personaName: 'security',
157
- response: '보안 취약점을 방지하기 위해 암호화, 세션 관리, CSRF 방어 메커니즘을 구현합니다.',
158
- prompt
159
- }
160
- ];
161
-
162
- const comparison = behaviorValidator.comparePersonaBehaviors(responses);
163
-
164
- expect(comparison.overallDistinctiveness).toBeGreaterThan(0.3);
165
- Object.values(comparison.pairwiseDifferences).forEach(diff => {
166
- expect(diff.distinctiveness).toBeGreaterThan(0.2);
167
- });
168
- });
169
-
170
- test('검증 통계가 정확히 생성되어야 함', () => {
171
- // 여러 검증 수행
172
- for (let i = 0; i < 5; i++) {
173
- behaviorValidator.validateResponse(
174
- '테스트 응답',
175
- 'architect',
176
- '테스트 프롬프트'
177
- );
178
- }
179
-
180
- const stats = behaviorValidator.generateStatistics('architect');
181
-
182
- expect(stats.totalValidations).toBe(5);
183
- expect(stats.averageScore).toBeDefined();
184
- expect(stats.validationRate).toBeDefined();
185
- });
186
- });
187
-
188
- describe('실시간 컨텍스트 업데이트', () => {
189
- test('컨텍스트 파일 변경을 감지해야 함', async () => {
190
- const testPersona = 'test_persona';
191
- const contextPath = path.join(
192
- process.cwd(),
193
- '.aiwf',
194
- '07_AI_PERSONAS',
195
- testPersona,
196
- 'context_rules.md'
197
- );
198
-
199
- // 이벤트 리스너 설정
200
- const updatePromise = new Promise((resolve) => {
201
- updateManager.once('contextUpdated', (data) => {
202
- resolve(data);
203
- });
204
- });
205
-
206
- // 감시 시작
207
- updateManager.startWatching([testPersona]);
208
-
209
- // 파일 생성/수정
210
- await fs.mkdir(path.dirname(contextPath), { recursive: true });
211
- await fs.writeFile(contextPath, `---
212
- persona_name: ${testPersona}
213
- analysis_approach: 테스트 접근법
214
- ---
215
-
216
- 테스트 컨텍스트 내용`);
217
-
218
- // 이벤트 대기 (타임아웃 설정)
219
- const updateData = await Promise.race([
220
- updatePromise,
221
- new Promise((_, reject) =>
222
- setTimeout(() => reject(new Error('Timeout')), 5000)
223
- )
224
- ]).catch(() => null);
225
-
226
- // 정리
227
- await fs.unlink(contextPath).catch(() => {});
228
- await fs.rmdir(path.dirname(contextPath)).catch(() => {});
229
-
230
- if (updateData) {
231
- expect(updateData.persona).toBe(testPersona);
232
- expect(updateData.context).toBeDefined();
233
- }
234
- }, 10000);
235
-
236
- test('감시 상태를 올바르게 보고해야 함', () => {
237
- updateManager.startWatching(['architect', 'frontend']);
238
- const status = updateManager.getWatchStatus();
239
-
240
- expect(status.activeWatchers).toContain('architect');
241
- expect(status.activeWatchers).toContain('frontend');
242
- expect(status.watcherCount).toBe(2);
243
- });
244
- });
245
-
246
- describe('토큰 사용량 모니터링', () => {
247
- test('컨텍스트 주입 토큰 사용량을 추적해야 함', async () => {
248
- const injectionResult = await promptInjector.injectContext(
249
- '테스트 프롬프트',
250
- 'architect'
251
- );
252
-
253
- const usage = await tokenMonitor.trackContextUsage(injectionResult);
254
-
255
- expect(usage.personaName).toBe('architect');
256
- expect(usage.contextTokens).toBeGreaterThan(0);
257
- expect(usage.contextElements).toBeDefined();
258
- expect(usage.contextElements.total).toBeGreaterThan(0);
259
- });
260
-
261
- test('토큰 임계값 초과 시 알림을 생성해야 함', async () => {
262
- // 임계값 설정
263
- tokenMonitor.setThresholds({ warning: 100, critical: 200 });
264
-
265
- const mockInjectionResult = {
266
- personaName: 'test',
267
- tokenMetrics: {
268
- originalTokens: 50,
269
- contextTokens: 150,
270
- injectedTokens: 200,
271
- percentageIncrease: '300%'
272
- },
273
- context: {
274
- persona_name: 'test',
275
- content: 'x'.repeat(500)
276
- }
277
- };
278
-
279
- const usage = await tokenMonitor.trackContextUsage(mockInjectionResult);
280
-
281
- expect(usage.alert).toBeDefined();
282
- expect(usage.alert.level).toBe('warning');
283
- });
284
-
285
- test('토큰 사용량 리포트를 생성해야 함', async () => {
286
- // 테스트 데이터 추가
287
- for (let i = 0; i < 3; i++) {
288
- const result = await promptInjector.injectContext(
289
- `테스트 프롬프트 ${i}`,
290
- 'architect'
291
- );
292
- await tokenMonitor.trackContextUsage(result);
293
- }
294
-
295
- const report = tokenMonitor.generateReport({ format: 'summary' });
296
-
297
- expect(report.totalUsages).toBe(3);
298
- expect(report.tokenStats).toBeDefined();
299
- expect(report.personaSummary).toBeDefined();
300
- });
301
- });
302
-
303
- describe('응답 품질 평가', () => {
304
- test('페르소나 응답 품질을 정확히 평가해야 함', async () => {
305
- const evaluationData = {
306
- prompt: '마이크로서비스 아키텍처를 설계해주세요.',
307
- response: `
308
- 마이크로서비스 아키텍처 설계:
309
-
310
- 1. 서비스 분해
311
- - 사용자 서비스
312
- - 주문 서비스
313
- - 결제 서비스
314
- - 알림 서비스
315
-
316
- 2. 통신 패턴
317
- - REST API를 통한 동기 통신
318
- - 메시지 큐를 통한 비동기 통신
319
-
320
- 3. 데이터 관리
321
- - 서비스별 독립 데이터베이스
322
- - 이벤트 소싱 패턴 적용
323
-
324
- 이 설계는 확장성과 독립적 배포를 고려했습니다.
325
- `,
326
- personaName: 'architect',
327
- context: {
328
- persona_name: 'architect',
329
- analysis_approach: '시스템 설계 중심',
330
- design_principles: ['확장성', '유지보수성', '성능'],
331
- communication_style: '구조적이고 논리적'
332
- }
333
- };
334
-
335
- const evaluation = await qualityEvaluator.evaluateResponse(evaluationData);
336
-
337
- expect(evaluation.scores.final).toBeGreaterThan(0.7);
338
- expect(evaluation.quality).toMatch(/excellent|good/);
339
- });
340
-
341
- test('여러 페르소나 응답을 비교 평가해야 함', async () => {
342
- const prompt = 'RESTful API를 구현해주세요.';
343
- const responses = [
344
- {
345
- personaName: 'architect',
346
- response: 'API 설계 패턴과 전체 시스템 구조를 고려하여...',
347
- context: await contextParser.parseContextRules('architect')
348
- },
349
- {
350
- personaName: 'backend',
351
- response: 'Express.js를 사용하여 RESTful 엔드포인트를 구현하고...',
352
- context: await contextParser.parseContextRules('backend')
353
- }
354
- ];
355
-
356
- const comparison = await qualityEvaluator.comparePersonaResponses(
357
- responses,
358
- prompt
359
- );
360
-
361
- expect(comparison.ranking).toBeDefined();
362
- expect(comparison.ranking.length).toBe(2);
363
- expect(comparison.bestPersona).toBeDefined();
364
- });
365
-
366
- test('평가 피드백과 권장사항을 제공해야 함', async () => {
367
- const evaluationData = {
368
- prompt: '보안 시스템을 설계해주세요.',
369
- response: '보안은 중요합니다. SSL을 사용하세요.',
370
- personaName: 'security',
371
- context: await contextParser.parseContextRules('security')
372
- };
373
-
374
- const evaluation = await qualityEvaluator.evaluateResponse(evaluationData);
375
-
376
- expect(evaluation.feedback).toBeDefined();
377
- expect(evaluation.feedback.length).toBeGreaterThan(0);
378
- expect(evaluation.recommendations).toBeDefined();
379
- expect(evaluation.recommendations.length).toBeGreaterThan(0);
380
- });
381
- });
382
-
383
- describe('통합 시나리오', () => {
384
- test('전체 페르소나 컨텍스트 적용 플로우가 작동해야 함', async () => {
385
- // 1. 페르소나 선택 및 컨텍스트 로드
386
- const persona = 'architect';
387
- const context = await contextParser.parseContextRules(persona);
388
-
389
- // 2. 프롬프트 주입
390
- const originalPrompt = '확장 가능한 웹 애플리케이션을 설계해주세요.';
391
- const injectionResult = await promptInjector.injectContext(
392
- originalPrompt,
393
- persona
394
- );
395
-
396
- // 3. 토큰 사용량 추적
397
- const tokenUsage = await tokenMonitor.trackContextUsage(injectionResult);
398
-
399
- // 4. 모의 응답 생성 (실제로는 AI가 생성)
400
- const mockResponse = `
401
- 확장 가능한 웹 애플리케이션 아키텍처:
402
-
403
- 1. 시스템 구조
404
- - 마이크로서비스 기반 아키텍처
405
- - 컨테이너화된 서비스 (Docker/Kubernetes)
406
- - API Gateway 패턴
407
-
408
- 2. 확장성 전략
409
- - 수평적 확장 가능한 서비스 설계
410
- - 로드 밸런싱 및 자동 스케일링
411
- - 캐싱 전략 (Redis)
412
-
413
- 3. 유지보수성
414
- - 모듈화된 코드 구조
415
- - CI/CD 파이프라인
416
- - 모니터링 및 로깅 시스템
417
-
418
- 이 설계는 비즈니스 성장에 따른 확장성과 장기적인 유지보수를 고려했습니다.
419
- `;
420
-
421
- // 5. 행동 패턴 검증
422
- const behaviorValidation = behaviorValidator.validateResponse(
423
- mockResponse,
424
- persona,
425
- originalPrompt
426
- );
427
-
428
- // 6. 품질 평가
429
- const qualityEvaluation = await qualityEvaluator.evaluateResponse({
430
- prompt: originalPrompt,
431
- response: mockResponse,
432
- personaName: persona,
433
- context: context
434
- });
435
-
436
- // 검증
437
- expect(injectionResult.success).toBe(true);
438
- expect(tokenUsage.contextTokens).toBeGreaterThan(0);
439
- expect(behaviorValidation.valid).toBe(true);
440
- expect(qualityEvaluation.scores.final).toBeGreaterThan(0.7);
441
- });
442
-
443
- test('페르소나 전환 시 컨텍스트가 올바르게 변경되어야 함', async () => {
444
- // Frontend 페르소나로 시작
445
- await promptInjector.switchPersona('frontend');
446
- const frontendResult = await promptInjector.injectContext(
447
- '로그인 화면을 만들어주세요.',
448
- 'frontend'
449
- );
450
-
451
- expect(frontendResult.context.persona_name).toBe('frontend');
452
- expect(frontendResult.injectedPrompt).toContain('UI/UX');
453
-
454
- // Backend 페르소나로 전환
455
- await promptInjector.switchPersona('backend');
456
- const backendResult = await promptInjector.injectContext(
457
- '로그인 API를 만들어주세요.',
458
- 'backend'
459
- );
460
-
461
- expect(backendResult.context.persona_name).toBe('backend');
462
- expect(backendResult.injectedPrompt).toContain('API');
463
- });
464
- });
465
- });
466
-
467
- describe('성능 및 최적화', () => {
468
- test('컨텍스트 캐싱이 올바르게 작동해야 함', async () => {
469
- const contextParser = new ContextRuleParser();
470
-
471
- // 첫 번째 로드 시간 측정
472
- const start1 = Date.now();
473
- await contextParser.parseContextRules('architect');
474
- const time1 = Date.now() - start1;
475
-
476
- // 두 번째 로드 시간 측정 (캐시됨)
477
- const start2 = Date.now();
478
- await contextParser.parseContextRules('architect');
479
- const time2 = Date.now() - start2;
480
-
481
- // 캐시된 로드가 더 빨라야 함
482
- expect(time2).toBeLessThan(time1);
483
- });
484
-
485
- test('대용량 컨텍스트 처리 시 메모리 사용량이 적절해야 함', async () => {
486
- const tokenMonitor = new ContextTokenMonitor();
487
-
488
- // 대용량 데이터 시뮬레이션
489
- for (let i = 0; i < 100; i++) {
490
- const mockResult = {
491
- personaName: 'test',
492
- tokenMetrics: {
493
- originalTokens: 100,
494
- contextTokens: 200,
495
- injectedTokens: 300,
496
- percentageIncrease: '200%'
497
- },
498
- context: { persona_name: 'test' }
499
- };
500
-
501
- await tokenMonitor.trackContextUsage(mockResult);
502
- }
503
-
504
- // 메모리 사용량 확인 (히스토리 크기 제한 확인)
505
- const report = tokenMonitor.generateReport();
506
- expect(report.totalUsages).toBe(100);
507
- });
508
- });
@@ -1,174 +0,0 @@
1
- /**
2
- * 통합 테스트 환경 설정
3
- */
4
-
5
- import fs from 'fs/promises';
6
- import path from 'path';
7
- import { fileURLToPath } from 'url';
8
-
9
- const __filename = fileURLToPath(import.meta.url);
10
- const __dirname = path.dirname(__filename);
11
-
12
- // 테스트 유틸리티 함수들
13
- export const testUtils = {
14
- /**
15
- * 테스트용 임시 디렉토리 생성
16
- */
17
- async createTempDir(prefix = 'test-') {
18
- const tempDir = path.join(__dirname, '../../tmp', `${prefix}${Date.now()}`);
19
- await fs.mkdir(tempDir, { recursive: true });
20
- return tempDir;
21
- },
22
-
23
- /**
24
- * 테스트용 임시 디렉토리 정리
25
- */
26
- async cleanupTempDir(tempDir) {
27
- try {
28
- await fs.rm(tempDir, { recursive: true, force: true });
29
- } catch (error) {
30
- console.warn(`Failed to cleanup temp dir: ${tempDir}`, error);
31
- }
32
- },
33
-
34
- /**
35
- * 테스트용 AIWF 프로젝트 구조 생성
36
- */
37
- async createTestProjectStructure(baseDir) {
38
- const aiwfDir = path.join(baseDir, '.aiwf');
39
- const dirs = [
40
- '00_PROJECT_MANIFEST.md',
41
- '01_PROJECT',
42
- '02_REQUIREMENTS',
43
- '03_SPRINTS',
44
- '04_GENERAL_TASKS',
45
- '05_DOCUMENTATION',
46
- '06_FEATURE_LEDGERS',
47
- '07_BUG_REPORTS',
48
- '08_ADR',
49
- '09_AI_TOOLS',
50
- '10_PERSONAS',
51
- '11_CONTEXT_COMPRESSION',
52
- '99_TEMPLATES'
53
- ];
54
-
55
- await fs.mkdir(aiwfDir, { recursive: true });
56
-
57
- // 디렉토리 생성
58
- for (const dir of dirs) {
59
- if (!dir.endsWith('.md')) {
60
- await fs.mkdir(path.join(aiwfDir, dir), { recursive: true });
61
- }
62
- }
63
-
64
- // 기본 매니페스트 파일 생성
65
- await fs.writeFile(
66
- path.join(aiwfDir, '00_PROJECT_MANIFEST.md'),
67
- `# Test Project Manifest
68
- 프로젝트명: Test Project
69
- 생성일: ${new Date().toISOString().split('T')[0]}
70
- `
71
- );
72
-
73
- return aiwfDir;
74
- },
75
-
76
- /**
77
- * 파일 존재 여부 확인
78
- */
79
- async fileExists(filePath) {
80
- try {
81
- await fs.access(filePath);
82
- return true;
83
- } catch {
84
- return false;
85
- }
86
- },
87
-
88
- /**
89
- * 디렉토리 존재 여부 확인
90
- */
91
- async dirExists(dirPath) {
92
- try {
93
- const stats = await fs.stat(dirPath);
94
- return stats.isDirectory();
95
- } catch {
96
- return false;
97
- }
98
- },
99
-
100
- /**
101
- * JSON 파일 읽기
102
- */
103
- async readJsonFile(filePath) {
104
- const content = await fs.readFile(filePath, 'utf8');
105
- return JSON.parse(content);
106
- },
107
-
108
- /**
109
- * 마크다운 파일 파싱 (간단한 프론트매터 파싱)
110
- */
111
- async parseMarkdownFile(filePath) {
112
- const content = await fs.readFile(filePath, 'utf8');
113
- const lines = content.split('\n');
114
-
115
- if (lines[0] === '---') {
116
- const endIndex = lines.slice(1).indexOf('---') + 1;
117
- if (endIndex > 0) {
118
- const frontMatter = lines.slice(1, endIndex).join('\n');
119
- const body = lines.slice(endIndex + 1).join('\n');
120
-
121
- // 간단한 YAML 파싱 (key: value 형태만)
122
- const metadata = {};
123
- frontMatter.split('\n').forEach(line => {
124
- const match = line.match(/^(\w+):\s*(.*)$/);
125
- if (match) {
126
- metadata[match[1]] = match[2];
127
- }
128
- });
129
-
130
- return { metadata, body };
131
- }
132
- }
133
-
134
- return { metadata: {}, body: content };
135
- }
136
- };
137
-
138
- // 테스트 픽스처 데이터
139
- export const testFixtures = {
140
- featureLedger: {
141
- id: 'TEST_FEATURE_001',
142
- title: 'Test Feature',
143
- description: 'Test feature description',
144
- status: 'planned',
145
- priority: 'medium',
146
- milestone: 'M01',
147
- created_at: '2025-07-09T02:55:00Z',
148
- updated_at: '2025-07-09T02:55:00Z'
149
- },
150
-
151
- persona: {
152
- id: 'architect',
153
- name: 'Software Architect',
154
- description: 'AI 페르소나 for software architecture',
155
- context: 'You are an expert software architect...',
156
- commands: ['design', 'review', 'optimize']
157
- },
158
-
159
- taskTemplate: {
160
- task_id: 'TEST_TASK_001',
161
- sprint_sequence_id: 'S01',
162
- status: 'open',
163
- complexity: 'Medium',
164
- title: 'Test Task',
165
- description: 'Test task description'
166
- }
167
- };
168
-
169
- // 테스트 전역 설정
170
- export const testConfig = {
171
- timeout: 30000,
172
- tempDirPrefix: 'aiwf-test-',
173
- testDataDir: path.join(__dirname, 'data')
174
- };