aiwf 0.3.7 → 0.3.12

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 (605) 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 +30 -3
  25. package/scripts/update-file-lists.js +267 -0
  26. package/src/cli/checkpoint-cli.js +417 -0
  27. package/src/cli/index.js +461 -0
  28. package/src/cli/sprint-cli.js +287 -0
  29. package/src/commands/compress.js +60 -0
  30. package/src/commands/create-project.js +23 -17
  31. package/src/commands/evaluate.js +459 -0
  32. package/src/commands/persona.js +37 -16
  33. package/src/commands/sprint-independent.js +393 -0
  34. package/src/commands/state-refactored.js +419 -0
  35. package/src/commands/state.js +1164 -0
  36. package/src/commands/token.js +312 -0
  37. package/src/commands/yolo-config.js +502 -0
  38. package/src/config/file-lists.js +147 -0
  39. package/src/config/yolo-config-template.yaml +168 -0
  40. package/src/lib/file-downloader.js +7 -72
  41. package/src/lib/github-integration.js +402 -0
  42. package/src/lib/resource-loader-enhanced.js +399 -0
  43. package/src/lib/resource-loader.js +250 -0
  44. package/{claude-code/aiwf/ko → src/lib/resources}/commands/ai-persona.js +1 -1
  45. package/src/lib/state/priority-calculator.js +217 -0
  46. package/src/lib/state/state-index.js +155 -0
  47. package/src/lib/state/task-scanner.js +328 -0
  48. package/src/utils/checkpoint-manager.js +425 -0
  49. package/src/utils/engineering-guard.js +389 -0
  50. package/.aiwf/00_PROJECT_MANIFEST.md +0 -196
  51. package/.aiwf/01_PROJECT_DOCS/ARCHITECTURE.md +0 -121
  52. package/.aiwf/01_PROJECT_DOCS/FEATURE_LEDGER_ADVANCED_USE_CASES.md +0 -412
  53. package/.aiwf/01_PROJECT_DOCS/FEATURE_LEDGER_API_REFERENCE.md +0 -361
  54. package/.aiwf/01_PROJECT_DOCS/FEATURE_LEDGER_COMMANDS_GUIDE.md +0 -254
  55. package/.aiwf/01_PROJECT_DOCS/FEATURE_LEDGER_FAQ.md +0 -365
  56. package/.aiwf/01_PROJECT_DOCS/FEATURE_LEDGER_SYSTEM_OVERVIEW.md +0 -305
  57. package/.aiwf/01_PROJECT_DOCS/FEATURE_LEDGER_USER_GUIDE.md +0 -416
  58. 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
  59. package/.aiwf/02_REQUIREMENTS/CLAUDE.md +0 -78
  60. package/.aiwf/02_REQUIREMENTS/M02_Context_Engineering_Enhancement/M02_milestone_meta.md +0 -34
  61. package/.aiwf/02_REQUIREMENTS/M02_Context_Engineering_Enhancement/PRD_Context_Engineering_Enhancement.md +0 -108
  62. package/.aiwf/02_REQUIREMENTS/M02_Context_Engineering_Enhancement/SPECS_AI_Persona_System.md +0 -299
  63. package/.aiwf/02_REQUIREMENTS/M02_Context_Engineering_Enhancement/SPECS_Feature_Ledger_System.md +0 -330
  64. package/.aiwf/02_REQUIREMENTS/M02_Context_Engineering_Enhancement/SPECS_Token_Optimization.md +0 -833
  65. package/.aiwf/02_REQUIREMENTS/M03_Simone_Integration_Enhancement/M03_milestone_meta.md +0 -55
  66. package/.aiwf/02_REQUIREMENTS/M03_Simone_Integration_Enhancement/SPECS_AIWF_Simplified_Plan.md +0 -221
  67. package/.aiwf/03_SPRINTS/CLAUDE.md +0 -83
  68. package/.aiwf/03_SPRINTS/S01_M02_context_foundation/S01_M02_sprint_meta.md +0 -95
  69. 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
  70. 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
  71. 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
  72. package/.aiwf/03_SPRINTS/S01_M02_context_foundation/TX04_S01_Feature_Ledger_/353/254/270/354/204/234/355/231/224.md +0 -114
  73. 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
  74. 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
  75. 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
  76. 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
  77. 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
  78. 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
  79. 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
  80. 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
  81. package/.aiwf/03_SPRINTS/S02_M02_ai_enhancement/S02_M02_sprint_meta.md +0 -107
  82. 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
  83. 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
  84. 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
  85. 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
  86. 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
  87. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/S03_FINAL_SPRINT_SUMMARY.md +0 -137
  88. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/S03_M02_sprint_meta.md +0 -105
  89. 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
  90. 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
  91. 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
  92. 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
  93. package/.aiwf/04_GENERAL_TASKS/CLAUDE.md +0 -96
  94. package/.aiwf/04_GENERAL_TASKS/TX001_complete_english_translation.md +0 -127
  95. package/.aiwf/06_FEATURE_LEDGERS/FEATURE_GIT_INTEGRATION.md +0 -314
  96. package/.aiwf/06_FEATURE_LEDGERS/FEATURE_INTEGRATION_GUIDE.md +0 -227
  97. package/.aiwf/06_FEATURE_LEDGERS/FEATURE_LEDGER_INDEX.md +0 -23
  98. package/.aiwf/06_FEATURE_LEDGERS/FEATURE_SCHEMA.md +0 -205
  99. package/.aiwf/06_FEATURE_LEDGERS/FEATURE_STATE_DIAGRAM.md +0 -190
  100. package/.aiwf/06_FEATURE_LEDGERS/active/FL001_user_authentication_system.md +0 -47
  101. package/.aiwf/06_FEATURE_LEDGERS/active/FL002_user_authentication_system.md +0 -47
  102. package/.aiwf/07_AI_PERSONAS/architect/best_practices.md +0 -104
  103. package/.aiwf/07_AI_PERSONAS/architect/context_rules.md +0 -46
  104. package/.aiwf/07_AI_PERSONAS/architect/knowledge_base.md +0 -235
  105. package/.aiwf/07_AI_PERSONAS/backend/best_practices.md +0 -363
  106. package/.aiwf/07_AI_PERSONAS/backend/context_rules.md +0 -61
  107. package/.aiwf/07_AI_PERSONAS/backend/knowledge_base.md +0 -623
  108. package/.aiwf/07_AI_PERSONAS/data_analyst/best_practices.md +0 -32
  109. package/.aiwf/07_AI_PERSONAS/data_analyst/context_rules.md +0 -43
  110. package/.aiwf/07_AI_PERSONAS/data_analyst/knowledge_base.md +0 -36
  111. package/.aiwf/07_AI_PERSONAS/frontend/best_practices.md +0 -31
  112. package/.aiwf/07_AI_PERSONAS/frontend/context_rules.md +0 -43
  113. package/.aiwf/07_AI_PERSONAS/frontend/knowledge_base.md +0 -32
  114. package/.aiwf/07_AI_PERSONAS/security/best_practices.md +0 -63
  115. package/.aiwf/07_AI_PERSONAS/security/context_rules.md +0 -53
  116. package/.aiwf/07_AI_PERSONAS/security/knowledge_base.md +0 -93
  117. package/.aiwf/10_PERSONAS/active.json +0 -1
  118. package/.aiwf/10_STATE_OF_PROJECT/2025-07-09-07-20-solid-progress.md +0 -144
  119. package/.aiwf/98_PROMPTS/SAAS_DEVELOPMENT_GUIDE.md +0 -302
  120. package/.aiwf/98_PROMPTS/github_integration.md +0 -130
  121. package/.aiwf/98_PROMPTS/useful-prompts.md +0 -31
  122. package/.aiwf/98_PROMPTS/vibe-front-prompts.md +0 -89
  123. package/.aiwf/99_TEMPLATES/adr_template.md +0 -49
  124. package/.aiwf/99_TEMPLATES/feature_template.md +0 -263
  125. package/.aiwf/99_TEMPLATES/milestone_meta_template.md +0 -25
  126. package/.aiwf/99_TEMPLATES/project_manifest_template.md +0 -39
  127. package/.aiwf/99_TEMPLATES/sprint_meta_template.md +0 -23
  128. package/.aiwf/99_TEMPLATES/task_template.md +0 -36
  129. package/.aiwf/CLAUDE.md +0 -76
  130. package/.aiwf/ai-tools/README.md +0 -105
  131. package/.aiwf/ai-tools/augment/README.md +0 -371
  132. package/.aiwf/ai-tools/augment/config.json +0 -30
  133. package/.aiwf/ai-tools/augment/template/.augment/aiwf-integration.md +0 -387
  134. package/.aiwf/ai-tools/augment/template/.augment/augment.yaml +0 -347
  135. package/.aiwf/ai-tools/augment/template/augment.config.json +0 -64
  136. package/.aiwf/ai-tools/claude-code/README.md +0 -151
  137. package/.aiwf/ai-tools/claude-code/config.json +0 -28
  138. package/.aiwf/ai-tools/claude-code/template/CLAUDE.md +0 -91
  139. package/.aiwf/ai-tools/cursor/README.md +0 -314
  140. package/.aiwf/ai-tools/cursor/config.json +0 -29
  141. package/.aiwf/ai-tools/cursor/template/.cursorrules +0 -362
  142. package/.aiwf/ai-tools/github-copilot/README.md +0 -195
  143. package/.aiwf/ai-tools/github-copilot/config.json +0 -24
  144. package/.aiwf/ai-tools/github-copilot/template/.github/copilot-instructions.md +0 -202
  145. package/.aiwf/ai-tools/windsurf/README.md +0 -355
  146. package/.aiwf/ai-tools/windsurf/config.json +0 -29
  147. package/.aiwf/ai-tools/windsurf/template/.windsurf/aiwf-rules.md +0 -260
  148. package/.aiwf/ai-tools/windsurf/template/.windsurf/windsurf.config.js +0 -312
  149. package/.aiwf/ai-tools/windsurf/template/windsurf.config.json +0 -63
  150. package/.aiwf/config/language.json +0 -6
  151. package/.aiwf/feature-ledger/FL-001-authentication.json +0 -52
  152. package/.aiwf/feature-ledger/feature-index.json +0 -20
  153. package/.aiwf/installed.flag +0 -1
  154. package/.aiwf/metrics/metrics.json +0 -18
  155. package/.aiwf/personas/current.json +0 -5
  156. package/.aiwf/scripts/cache-templates.js +0 -209
  157. package/.aiwf/scripts/create-offline.js +0 -86
  158. package/.aiwf/scripts/create-project.js +0 -151
  159. package/.aiwf/scripts/feature-progress-calculator.cjs +0 -236
  160. package/.aiwf/scripts/git-integration.cjs +0 -391
  161. package/.aiwf/scripts/install-git-hooks.cjs +0 -226
  162. package/.aiwf/scripts/test-commit-parsing.cjs +0 -125
  163. package/.aiwf/scripts/update-feature-status.cjs +0 -198
  164. package/.aiwf/test-results-s02.json +0 -36
  165. package/.claude/commands/aiwf/aiwf_add_task_to_sprint.md +0 -283
  166. package/.claude/commands/aiwf/aiwf_changelog.md +0 -82
  167. package/.claude/commands/aiwf/aiwf_code_review.md +0 -88
  168. package/.claude/commands/aiwf/aiwf_commit.md +0 -160
  169. package/.claude/commands/aiwf/aiwf_compress_aggressive_persona.md +0 -53
  170. package/.claude/commands/aiwf/aiwf_compress_context.md +0 -116
  171. package/.claude/commands/aiwf/aiwf_compress_minimal_persona.md +0 -48
  172. package/.claude/commands/aiwf/aiwf_compress_stats.md +0 -79
  173. package/.claude/commands/aiwf/aiwf_compress_with_persona.md +0 -51
  174. package/.claude/commands/aiwf/aiwf_create_feature_ledger.md +0 -54
  175. package/.claude/commands/aiwf/aiwf_create_general_task.md +0 -147
  176. package/.claude/commands/aiwf/aiwf_create_milestone_plan.md +0 -194
  177. package/.claude/commands/aiwf/aiwf_create_prd.md +0 -280
  178. package/.claude/commands/aiwf/aiwf_create_sprint_tasks.md +0 -189
  179. package/.claude/commands/aiwf/aiwf_create_sprints_from_milestone.md +0 -121
  180. package/.claude/commands/aiwf/aiwf_default_mode.md +0 -44
  181. package/.claude/commands/aiwf/aiwf_discuss_review.md +0 -29
  182. package/.claude/commands/aiwf/aiwf_do_task.md +0 -109
  183. package/.claude/commands/aiwf/aiwf_docs.md +0 -225
  184. package/.claude/commands/aiwf/aiwf_evaluate.md +0 -92
  185. package/.claude/commands/aiwf/aiwf_get_feature_details.md +0 -78
  186. package/.claude/commands/aiwf/aiwf_infinite.md +0 -202
  187. package/.claude/commands/aiwf/aiwf_initialize.md +0 -134
  188. package/.claude/commands/aiwf/aiwf_install_git_hooks.md +0 -63
  189. package/.claude/commands/aiwf/aiwf_issue_create.md +0 -65
  190. package/.claude/commands/aiwf/aiwf_link_feature_branch.md +0 -43
  191. package/.claude/commands/aiwf/aiwf_link_feature_commit.md +0 -46
  192. package/.claude/commands/aiwf/aiwf_link_feature_to_milestone.md +0 -57
  193. package/.claude/commands/aiwf/aiwf_list_features.md +0 -54
  194. package/.claude/commands/aiwf/aiwf_mermaid.md +0 -272
  195. package/.claude/commands/aiwf/aiwf_persona_architect.md +0 -48
  196. package/.claude/commands/aiwf/aiwf_persona_backend.md +0 -37
  197. package/.claude/commands/aiwf/aiwf_persona_data_analyst.md +0 -37
  198. package/.claude/commands/aiwf/aiwf_persona_frontend.md +0 -37
  199. package/.claude/commands/aiwf/aiwf_persona_security.md +0 -48
  200. package/.claude/commands/aiwf/aiwf_persona_status.md +0 -50
  201. package/.claude/commands/aiwf/aiwf_pr_create.md +0 -76
  202. package/.claude/commands/aiwf/aiwf_prime.md +0 -9
  203. package/.claude/commands/aiwf/aiwf_project_review.md +0 -261
  204. package/.claude/commands/aiwf/aiwf_switch_language.md +0 -160
  205. package/.claude/commands/aiwf/aiwf_test.md +0 -124
  206. package/.claude/commands/aiwf/aiwf_testing_review.md +0 -198
  207. package/.claude/commands/aiwf/aiwf_tm-run-all-subtask.md +0 -210
  208. package/.claude/commands/aiwf/aiwf_ultrathink_code_advanced.md +0 -460
  209. package/.claude/commands/aiwf/aiwf_ultrathink_code_basic.md +0 -165
  210. package/.claude/commands/aiwf/aiwf_ultrathink_general.md +0 -305
  211. package/.claude/commands/aiwf/aiwf_update_docs_kr.md +0 -25
  212. package/.claude/commands/aiwf/aiwf_update_feature_status.md +0 -53
  213. package/.claude/commands/aiwf/aiwf_yolo.md +0 -300
  214. package/.eslintrc.json +0 -26
  215. package/.prettierrc +0 -10
  216. package/CLAUDE.md +0 -254
  217. package/RELEASE_NOTES_M02.md +0 -177
  218. package/TEST_RECOVERY_PLAN.md +0 -68
  219. package/claude-code/aiwf/en/.aiwf/00_PROJECT_MANIFEST.md +0 -49
  220. package/claude-code/aiwf/en/.aiwf/01_PROJECT_DOCS/ARCHITECTURE.md +0 -55
  221. package/claude-code/aiwf/en/.aiwf/02_REQUIREMENTS/CLAUDE.md +0 -78
  222. package/claude-code/aiwf/en/.aiwf/02_REQUIREMENTS/M01_Backend_Setup/M01_milestone_meta.md +0 -42
  223. package/claude-code/aiwf/en/.aiwf/02_REQUIREMENTS/M01_Backend_Setup/PRD_AMEND_01_Auth_Flow_Update.md +0 -73
  224. package/claude-code/aiwf/en/.aiwf/02_REQUIREMENTS/M01_Backend_Setup/PRD_Backend_Setup.md +0 -98
  225. package/claude-code/aiwf/en/.aiwf/02_REQUIREMENTS/M01_Backend_Setup/SPECS_API_V1.md +0 -232
  226. package/claude-code/aiwf/en/.aiwf/03_SPRINTS/CLAUDE.md +0 -83
  227. package/claude-code/aiwf/en/.aiwf/03_SPRINTS/S01_M01_Initial_API/S01_sprint_meta.md +0 -49
  228. package/claude-code/aiwf/en/.aiwf/03_SPRINTS/S01_M01_Initial_API/T01_S01_Setup_Project_Structure.md +0 -60
  229. package/claude-code/aiwf/en/.aiwf/04_GENERAL_TASKS/CLAUDE.md +0 -96
  230. package/claude-code/aiwf/en/.aiwf/04_GENERAL_TASKS/T002_API_Rate_Limiting.md +0 -54
  231. package/claude-code/aiwf/en/.aiwf/04_GENERAL_TASKS/TX001_Refactor_Logging_Module.md +0 -58
  232. package/claude-code/aiwf/en/.aiwf/05_ARCHITECTURAL_DECISIONS/ADR001_Chosen_Database_System.md +0 -119
  233. package/claude-code/aiwf/en/.aiwf/05_ARCHITECTURAL_DECISIONS/ADR002_API_Authentication_Method.md +0 -124
  234. package/claude-code/aiwf/en/.aiwf/10_STATE_OF_PROJECT/2025-06-12-12-00-needs-focus.md +0 -139
  235. package/claude-code/aiwf/en/.aiwf/10_STATE_OF_PROJECT/2025-06-12-12-00-test-alignment.md +0 -155
  236. package/claude-code/aiwf/en/.aiwf/10_STATE_OF_PROJECT/2025-06-13-00-50-solid-progress.md +0 -122
  237. package/claude-code/aiwf/en/.aiwf/10_STATE_OF_PROJECT/2025-06-14-08-30-infrastructure-challenges.md +0 -141
  238. package/claude-code/aiwf/en/.aiwf/10_STATE_OF_PROJECT/2025-06-16-21-48-critical-foundation-issues.md +0 -177
  239. package/claude-code/aiwf/en/.aiwf/10_STATE_OF_PROJECT/2025-06-17-15-08-solid-progress.md +0 -149
  240. package/claude-code/aiwf/en/.aiwf/10_STATE_OF_PROJECT/index.json +0 -5
  241. package/claude-code/aiwf/en/.aiwf/10_STATE_OF_PROJECT/sync-index.js +0 -78
  242. package/claude-code/aiwf/en/.aiwf/98_PROMPTS/github_integration.md +0 -130
  243. package/claude-code/aiwf/en/.aiwf/98_PROMPTS/useful-prompts.md +0 -31
  244. package/claude-code/aiwf/en/.aiwf/98_PROMPTS/vibe-front-prompts.md +0 -89
  245. package/claude-code/aiwf/en/.aiwf/99_TEMPLATES/adr_template.md +0 -49
  246. package/claude-code/aiwf/en/.aiwf/99_TEMPLATES/milestone_meta_template.md +0 -25
  247. package/claude-code/aiwf/en/.aiwf/99_TEMPLATES/project_manifest_template.md +0 -39
  248. package/claude-code/aiwf/en/.aiwf/99_TEMPLATES/sprint_meta_template.md +0 -23
  249. package/claude-code/aiwf/en/.aiwf/99_TEMPLATES/task_template.md +0 -36
  250. package/claude-code/aiwf/en/.aiwf/CLAUDE.md +0 -74
  251. package/claude-code/aiwf/en/.aiwf/README.md +0 -97
  252. package/claude-code/aiwf/en/.claude/CLAUDE_BE.md +0 -276
  253. package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_changelog.md +0 -82
  254. package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_code_review.md +0 -88
  255. package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_commit.md +0 -160
  256. package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_create_feature_ledger.md +0 -54
  257. package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_create_general_task.md +0 -147
  258. package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_create_milestone_plan.md +0 -194
  259. package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_create_prd.md +0 -272
  260. package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_create_sprint_tasks.md +0 -189
  261. package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_create_sprints_from_milestone.md +0 -121
  262. package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_create_testcase.md +0 -561
  263. package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_default_mode.md +0 -66
  264. package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_discuss_review.md +0 -29
  265. package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_do_task.md +0 -109
  266. package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_docs.md +0 -225
  267. package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_get_feature_details.md +0 -78
  268. package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_infinite.md +0 -202
  269. package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_initialize.md +0 -134
  270. package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_issue_create.md +0 -65
  271. package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_link_feature_to_milestone.md +0 -57
  272. package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_list_features.md +0 -54
  273. package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_mermaid.md +0 -272
  274. package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_persona_architect.md +0 -60
  275. package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_persona_backend.md +0 -60
  276. package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_persona_data_analyst.md +0 -60
  277. package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_persona_frontend.md +0 -60
  278. package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_persona_security.md +0 -60
  279. package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_persona_status.md +0 -72
  280. package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_pr_create.md +0 -76
  281. package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_prime.md +0 -9
  282. package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_project_review.md +0 -261
  283. package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_switch_language.md +0 -160
  284. package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_test.md +0 -125
  285. package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_testing_review.md +0 -198
  286. package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_tm-run-all-subtask.md +0 -206
  287. package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_ultrathink_code_advanced.md +0 -460
  288. package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_ultrathink_code_basic.md +0 -165
  289. package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_ultrathink_general.md +0 -362
  290. package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_update_feature_status.md +0 -53
  291. package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_yolo.md +0 -300
  292. package/claude-code/aiwf/en/.claude/mcp.json +0 -31
  293. package/claude-code/aiwf/en/.claude/settings.json +0 -102
  294. package/claude-code/aiwf/en/commands/ai-persona.js +0 -667
  295. package/claude-code/aiwf/en/commands/compress-context.js +0 -355
  296. package/claude-code/aiwf/en/commands/feature-ledger.js +0 -565
  297. package/claude-code/aiwf/en/config/commit-patterns.js +0 -103
  298. package/claude-code/aiwf/en/hooks/install-hooks.sh +0 -100
  299. package/claude-code/aiwf/en/hooks/post-commit +0 -84
  300. package/claude-code/aiwf/en/tests/compression-test-suite.js +0 -1252
  301. package/claude-code/aiwf/en/tests/test-git-integration.js +0 -164
  302. package/claude-code/aiwf/en/tests/token-tracking.test.js +0 -537
  303. package/claude-code/aiwf/en/utils/context-compressor.js +0 -583
  304. package/claude-code/aiwf/en/utils/git-utils.js +0 -220
  305. package/claude-code/aiwf/en/utils/text-summarizer.js +0 -487
  306. package/claude-code/aiwf/ko/.aiwf/00_PROJECT_MANIFEST.md +0 -49
  307. package/claude-code/aiwf/ko/.aiwf/01_PROJECT_DOCS/ARCHITECTURE.md +0 -55
  308. package/claude-code/aiwf/ko/.aiwf/02_REQUIREMENTS/CLAUDE.md +0 -78
  309. package/claude-code/aiwf/ko/.aiwf/02_REQUIREMENTS/M01_Backend_Setup/M01_milestone_meta.md +0 -42
  310. package/claude-code/aiwf/ko/.aiwf/02_REQUIREMENTS/M01_Backend_Setup/PRD_AMEND_01_Auth_Flow_Update.md +0 -73
  311. package/claude-code/aiwf/ko/.aiwf/02_REQUIREMENTS/M01_Backend_Setup/PRD_Backend_Setup.md +0 -98
  312. package/claude-code/aiwf/ko/.aiwf/02_REQUIREMENTS/M01_Backend_Setup/SPECS_API_V1.md +0 -232
  313. package/claude-code/aiwf/ko/.aiwf/03_SPRINTS/CLAUDE.md +0 -83
  314. package/claude-code/aiwf/ko/.aiwf/03_SPRINTS/S01_M01_Initial_API/S01_sprint_meta.md +0 -49
  315. package/claude-code/aiwf/ko/.aiwf/03_SPRINTS/S01_M01_Initial_API/T01_S01_Setup_Project_Structure.md +0 -60
  316. package/claude-code/aiwf/ko/.aiwf/04_GENERAL_TASKS/CLAUDE.md +0 -96
  317. package/claude-code/aiwf/ko/.aiwf/04_GENERAL_TASKS/T002_API_Rate_Limiting.md +0 -54
  318. package/claude-code/aiwf/ko/.aiwf/04_GENERAL_TASKS/TX001_Refactor_Logging_Module.md +0 -58
  319. package/claude-code/aiwf/ko/.aiwf/05_ARCHITECTURAL_DECISIONS/ADR001_Chosen_Database_System.md +0 -119
  320. package/claude-code/aiwf/ko/.aiwf/05_ARCHITECTURAL_DECISIONS/ADR002_API_Authentication_Method.md +0 -124
  321. package/claude-code/aiwf/ko/.aiwf/06_FEATURE_LEDGERS/FEATURE_ID_GENERATOR.md +0 -138
  322. package/claude-code/aiwf/ko/.aiwf/06_FEATURE_LEDGERS/FEATURE_INDEX.md +0 -186
  323. package/claude-code/aiwf/ko/.aiwf/06_FEATURE_LEDGERS/FEATURE_METADATA.md +0 -240
  324. package/claude-code/aiwf/ko/.aiwf/06_FEATURE_LEDGERS/FEATURE_WORKFLOW.md +0 -183
  325. package/claude-code/aiwf/ko/.aiwf/06_FEATURE_LEDGERS/README.md +0 -94
  326. 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
  327. 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
  328. 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
  329. package/claude-code/aiwf/ko/.aiwf/06_FEATURE_LEDGERS/schemas/feature_schema.json +0 -122
  330. package/claude-code/aiwf/ko/.aiwf/06_FEATURE_LEDGERS/schemas/feature_validator.cjs +0 -406
  331. package/claude-code/aiwf/ko/.aiwf/10_STATE_OF_PROJECT/2025-06-12-12-00-needs-focus.md +0 -139
  332. package/claude-code/aiwf/ko/.aiwf/10_STATE_OF_PROJECT/2025-06-12-12-00-test-alignment.md +0 -155
  333. package/claude-code/aiwf/ko/.aiwf/10_STATE_OF_PROJECT/2025-06-13-00-50-solid-progress.md +0 -122
  334. package/claude-code/aiwf/ko/.aiwf/10_STATE_OF_PROJECT/2025-06-14-08-30-infrastructure-challenges.md +0 -141
  335. package/claude-code/aiwf/ko/.aiwf/10_STATE_OF_PROJECT/2025-06-16-21-48-critical-foundation-issues.md +0 -177
  336. package/claude-code/aiwf/ko/.aiwf/10_STATE_OF_PROJECT/2025-06-17-15-08-solid-progress.md +0 -149
  337. package/claude-code/aiwf/ko/.aiwf/10_STATE_OF_PROJECT/index.json +0 -5
  338. package/claude-code/aiwf/ko/.aiwf/10_STATE_OF_PROJECT/sync-index.js +0 -78
  339. package/claude-code/aiwf/ko/.aiwf/98_PROMPTS/github_integration.md +0 -130
  340. package/claude-code/aiwf/ko/.aiwf/98_PROMPTS/useful-prompts.md +0 -31
  341. package/claude-code/aiwf/ko/.aiwf/98_PROMPTS/vibe-front-prompts.md +0 -89
  342. package/claude-code/aiwf/ko/.aiwf/99_TEMPLATES/adr_template.md +0 -49
  343. package/claude-code/aiwf/ko/.aiwf/99_TEMPLATES/milestone_meta_template.md +0 -25
  344. package/claude-code/aiwf/ko/.aiwf/99_TEMPLATES/project_manifest_template.md +0 -39
  345. package/claude-code/aiwf/ko/.aiwf/99_TEMPLATES/sprint_meta_template.md +0 -23
  346. package/claude-code/aiwf/ko/.aiwf/99_TEMPLATES/task_template.md +0 -36
  347. package/claude-code/aiwf/ko/.aiwf/CLAUDE.md +0 -76
  348. package/claude-code/aiwf/ko/.aiwf/README.md +0 -97
  349. package/claude-code/aiwf/ko/.claude/CLAUDE_BE.md +0 -276
  350. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_changelog.md +0 -82
  351. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_code_review.md +0 -88
  352. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_commit.md +0 -160
  353. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_compress_aggressive_persona.md +0 -53
  354. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_compress_context.md +0 -116
  355. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_compress_minimal_persona.md +0 -48
  356. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_compress_stats.md +0 -79
  357. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_compress_with_persona.md +0 -51
  358. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_create_feature_ledger.md +0 -54
  359. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_create_general_task.md +0 -147
  360. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_create_milestone_plan.md +0 -194
  361. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_create_prd.md +0 -280
  362. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_create_sprint_tasks.md +0 -189
  363. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_create_sprints_from_milestone.md +0 -121
  364. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_create_testcase.md +0 -561
  365. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_default_mode.md +0 -44
  366. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_discuss_review.md +0 -29
  367. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_do_task.md +0 -109
  368. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_docs.md +0 -225
  369. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_evaluate.md +0 -92
  370. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_get_feature_details.md +0 -78
  371. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_infinite.md +0 -202
  372. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_initialize.md +0 -134
  373. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_issue_create.md +0 -65
  374. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_link_feature_to_milestone.md +0 -57
  375. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_list_features.md +0 -54
  376. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_mermaid.md +0 -272
  377. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_persona_architect.md +0 -48
  378. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_persona_backend.md +0 -37
  379. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_persona_data_analyst.md +0 -37
  380. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_persona_frontend.md +0 -37
  381. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_persona_security.md +0 -48
  382. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_persona_status.md +0 -50
  383. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_pr_create.md +0 -76
  384. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_prime.md +0 -9
  385. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_project_review.md +0 -261
  386. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_switch_language.md +0 -160
  387. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_test.md +0 -124
  388. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_testing_review.md +0 -198
  389. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_tm-run-all-subtask.md +0 -210
  390. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_ultrathink_code_advanced.md +0 -460
  391. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_ultrathink_code_basic.md +0 -165
  392. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_ultrathink_general.md +0 -305
  393. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_update_docs_kr.md +0 -25
  394. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_update_feature_status.md +0 -53
  395. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_yolo.md +0 -300
  396. package/claude-code/aiwf/ko/.claude/mcp.json +0 -31
  397. package/claude-code/aiwf/ko/.claude/settings.json +0 -102
  398. package/claude-code/aiwf/ko/CLAUDE.md +0 -76
  399. package/claude-code/aiwf/ko/ai-tools/README.md +0 -105
  400. package/claude-code/aiwf/ko/ai-tools/augment/README.md +0 -371
  401. package/claude-code/aiwf/ko/ai-tools/augment/config.json +0 -30
  402. package/claude-code/aiwf/ko/ai-tools/augment/template/.augment/aiwf-integration.md +0 -387
  403. package/claude-code/aiwf/ko/ai-tools/augment/template/.augment/augment.yaml +0 -347
  404. package/claude-code/aiwf/ko/ai-tools/augment/template/augment.config.json +0 -64
  405. package/claude-code/aiwf/ko/ai-tools/claude-code/README.md +0 -151
  406. package/claude-code/aiwf/ko/ai-tools/claude-code/config.json +0 -28
  407. package/claude-code/aiwf/ko/ai-tools/claude-code/template/CLAUDE.md +0 -91
  408. package/claude-code/aiwf/ko/ai-tools/cursor/README.md +0 -314
  409. package/claude-code/aiwf/ko/ai-tools/cursor/config.json +0 -29
  410. package/claude-code/aiwf/ko/ai-tools/cursor/template/.cursorrules +0 -362
  411. package/claude-code/aiwf/ko/ai-tools/github-copilot/README.md +0 -195
  412. package/claude-code/aiwf/ko/ai-tools/github-copilot/config.json +0 -24
  413. package/claude-code/aiwf/ko/ai-tools/github-copilot/template/.github/copilot-instructions.md +0 -202
  414. package/claude-code/aiwf/ko/ai-tools/windsurf/README.md +0 -355
  415. package/claude-code/aiwf/ko/ai-tools/windsurf/config.json +0 -29
  416. package/claude-code/aiwf/ko/ai-tools/windsurf/template/.windsurf/aiwf-rules.md +0 -260
  417. package/claude-code/aiwf/ko/ai-tools/windsurf/template/.windsurf/windsurf.config.js +0 -312
  418. package/claude-code/aiwf/ko/ai-tools/windsurf/template/windsurf.config.json +0 -63
  419. package/claude-code/aiwf/ko/commands/feature_commit_report.js +0 -370
  420. package/claude-code/aiwf/ko/commands/scan_git_history.js +0 -234
  421. package/claude-code/aiwf/ko/commands/sync_feature_commits.js +0 -154
  422. package/claude-code/aiwf/ko/commands/token-tracking.js +0 -443
  423. package/claude-code/aiwf/ko/feature-ledger/FL-001-authentication.json +0 -52
  424. package/claude-code/aiwf/ko/feature-ledger/feature-index.json +0 -20
  425. package/claude-code/aiwf/ko/hooks/install-hooks.sh +0 -100
  426. package/claude-code/aiwf/ko/hooks/post-commit +0 -84
  427. package/claude-code/aiwf/ko/personas/PERSONA_INDEX.md +0 -57
  428. package/claude-code/aiwf/ko/personas/analyst.json +0 -44
  429. package/claude-code/aiwf/ko/personas/architect/best_practices.md +0 -136
  430. package/claude-code/aiwf/ko/personas/architect/knowledge_base.md +0 -377
  431. package/claude-code/aiwf/ko/personas/architect.json +0 -44
  432. package/claude-code/aiwf/ko/personas/backend/best_practices.md +0 -766
  433. package/claude-code/aiwf/ko/personas/backend/knowledge_base.md +0 -1070
  434. package/claude-code/aiwf/ko/personas/data_analyst/best_practices.md +0 -594
  435. package/claude-code/aiwf/ko/personas/data_analyst/knowledge_base.md +0 -1057
  436. package/claude-code/aiwf/ko/personas/developer.json +0 -44
  437. package/claude-code/aiwf/ko/personas/developer.md +0 -37
  438. package/claude-code/aiwf/ko/personas/evaluation_criteria.json +0 -137
  439. package/claude-code/aiwf/ko/personas/frontend/best_practices.md +0 -445
  440. package/claude-code/aiwf/ko/personas/frontend/knowledge_base.md +0 -729
  441. package/claude-code/aiwf/ko/personas/persona-index.json +0 -31
  442. package/claude-code/aiwf/ko/personas/reviewer.json +0 -44
  443. package/claude-code/aiwf/ko/personas/security/best_practices.md +0 -307
  444. package/claude-code/aiwf/ko/personas/security/knowledge_base.md +0 -498
  445. package/claude-code/aiwf/ko/personas/tester.json +0 -44
  446. package/claude-code/aiwf/ko/scripts/cache-templates.js +0 -209
  447. package/claude-code/aiwf/ko/scripts/create-offline.js +0 -86
  448. package/claude-code/aiwf/ko/scripts/create-project.js +0 -151
  449. package/claude-code/aiwf/ko/scripts/feature-progress-calculator.cjs +0 -236
  450. package/claude-code/aiwf/ko/scripts/git-integration.cjs +0 -391
  451. package/claude-code/aiwf/ko/scripts/install-git-hooks.cjs +0 -226
  452. package/claude-code/aiwf/ko/scripts/test-commit-parsing.cjs +0 -125
  453. package/claude-code/aiwf/ko/scripts/update-feature-status.cjs +0 -198
  454. package/claude-code/aiwf/ko/tests/compression-test-suite.js +0 -1252
  455. package/claude-code/aiwf/ko/tests/test-git-integration.js +0 -164
  456. package/claude-code/aiwf/ko/tests/token-tracking.test.js +0 -537
  457. package/claude-code/aiwf/ko/utils/compression-metrics.js +0 -1031
  458. package/claude-code/aiwf/ko/utils/compression-strategies.js +0 -557
  459. package/claude-code/aiwf/ko/utils/content-normalizer.js +0 -455
  460. package/claude-code/aiwf/ko/utils/feature-updater.js +0 -271
  461. package/claude-code/aiwf/ko/utils/importance-classifier.js +0 -645
  462. package/claude-code/aiwf/ko/utils/information-filter.js +0 -710
  463. package/claude-code/aiwf/ko/utils/token-counter.js +0 -177
  464. package/claude-code/aiwf/ko/utils/token-monitor.js +0 -484
  465. package/claude-code/aiwf/ko/utils/token-reporter.js +0 -453
  466. package/claude-code/aiwf/ko/utils/token-storage.js +0 -433
  467. package/claude-code/aiwf/ko/utils/token-tracker.js +0 -283
  468. package/claude-code/docker/Dockerfile +0 -117
  469. package/jest.config.js +0 -23
  470. package/scripts/update-feature-status.js +0 -70
  471. package/tests/application.test.js +0 -260
  472. package/tests/basic.test.js +0 -62
  473. package/tests/commands.test.js +0 -127
  474. package/tests/installer.test.js +0 -129
  475. package/tests/integration/ai-persona-system.test.js +0 -396
  476. package/tests/integration/ai-persona.test.js +0 -390
  477. package/tests/integration/command-integration.test.js +0 -600
  478. package/tests/integration/context-compression.test.js +0 -361
  479. package/tests/integration/feature-ledger.test.js +0 -226
  480. package/tests/integration/git-integration.test.js +0 -307
  481. package/tests/integration/m02-milestone.test.js +0 -420
  482. package/tests/integration/persona-context-application.test.js +0 -508
  483. package/tests/integration/setup.js +0 -174
  484. package/tests/integration/test-persona-aware-compression.js +0 -93
  485. package/tests/integration/test-persona-system/.aiwf/metrics/metrics.json +0 -833
  486. package/tests/integration/test-persona-system/docs/README.md +0 -1
  487. package/tests/integration/test-persona-system/package.json +0 -1
  488. package/tests/integration/test-persona-system/src/auth.js +0 -1
  489. package/tests/integration/test-persona-system/src/index.js +0 -1
  490. package/tests/integration/test-persona-system/test/test.js +0 -1
  491. package/tests/language-utils.test.js +0 -287
  492. package/tests/s02-integration.test.js +0 -422
  493. package/tests/unit/ai-persona-manager.test.js +0 -514
  494. package/tests/unit/sprint-task.test.js +0 -172
  495. /package/{claude-code/aiwf/ko → src/lib/resources}/commands/compress-context.js +0 -0
  496. /package/{claude-code/aiwf/ko → src/lib/resources}/commands/evaluate.js +0 -0
  497. /package/{claude-code/aiwf/ko → src/lib/resources}/commands/feature-ledger.js +0 -0
  498. /package/{claude-code/aiwf/en → src/lib/resources}/commands/feature_commit_report.js +0 -0
  499. /package/{claude-code/aiwf/ko → src/lib/resources}/commands/persona-context-apply.js +0 -0
  500. /package/{claude-code/aiwf/en → src/lib/resources}/commands/scan_git_history.js +0 -0
  501. /package/{claude-code/aiwf/en → src/lib/resources}/commands/sync_feature_commits.js +0 -0
  502. /package/{claude-code/aiwf/en → src/lib/resources}/commands/token-tracking.js +0 -0
  503. /package/{claude-code/aiwf/ko → src/lib/resources}/config/commit-patterns.js +0 -0
  504. /package/{claude-code/aiwf/ko → src/lib/resources}/config/language.json +0 -0
  505. /package/{.aiwf/07_AI_PERSONAS → src/lib/resources/personas}/PERSONA_INDEX.md +0 -0
  506. /package/{.aiwf → src/lib/resources}/personas/analyst.json +0 -0
  507. /package/{.aiwf → src/lib/resources}/personas/architect/best_practices.md +0 -0
  508. /package/{.aiwf → src/lib/resources}/personas/architect/knowledge_base.md +0 -0
  509. /package/{.aiwf → src/lib/resources}/personas/architect.json +0 -0
  510. /package/{.aiwf → src/lib/resources}/personas/backend/best_practices.md +0 -0
  511. /package/{.aiwf → src/lib/resources}/personas/backend/knowledge_base.md +0 -0
  512. /package/{.aiwf → src/lib/resources}/personas/data_analyst/best_practices.md +0 -0
  513. /package/{.aiwf → src/lib/resources}/personas/data_analyst/knowledge_base.md +0 -0
  514. /package/{.aiwf → src/lib/resources}/personas/developer.json +0 -0
  515. /package/{.aiwf/10_PERSONAS → src/lib/resources/personas}/developer.md +0 -0
  516. /package/{.aiwf → src/lib/resources}/personas/evaluation_criteria.json +0 -0
  517. /package/{.aiwf → src/lib/resources}/personas/frontend/best_practices.md +0 -0
  518. /package/{.aiwf → src/lib/resources}/personas/frontend/knowledge_base.md +0 -0
  519. /package/{.aiwf → src/lib/resources}/personas/persona-index.json +0 -0
  520. /package/{.aiwf → src/lib/resources}/personas/reviewer.json +0 -0
  521. /package/{.aiwf → src/lib/resources}/personas/security/best_practices.md +0 -0
  522. /package/{.aiwf → src/lib/resources}/personas/security/knowledge_base.md +0 -0
  523. /package/{.aiwf → src/lib/resources}/personas/tester.json +0 -0
  524. /package/{claude-code/aiwf/ko → src/lib/resources}/templates/README.md +0 -0
  525. /package/{claude-code/aiwf/ko → src/lib/resources}/templates/api-server/config.json +0 -0
  526. /package/{claude-code/aiwf/ko → src/lib/resources}/templates/api-server/template/.aiwf/config.json +0 -0
  527. /package/{claude-code/aiwf/ko → src/lib/resources}/templates/api-server/template/.aiwf/feature-ledger.json +0 -0
  528. /package/{claude-code/aiwf/ko → src/lib/resources}/templates/api-server/template/.aiwf/personas/backend-engineer.json +0 -0
  529. /package/{claude-code/aiwf/ko → src/lib/resources}/templates/api-server/template/.aiwf/scripts/cli.js +0 -0
  530. /package/{claude-code/aiwf/ko → src/lib/resources}/templates/api-server/template/.env.example +0 -0
  531. /package/{claude-code/aiwf/ko → src/lib/resources}/templates/api-server/template/.eslintrc.json +0 -0
  532. /package/{claude-code/aiwf/ko → src/lib/resources}/templates/api-server/template/README.md +0 -0
  533. /package/{claude-code/aiwf/ko → src/lib/resources}/templates/api-server/template/jest.config.js +0 -0
  534. /package/{claude-code/aiwf/ko → src/lib/resources}/templates/api-server/template/nodemon.json +0 -0
  535. /package/{claude-code/aiwf/ko → src/lib/resources}/templates/api-server/template/package.json +0 -0
  536. /package/{claude-code/aiwf/ko → src/lib/resources}/templates/api-server/template/src/app.ts +0 -0
  537. /package/{claude-code/aiwf/ko → src/lib/resources}/templates/api-server/template/src/config/swagger.ts +0 -0
  538. /package/{claude-code/aiwf/ko → src/lib/resources}/templates/api-server/template/src/controllers/aiwfController.ts +0 -0
  539. /package/{claude-code/aiwf/ko → src/lib/resources}/templates/api-server/template/src/controllers/authController.ts +0 -0
  540. /package/{claude-code/aiwf/ko → src/lib/resources}/templates/api-server/template/src/controllers/statusController.ts +0 -0
  541. /package/{claude-code/aiwf/ko → src/lib/resources}/templates/api-server/template/src/index.ts +0 -0
  542. /package/{claude-code/aiwf/ko → src/lib/resources}/templates/api-server/template/src/middleware/aiwfMiddleware.ts +0 -0
  543. /package/{claude-code/aiwf/ko → src/lib/resources}/templates/api-server/template/src/middleware/authMiddleware.ts +0 -0
  544. /package/{claude-code/aiwf/ko → src/lib/resources}/templates/api-server/template/src/middleware/errorHandler.ts +0 -0
  545. /package/{claude-code/aiwf/ko → src/lib/resources}/templates/api-server/template/src/middleware/notFoundHandler.ts +0 -0
  546. /package/{claude-code/aiwf/ko → src/lib/resources}/templates/api-server/template/src/middleware/requestLogger.ts +0 -0
  547. /package/{claude-code/aiwf/ko → src/lib/resources}/templates/api-server/template/src/routes/aiwf.ts +0 -0
  548. /package/{claude-code/aiwf/ko → src/lib/resources}/templates/api-server/template/src/routes/index.ts +0 -0
  549. /package/{claude-code/aiwf/ko → src/lib/resources}/templates/api-server/template/src/routes/v1/index.ts +0 -0
  550. /package/{claude-code/aiwf/ko → src/lib/resources}/templates/api-server/template/src/utils/logger.ts +0 -0
  551. /package/{claude-code/aiwf/ko → src/lib/resources}/templates/api-server/template/tests/app.test.ts +0 -0
  552. /package/{claude-code/aiwf/ko → src/lib/resources}/templates/api-server/template/tsconfig.json +0 -0
  553. /package/{claude-code/aiwf/ko → src/lib/resources}/templates/npm-library/config.json +0 -0
  554. /package/{claude-code/aiwf/ko → src/lib/resources}/templates/npm-library/template/LICENSE +0 -0
  555. /package/{claude-code/aiwf/ko → src/lib/resources}/templates/npm-library/template/README.md +0 -0
  556. /package/{claude-code/aiwf/ko → src/lib/resources}/templates/npm-library/template/package.json +0 -0
  557. /package/{claude-code/aiwf/ko → src/lib/resources}/templates/web-app/config.json +0 -0
  558. /package/{claude-code/aiwf/ko → src/lib/resources}/templates/web-app/template/.aiwf/config.json +0 -0
  559. /package/{claude-code/aiwf/ko → src/lib/resources}/templates/web-app/template/.aiwf/feature-ledger.json +0 -0
  560. /package/{claude-code/aiwf/ko → src/lib/resources}/templates/web-app/template/.aiwf/personas/fullstack-developer.json +0 -0
  561. /package/{claude-code/aiwf/ko → src/lib/resources}/templates/web-app/template/.aiwf/scripts/cli.js +0 -0
  562. /package/{claude-code/aiwf/ko → src/lib/resources}/templates/web-app/template/.eslintrc.cjs +0 -0
  563. /package/{claude-code/aiwf/ko → src/lib/resources}/templates/web-app/template/README.md +0 -0
  564. /package/{claude-code/aiwf/ko → src/lib/resources}/templates/web-app/template/index.html +0 -0
  565. /package/{claude-code/aiwf/ko → src/lib/resources}/templates/web-app/template/package.json +0 -0
  566. /package/{claude-code/aiwf/ko → src/lib/resources}/templates/web-app/template/postcss.config.js +0 -0
  567. /package/{claude-code/aiwf/ko → src/lib/resources}/templates/web-app/template/public/vite.svg +0 -0
  568. /package/{claude-code/aiwf/ko → src/lib/resources}/templates/web-app/template/src/App.tsx +0 -0
  569. /package/{claude-code/aiwf/ko → src/lib/resources}/templates/web-app/template/src/components/Layout.tsx +0 -0
  570. /package/{claude-code/aiwf/ko → src/lib/resources}/templates/web-app/template/src/components/aiwf/ContextStatus.tsx +0 -0
  571. /package/{claude-code/aiwf/ko → src/lib/resources}/templates/web-app/template/src/components/aiwf/FeatureLedger.tsx +0 -0
  572. /package/{claude-code/aiwf/ko → src/lib/resources}/templates/web-app/template/src/components/aiwf/TokenUsage.tsx +0 -0
  573. /package/{claude-code/aiwf/ko → src/lib/resources}/templates/web-app/template/src/index.css +0 -0
  574. /package/{claude-code/aiwf/ko → src/lib/resources}/templates/web-app/template/src/main.tsx +0 -0
  575. /package/{claude-code/aiwf/ko → src/lib/resources}/templates/web-app/template/src/pages/AiwfDashboard.tsx +0 -0
  576. /package/{claude-code/aiwf/ko → src/lib/resources}/templates/web-app/template/src/pages/HomePage.tsx +0 -0
  577. /package/{claude-code/aiwf/ko → src/lib/resources}/templates/web-app/template/src/pages/NotFound.tsx +0 -0
  578. /package/{claude-code/aiwf/ko → src/lib/resources}/templates/web-app/template/src/stores/aiwfStore.ts +0 -0
  579. /package/{claude-code/aiwf/ko → src/lib/resources}/templates/web-app/template/src/types/global.d.ts +0 -0
  580. /package/{claude-code/aiwf/ko → src/lib/resources}/templates/web-app/template/src/vite-env.d.ts +0 -0
  581. /package/{claude-code/aiwf/ko → src/lib/resources}/templates/web-app/template/tailwind.config.js +0 -0
  582. /package/{claude-code/aiwf/ko → src/lib/resources}/templates/web-app/template/tsconfig.json +0 -0
  583. /package/{claude-code/aiwf/ko → src/lib/resources}/templates/web-app/template/tsconfig.node.json +0 -0
  584. /package/{claude-code/aiwf/ko → src/lib/resources}/templates/web-app/template/vite.config.ts +0 -0
  585. /package/{claude-code/aiwf/ko → src/lib/resources}/utils/background-monitor.js +0 -0
  586. /package/{claude-code/aiwf/en → src/lib/resources}/utils/compression-metrics.js +0 -0
  587. /package/{claude-code/aiwf/en → src/lib/resources}/utils/compression-strategies.js +0 -0
  588. /package/{claude-code/aiwf/en → src/lib/resources}/utils/content-normalizer.js +0 -0
  589. /package/{claude-code/aiwf/ko → src/lib/resources}/utils/context-compressor.js +0 -0
  590. /package/{claude-code/aiwf/ko → src/lib/resources}/utils/context-rule-parser.js +0 -0
  591. /package/{claude-code/aiwf/ko → src/lib/resources}/utils/context-token-monitor.js +0 -0
  592. /package/{claude-code/aiwf/ko → src/lib/resources}/utils/context-update-manager.js +0 -0
  593. /package/{claude-code/aiwf/en → src/lib/resources}/utils/feature-updater.js +0 -0
  594. /package/{claude-code/aiwf/ko → src/lib/resources}/utils/git-utils.js +0 -0
  595. /package/{claude-code/aiwf/en → src/lib/resources}/utils/importance-classifier.js +0 -0
  596. /package/{claude-code/aiwf/en → src/lib/resources}/utils/information-filter.js +0 -0
  597. /package/{claude-code/aiwf/ko → src/lib/resources}/utils/persona-aware-compressor.js +0 -0
  598. /package/{claude-code/aiwf/ko → src/lib/resources}/utils/prompt-injector.js +0 -0
  599. /package/{claude-code/aiwf/ko → src/lib/resources}/utils/simplified-evaluator.js +0 -0
  600. /package/{claude-code/aiwf/ko → src/lib/resources}/utils/text-summarizer.js +0 -0
  601. /package/{claude-code/aiwf/en → src/lib/resources}/utils/token-counter.js +0 -0
  602. /package/{claude-code/aiwf/en → src/lib/resources}/utils/token-monitor.js +0 -0
  603. /package/{claude-code/aiwf/en → src/lib/resources}/utils/token-reporter.js +0 -0
  604. /package/{claude-code/aiwf/en → src/lib/resources}/utils/token-storage.js +0 -0
  605. /package/{claude-code/aiwf/en → src/lib/resources}/utils/token-tracker.js +0 -0
@@ -1,667 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- /**
4
- * AI Persona Commands for Claude Code
5
- * Manages AI behavior personas for different development tasks
6
- */
7
-
8
- import { AIPersonaManager } from '../../../../lib/ai-persona-manager.js';
9
- import { getBackgroundMonitor } from '../../ko/utils/background-monitor.js';
10
- import path from 'path';
11
- import chalk from 'chalk';
12
-
13
- // Global persona manager instance
14
- let personaManager = null;
15
-
16
- /**
17
- * Get or create persona manager instance
18
- */
19
- async function getPersonaManager() {
20
- if (!personaManager) {
21
- personaManager = new AIPersonaManager({
22
- personaConfigPath: path.join(process.cwd(), '.aiwf', 'personas'),
23
- metricsPath: path.join(process.cwd(), '.aiwf', 'metrics'),
24
- metricsEnabled: true,
25
- autoDetectionEnabled: true
26
- });
27
-
28
- await personaManager.init();
29
- }
30
-
31
- return personaManager;
32
- }
33
-
34
- /**
35
- * Format persona status for display
36
- */
37
- function formatPersonaStatus(persona, metrics) {
38
- const lines = [];
39
-
40
- lines.push(chalk.cyan('🎭 AI Persona Status'));
41
- lines.push(chalk.gray('━'.repeat(50)));
42
- lines.push(`Current Persona: ${chalk.yellow(persona.name)}`);
43
- lines.push(`Description: ${persona.description}`);
44
-
45
- if (persona.behaviors?.length) {
46
- lines.push('\nKey Behaviors:');
47
- persona.behaviors.forEach(behavior => {
48
- lines.push(` • ${behavior}`);
49
- });
50
- }
51
-
52
- if (persona.recommendedTools?.length) {
53
- lines.push(`\nRecommended Tools: ${persona.recommendedTools.join(', ')}`);
54
- }
55
-
56
- if (metrics && metrics.duration !== undefined) {
57
- lines.push('\nCurrent Session:');
58
- lines.push(` Duration: ${Math.round(metrics.duration / 1000)}s`);
59
- lines.push(` Interactions: ${metrics.interactions}`);
60
- lines.push(` Token Usage: ${metrics.tokenUsage.current}`);
61
- }
62
-
63
- return lines.join('\n');
64
- }
65
-
66
- /**
67
- * Format persona report
68
- */
69
- function formatPersonaReport(report) {
70
- const lines = [];
71
-
72
- lines.push(chalk.cyan('📊 AI Persona Performance Report'));
73
- lines.push(chalk.gray('━'.repeat(50)));
74
- lines.push(`Generated: ${new Date(report.generatedAt).toLocaleString()}`);
75
- lines.push(`Time Range: ${report.timeRange}`);
76
-
77
- // Summary
78
- lines.push('\n' + chalk.yellow('Summary:'));
79
- lines.push(`Total Sessions: ${report.summary.totalSessions}`);
80
- lines.push(`Avg Completion Time: ${Math.round(report.summary.averageCompletionTime / 1000)}s`);
81
-
82
- // Persona Usage
83
- if (report.summary.personaUsage) {
84
- lines.push('\n' + chalk.yellow('Persona Usage:'));
85
- Object.entries(report.summary.personaUsage).forEach(([persona, stats]) => {
86
- lines.push(` ${persona}: ${stats.count} sessions (${stats.percentage.toFixed(1)}%)`);
87
- });
88
- }
89
-
90
- // Quality Trend
91
- if (report.summary.qualityTrend) {
92
- lines.push('\n' + chalk.yellow('Quality Trend:'));
93
- lines.push(` Trend: ${report.summary.qualityTrend.trend}`);
94
- if (report.summary.qualityTrend.averageScore) {
95
- lines.push(` Average Score: ${(report.summary.qualityTrend.averageScore * 100).toFixed(1)}%`);
96
- }
97
- }
98
-
99
- // Persona Analysis
100
- if (report.personaAnalysis) {
101
- lines.push('\n' + chalk.yellow('Persona Performance:'));
102
- Object.entries(report.personaAnalysis).forEach(([persona, analysis]) => {
103
- lines.push(`\n ${chalk.green(persona)}:`);
104
- lines.push(` Sessions: ${analysis.sessionCount}`);
105
- lines.push(` Completion Rate: ${(analysis.completionRate * 100).toFixed(1)}%`);
106
- lines.push(` Avg Quality: ${(analysis.averageQualityScore * 100).toFixed(1)}%`);
107
- lines.push(` Token Efficiency: ${(analysis.tokenEfficiency * 100).toFixed(1)}%`);
108
-
109
- if (analysis.bestUseCases?.length) {
110
- lines.push(` Best For: ${analysis.bestUseCases.join(', ')}`);
111
- }
112
- });
113
- }
114
-
115
- // Recommendations
116
- if (report.recommendations?.length) {
117
- lines.push('\n' + chalk.yellow('Recommendations:'));
118
- report.recommendations.forEach(rec => {
119
- const icon = rec.priority === 'high' ? '🔴' : '🟡';
120
- lines.push(` ${icon} ${rec.message}`);
121
- });
122
- }
123
-
124
- return lines.join('\n');
125
- }
126
-
127
- /**
128
- * Command handlers
129
- */
130
- export const commands = {
131
- /**
132
- * Switch to a specific persona
133
- */
134
- '/project:aiwf:ai_persona:switch': async (args) => {
135
- const personaName = args[0];
136
-
137
- if (!personaName) {
138
- return chalk.red('Error: Please specify a persona name (architect, security, frontend, backend, data_analyst)');
139
- }
140
-
141
- try {
142
- const manager = await getPersonaManager();
143
-
144
- if (!manager.isValidPersona(personaName)) {
145
- return chalk.red(`Error: Invalid persona '${personaName}'. Available personas: ${manager.getAvailablePersonas().join(', ')}`);
146
- }
147
-
148
- await manager.switchPersona(personaName, { manual: true });
149
-
150
- // Initialize background monitor (non-blocking)
151
- const monitor = getBackgroundMonitor();
152
- monitor.initialize().catch(() => {}); // Ignore errors
153
-
154
- return chalk.green(`✅ Switched to ${personaName} persona`);
155
- } catch (error) {
156
- return chalk.red(`Error: ${error.message}`);
157
- }
158
- },
159
-
160
- /**
161
- * Shortcuts for specific personas
162
- */
163
- '/project:aiwf:ai_persona:architect': async () => {
164
- return commands['/project:aiwf:ai_persona:switch'](['architect']);
165
- },
166
-
167
- '/project:aiwf:ai_persona:security': async () => {
168
- return commands['/project:aiwf:ai_persona:switch'](['security']);
169
- },
170
-
171
- '/project:aiwf:ai_persona:frontend': async () => {
172
- return commands['/project:aiwf:ai_persona:switch'](['frontend']);
173
- },
174
-
175
- '/project:aiwf:ai_persona:backend': async () => {
176
- return commands['/project:aiwf:ai_persona:switch'](['backend']);
177
- },
178
-
179
- '/project:aiwf:ai_persona:data_analyst': async () => {
180
- return commands['/project:aiwf:ai_persona:switch'](['data_analyst']);
181
- },
182
-
183
- // Shorter aliases for personas
184
- '/aiwf:persona:architect': async () => {
185
- return commands['/project:aiwf:ai_persona:switch'](['architect']);
186
- },
187
-
188
- '/aiwf:persona:security': async () => {
189
- return commands['/project:aiwf:ai_persona:switch'](['security']);
190
- },
191
-
192
- '/aiwf:persona:frontend': async () => {
193
- return commands['/project:aiwf:ai_persona:switch'](['frontend']);
194
- },
195
-
196
- '/aiwf:persona:backend': async () => {
197
- return commands['/project:aiwf:ai_persona:switch'](['backend']);
198
- },
199
-
200
- '/aiwf:persona:data_analyst': async () => {
201
- return commands['/project:aiwf:ai_persona:switch'](['data_analyst']);
202
- },
203
-
204
- /**
205
- * Enable/disable auto-detection
206
- */
207
- '/project:aiwf:ai_persona:auto': async (args) => {
208
- const enabled = args[0] !== 'false' && args[0] !== 'off';
209
-
210
- try {
211
- const manager = await getPersonaManager();
212
- manager.options.autoDetectionEnabled = enabled;
213
-
214
- return chalk.green(`✅ Auto-detection ${enabled ? 'enabled' : 'disabled'}`);
215
- } catch (error) {
216
- return chalk.red(`Error: ${error.message}`);
217
- }
218
- },
219
-
220
- /**
221
- * Show current persona status
222
- */
223
- '/project:aiwf:ai_persona:status': async () => {
224
- try {
225
- const manager = await getPersonaManager();
226
- const current = manager.getCurrentPersona();
227
-
228
- if (!current) {
229
- return chalk.yellow('No persona currently active');
230
- }
231
-
232
- const metrics = await manager.metricsCollector.getCurrentSessionMetrics();
233
-
234
- return formatPersonaStatus(current, metrics);
235
- } catch (error) {
236
- return chalk.red(`Error: ${error.message}`);
237
- }
238
- },
239
-
240
- /**
241
- * Generate persona performance report
242
- */
243
- '/project:aiwf:ai_persona:report': async (args) => {
244
- const timeRange = args[0] || 'all';
245
-
246
- try {
247
- const manager = await getPersonaManager();
248
- const report = await manager.generateReport({ timeRange });
249
-
250
- return formatPersonaReport(report);
251
- } catch (error) {
252
- return chalk.red(`Error: ${error.message}`);
253
- }
254
- },
255
-
256
- /**
257
- * List available personas
258
- */
259
- '/project:aiwf:ai_persona:list': async () => {
260
- try {
261
- const manager = await getPersonaManager();
262
- const personas = manager.getAvailablePersonas();
263
- const current = manager.getCurrentPersona();
264
-
265
- const lines = [];
266
- lines.push(chalk.cyan('🎭 Available AI Personas'));
267
- lines.push(chalk.gray('━'.repeat(50)));
268
-
269
- for (const personaName of personas) {
270
- const persona = manager.availablePersonas[personaName];
271
- const isCurrent = current?.name === personaName;
272
-
273
- lines.push(`\n${isCurrent ? '▶ ' : ' '}${chalk.yellow(personaName)}${isCurrent ? ' (current)' : ''}`);
274
- lines.push(` ${persona.description}`);
275
-
276
- if (persona.focusAreas?.length) {
277
- lines.push(` Focus: ${persona.focusAreas.slice(0, 3).join(', ')}`);
278
- }
279
- }
280
-
281
- lines.push('\n' + chalk.gray('Use /project:aiwf:ai_persona:switch <name> to change persona'));
282
-
283
- return lines.join('\n');
284
- } catch (error) {
285
- return chalk.red(`Error: ${error.message}`);
286
- }
287
- },
288
-
289
- /**
290
- * Get persona statistics
291
- */
292
- '/project:aiwf:ai_persona:stats': async (args) => {
293
- const personaName = args[0];
294
-
295
- try {
296
- const manager = await getPersonaManager();
297
-
298
- if (personaName && !manager.isValidPersona(personaName)) {
299
- return chalk.red(`Error: Invalid persona '${personaName}'`);
300
- }
301
-
302
- const targetPersona = personaName || manager.getCurrentPersona()?.name;
303
-
304
- if (!targetPersona) {
305
- return chalk.yellow('No persona specified or active');
306
- }
307
-
308
- const stats = await manager.getPersonaStats(targetPersona);
309
-
310
- if (stats.message) {
311
- return chalk.yellow(stats.message);
312
- }
313
-
314
- const lines = [];
315
- lines.push(chalk.cyan(`📊 ${targetPersona} Persona Statistics`));
316
- lines.push(chalk.gray('━'.repeat(50)));
317
- lines.push(`Total Sessions: ${stats.totalSessions}`);
318
- lines.push(`Completion Rate: ${(stats.completionRate * 100).toFixed(1)}%`);
319
- lines.push(`Average Duration: ${Math.round(stats.averageDuration / 1000)}s`);
320
- lines.push(`Average Tokens: ${Math.round(stats.averageTokens)}`);
321
- lines.push(`Error Rate: ${stats.errorRate.toFixed(2)} per session`);
322
- lines.push(`Average Quality: ${(stats.averageQualityScore * 100).toFixed(1)}%`);
323
-
324
- if (stats.taskDistribution && Object.keys(stats.taskDistribution).length > 0) {
325
- lines.push('\nTask Distribution:');
326
- Object.entries(stats.taskDistribution).forEach(([task, count]) => {
327
- lines.push(` ${task}: ${count}`);
328
- });
329
- }
330
-
331
- return lines.join('\n');
332
- } catch (error) {
333
- return chalk.red(`Error: ${error.message}`);
334
- }
335
- },
336
-
337
- /**
338
- * Reset persona system
339
- */
340
- '/project:aiwf:ai_persona:reset': async () => {
341
- try {
342
- const manager = await getPersonaManager();
343
- await manager.reset();
344
-
345
- return chalk.green('✅ Persona system reset to default');
346
- } catch (error) {
347
- return chalk.red(`Error: ${error.message}`);
348
- }
349
- },
350
-
351
- /**
352
- * Detect optimal persona for current task
353
- */
354
- '/project:aiwf:ai_persona:detect': async (args) => {
355
- const command = args.join(' ');
356
-
357
- if (!command) {
358
- return chalk.red('Error: Please provide a task description');
359
- }
360
-
361
- try {
362
- const manager = await getPersonaManager();
363
-
364
- const taskContext = {
365
- command,
366
- description: command
367
- };
368
-
369
- const optimal = await manager.detectOptimalPersona(taskContext);
370
-
371
- const lines = [];
372
- lines.push(chalk.cyan('🔍 Persona Detection Result'));
373
- lines.push(chalk.gray('━'.repeat(50)));
374
- lines.push(`Task: "${command}"`);
375
- lines.push(`Recommended Persona: ${chalk.yellow(optimal)}`);
376
-
377
- const persona = manager.availablePersonas[optimal];
378
- if (persona) {
379
- lines.push(`\nReason: ${persona.description}`);
380
- lines.push(`Focus Areas: ${persona.focusAreas.join(', ')}`);
381
- }
382
-
383
- lines.push('\n' + chalk.gray('Use /project:aiwf:ai_persona:switch ' + optimal + ' to activate'));
384
-
385
- return lines.join('\n');
386
- } catch (error) {
387
- return chalk.red(`Error: ${error.message}`);
388
- }
389
- },
390
-
391
- // Shorter aliases for common commands
392
- '/aiwf:persona:status': async () => {
393
- return commands['/project:aiwf:ai_persona:status']();
394
- },
395
-
396
- '/aiwf:persona:list': async () => {
397
- return commands['/project:aiwf:ai_persona:list']();
398
- },
399
-
400
- '/aiwf:persona:switch': async (args) => {
401
- return commands['/project:aiwf:ai_persona:switch'](args);
402
- }
403
- };
404
-
405
- /**
406
- * Persona Command Mappings
407
- * Maps persona names to their available command shortcuts
408
- */
409
- export const personaCommandMappings = {
410
- 'architect': [
411
- '/project:aiwf:ai_persona:architect',
412
- '/aiwf:persona:architect'
413
- ],
414
- 'security': [
415
- '/project:aiwf:ai_persona:security',
416
- '/aiwf:persona:security'
417
- ],
418
- 'frontend': [
419
- '/project:aiwf:ai_persona:frontend',
420
- '/aiwf:persona:frontend'
421
- ],
422
- 'backend': [
423
- '/project:aiwf:ai_persona:backend',
424
- '/aiwf:persona:backend'
425
- ],
426
- 'data_analyst': [
427
- '/project:aiwf:ai_persona:data_analyst',
428
- '/aiwf:persona:data_analyst'
429
- ]
430
- };
431
-
432
- /**
433
- * Detailed persona descriptions for AI assistance
434
- */
435
- export const personaDescriptions = {
436
- architect: {
437
- name: 'architect',
438
- description: 'System design and architecture expert focused on scalable, maintainable solutions',
439
- behaviors: [
440
- 'Analyzes overall system architecture and design patterns',
441
- 'Recommends scalable and maintainable solutions',
442
- 'Creates clear architectural diagrams and documentation',
443
- 'Considers non-functional requirements (performance, security, scalability)',
444
- 'Evaluates technology choices and trade-offs'
445
- ],
446
- focusAreas: ['system design', 'architecture patterns', 'scalability', 'maintainability'],
447
- recommendedTools: ['design tools', 'diagramming', 'documentation']
448
- },
449
-
450
- security: {
451
- name: 'security',
452
- description: 'Security specialist ensuring code safety and best practices',
453
- behaviors: [
454
- 'Identifies security vulnerabilities and risks',
455
- 'Implements security best practices',
456
- 'Reviews authentication and authorization logic',
457
- 'Ensures data protection and encryption',
458
- 'Validates input sanitization and output encoding'
459
- ],
460
- focusAreas: ['security audit', 'vulnerability assessment', 'encryption', 'authentication'],
461
- recommendedTools: ['security scanners', 'static analysis', 'penetration testing']
462
- },
463
-
464
- frontend: {
465
- name: 'frontend',
466
- description: 'Frontend development expert specializing in UI/UX and modern web technologies',
467
- behaviors: [
468
- 'Creates responsive and accessible user interfaces',
469
- 'Optimizes frontend performance and bundle sizes',
470
- 'Implements modern frontend frameworks and patterns',
471
- 'Ensures cross-browser compatibility',
472
- 'Focuses on user experience and interaction design'
473
- ],
474
- focusAreas: ['UI/UX', 'React/Vue/Angular', 'CSS/styling', 'performance optimization'],
475
- recommendedTools: ['component libraries', 'build tools', 'testing frameworks']
476
- },
477
-
478
- backend: {
479
- name: 'backend',
480
- description: 'Backend development specialist for APIs, databases, and server-side logic',
481
- behaviors: [
482
- 'Designs efficient database schemas and queries',
483
- 'Implements robust API endpoints and services',
484
- 'Optimizes server-side performance',
485
- 'Handles data processing and business logic',
486
- 'Ensures data integrity and consistency'
487
- ],
488
- focusAreas: ['API design', 'database optimization', 'microservices', 'server architecture'],
489
- recommendedTools: ['ORMs', 'API frameworks', 'database tools', 'monitoring']
490
- },
491
-
492
- data_analyst: {
493
- name: 'data_analyst',
494
- description: 'Data analysis expert for insights, visualization, and data-driven decisions',
495
- behaviors: [
496
- 'Analyzes data patterns and trends',
497
- 'Creates meaningful visualizations and reports',
498
- 'Implements data processing pipelines',
499
- 'Performs statistical analysis and modeling',
500
- 'Optimizes data queries and transformations'
501
- ],
502
- focusAreas: ['data analysis', 'visualization', 'statistics', 'reporting'],
503
- recommendedTools: ['pandas', 'visualization libraries', 'SQL', 'analytics tools']
504
- }
505
- };
506
-
507
- // Export for testing
508
- export { getPersonaManager };
509
-
510
- /**
511
- * Handle persona command from command line
512
- * Supports direct persona activation and management
513
- */
514
- async function handlePersonaCommand() {
515
- const command = process.argv[2];
516
- const args = process.argv.slice(3);
517
-
518
- // If no command provided, show help
519
- if (!command) {
520
- console.log(chalk.cyan('🎭 AIWF AI Persona Manager'));
521
- console.log(chalk.gray('━'.repeat(50)));
522
- console.log('\nUsage:');
523
- console.log(' ai-persona <persona> Switch to specific persona');
524
- console.log(' ai-persona status Show current persona status');
525
- console.log(' ai-persona list List available personas');
526
- console.log(' ai-persona default Restore default mode');
527
- console.log('\nAvailable personas:');
528
- console.log(' architect - System design and architecture expert');
529
- console.log(' security - Security specialist');
530
- console.log(' frontend - Frontend development expert');
531
- console.log(' backend - Backend development specialist');
532
- console.log(' data_analyst - Data analysis expert');
533
- return;
534
- }
535
-
536
- try {
537
- // Initialize persona manager
538
- const manager = await getPersonaManager();
539
-
540
- // Check if command is a persona name
541
- const validPersonas = ['architect', 'security', 'frontend', 'backend', 'data_analyst'];
542
-
543
- if (validPersonas.includes(command)) {
544
- // Save current persona state
545
- const personaState = {
546
- persona: command,
547
- timestamp: new Date().toISOString(),
548
- contextRules: []
549
- };
550
-
551
- // Load context rules for the persona
552
- try {
553
- const contextPath = path.join(process.cwd(), '.aiwf', 'personas', `${command}_context.json`);
554
- const { readFile } = await import('fs/promises');
555
- const contextData = await readFile(contextPath, 'utf8');
556
- const context = JSON.parse(contextData);
557
- personaState.contextRules = context.rules || [];
558
- } catch (error) {
559
- // Context file might not exist, which is okay
560
- }
561
-
562
- // Save persona state
563
- const statePath = path.join(process.cwd(), '.aiwf', 'current_persona.json');
564
- const { writeFile, mkdir } = await import('fs/promises');
565
- await mkdir(path.dirname(statePath), { recursive: true });
566
- await writeFile(statePath, JSON.stringify(personaState, null, 2));
567
-
568
- // Switch persona
569
- await manager.switchPersona(command, { manual: true });
570
-
571
- console.log(chalk.green(`✅ Activated ${command} persona`));
572
-
573
- // Show persona info
574
- const persona = personaDescriptions[command];
575
- if (persona) {
576
- console.log(chalk.gray('━'.repeat(50)));
577
- console.log(chalk.yellow(`Role: ${persona.description}`));
578
-
579
- if (persona.behaviors?.length) {
580
- console.log('\nKey behaviors:');
581
- persona.behaviors.forEach(behavior => {
582
- console.log(` • ${behavior}`);
583
- });
584
- }
585
-
586
- if (personaState.contextRules?.length) {
587
- console.log('\nContext rules applied:');
588
- personaState.contextRules.forEach(rule => {
589
- console.log(` • ${rule.description || rule.pattern || 'Custom rule'}`);
590
- });
591
- }
592
- }
593
-
594
- return;
595
- }
596
-
597
- // Handle other commands
598
- switch (command) {
599
- case 'status':
600
- const current = manager.getCurrentPersona();
601
- if (current) {
602
- const metrics = await manager.metricsCollector.getCurrentSessionMetrics();
603
- console.log(formatPersonaStatus(current, metrics));
604
- } else {
605
- console.log(chalk.yellow('No persona currently active'));
606
- }
607
- break;
608
-
609
- case 'list':
610
- const personas = manager.getAvailablePersonas();
611
- const currentPersona = manager.getCurrentPersona();
612
-
613
- console.log(chalk.cyan('🎭 Available AI Personas'));
614
- console.log(chalk.gray('━'.repeat(50)));
615
-
616
- for (const personaName of personas) {
617
- const persona = personaDescriptions[personaName];
618
- const isCurrent = currentPersona?.name === personaName;
619
-
620
- console.log(`\n${isCurrent ? '▶ ' : ' '}${chalk.yellow(personaName)}${isCurrent ? ' (current)' : ''}`);
621
- if (persona) {
622
- console.log(` ${persona.description}`);
623
- }
624
- }
625
- break;
626
-
627
- case 'default':
628
- case 'reset':
629
- // Remove persona state file to restore default mode
630
- try {
631
- const statePath = path.join(process.cwd(), '.aiwf', 'current_persona.json');
632
- const { unlink } = await import('fs/promises');
633
- await unlink(statePath);
634
- console.log(chalk.green('✅ Restored default mode'));
635
- } catch (error) {
636
- // File might not exist
637
- console.log(chalk.yellow('Already in default mode'));
638
- }
639
-
640
- // Reset persona manager
641
- await manager.reset();
642
- break;
643
-
644
- default:
645
- // Check if it's a command format
646
- if (command.startsWith('/')) {
647
- if (commands[command]) {
648
- const result = await commands[command](args);
649
- console.log(result);
650
- } else {
651
- console.error(chalk.red(`Unknown command: ${command}`));
652
- }
653
- } else {
654
- console.error(chalk.red(`Unknown command: ${command}`));
655
- console.log(chalk.gray('Use "ai-persona" without arguments to see help'));
656
- }
657
- }
658
- } catch (error) {
659
- console.error(chalk.red(`Error: ${error.message}`));
660
- process.exit(1);
661
- }
662
- }
663
-
664
- // If running directly, handle command line arguments
665
- if (import.meta.url === `file://${process.argv[1]}`) {
666
- handlePersonaCommand();
667
- }