claude-code-workflow 6.2.3 → 6.2.5

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 (930) hide show
  1. package/README.md +145 -294
  2. package/{ccw/dist → dist}/core/routes/codexlens-routes.d.ts.map +1 -1
  3. package/{ccw/dist → dist}/core/routes/codexlens-routes.js +31 -6
  4. package/dist/core/routes/codexlens-routes.js.map +1 -0
  5. package/{ccw/dist → dist}/tools/codex-lens.d.ts +20 -3
  6. package/dist/tools/codex-lens.d.ts.map +1 -0
  7. package/{ccw/dist → dist}/tools/codex-lens.js +166 -37
  8. package/dist/tools/codex-lens.js.map +1 -0
  9. package/package.json +32 -37
  10. package/{ccw/src → src}/core/routes/codexlens-routes.ts +34 -6
  11. package/{ccw/src → src}/templates/dashboard-js/components/mcp-manager.js +7 -12
  12. package/{ccw/src → src}/templates/dashboard-js/i18n.js +157 -1
  13. package/{ccw/src → src}/templates/dashboard-js/views/codexlens-manager.js +790 -25
  14. package/{ccw/src → src}/tools/codex-lens.ts +183 -35
  15. package/.claude/CLAUDE.md +0 -10
  16. package/.claude/agents/action-planning-agent.md +0 -857
  17. package/.claude/agents/cli-execution-agent.md +0 -267
  18. package/.claude/agents/cli-explore-agent.md +0 -182
  19. package/.claude/agents/cli-lite-planning-agent.md +0 -446
  20. package/.claude/agents/cli-planning-agent.md +0 -558
  21. package/.claude/agents/code-developer.md +0 -311
  22. package/.claude/agents/conceptual-planning-agent.md +0 -308
  23. package/.claude/agents/context-search-agent.md +0 -581
  24. package/.claude/agents/doc-generator.md +0 -330
  25. package/.claude/agents/memory-bridge.md +0 -94
  26. package/.claude/agents/test-context-search-agent.md +0 -400
  27. package/.claude/agents/test-fix-agent.md +0 -344
  28. package/.claude/agents/ui-design-agent.md +0 -593
  29. package/.claude/agents/universal-executor.md +0 -131
  30. package/.claude/commands/clean.md +0 -516
  31. package/.claude/commands/cli/cli-init.md +0 -440
  32. package/.claude/commands/enhance-prompt.md +0 -93
  33. package/.claude/commands/memory/code-map-memory.md +0 -687
  34. package/.claude/commands/memory/compact.md +0 -383
  35. package/.claude/commands/memory/docs-full-cli.md +0 -471
  36. package/.claude/commands/memory/docs-related-cli.md +0 -386
  37. package/.claude/commands/memory/docs.md +0 -615
  38. package/.claude/commands/memory/load-skill-memory.md +0 -182
  39. package/.claude/commands/memory/load.md +0 -240
  40. package/.claude/commands/memory/skill-memory.md +0 -525
  41. package/.claude/commands/memory/style-skill-memory.md +0 -396
  42. package/.claude/commands/memory/tech-research-rules.md +0 -310
  43. package/.claude/commands/memory/update-full.md +0 -332
  44. package/.claude/commands/memory/update-related.md +0 -332
  45. package/.claude/commands/memory/workflow-skill-memory.md +0 -517
  46. package/.claude/commands/task/breakdown.md +0 -204
  47. package/.claude/commands/task/create.md +0 -152
  48. package/.claude/commands/task/execute.md +0 -270
  49. package/.claude/commands/task/replan.md +0 -437
  50. package/.claude/commands/version.md +0 -254
  51. package/.claude/commands/workflow/action-plan-verify.md +0 -447
  52. package/.claude/commands/workflow/brainstorm/api-designer.md +0 -587
  53. package/.claude/commands/workflow/brainstorm/artifacts.md +0 -453
  54. package/.claude/commands/workflow/brainstorm/auto-parallel.md +0 -443
  55. package/.claude/commands/workflow/brainstorm/data-architect.md +0 -220
  56. package/.claude/commands/workflow/brainstorm/product-manager.md +0 -200
  57. package/.claude/commands/workflow/brainstorm/product-owner.md +0 -200
  58. package/.claude/commands/workflow/brainstorm/scrum-master.md +0 -200
  59. package/.claude/commands/workflow/brainstorm/subject-matter-expert.md +0 -200
  60. package/.claude/commands/workflow/brainstorm/synthesis.md +0 -398
  61. package/.claude/commands/workflow/brainstorm/system-architect.md +0 -389
  62. package/.claude/commands/workflow/brainstorm/ui-designer.md +0 -221
  63. package/.claude/commands/workflow/brainstorm/ux-expert.md +0 -221
  64. package/.claude/commands/workflow/debug.md +0 -321
  65. package/.claude/commands/workflow/execute.md +0 -475
  66. package/.claude/commands/workflow/init.md +0 -165
  67. package/.claude/commands/workflow/lite-execute.md +0 -792
  68. package/.claude/commands/workflow/lite-fix.md +0 -623
  69. package/.claude/commands/workflow/lite-plan.md +0 -610
  70. package/.claude/commands/workflow/plan.md +0 -551
  71. package/.claude/commands/workflow/replan.md +0 -515
  72. package/.claude/commands/workflow/review-fix.md +0 -606
  73. package/.claude/commands/workflow/review-module-cycle.md +0 -767
  74. package/.claude/commands/workflow/review-session-cycle.md +0 -778
  75. package/.claude/commands/workflow/review.md +0 -297
  76. package/.claude/commands/workflow/session/complete.md +0 -153
  77. package/.claude/commands/workflow/session/list.md +0 -96
  78. package/.claude/commands/workflow/session/resume.md +0 -61
  79. package/.claude/commands/workflow/session/start.md +0 -200
  80. package/.claude/commands/workflow/tdd-plan.md +0 -460
  81. package/.claude/commands/workflow/tdd-verify.md +0 -400
  82. package/.claude/commands/workflow/test-cycle-execute.md +0 -500
  83. package/.claude/commands/workflow/test-fix-gen.md +0 -699
  84. package/.claude/commands/workflow/test-gen.md +0 -529
  85. package/.claude/commands/workflow/tools/conflict-resolution.md +0 -766
  86. package/.claude/commands/workflow/tools/context-gather.md +0 -436
  87. package/.claude/commands/workflow/tools/task-generate-agent.md +0 -490
  88. package/.claude/commands/workflow/tools/task-generate-tdd.md +0 -526
  89. package/.claude/commands/workflow/tools/tdd-coverage-analysis.md +0 -309
  90. package/.claude/commands/workflow/tools/test-concept-enhanced.md +0 -164
  91. package/.claude/commands/workflow/tools/test-context-gather.md +0 -236
  92. package/.claude/commands/workflow/tools/test-task-generate.md +0 -257
  93. package/.claude/commands/workflow/ui-design/animation-extract.md +0 -1150
  94. package/.claude/commands/workflow/ui-design/codify-style.md +0 -652
  95. package/.claude/commands/workflow/ui-design/design-sync.md +0 -454
  96. package/.claude/commands/workflow/ui-design/explore-auto.md +0 -678
  97. package/.claude/commands/workflow/ui-design/generate.md +0 -504
  98. package/.claude/commands/workflow/ui-design/imitate-auto.md +0 -745
  99. package/.claude/commands/workflow/ui-design/import-from-code.md +0 -540
  100. package/.claude/commands/workflow/ui-design/layout-extract.md +0 -788
  101. package/.claude/commands/workflow/ui-design/reference-page-generator.md +0 -356
  102. package/.claude/commands/workflow/ui-design/style-extract.md +0 -773
  103. package/.claude/skills/command-guide/SKILL.md +0 -388
  104. package/.claude/skills/command-guide/UPDATE-GUIDELINE.md +0 -592
  105. package/.claude/skills/command-guide/guides/cli-tools-guide.md +0 -410
  106. package/.claude/skills/command-guide/guides/examples.md +0 -537
  107. package/.claude/skills/command-guide/guides/getting-started.md +0 -242
  108. package/.claude/skills/command-guide/guides/implementation-details.md +0 -1010
  109. package/.claude/skills/command-guide/guides/index-structure.md +0 -326
  110. package/.claude/skills/command-guide/guides/troubleshooting.md +0 -92
  111. package/.claude/skills/command-guide/guides/ui-design-workflow-guide.md +0 -316
  112. package/.claude/skills/command-guide/guides/workflow-patterns.md +0 -662
  113. package/.claude/skills/command-guide/index/all-commands.json +0 -772
  114. package/.claude/skills/command-guide/index/by-category.json +0 -800
  115. package/.claude/skills/command-guide/index/by-use-case.json +0 -786
  116. package/.claude/skills/command-guide/index/command-relationships.json +0 -307
  117. package/.claude/skills/command-guide/index/essential-commands.json +0 -112
  118. package/.claude/skills/command-guide/reference/agents/action-planning-agent.md +0 -857
  119. package/.claude/skills/command-guide/reference/agents/cli-execution-agent.md +0 -267
  120. package/.claude/skills/command-guide/reference/agents/cli-explore-agent.md +0 -182
  121. package/.claude/skills/command-guide/reference/agents/cli-lite-planning-agent.md +0 -446
  122. package/.claude/skills/command-guide/reference/agents/cli-planning-agent.md +0 -558
  123. package/.claude/skills/command-guide/reference/agents/code-developer.md +0 -311
  124. package/.claude/skills/command-guide/reference/agents/conceptual-planning-agent.md +0 -308
  125. package/.claude/skills/command-guide/reference/agents/context-search-agent.md +0 -581
  126. package/.claude/skills/command-guide/reference/agents/doc-generator.md +0 -330
  127. package/.claude/skills/command-guide/reference/agents/memory-bridge.md +0 -94
  128. package/.claude/skills/command-guide/reference/agents/test-context-search-agent.md +0 -400
  129. package/.claude/skills/command-guide/reference/agents/test-fix-agent.md +0 -344
  130. package/.claude/skills/command-guide/reference/agents/ui-design-agent.md +0 -593
  131. package/.claude/skills/command-guide/reference/agents/universal-executor.md +0 -131
  132. package/.claude/skills/command-guide/reference/commands/cli/cli-init.md +0 -440
  133. package/.claude/skills/command-guide/reference/commands/enhance-prompt.md +0 -93
  134. package/.claude/skills/command-guide/reference/commands/memory/code-map-memory.md +0 -687
  135. package/.claude/skills/command-guide/reference/commands/memory/docs-full-cli.md +0 -471
  136. package/.claude/skills/command-guide/reference/commands/memory/docs-related-cli.md +0 -386
  137. package/.claude/skills/command-guide/reference/commands/memory/docs.md +0 -616
  138. package/.claude/skills/command-guide/reference/commands/memory/load-skill-memory.md +0 -182
  139. package/.claude/skills/command-guide/reference/commands/memory/load.md +0 -240
  140. package/.claude/skills/command-guide/reference/commands/memory/skill-memory.md +0 -525
  141. package/.claude/skills/command-guide/reference/commands/memory/style-skill-memory.md +0 -396
  142. package/.claude/skills/command-guide/reference/commands/memory/tech-research.md +0 -314
  143. package/.claude/skills/command-guide/reference/commands/memory/update-full.md +0 -332
  144. package/.claude/skills/command-guide/reference/commands/memory/update-related.md +0 -332
  145. package/.claude/skills/command-guide/reference/commands/memory/workflow-skill-memory.md +0 -517
  146. package/.claude/skills/command-guide/reference/commands/task/breakdown.md +0 -204
  147. package/.claude/skills/command-guide/reference/commands/task/create.md +0 -152
  148. package/.claude/skills/command-guide/reference/commands/task/execute.md +0 -270
  149. package/.claude/skills/command-guide/reference/commands/task/replan.md +0 -437
  150. package/.claude/skills/command-guide/reference/commands/version.md +0 -254
  151. package/.claude/skills/command-guide/reference/commands/workflow/action-plan-verify.md +0 -447
  152. package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/api-designer.md +0 -585
  153. package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/artifacts.md +0 -452
  154. package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/auto-parallel.md +0 -443
  155. package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/data-architect.md +0 -220
  156. package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/product-manager.md +0 -200
  157. package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/product-owner.md +0 -200
  158. package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/scrum-master.md +0 -200
  159. package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/subject-matter-expert.md +0 -200
  160. package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/synthesis.md +0 -398
  161. package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/system-architect.md +0 -387
  162. package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/ui-designer.md +0 -221
  163. package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/ux-expert.md +0 -221
  164. package/.claude/skills/command-guide/reference/commands/workflow/execute.md +0 -465
  165. package/.claude/skills/command-guide/reference/commands/workflow/init.md +0 -164
  166. package/.claude/skills/command-guide/reference/commands/workflow/lite-execute.md +0 -748
  167. package/.claude/skills/command-guide/reference/commands/workflow/lite-fix.md +0 -664
  168. package/.claude/skills/command-guide/reference/commands/workflow/lite-plan.md +0 -645
  169. package/.claude/skills/command-guide/reference/commands/workflow/plan.md +0 -551
  170. package/.claude/skills/command-guide/reference/commands/workflow/replan.md +0 -515
  171. package/.claude/skills/command-guide/reference/commands/workflow/review-fix.md +0 -606
  172. package/.claude/skills/command-guide/reference/commands/workflow/review-module-cycle.md +0 -765
  173. package/.claude/skills/command-guide/reference/commands/workflow/review-session-cycle.md +0 -776
  174. package/.claude/skills/command-guide/reference/commands/workflow/review.md +0 -298
  175. package/.claude/skills/command-guide/reference/commands/workflow/session/complete.md +0 -547
  176. package/.claude/skills/command-guide/reference/commands/workflow/session/list.md +0 -114
  177. package/.claude/skills/command-guide/reference/commands/workflow/session/resume.md +0 -77
  178. package/.claude/skills/command-guide/reference/commands/workflow/session/start.md +0 -257
  179. package/.claude/skills/command-guide/reference/commands/workflow/tdd-plan.md +0 -460
  180. package/.claude/skills/command-guide/reference/commands/workflow/tdd-verify.md +0 -400
  181. package/.claude/skills/command-guide/reference/commands/workflow/test-cycle-execute.md +0 -498
  182. package/.claude/skills/command-guide/reference/commands/workflow/test-fix-gen.md +0 -699
  183. package/.claude/skills/command-guide/reference/commands/workflow/test-gen.md +0 -529
  184. package/.claude/skills/command-guide/reference/commands/workflow/tools/conflict-resolution.md +0 -766
  185. package/.claude/skills/command-guide/reference/commands/workflow/tools/context-gather.md +0 -434
  186. package/.claude/skills/command-guide/reference/commands/workflow/tools/task-generate-agent.md +0 -487
  187. package/.claude/skills/command-guide/reference/commands/workflow/tools/task-generate-tdd.md +0 -525
  188. package/.claude/skills/command-guide/reference/commands/workflow/tools/tdd-coverage-analysis.md +0 -309
  189. package/.claude/skills/command-guide/reference/commands/workflow/tools/test-concept-enhanced.md +0 -163
  190. package/.claude/skills/command-guide/reference/commands/workflow/tools/test-context-gather.md +0 -235
  191. package/.claude/skills/command-guide/reference/commands/workflow/tools/test-task-generate.md +0 -256
  192. package/.claude/skills/command-guide/reference/commands/workflow/ui-design/animation-extract.md +0 -1150
  193. package/.claude/skills/command-guide/reference/commands/workflow/ui-design/codify-style.md +0 -652
  194. package/.claude/skills/command-guide/reference/commands/workflow/ui-design/design-sync.md +0 -454
  195. package/.claude/skills/command-guide/reference/commands/workflow/ui-design/explore-auto.md +0 -678
  196. package/.claude/skills/command-guide/reference/commands/workflow/ui-design/generate.md +0 -504
  197. package/.claude/skills/command-guide/reference/commands/workflow/ui-design/imitate-auto.md +0 -745
  198. package/.claude/skills/command-guide/reference/commands/workflow/ui-design/import-from-code.md +0 -537
  199. package/.claude/skills/command-guide/reference/commands/workflow/ui-design/layout-extract.md +0 -788
  200. package/.claude/skills/command-guide/reference/commands/workflow/ui-design/reference-page-generator.md +0 -356
  201. package/.claude/skills/command-guide/reference/commands/workflow/ui-design/style-extract.md +0 -773
  202. package/.claude/skills/command-guide/scripts/analyze_commands.py +0 -502
  203. package/.claude/skills/command-guide/scripts/update-index.sh +0 -130
  204. package/.claude/skills/command-guide/templates/issue-bug.md +0 -104
  205. package/.claude/skills/command-guide/templates/issue-diagnosis.md +0 -275
  206. package/.claude/skills/command-guide/templates/issue-feature.md +0 -97
  207. package/.claude/skills/command-guide/templates/issue-question.md +0 -141
  208. package/.claude/skills/prompt-enhancer/SKILL.md +0 -124
  209. package/.claude/workflows/_template-compare-matrix.html +0 -692
  210. package/.claude/workflows/chinese-response.md +0 -38
  211. package/.claude/workflows/cli-templates/fix-plan-template.json +0 -75
  212. package/.claude/workflows/cli-templates/fix-progress-template.json +0 -48
  213. package/.claude/workflows/cli-templates/memory/style-skill-memory/skill-md-template.md +0 -299
  214. package/.claude/workflows/cli-templates/planning-roles/data-architect.md +0 -120
  215. package/.claude/workflows/cli-templates/planning-roles/product-manager.md +0 -119
  216. package/.claude/workflows/cli-templates/planning-roles/product-owner.md +0 -261
  217. package/.claude/workflows/cli-templates/planning-roles/scrum-master.md +0 -186
  218. package/.claude/workflows/cli-templates/planning-roles/subject-matter-expert.md +0 -281
  219. package/.claude/workflows/cli-templates/planning-roles/synthesis-role.md +0 -414
  220. package/.claude/workflows/cli-templates/planning-roles/system-architect.md +0 -106
  221. package/.claude/workflows/cli-templates/planning-roles/test-strategist.md +0 -124
  222. package/.claude/workflows/cli-templates/planning-roles/ui-designer.md +0 -379
  223. package/.claude/workflows/cli-templates/planning-roles/ux-expert.md +0 -240
  224. package/.claude/workflows/cli-templates/prompts/analysis/01-diagnose-bug-root-cause.txt +0 -127
  225. package/.claude/workflows/cli-templates/prompts/analysis/01-trace-code-execution.txt +0 -115
  226. package/.claude/workflows/cli-templates/prompts/analysis/02-analyze-code-patterns.txt +0 -37
  227. package/.claude/workflows/cli-templates/prompts/analysis/02-analyze-technical-document.txt +0 -33
  228. package/.claude/workflows/cli-templates/prompts/analysis/02-review-architecture.txt +0 -29
  229. package/.claude/workflows/cli-templates/prompts/analysis/02-review-code-quality.txt +0 -28
  230. package/.claude/workflows/cli-templates/prompts/analysis/03-analyze-performance.txt +0 -29
  231. package/.claude/workflows/cli-templates/prompts/analysis/03-assess-security-risks.txt +0 -29
  232. package/.claude/workflows/cli-templates/prompts/analysis/03-review-quality-standards.txt +0 -29
  233. package/.claude/workflows/cli-templates/prompts/development/02-generate-tests.txt +0 -70
  234. package/.claude/workflows/cli-templates/prompts/development/02-implement-component-ui.txt +0 -55
  235. package/.claude/workflows/cli-templates/prompts/development/02-implement-feature.txt +0 -58
  236. package/.claude/workflows/cli-templates/prompts/development/02-refactor-codebase.txt +0 -55
  237. package/.claude/workflows/cli-templates/prompts/development/03-debug-runtime-issues.txt +0 -55
  238. package/.claude/workflows/cli-templates/prompts/documentation/api.txt +0 -15
  239. package/.claude/workflows/cli-templates/prompts/documentation/folder-navigation.txt +0 -27
  240. package/.claude/workflows/cli-templates/prompts/documentation/module-readme.txt +0 -49
  241. package/.claude/workflows/cli-templates/prompts/documentation/project-architecture.txt +0 -41
  242. package/.claude/workflows/cli-templates/prompts/documentation/project-examples.txt +0 -35
  243. package/.claude/workflows/cli-templates/prompts/documentation/project-readme.txt +0 -35
  244. package/.claude/workflows/cli-templates/prompts/memory/02-document-module-structure.txt +0 -165
  245. package/.claude/workflows/cli-templates/prompts/planning/01-plan-architecture-design.txt +0 -109
  246. package/.claude/workflows/cli-templates/prompts/planning/02-breakdown-task-steps.txt +0 -30
  247. package/.claude/workflows/cli-templates/prompts/planning/02-design-component-spec.txt +0 -28
  248. package/.claude/workflows/cli-templates/prompts/planning/03-evaluate-concept-feasibility.txt +0 -127
  249. package/.claude/workflows/cli-templates/prompts/planning/03-plan-migration-strategy.txt +0 -30
  250. package/.claude/workflows/cli-templates/prompts/rules/rule-api.txt +0 -122
  251. package/.claude/workflows/cli-templates/prompts/rules/rule-components.txt +0 -122
  252. package/.claude/workflows/cli-templates/prompts/rules/rule-config.txt +0 -89
  253. package/.claude/workflows/cli-templates/prompts/rules/rule-core.txt +0 -60
  254. package/.claude/workflows/cli-templates/prompts/rules/rule-patterns.txt +0 -70
  255. package/.claude/workflows/cli-templates/prompts/rules/rule-testing.txt +0 -81
  256. package/.claude/workflows/cli-templates/prompts/rules/tech-rules-agent-prompt.txt +0 -89
  257. package/.claude/workflows/cli-templates/prompts/tech/tech-module-format.txt +0 -359
  258. package/.claude/workflows/cli-templates/prompts/tech/tech-skill-index.txt +0 -185
  259. package/.claude/workflows/cli-templates/prompts/test/test-concept-analysis.txt +0 -179
  260. package/.claude/workflows/cli-templates/prompts/universal/00-universal-creative-style.txt +0 -95
  261. package/.claude/workflows/cli-templates/prompts/universal/00-universal-rigorous-style.txt +0 -92
  262. package/.claude/workflows/cli-templates/prompts/verification/codex-technical.txt +0 -28
  263. package/.claude/workflows/cli-templates/prompts/verification/cross-validation.txt +0 -28
  264. package/.claude/workflows/cli-templates/prompts/verification/gemini-strategic.txt +0 -27
  265. package/.claude/workflows/cli-templates/prompts/workflow/analysis-results-structure.txt +0 -224
  266. package/.claude/workflows/cli-templates/prompts/workflow/codex-feasibility-validation.txt +0 -176
  267. package/.claude/workflows/cli-templates/prompts/workflow/gemini-solution-design.txt +0 -131
  268. package/.claude/workflows/cli-templates/prompts/workflow/impl-plan-template.txt +0 -286
  269. package/.claude/workflows/cli-templates/prompts/workflow/skill-aggregation.txt +0 -172
  270. package/.claude/workflows/cli-templates/prompts/workflow/skill-conflict-patterns.txt +0 -94
  271. package/.claude/workflows/cli-templates/prompts/workflow/skill-index.txt +0 -224
  272. package/.claude/workflows/cli-templates/prompts/workflow/skill-lessons-learned.txt +0 -94
  273. package/.claude/workflows/cli-templates/prompts/workflow/skill-sessions-timeline.txt +0 -53
  274. package/.claude/workflows/cli-templates/prompts/workflow/task-json-agent-mode.txt +0 -123
  275. package/.claude/workflows/cli-templates/prompts/workflow/task-json-cli-mode.txt +0 -182
  276. package/.claude/workflows/cli-templates/protocols/analysis-protocol.md +0 -112
  277. package/.claude/workflows/cli-templates/protocols/write-protocol.md +0 -201
  278. package/.claude/workflows/cli-templates/schemas/conflict-resolution-schema.json +0 -137
  279. package/.claude/workflows/cli-templates/schemas/debug-log-json-schema.json +0 -127
  280. package/.claude/workflows/cli-templates/schemas/diagnosis-json-schema.json +0 -234
  281. package/.claude/workflows/cli-templates/schemas/explore-json-schema.json +0 -124
  282. package/.claude/workflows/cli-templates/schemas/fix-plan-json-schema.json +0 -298
  283. package/.claude/workflows/cli-templates/schemas/plan-json-schema.json +0 -244
  284. package/.claude/workflows/cli-templates/schemas/project-json-schema.json +0 -221
  285. package/.claude/workflows/cli-templates/schemas/review-deep-dive-results-schema.json +0 -82
  286. package/.claude/workflows/cli-templates/schemas/review-dimension-results-schema.json +0 -51
  287. package/.claude/workflows/cli-templates/tech-stacks/go-dev.md +0 -91
  288. package/.claude/workflows/cli-templates/tech-stacks/java-dev.md +0 -107
  289. package/.claude/workflows/cli-templates/tech-stacks/javascript-dev.md +0 -58
  290. package/.claude/workflows/cli-templates/tech-stacks/python-dev.md +0 -79
  291. package/.claude/workflows/cli-templates/tech-stacks/react-dev.md +0 -103
  292. package/.claude/workflows/cli-templates/tech-stacks/typescript-dev.md +0 -83
  293. package/.claude/workflows/cli-templates/ui-design/systems/animation-tokens.json +0 -247
  294. package/.claude/workflows/cli-templates/ui-design/systems/design-tokens.json +0 -342
  295. package/.claude/workflows/cli-templates/ui-design/systems/layout-templates.json +0 -145
  296. package/.claude/workflows/cli-tools-usage.md +0 -526
  297. package/.claude/workflows/coding-philosophy.md +0 -70
  298. package/.claude/workflows/context-tools.md +0 -84
  299. package/.claude/workflows/file-modification.md +0 -64
  300. package/.claude/workflows/review-directory-specification.md +0 -336
  301. package/.claude/workflows/task-core.md +0 -214
  302. package/.claude/workflows/tool-strategy.md +0 -216
  303. package/.claude/workflows/windows-platform.md +0 -16
  304. package/.claude/workflows/workflow-architecture.md +0 -942
  305. package/.codex/AGENTS.md +0 -63
  306. package/.codex/prompts/debug.md +0 -318
  307. package/.codex/prompts/execute.md +0 -273
  308. package/.codex/prompts/lite-execute.md +0 -164
  309. package/.codex/prompts/lite-plan.md +0 -469
  310. package/.codex/prompts.zip +0 -0
  311. package/.gemini/GEMINI.md +0 -25
  312. package/.qwen/QWEN.md +0 -25
  313. package/LICENSE +0 -21
  314. package/ccw/README.md +0 -145
  315. package/ccw/dist/core/routes/codexlens-routes.js.map +0 -1
  316. package/ccw/dist/tools/codex-lens.d.ts.map +0 -1
  317. package/ccw/dist/tools/codex-lens.js.map +0 -1
  318. package/ccw/package.json +0 -65
  319. package/codex-lens/pyproject.toml +0 -48
  320. package/codex-lens/src/codexlens/.workflow/.cli-history/history.db +0 -0
  321. package/codex-lens/src/codexlens/__init__.py +0 -28
  322. package/codex-lens/src/codexlens/__main__.py +0 -14
  323. package/codex-lens/src/codexlens/__pycache__/__init__.cpython-313.pyc +0 -0
  324. package/codex-lens/src/codexlens/__pycache__/__main__.cpython-313.pyc +0 -0
  325. package/codex-lens/src/codexlens/__pycache__/config.cpython-313.pyc +0 -0
  326. package/codex-lens/src/codexlens/__pycache__/entities.cpython-313.pyc +0 -0
  327. package/codex-lens/src/codexlens/__pycache__/errors.cpython-313.pyc +0 -0
  328. package/codex-lens/src/codexlens/cli/__init__.py +0 -27
  329. package/codex-lens/src/codexlens/cli/__pycache__/__init__.cpython-313.pyc +0 -0
  330. package/codex-lens/src/codexlens/cli/__pycache__/commands.cpython-313.pyc +0 -0
  331. package/codex-lens/src/codexlens/cli/__pycache__/embedding_manager.cpython-313.pyc +0 -0
  332. package/codex-lens/src/codexlens/cli/__pycache__/model_manager.cpython-313.pyc +0 -0
  333. package/codex-lens/src/codexlens/cli/__pycache__/output.cpython-313.pyc +0 -0
  334. package/codex-lens/src/codexlens/cli/commands.py +0 -1931
  335. package/codex-lens/src/codexlens/cli/embedding_manager.py +0 -620
  336. package/codex-lens/src/codexlens/cli/model_manager.py +0 -289
  337. package/codex-lens/src/codexlens/cli/output.py +0 -124
  338. package/codex-lens/src/codexlens/config.py +0 -201
  339. package/codex-lens/src/codexlens/entities.py +0 -121
  340. package/codex-lens/src/codexlens/errors.py +0 -55
  341. package/codex-lens/src/codexlens/indexing/README.md +0 -77
  342. package/codex-lens/src/codexlens/indexing/__init__.py +0 -4
  343. package/codex-lens/src/codexlens/indexing/__pycache__/__init__.cpython-313.pyc +0 -0
  344. package/codex-lens/src/codexlens/indexing/__pycache__/symbol_extractor.cpython-313.pyc +0 -0
  345. package/codex-lens/src/codexlens/indexing/symbol_extractor.py +0 -243
  346. package/codex-lens/src/codexlens/parsers/__init__.py +0 -8
  347. package/codex-lens/src/codexlens/parsers/__pycache__/__init__.cpython-313.pyc +0 -0
  348. package/codex-lens/src/codexlens/parsers/__pycache__/encoding.cpython-313.pyc +0 -0
  349. package/codex-lens/src/codexlens/parsers/__pycache__/factory.cpython-313.pyc +0 -0
  350. package/codex-lens/src/codexlens/parsers/__pycache__/tokenizer.cpython-313.pyc +0 -0
  351. package/codex-lens/src/codexlens/parsers/__pycache__/treesitter_parser.cpython-313.pyc +0 -0
  352. package/codex-lens/src/codexlens/parsers/encoding.py +0 -202
  353. package/codex-lens/src/codexlens/parsers/factory.py +0 -256
  354. package/codex-lens/src/codexlens/parsers/tokenizer.py +0 -98
  355. package/codex-lens/src/codexlens/parsers/treesitter_parser.py +0 -335
  356. package/codex-lens/src/codexlens/search/__init__.py +0 -15
  357. package/codex-lens/src/codexlens/search/__pycache__/__init__.cpython-313.pyc +0 -0
  358. package/codex-lens/src/codexlens/search/__pycache__/chain_search.cpython-313.pyc +0 -0
  359. package/codex-lens/src/codexlens/search/__pycache__/enrichment.cpython-313.pyc +0 -0
  360. package/codex-lens/src/codexlens/search/__pycache__/hybrid_search.cpython-313.pyc +0 -0
  361. package/codex-lens/src/codexlens/search/__pycache__/query_parser.cpython-313.pyc +0 -0
  362. package/codex-lens/src/codexlens/search/__pycache__/ranking.cpython-313.pyc +0 -0
  363. package/codex-lens/src/codexlens/search/chain_search.py +0 -647
  364. package/codex-lens/src/codexlens/search/enrichment.py +0 -150
  365. package/codex-lens/src/codexlens/search/hybrid_search.py +0 -313
  366. package/codex-lens/src/codexlens/search/query_parser.py +0 -242
  367. package/codex-lens/src/codexlens/search/ranking.py +0 -274
  368. package/codex-lens/src/codexlens/semantic/__init__.py +0 -39
  369. package/codex-lens/src/codexlens/semantic/__pycache__/__init__.cpython-313.pyc +0 -0
  370. package/codex-lens/src/codexlens/semantic/__pycache__/ann_index.cpython-313.pyc +0 -0
  371. package/codex-lens/src/codexlens/semantic/__pycache__/chunker.cpython-313.pyc +0 -0
  372. package/codex-lens/src/codexlens/semantic/__pycache__/code_extractor.cpython-313.pyc +0 -0
  373. package/codex-lens/src/codexlens/semantic/__pycache__/embedder.cpython-313.pyc +0 -0
  374. package/codex-lens/src/codexlens/semantic/__pycache__/graph_analyzer.cpython-313.pyc +0 -0
  375. package/codex-lens/src/codexlens/semantic/__pycache__/llm_enhancer.cpython-313.pyc +0 -0
  376. package/codex-lens/src/codexlens/semantic/__pycache__/vector_store.cpython-313.pyc +0 -0
  377. package/codex-lens/src/codexlens/semantic/ann_index.py +0 -414
  378. package/codex-lens/src/codexlens/semantic/chunker.py +0 -448
  379. package/codex-lens/src/codexlens/semantic/code_extractor.py +0 -274
  380. package/codex-lens/src/codexlens/semantic/embedder.py +0 -185
  381. package/codex-lens/src/codexlens/semantic/vector_store.py +0 -955
  382. package/codex-lens/src/codexlens/storage/__init__.py +0 -29
  383. package/codex-lens/src/codexlens/storage/__pycache__/__init__.cpython-313.pyc +0 -0
  384. package/codex-lens/src/codexlens/storage/__pycache__/dir_index.cpython-313.pyc +0 -0
  385. package/codex-lens/src/codexlens/storage/__pycache__/file_cache.cpython-313.pyc +0 -0
  386. package/codex-lens/src/codexlens/storage/__pycache__/index_tree.cpython-313.pyc +0 -0
  387. package/codex-lens/src/codexlens/storage/__pycache__/migration_manager.cpython-313.pyc +0 -0
  388. package/codex-lens/src/codexlens/storage/__pycache__/path_mapper.cpython-313.pyc +0 -0
  389. package/codex-lens/src/codexlens/storage/__pycache__/registry.cpython-313.pyc +0 -0
  390. package/codex-lens/src/codexlens/storage/__pycache__/sqlite_store.cpython-313.pyc +0 -0
  391. package/codex-lens/src/codexlens/storage/__pycache__/sqlite_utils.cpython-313.pyc +0 -0
  392. package/codex-lens/src/codexlens/storage/dir_index.py +0 -1850
  393. package/codex-lens/src/codexlens/storage/file_cache.py +0 -32
  394. package/codex-lens/src/codexlens/storage/index_tree.py +0 -776
  395. package/codex-lens/src/codexlens/storage/migration_manager.py +0 -154
  396. package/codex-lens/src/codexlens/storage/migrations/__init__.py +0 -1
  397. package/codex-lens/src/codexlens/storage/migrations/__pycache__/__init__.cpython-313.pyc +0 -0
  398. package/codex-lens/src/codexlens/storage/migrations/__pycache__/migration_001_normalize_keywords.cpython-313.pyc +0 -0
  399. package/codex-lens/src/codexlens/storage/migrations/__pycache__/migration_002_add_token_metadata.cpython-313.pyc +0 -0
  400. package/codex-lens/src/codexlens/storage/migrations/__pycache__/migration_003_code_relationships.cpython-313.pyc +0 -0
  401. package/codex-lens/src/codexlens/storage/migrations/__pycache__/migration_004_dual_fts.cpython-313.pyc +0 -0
  402. package/codex-lens/src/codexlens/storage/migrations/__pycache__/migration_005_cleanup_unused_fields.cpython-313.pyc +0 -0
  403. package/codex-lens/src/codexlens/storage/migrations/migration_001_normalize_keywords.py +0 -123
  404. package/codex-lens/src/codexlens/storage/migrations/migration_002_add_token_metadata.py +0 -48
  405. package/codex-lens/src/codexlens/storage/migrations/migration_004_dual_fts.py +0 -232
  406. package/codex-lens/src/codexlens/storage/migrations/migration_005_cleanup_unused_fields.py +0 -196
  407. package/codex-lens/src/codexlens/storage/path_mapper.py +0 -274
  408. package/codex-lens/src/codexlens/storage/registry.py +0 -670
  409. package/codex-lens/src/codexlens/storage/sqlite_store.py +0 -576
  410. package/codex-lens/src/codexlens/storage/sqlite_utils.py +0 -64
  411. /package/{ccw/bin → bin}/ccw-mcp.js +0 -0
  412. /package/{ccw/bin → bin}/ccw.js +0 -0
  413. /package/{ccw/dist → dist}/cli.d.ts +0 -0
  414. /package/{ccw/dist → dist}/cli.d.ts.map +0 -0
  415. /package/{ccw/dist → dist}/cli.js +0 -0
  416. /package/{ccw/dist → dist}/cli.js.map +0 -0
  417. /package/{ccw/dist → dist}/commands/cli.d.ts +0 -0
  418. /package/{ccw/dist → dist}/commands/cli.d.ts.map +0 -0
  419. /package/{ccw/dist → dist}/commands/cli.js +0 -0
  420. /package/{ccw/dist → dist}/commands/cli.js.map +0 -0
  421. /package/{ccw/dist → dist}/commands/core-memory.d.ts +0 -0
  422. /package/{ccw/dist → dist}/commands/core-memory.d.ts.map +0 -0
  423. /package/{ccw/dist → dist}/commands/core-memory.js +0 -0
  424. /package/{ccw/dist → dist}/commands/core-memory.js.map +0 -0
  425. /package/{ccw/dist → dist}/commands/hook.d.ts +0 -0
  426. /package/{ccw/dist → dist}/commands/hook.d.ts.map +0 -0
  427. /package/{ccw/dist → dist}/commands/hook.js +0 -0
  428. /package/{ccw/dist → dist}/commands/hook.js.map +0 -0
  429. /package/{ccw/dist → dist}/commands/install.d.ts +0 -0
  430. /package/{ccw/dist → dist}/commands/install.d.ts.map +0 -0
  431. /package/{ccw/dist → dist}/commands/install.js +0 -0
  432. /package/{ccw/dist → dist}/commands/install.js.map +0 -0
  433. /package/{ccw/dist → dist}/commands/list.d.ts +0 -0
  434. /package/{ccw/dist → dist}/commands/list.d.ts.map +0 -0
  435. /package/{ccw/dist → dist}/commands/list.js +0 -0
  436. /package/{ccw/dist → dist}/commands/list.js.map +0 -0
  437. /package/{ccw/dist → dist}/commands/memory.d.ts +0 -0
  438. /package/{ccw/dist → dist}/commands/memory.d.ts.map +0 -0
  439. /package/{ccw/dist → dist}/commands/memory.js +0 -0
  440. /package/{ccw/dist → dist}/commands/memory.js.map +0 -0
  441. /package/{ccw/dist → dist}/commands/serve.d.ts +0 -0
  442. /package/{ccw/dist → dist}/commands/serve.d.ts.map +0 -0
  443. /package/{ccw/dist → dist}/commands/serve.js +0 -0
  444. /package/{ccw/dist → dist}/commands/serve.js.map +0 -0
  445. /package/{ccw/dist → dist}/commands/session-path-resolver.d.ts +0 -0
  446. /package/{ccw/dist → dist}/commands/session-path-resolver.d.ts.map +0 -0
  447. /package/{ccw/dist → dist}/commands/session-path-resolver.js +0 -0
  448. /package/{ccw/dist → dist}/commands/session-path-resolver.js.map +0 -0
  449. /package/{ccw/dist → dist}/commands/session.d.ts +0 -0
  450. /package/{ccw/dist → dist}/commands/session.d.ts.map +0 -0
  451. /package/{ccw/dist → dist}/commands/session.js +0 -0
  452. /package/{ccw/dist → dist}/commands/session.js.map +0 -0
  453. /package/{ccw/dist → dist}/commands/stop.d.ts +0 -0
  454. /package/{ccw/dist → dist}/commands/stop.d.ts.map +0 -0
  455. /package/{ccw/dist → dist}/commands/stop.js +0 -0
  456. /package/{ccw/dist → dist}/commands/stop.js.map +0 -0
  457. /package/{ccw/dist → dist}/commands/tool.d.ts +0 -0
  458. /package/{ccw/dist → dist}/commands/tool.d.ts.map +0 -0
  459. /package/{ccw/dist → dist}/commands/tool.js +0 -0
  460. /package/{ccw/dist → dist}/commands/tool.js.map +0 -0
  461. /package/{ccw/dist → dist}/commands/uninstall.d.ts +0 -0
  462. /package/{ccw/dist → dist}/commands/uninstall.d.ts.map +0 -0
  463. /package/{ccw/dist → dist}/commands/uninstall.js +0 -0
  464. /package/{ccw/dist → dist}/commands/uninstall.js.map +0 -0
  465. /package/{ccw/dist → dist}/commands/upgrade.d.ts +0 -0
  466. /package/{ccw/dist → dist}/commands/upgrade.d.ts.map +0 -0
  467. /package/{ccw/dist → dist}/commands/upgrade.js +0 -0
  468. /package/{ccw/dist → dist}/commands/upgrade.js.map +0 -0
  469. /package/{ccw/dist → dist}/commands/view.d.ts +0 -0
  470. /package/{ccw/dist → dist}/commands/view.d.ts.map +0 -0
  471. /package/{ccw/dist → dist}/commands/view.js +0 -0
  472. /package/{ccw/dist → dist}/commands/view.js.map +0 -0
  473. /package/{ccw/dist → dist}/config/storage-paths.d.ts +0 -0
  474. /package/{ccw/dist → dist}/config/storage-paths.d.ts.map +0 -0
  475. /package/{ccw/dist → dist}/config/storage-paths.js +0 -0
  476. /package/{ccw/dist → dist}/config/storage-paths.js.map +0 -0
  477. /package/{ccw/dist → dist}/core/cache-manager.d.ts +0 -0
  478. /package/{ccw/dist → dist}/core/cache-manager.d.ts.map +0 -0
  479. /package/{ccw/dist → dist}/core/cache-manager.js +0 -0
  480. /package/{ccw/dist → dist}/core/cache-manager.js.map +0 -0
  481. /package/{ccw/dist → dist}/core/claude-freshness.d.ts +0 -0
  482. /package/{ccw/dist → dist}/core/claude-freshness.d.ts.map +0 -0
  483. /package/{ccw/dist → dist}/core/claude-freshness.js +0 -0
  484. /package/{ccw/dist → dist}/core/claude-freshness.js.map +0 -0
  485. /package/{ccw/dist → dist}/core/core-memory-store.d.ts +0 -0
  486. /package/{ccw/dist → dist}/core/core-memory-store.d.ts.map +0 -0
  487. /package/{ccw/dist → dist}/core/core-memory-store.js +0 -0
  488. /package/{ccw/dist → dist}/core/core-memory-store.js.map +0 -0
  489. /package/{ccw/dist → dist}/core/dashboard-generator-patch.d.ts +0 -0
  490. /package/{ccw/dist → dist}/core/dashboard-generator-patch.d.ts.map +0 -0
  491. /package/{ccw/dist → dist}/core/dashboard-generator-patch.js +0 -0
  492. /package/{ccw/dist → dist}/core/dashboard-generator-patch.js.map +0 -0
  493. /package/{ccw/dist → dist}/core/dashboard-generator.d.ts +0 -0
  494. /package/{ccw/dist → dist}/core/dashboard-generator.d.ts.map +0 -0
  495. /package/{ccw/dist → dist}/core/dashboard-generator.js +0 -0
  496. /package/{ccw/dist → dist}/core/dashboard-generator.js.map +0 -0
  497. /package/{ccw/dist → dist}/core/data-aggregator.d.ts +0 -0
  498. /package/{ccw/dist → dist}/core/data-aggregator.d.ts.map +0 -0
  499. /package/{ccw/dist → dist}/core/data-aggregator.js +0 -0
  500. /package/{ccw/dist → dist}/core/data-aggregator.js.map +0 -0
  501. /package/{ccw/dist → dist}/core/history-importer.d.ts +0 -0
  502. /package/{ccw/dist → dist}/core/history-importer.d.ts.map +0 -0
  503. /package/{ccw/dist → dist}/core/history-importer.js +0 -0
  504. /package/{ccw/dist → dist}/core/history-importer.js.map +0 -0
  505. /package/{ccw/dist → dist}/core/lite-scanner-complete.d.ts +0 -0
  506. /package/{ccw/dist → dist}/core/lite-scanner-complete.d.ts.map +0 -0
  507. /package/{ccw/dist → dist}/core/lite-scanner-complete.js +0 -0
  508. /package/{ccw/dist → dist}/core/lite-scanner-complete.js.map +0 -0
  509. /package/{ccw/dist → dist}/core/lite-scanner.d.ts +0 -0
  510. /package/{ccw/dist → dist}/core/lite-scanner.d.ts.map +0 -0
  511. /package/{ccw/dist → dist}/core/lite-scanner.js +0 -0
  512. /package/{ccw/dist → dist}/core/lite-scanner.js.map +0 -0
  513. /package/{ccw/dist → dist}/core/manifest.d.ts +0 -0
  514. /package/{ccw/dist → dist}/core/manifest.d.ts.map +0 -0
  515. /package/{ccw/dist → dist}/core/manifest.js +0 -0
  516. /package/{ccw/dist → dist}/core/manifest.js.map +0 -0
  517. /package/{ccw/dist → dist}/core/memory-embedder-bridge.d.ts +0 -0
  518. /package/{ccw/dist → dist}/core/memory-embedder-bridge.d.ts.map +0 -0
  519. /package/{ccw/dist → dist}/core/memory-embedder-bridge.js +0 -0
  520. /package/{ccw/dist → dist}/core/memory-embedder-bridge.js.map +0 -0
  521. /package/{ccw/dist → dist}/core/memory-store.d.ts +0 -0
  522. /package/{ccw/dist → dist}/core/memory-store.d.ts.map +0 -0
  523. /package/{ccw/dist → dist}/core/memory-store.js +0 -0
  524. /package/{ccw/dist → dist}/core/memory-store.js.map +0 -0
  525. /package/{ccw/dist → dist}/core/routes/ccw-routes.d.ts +0 -0
  526. /package/{ccw/dist → dist}/core/routes/ccw-routes.d.ts.map +0 -0
  527. /package/{ccw/dist → dist}/core/routes/ccw-routes.js +0 -0
  528. /package/{ccw/dist → dist}/core/routes/ccw-routes.js.map +0 -0
  529. /package/{ccw/dist → dist}/core/routes/claude-routes.d.ts +0 -0
  530. /package/{ccw/dist → dist}/core/routes/claude-routes.d.ts.map +0 -0
  531. /package/{ccw/dist → dist}/core/routes/claude-routes.js +0 -0
  532. /package/{ccw/dist → dist}/core/routes/claude-routes.js.map +0 -0
  533. /package/{ccw/dist → dist}/core/routes/cli-routes.d.ts +0 -0
  534. /package/{ccw/dist → dist}/core/routes/cli-routes.d.ts.map +0 -0
  535. /package/{ccw/dist → dist}/core/routes/cli-routes.js +0 -0
  536. /package/{ccw/dist → dist}/core/routes/cli-routes.js.map +0 -0
  537. /package/{ccw/dist → dist}/core/routes/codexlens-routes.d.ts +0 -0
  538. /package/{ccw/dist → dist}/core/routes/core-memory-routes.d.ts +0 -0
  539. /package/{ccw/dist → dist}/core/routes/core-memory-routes.d.ts.map +0 -0
  540. /package/{ccw/dist → dist}/core/routes/core-memory-routes.js +0 -0
  541. /package/{ccw/dist → dist}/core/routes/core-memory-routes.js.map +0 -0
  542. /package/{ccw/dist → dist}/core/routes/files-routes.d.ts +0 -0
  543. /package/{ccw/dist → dist}/core/routes/files-routes.d.ts.map +0 -0
  544. /package/{ccw/dist → dist}/core/routes/files-routes.js +0 -0
  545. /package/{ccw/dist → dist}/core/routes/files-routes.js.map +0 -0
  546. /package/{ccw/dist → dist}/core/routes/graph-routes.d.ts +0 -0
  547. /package/{ccw/dist → dist}/core/routes/graph-routes.d.ts.map +0 -0
  548. /package/{ccw/dist → dist}/core/routes/graph-routes.js +0 -0
  549. /package/{ccw/dist → dist}/core/routes/graph-routes.js.map +0 -0
  550. /package/{ccw/dist → dist}/core/routes/help-routes.d.ts +0 -0
  551. /package/{ccw/dist → dist}/core/routes/help-routes.d.ts.map +0 -0
  552. /package/{ccw/dist → dist}/core/routes/help-routes.js +0 -0
  553. /package/{ccw/dist → dist}/core/routes/help-routes.js.map +0 -0
  554. /package/{ccw/dist → dist}/core/routes/hooks-routes.d.ts +0 -0
  555. /package/{ccw/dist → dist}/core/routes/hooks-routes.d.ts.map +0 -0
  556. /package/{ccw/dist → dist}/core/routes/hooks-routes.js +0 -0
  557. /package/{ccw/dist → dist}/core/routes/hooks-routes.js.map +0 -0
  558. /package/{ccw/dist → dist}/core/routes/mcp-routes.d.ts +0 -0
  559. /package/{ccw/dist → dist}/core/routes/mcp-routes.d.ts.map +0 -0
  560. /package/{ccw/dist → dist}/core/routes/mcp-routes.js +0 -0
  561. /package/{ccw/dist → dist}/core/routes/mcp-routes.js.map +0 -0
  562. /package/{ccw/dist → dist}/core/routes/mcp-templates-db.d.ts +0 -0
  563. /package/{ccw/dist → dist}/core/routes/mcp-templates-db.d.ts.map +0 -0
  564. /package/{ccw/dist → dist}/core/routes/mcp-templates-db.js +0 -0
  565. /package/{ccw/dist → dist}/core/routes/mcp-templates-db.js.map +0 -0
  566. /package/{ccw/dist → dist}/core/routes/memory-routes.d.ts +0 -0
  567. /package/{ccw/dist → dist}/core/routes/memory-routes.d.ts.map +0 -0
  568. /package/{ccw/dist → dist}/core/routes/memory-routes.js +0 -0
  569. /package/{ccw/dist → dist}/core/routes/memory-routes.js.map +0 -0
  570. /package/{ccw/dist → dist}/core/routes/rules-routes.d.ts +0 -0
  571. /package/{ccw/dist → dist}/core/routes/rules-routes.d.ts.map +0 -0
  572. /package/{ccw/dist → dist}/core/routes/rules-routes.js +0 -0
  573. /package/{ccw/dist → dist}/core/routes/rules-routes.js.map +0 -0
  574. /package/{ccw/dist → dist}/core/routes/session-routes.d.ts +0 -0
  575. /package/{ccw/dist → dist}/core/routes/session-routes.d.ts.map +0 -0
  576. /package/{ccw/dist → dist}/core/routes/session-routes.js +0 -0
  577. /package/{ccw/dist → dist}/core/routes/session-routes.js.map +0 -0
  578. /package/{ccw/dist → dist}/core/routes/skills-routes.d.ts +0 -0
  579. /package/{ccw/dist → dist}/core/routes/skills-routes.d.ts.map +0 -0
  580. /package/{ccw/dist → dist}/core/routes/skills-routes.js +0 -0
  581. /package/{ccw/dist → dist}/core/routes/skills-routes.js.map +0 -0
  582. /package/{ccw/dist → dist}/core/routes/status-routes.d.ts +0 -0
  583. /package/{ccw/dist → dist}/core/routes/status-routes.d.ts.map +0 -0
  584. /package/{ccw/dist → dist}/core/routes/status-routes.js +0 -0
  585. /package/{ccw/dist → dist}/core/routes/status-routes.js.map +0 -0
  586. /package/{ccw/dist → dist}/core/routes/system-routes.d.ts +0 -0
  587. /package/{ccw/dist → dist}/core/routes/system-routes.d.ts.map +0 -0
  588. /package/{ccw/dist → dist}/core/routes/system-routes.js +0 -0
  589. /package/{ccw/dist → dist}/core/routes/system-routes.js.map +0 -0
  590. /package/{ccw/dist → dist}/core/server.d.ts +0 -0
  591. /package/{ccw/dist → dist}/core/server.d.ts.map +0 -0
  592. /package/{ccw/dist → dist}/core/server.js +0 -0
  593. /package/{ccw/dist → dist}/core/server.js.map +0 -0
  594. /package/{ccw/dist → dist}/core/session-clustering-service.d.ts +0 -0
  595. /package/{ccw/dist → dist}/core/session-clustering-service.d.ts.map +0 -0
  596. /package/{ccw/dist → dist}/core/session-clustering-service.js +0 -0
  597. /package/{ccw/dist → dist}/core/session-clustering-service.js.map +0 -0
  598. /package/{ccw/dist → dist}/core/session-scanner.d.ts +0 -0
  599. /package/{ccw/dist → dist}/core/session-scanner.d.ts.map +0 -0
  600. /package/{ccw/dist → dist}/core/session-scanner.js +0 -0
  601. /package/{ccw/dist → dist}/core/session-scanner.js.map +0 -0
  602. /package/{ccw/dist → dist}/core/websocket.d.ts +0 -0
  603. /package/{ccw/dist → dist}/core/websocket.d.ts.map +0 -0
  604. /package/{ccw/dist → dist}/core/websocket.js +0 -0
  605. /package/{ccw/dist → dist}/core/websocket.js.map +0 -0
  606. /package/{ccw/dist → dist}/index.d.ts +0 -0
  607. /package/{ccw/dist → dist}/index.d.ts.map +0 -0
  608. /package/{ccw/dist → dist}/index.js +0 -0
  609. /package/{ccw/dist → dist}/index.js.map +0 -0
  610. /package/{ccw/dist → dist}/mcp-server/index.d.ts +0 -0
  611. /package/{ccw/dist → dist}/mcp-server/index.d.ts.map +0 -0
  612. /package/{ccw/dist → dist}/mcp-server/index.js +0 -0
  613. /package/{ccw/dist → dist}/mcp-server/index.js.map +0 -0
  614. /package/{ccw/dist → dist}/tools/classify-folders.d.ts +0 -0
  615. /package/{ccw/dist → dist}/tools/classify-folders.d.ts.map +0 -0
  616. /package/{ccw/dist → dist}/tools/classify-folders.js +0 -0
  617. /package/{ccw/dist → dist}/tools/classify-folders.js.map +0 -0
  618. /package/{ccw/dist → dist}/tools/cli-config-manager.d.ts +0 -0
  619. /package/{ccw/dist → dist}/tools/cli-config-manager.d.ts.map +0 -0
  620. /package/{ccw/dist → dist}/tools/cli-config-manager.js +0 -0
  621. /package/{ccw/dist → dist}/tools/cli-config-manager.js.map +0 -0
  622. /package/{ccw/dist → dist}/tools/cli-executor.d.ts +0 -0
  623. /package/{ccw/dist → dist}/tools/cli-executor.d.ts.map +0 -0
  624. /package/{ccw/dist → dist}/tools/cli-executor.js +0 -0
  625. /package/{ccw/dist → dist}/tools/cli-executor.js.map +0 -0
  626. /package/{ccw/dist → dist}/tools/cli-history-store.d.ts +0 -0
  627. /package/{ccw/dist → dist}/tools/cli-history-store.d.ts.map +0 -0
  628. /package/{ccw/dist → dist}/tools/cli-history-store.js +0 -0
  629. /package/{ccw/dist → dist}/tools/cli-history-store.js.map +0 -0
  630. /package/{ccw/dist → dist}/tools/convert-tokens-to-css.d.ts +0 -0
  631. /package/{ccw/dist → dist}/tools/convert-tokens-to-css.d.ts.map +0 -0
  632. /package/{ccw/dist → dist}/tools/convert-tokens-to-css.js +0 -0
  633. /package/{ccw/dist → dist}/tools/convert-tokens-to-css.js.map +0 -0
  634. /package/{ccw/dist → dist}/tools/core-memory.d.ts +0 -0
  635. /package/{ccw/dist → dist}/tools/core-memory.d.ts.map +0 -0
  636. /package/{ccw/dist → dist}/tools/core-memory.js +0 -0
  637. /package/{ccw/dist → dist}/tools/core-memory.js.map +0 -0
  638. /package/{ccw/dist → dist}/tools/detect-changed-modules.d.ts +0 -0
  639. /package/{ccw/dist → dist}/tools/detect-changed-modules.d.ts.map +0 -0
  640. /package/{ccw/dist → dist}/tools/detect-changed-modules.js +0 -0
  641. /package/{ccw/dist → dist}/tools/detect-changed-modules.js.map +0 -0
  642. /package/{ccw/dist → dist}/tools/discover-design-files.d.ts +0 -0
  643. /package/{ccw/dist → dist}/tools/discover-design-files.d.ts.map +0 -0
  644. /package/{ccw/dist → dist}/tools/discover-design-files.js +0 -0
  645. /package/{ccw/dist → dist}/tools/discover-design-files.js.map +0 -0
  646. /package/{ccw/dist → dist}/tools/edit-file.d.ts +0 -0
  647. /package/{ccw/dist → dist}/tools/edit-file.d.ts.map +0 -0
  648. /package/{ccw/dist → dist}/tools/edit-file.js +0 -0
  649. /package/{ccw/dist → dist}/tools/edit-file.js.map +0 -0
  650. /package/{ccw/dist → dist}/tools/generate-module-docs.d.ts +0 -0
  651. /package/{ccw/dist → dist}/tools/generate-module-docs.d.ts.map +0 -0
  652. /package/{ccw/dist → dist}/tools/generate-module-docs.js +0 -0
  653. /package/{ccw/dist → dist}/tools/generate-module-docs.js.map +0 -0
  654. /package/{ccw/dist → dist}/tools/get-modules-by-depth.d.ts +0 -0
  655. /package/{ccw/dist → dist}/tools/get-modules-by-depth.d.ts.map +0 -0
  656. /package/{ccw/dist → dist}/tools/get-modules-by-depth.js +0 -0
  657. /package/{ccw/dist → dist}/tools/get-modules-by-depth.js.map +0 -0
  658. /package/{ccw/dist → dist}/tools/index.d.ts +0 -0
  659. /package/{ccw/dist → dist}/tools/index.d.ts.map +0 -0
  660. /package/{ccw/dist → dist}/tools/index.js +0 -0
  661. /package/{ccw/dist → dist}/tools/index.js.map +0 -0
  662. /package/{ccw/dist → dist}/tools/native-session-discovery.d.ts +0 -0
  663. /package/{ccw/dist → dist}/tools/native-session-discovery.d.ts.map +0 -0
  664. /package/{ccw/dist → dist}/tools/native-session-discovery.js +0 -0
  665. /package/{ccw/dist → dist}/tools/native-session-discovery.js.map +0 -0
  666. /package/{ccw/dist → dist}/tools/notifier.d.ts +0 -0
  667. /package/{ccw/dist → dist}/tools/notifier.d.ts.map +0 -0
  668. /package/{ccw/dist → dist}/tools/notifier.js +0 -0
  669. /package/{ccw/dist → dist}/tools/notifier.js.map +0 -0
  670. /package/{ccw/dist → dist}/tools/read-file.d.ts +0 -0
  671. /package/{ccw/dist → dist}/tools/read-file.d.ts.map +0 -0
  672. /package/{ccw/dist → dist}/tools/read-file.js +0 -0
  673. /package/{ccw/dist → dist}/tools/read-file.js.map +0 -0
  674. /package/{ccw/dist → dist}/tools/resume-strategy.d.ts +0 -0
  675. /package/{ccw/dist → dist}/tools/resume-strategy.d.ts.map +0 -0
  676. /package/{ccw/dist → dist}/tools/resume-strategy.js +0 -0
  677. /package/{ccw/dist → dist}/tools/resume-strategy.js.map +0 -0
  678. /package/{ccw/dist → dist}/tools/session-content-parser.d.ts +0 -0
  679. /package/{ccw/dist → dist}/tools/session-content-parser.d.ts.map +0 -0
  680. /package/{ccw/dist → dist}/tools/session-content-parser.js +0 -0
  681. /package/{ccw/dist → dist}/tools/session-content-parser.js.map +0 -0
  682. /package/{ccw/dist → dist}/tools/session-manager.d.ts +0 -0
  683. /package/{ccw/dist → dist}/tools/session-manager.d.ts.map +0 -0
  684. /package/{ccw/dist → dist}/tools/session-manager.js +0 -0
  685. /package/{ccw/dist → dist}/tools/session-manager.js.map +0 -0
  686. /package/{ccw/dist → dist}/tools/smart-context.d.ts +0 -0
  687. /package/{ccw/dist → dist}/tools/smart-context.d.ts.map +0 -0
  688. /package/{ccw/dist → dist}/tools/smart-context.js +0 -0
  689. /package/{ccw/dist → dist}/tools/smart-context.js.map +0 -0
  690. /package/{ccw/dist → dist}/tools/smart-search.d.ts +0 -0
  691. /package/{ccw/dist → dist}/tools/smart-search.d.ts.map +0 -0
  692. /package/{ccw/dist → dist}/tools/smart-search.js +0 -0
  693. /package/{ccw/dist → dist}/tools/smart-search.js.map +0 -0
  694. /package/{ccw/dist → dist}/tools/storage-manager.d.ts +0 -0
  695. /package/{ccw/dist → dist}/tools/storage-manager.d.ts.map +0 -0
  696. /package/{ccw/dist → dist}/tools/storage-manager.js +0 -0
  697. /package/{ccw/dist → dist}/tools/storage-manager.js.map +0 -0
  698. /package/{ccw/dist → dist}/tools/ui-generate-preview.d.ts +0 -0
  699. /package/{ccw/dist → dist}/tools/ui-generate-preview.d.ts.map +0 -0
  700. /package/{ccw/dist → dist}/tools/ui-generate-preview.js +0 -0
  701. /package/{ccw/dist → dist}/tools/ui-generate-preview.js.map +0 -0
  702. /package/{ccw/dist → dist}/tools/ui-instantiate-prototypes.d.ts +0 -0
  703. /package/{ccw/dist → dist}/tools/ui-instantiate-prototypes.d.ts.map +0 -0
  704. /package/{ccw/dist → dist}/tools/ui-instantiate-prototypes.js +0 -0
  705. /package/{ccw/dist → dist}/tools/ui-instantiate-prototypes.js.map +0 -0
  706. /package/{ccw/dist → dist}/tools/update-module-claude.d.ts +0 -0
  707. /package/{ccw/dist → dist}/tools/update-module-claude.d.ts.map +0 -0
  708. /package/{ccw/dist → dist}/tools/update-module-claude.js +0 -0
  709. /package/{ccw/dist → dist}/tools/update-module-claude.js.map +0 -0
  710. /package/{ccw/dist → dist}/tools/write-file.d.ts +0 -0
  711. /package/{ccw/dist → dist}/tools/write-file.d.ts.map +0 -0
  712. /package/{ccw/dist → dist}/tools/write-file.js +0 -0
  713. /package/{ccw/dist → dist}/tools/write-file.js.map +0 -0
  714. /package/{ccw/dist → dist}/types/config.d.ts +0 -0
  715. /package/{ccw/dist → dist}/types/config.d.ts.map +0 -0
  716. /package/{ccw/dist → dist}/types/config.js +0 -0
  717. /package/{ccw/dist → dist}/types/config.js.map +0 -0
  718. /package/{ccw/dist → dist}/types/index.d.ts +0 -0
  719. /package/{ccw/dist → dist}/types/index.d.ts.map +0 -0
  720. /package/{ccw/dist → dist}/types/index.js +0 -0
  721. /package/{ccw/dist → dist}/types/index.js.map +0 -0
  722. /package/{ccw/dist → dist}/types/session.d.ts +0 -0
  723. /package/{ccw/dist → dist}/types/session.d.ts.map +0 -0
  724. /package/{ccw/dist → dist}/types/session.js +0 -0
  725. /package/{ccw/dist → dist}/types/session.js.map +0 -0
  726. /package/{ccw/dist → dist}/types/tool.d.ts +0 -0
  727. /package/{ccw/dist → dist}/types/tool.d.ts.map +0 -0
  728. /package/{ccw/dist → dist}/types/tool.js +0 -0
  729. /package/{ccw/dist → dist}/types/tool.js.map +0 -0
  730. /package/{ccw/dist → dist}/utils/browser-launcher.d.ts +0 -0
  731. /package/{ccw/dist → dist}/utils/browser-launcher.d.ts.map +0 -0
  732. /package/{ccw/dist → dist}/utils/browser-launcher.js +0 -0
  733. /package/{ccw/dist → dist}/utils/browser-launcher.js.map +0 -0
  734. /package/{ccw/dist → dist}/utils/file-utils.d.ts +0 -0
  735. /package/{ccw/dist → dist}/utils/file-utils.d.ts.map +0 -0
  736. /package/{ccw/dist → dist}/utils/file-utils.js +0 -0
  737. /package/{ccw/dist → dist}/utils/file-utils.js.map +0 -0
  738. /package/{ccw/dist → dist}/utils/path-resolver.d.ts +0 -0
  739. /package/{ccw/dist → dist}/utils/path-resolver.d.ts.map +0 -0
  740. /package/{ccw/dist → dist}/utils/path-resolver.js +0 -0
  741. /package/{ccw/dist → dist}/utils/path-resolver.js.map +0 -0
  742. /package/{ccw/dist → dist}/utils/path-validator.d.ts +0 -0
  743. /package/{ccw/dist → dist}/utils/path-validator.d.ts.map +0 -0
  744. /package/{ccw/dist → dist}/utils/path-validator.js +0 -0
  745. /package/{ccw/dist → dist}/utils/path-validator.js.map +0 -0
  746. /package/{ccw/dist → dist}/utils/ui.d.ts +0 -0
  747. /package/{ccw/dist → dist}/utils/ui.d.ts.map +0 -0
  748. /package/{ccw/dist → dist}/utils/ui.js +0 -0
  749. /package/{ccw/dist → dist}/utils/ui.js.map +0 -0
  750. /package/{ccw/src → src}/.workflow/.cli-history/history.db +0 -0
  751. /package/{ccw/src → src}/.workflow/.cli-history/history.db-shm +0 -0
  752. /package/{ccw/src → src}/.workflow/.cli-history/history.db-wal +0 -0
  753. /package/{ccw/src → src}/cli.ts +0 -0
  754. /package/{ccw/src → src}/commands/cli.ts +0 -0
  755. /package/{ccw/src → src}/commands/core-memory.ts +0 -0
  756. /package/{ccw/src → src}/commands/hook.ts +0 -0
  757. /package/{ccw/src → src}/commands/install.ts +0 -0
  758. /package/{ccw/src → src}/commands/list.ts +0 -0
  759. /package/{ccw/src → src}/commands/memory.ts +0 -0
  760. /package/{ccw/src → src}/commands/serve.ts +0 -0
  761. /package/{ccw/src → src}/commands/session-path-resolver.ts +0 -0
  762. /package/{ccw/src → src}/commands/session.ts +0 -0
  763. /package/{ccw/src → src}/commands/stop.ts +0 -0
  764. /package/{ccw/src → src}/commands/tool.ts +0 -0
  765. /package/{ccw/src → src}/commands/uninstall.ts +0 -0
  766. /package/{ccw/src → src}/commands/upgrade.ts +0 -0
  767. /package/{ccw/src → src}/commands/view.ts +0 -0
  768. /package/{ccw/src → src}/config/storage-paths.ts +0 -0
  769. /package/{ccw/src → src}/core/cache-manager.ts +0 -0
  770. /package/{ccw/src → src}/core/claude-freshness.ts +0 -0
  771. /package/{ccw/src → src}/core/core-memory-store.ts +0 -0
  772. /package/{ccw/src → src}/core/dashboard-generator-patch.ts +0 -0
  773. /package/{ccw/src → src}/core/dashboard-generator.ts +0 -0
  774. /package/{ccw/src → src}/core/data-aggregator.ts +0 -0
  775. /package/{ccw/src → src}/core/history-importer.ts +0 -0
  776. /package/{ccw/src → src}/core/lite-scanner-complete.ts +0 -0
  777. /package/{ccw/src → src}/core/lite-scanner.ts +0 -0
  778. /package/{ccw/src → src}/core/manifest.ts +0 -0
  779. /package/{ccw/src → src}/core/memory-embedder-bridge.ts +0 -0
  780. /package/{ccw/src → src}/core/memory-store.ts +0 -0
  781. /package/{ccw/src → src}/core/routes/ccw-routes.ts +0 -0
  782. /package/{ccw/src → src}/core/routes/claude-routes.ts +0 -0
  783. /package/{ccw/src → src}/core/routes/cli-routes.ts +0 -0
  784. /package/{ccw/src → src}/core/routes/core-memory-routes.ts +0 -0
  785. /package/{ccw/src → src}/core/routes/files-routes.ts +0 -0
  786. /package/{ccw/src → src}/core/routes/graph-routes.md +0 -0
  787. /package/{ccw/src → src}/core/routes/graph-routes.ts +0 -0
  788. /package/{ccw/src → src}/core/routes/help-routes.ts +0 -0
  789. /package/{ccw/src → src}/core/routes/hooks-routes.ts +0 -0
  790. /package/{ccw/src → src}/core/routes/mcp-routes.ts +0 -0
  791. /package/{ccw/src → src}/core/routes/mcp-routes.ts.backup +0 -0
  792. /package/{ccw/src → src}/core/routes/mcp-templates-db.ts +0 -0
  793. /package/{ccw/src → src}/core/routes/memory-routes.ts +0 -0
  794. /package/{ccw/src → src}/core/routes/rules-routes.ts +0 -0
  795. /package/{ccw/src → src}/core/routes/session-routes.ts +0 -0
  796. /package/{ccw/src → src}/core/routes/skills-routes.ts +0 -0
  797. /package/{ccw/src → src}/core/routes/status-routes.ts +0 -0
  798. /package/{ccw/src → src}/core/routes/system-routes.ts +0 -0
  799. /package/{ccw/src → src}/core/server.ts +0 -0
  800. /package/{ccw/src → src}/core/session-clustering-service.ts +0 -0
  801. /package/{ccw/src → src}/core/session-scanner.ts +0 -0
  802. /package/{ccw/src → src}/core/websocket.ts +0 -0
  803. /package/{ccw/src → src}/index.ts +0 -0
  804. /package/{ccw/src → src}/mcp-server/index.ts +0 -0
  805. /package/{ccw/src → src}/templates/assets/css/github-dark.min.css +0 -0
  806. /package/{ccw/src → src}/templates/assets/css/github.min.css +0 -0
  807. /package/{ccw/src → src}/templates/assets/js/cytoscape.min.js +0 -0
  808. /package/{ccw/src → src}/templates/assets/js/d3.min.js +0 -0
  809. /package/{ccw/src → src}/templates/assets/js/highlight.min.js +0 -0
  810. /package/{ccw/src → src}/templates/assets/js/lucide.min.js +0 -0
  811. /package/{ccw/src → src}/templates/assets/js/marked.min.js +0 -0
  812. /package/{ccw/src → src}/templates/assets/js/tailwind.js +0 -0
  813. /package/{ccw/src → src}/templates/dashboard-css/01-base.css +0 -0
  814. /package/{ccw/src → src}/templates/dashboard-css/02-session.css +0 -0
  815. /package/{ccw/src → src}/templates/dashboard-css/03-tasks.css +0 -0
  816. /package/{ccw/src → src}/templates/dashboard-css/04-lite-tasks.css +0 -0
  817. /package/{ccw/src → src}/templates/dashboard-css/05-context.css +0 -0
  818. /package/{ccw/src → src}/templates/dashboard-css/06-cards.css +0 -0
  819. /package/{ccw/src → src}/templates/dashboard-css/07-managers.css +0 -0
  820. /package/{ccw/src → src}/templates/dashboard-css/08-review.css +0 -0
  821. /package/{ccw/src → src}/templates/dashboard-css/09-explorer.css +0 -0
  822. /package/{ccw/src → src}/templates/dashboard-css/10-cli-status.css +0 -0
  823. /package/{ccw/src → src}/templates/dashboard-css/11-cli-history.css +0 -0
  824. /package/{ccw/src → src}/templates/dashboard-css/12-cli-legacy.css +0 -0
  825. /package/{ccw/src → src}/templates/dashboard-css/13-cli-ccw.css +0 -0
  826. /package/{ccw/src → src}/templates/dashboard-css/14-cli-modals.css +0 -0
  827. /package/{ccw/src → src}/templates/dashboard-css/15-cli-endpoints.css +0 -0
  828. /package/{ccw/src → src}/templates/dashboard-css/16-cli-session.css +0 -0
  829. /package/{ccw/src → src}/templates/dashboard-css/17-cli-conversation.css +0 -0
  830. /package/{ccw/src → src}/templates/dashboard-css/18-cli-settings.css +0 -0
  831. /package/{ccw/src → src}/templates/dashboard-css/19-cli-native-session.css +0 -0
  832. /package/{ccw/src → src}/templates/dashboard-css/20-cli-taskqueue.css +0 -0
  833. /package/{ccw/src → src}/templates/dashboard-css/21-cli-toolmgmt.css +0 -0
  834. /package/{ccw/src → src}/templates/dashboard-css/22-cli-semantic.css +0 -0
  835. /package/{ccw/src → src}/templates/dashboard-css/23-memory.css +0 -0
  836. /package/{ccw/src → src}/templates/dashboard-css/24-prompt-history.css +0 -0
  837. /package/{ccw/src → src}/templates/dashboard-css/25-skills-rules.css +0 -0
  838. /package/{ccw/src → src}/templates/dashboard-css/26-claude-manager.css +0 -0
  839. /package/{ccw/src → src}/templates/dashboard-css/27-graph-explorer.css +0 -0
  840. /package/{ccw/src → src}/templates/dashboard-css/28-mcp-manager.css +0 -0
  841. /package/{ccw/src → src}/templates/dashboard-css/29-help.css +0 -0
  842. /package/{ccw/src → src}/templates/dashboard-css/30-core-memory.css +0 -0
  843. /package/{ccw/src → src}/templates/dashboard-js/api.js +0 -0
  844. /package/{ccw/src → src}/templates/dashboard-js/components/_conflict_tab.js +0 -0
  845. /package/{ccw/src → src}/templates/dashboard-js/components/_exp_helpers.js +0 -0
  846. /package/{ccw/src → src}/templates/dashboard-js/components/_review_tab.js +0 -0
  847. /package/{ccw/src → src}/templates/dashboard-js/components/carousel.js +0 -0
  848. /package/{ccw/src → src}/templates/dashboard-js/components/cli-history.js +0 -0
  849. /package/{ccw/src → src}/templates/dashboard-js/components/cli-status.js +0 -0
  850. /package/{ccw/src → src}/templates/dashboard-js/components/flowchart.js +0 -0
  851. /package/{ccw/src → src}/templates/dashboard-js/components/global-notifications.js +0 -0
  852. /package/{ccw/src → src}/templates/dashboard-js/components/hook-manager.js +0 -0
  853. /package/{ccw/src → src}/templates/dashboard-js/components/index-manager.js +0 -0
  854. /package/{ccw/src → src}/templates/dashboard-js/components/modals.js +0 -0
  855. /package/{ccw/src → src}/templates/dashboard-js/components/navigation.js +0 -0
  856. /package/{ccw/src → src}/templates/dashboard-js/components/notifications.js +0 -0
  857. /package/{ccw/src → src}/templates/dashboard-js/components/sidebar.js +0 -0
  858. /package/{ccw/src → src}/templates/dashboard-js/components/storage-manager.js +0 -0
  859. /package/{ccw/src → src}/templates/dashboard-js/components/tabs-context.js +0 -0
  860. /package/{ccw/src → src}/templates/dashboard-js/components/tabs-other.js +0 -0
  861. /package/{ccw/src → src}/templates/dashboard-js/components/task-drawer-core.js +0 -0
  862. /package/{ccw/src → src}/templates/dashboard-js/components/task-drawer-renderers.js +0 -0
  863. /package/{ccw/src → src}/templates/dashboard-js/components/task-queue-sidebar.js +0 -0
  864. /package/{ccw/src → src}/templates/dashboard-js/components/theme.js +0 -0
  865. /package/{ccw/src → src}/templates/dashboard-js/components/version-check.js +0 -0
  866. /package/{ccw/src → src}/templates/dashboard-js/help-i18n.js +0 -0
  867. /package/{ccw/src → src}/templates/dashboard-js/main.js +0 -0
  868. /package/{ccw/src → src}/templates/dashboard-js/state.js +0 -0
  869. /package/{ccw/src → src}/templates/dashboard-js/utils.js +0 -0
  870. /package/{ccw/src → src}/templates/dashboard-js/views/claude-manager.js +0 -0
  871. /package/{ccw/src → src}/templates/dashboard-js/views/cli-manager.js +0 -0
  872. /package/{ccw/src → src}/templates/dashboard-js/views/core-memory-clusters.js +0 -0
  873. /package/{ccw/src → src}/templates/dashboard-js/views/core-memory.js +0 -0
  874. /package/{ccw/src → src}/templates/dashboard-js/views/explorer.js +0 -0
  875. /package/{ccw/src → src}/templates/dashboard-js/views/fix-session.js +0 -0
  876. /package/{ccw/src → src}/templates/dashboard-js/views/graph-explorer.js +0 -0
  877. /package/{ccw/src → src}/templates/dashboard-js/views/help.js +0 -0
  878. /package/{ccw/src → src}/templates/dashboard-js/views/history.js +0 -0
  879. /package/{ccw/src → src}/templates/dashboard-js/views/home.js +0 -0
  880. /package/{ccw/src → src}/templates/dashboard-js/views/hook-manager.js +0 -0
  881. /package/{ccw/src → src}/templates/dashboard-js/views/lite-tasks.js +0 -0
  882. /package/{ccw/src → src}/templates/dashboard-js/views/mcp-manager.js +0 -0
  883. /package/{ccw/src → src}/templates/dashboard-js/views/mcp-manager.js.backup +0 -0
  884. /package/{ccw/src → src}/templates/dashboard-js/views/mcp-manager.js.new +0 -0
  885. /package/{ccw/src → src}/templates/dashboard-js/views/memory.js +0 -0
  886. /package/{ccw/src → src}/templates/dashboard-js/views/project-overview.js +0 -0
  887. /package/{ccw/src → src}/templates/dashboard-js/views/prompt-history.js +0 -0
  888. /package/{ccw/src → src}/templates/dashboard-js/views/review-session.js +0 -0
  889. /package/{ccw/src → src}/templates/dashboard-js/views/rules-manager.js +0 -0
  890. /package/{ccw/src → src}/templates/dashboard-js/views/session-detail.js +0 -0
  891. /package/{ccw/src → src}/templates/dashboard-js/views/skills-manager.js +0 -0
  892. /package/{ccw/src → src}/templates/dashboard.html +0 -0
  893. /package/{ccw/src → src}/templates/hooks-config-example.json +0 -0
  894. /package/{ccw/src → src}/templates/review-cycle-dashboard.html +0 -0
  895. /package/{ccw/src → src}/templates/workflow-dashboard.html +0 -0
  896. /package/{ccw/src → src}/tools/classify-folders.ts +0 -0
  897. /package/{ccw/src → src}/tools/cli-config-manager.ts +0 -0
  898. /package/{ccw/src → src}/tools/cli-executor.ts +0 -0
  899. /package/{ccw/src → src}/tools/cli-history-store.ts +0 -0
  900. /package/{ccw/src → src}/tools/convert-tokens-to-css.ts +0 -0
  901. /package/{ccw/src → src}/tools/core-memory.ts +0 -0
  902. /package/{ccw/src → src}/tools/detect-changed-modules.ts +0 -0
  903. /package/{ccw/src → src}/tools/discover-design-files.ts +0 -0
  904. /package/{ccw/src → src}/tools/edit-file.ts +0 -0
  905. /package/{ccw/src → src}/tools/generate-module-docs.ts +0 -0
  906. /package/{ccw/src → src}/tools/get-modules-by-depth.ts +0 -0
  907. /package/{ccw/src → src}/tools/index.ts +0 -0
  908. /package/{ccw/src → src}/tools/native-session-discovery.ts +0 -0
  909. /package/{ccw/src → src}/tools/notifier.ts +0 -0
  910. /package/{ccw/src → src}/tools/read-file.ts +0 -0
  911. /package/{ccw/src → src}/tools/resume-strategy.ts +0 -0
  912. /package/{ccw/src → src}/tools/session-content-parser.ts +0 -0
  913. /package/{ccw/src → src}/tools/session-manager.ts +0 -0
  914. /package/{ccw/src → src}/tools/smart-context.ts +0 -0
  915. /package/{ccw/src → src}/tools/smart-search.ts +0 -0
  916. /package/{ccw/src → src}/tools/smart-search.ts.backup +0 -0
  917. /package/{ccw/src → src}/tools/storage-manager.ts +0 -0
  918. /package/{ccw/src → src}/tools/ui-generate-preview.js +0 -0
  919. /package/{ccw/src → src}/tools/ui-instantiate-prototypes.js +0 -0
  920. /package/{ccw/src → src}/tools/update-module-claude.js +0 -0
  921. /package/{ccw/src → src}/tools/write-file.ts +0 -0
  922. /package/{ccw/src → src}/types/config.ts +0 -0
  923. /package/{ccw/src → src}/types/index.ts +0 -0
  924. /package/{ccw/src → src}/types/session.ts +0 -0
  925. /package/{ccw/src → src}/types/tool.ts +0 -0
  926. /package/{ccw/src → src}/utils/browser-launcher.ts +0 -0
  927. /package/{ccw/src → src}/utils/file-utils.ts +0 -0
  928. /package/{ccw/src → src}/utils/path-resolver.ts +0 -0
  929. /package/{ccw/src → src}/utils/path-validator.ts +0 -0
  930. /package/{ccw/src → src}/utils/ui.ts +0 -0
@@ -126,10 +126,10 @@ function buildCodexLensConfigContent(config) {
126
126
  '<button class="inline-flex items-center gap-1.5 px-3 py-1.5 text-xs font-medium rounded-md border border-border bg-background hover:bg-muted/50 transition-colors" onclick="cleanCodexLensIndexes()">' +
127
127
  '<i data-lucide="trash" class="w-3.5 h-3.5"></i> ' + t('codexlens.cleanAllIndexes') +
128
128
  '</button>' +
129
- '<button class="inline-flex items-center gap-1.5 px-3 py-1.5 text-xs font-medium rounded-md border border-destructive/30 bg-destructive/5 text-destructive hover:bg-destructive/10 transition-colors" onclick="uninstallCodexLens()">' +
129
+ '<button class="inline-flex items-center gap-1.5 px-3 py-1.5 text-xs font-medium rounded-md border border-destructive/30 bg-destructive/5 text-destructive hover:bg-destructive/10 transition-colors" onclick="uninstallCodexLensFromManager()">' +
130
130
  '<i data-lucide="trash-2" class="w-3.5 h-3.5"></i> ' + t('cli.uninstall') +
131
131
  '</button>'
132
- : '<button class="inline-flex items-center gap-1.5 px-3 py-1.5 text-xs font-medium rounded-md bg-primary text-primary-foreground hover:bg-primary/90 transition-colors" onclick="installCodexLens()">' +
132
+ : '<button class="inline-flex items-center gap-1.5 px-3 py-1.5 text-xs font-medium rounded-md bg-primary text-primary-foreground hover:bg-primary/90 transition-colors" onclick="installCodexLensFromManager()">' +
133
133
  '<i data-lucide="download" class="w-3.5 h-3.5"></i> ' + t('codexlens.installCodexLens') +
134
134
  '</button>') +
135
135
  '</div>' +
@@ -335,6 +335,26 @@ function initCodexLensConfigEvents(currentConfig) {
335
335
  // SEMANTIC DEPENDENCIES MANAGEMENT
336
336
  // ============================================================
337
337
 
338
+ // Store detected GPU info
339
+ var detectedGpuInfo = null;
340
+
341
+ /**
342
+ * Detect GPU support
343
+ */
344
+ async function detectGpuSupport() {
345
+ try {
346
+ var response = await fetch('/api/codexlens/gpu/detect');
347
+ var result = await response.json();
348
+ if (result.success) {
349
+ detectedGpuInfo = result;
350
+ return result;
351
+ }
352
+ } catch (err) {
353
+ console.error('GPU detection failed:', err);
354
+ }
355
+ return { mode: 'cpu', available: ['cpu'], info: 'CPU only' };
356
+ }
357
+
338
358
  /**
339
359
  * Load semantic dependencies status
340
360
  */
@@ -343,24 +363,58 @@ async function loadSemanticDepsStatus() {
343
363
  if (!container) return;
344
364
 
345
365
  try {
366
+ // Detect GPU support in parallel
367
+ var gpuPromise = detectGpuSupport();
346
368
  var response = await fetch('/api/codexlens/semantic/status');
347
369
  var result = await response.json();
370
+ var gpuInfo = await gpuPromise;
348
371
 
349
372
  if (result.available) {
373
+ // Build accelerator badge
374
+ var accelerator = result.accelerator || 'CPU';
375
+ var acceleratorIcon = 'cpu';
376
+ var acceleratorClass = 'bg-muted text-muted-foreground';
377
+
378
+ if (accelerator === 'CUDA') {
379
+ acceleratorIcon = 'zap';
380
+ acceleratorClass = 'bg-green-500/20 text-green-600';
381
+ } else if (accelerator === 'DirectML') {
382
+ acceleratorIcon = 'gpu-card';
383
+ acceleratorClass = 'bg-blue-500/20 text-blue-600';
384
+ } else if (accelerator === 'ROCm') {
385
+ acceleratorIcon = 'flame';
386
+ acceleratorClass = 'bg-red-500/20 text-red-600';
387
+ }
388
+
350
389
  container.innerHTML =
351
- '<div class="flex items-center gap-2 text-sm">' +
352
- '<i data-lucide="check-circle" class="w-4 h-4 text-success"></i>' +
353
- '<span>' + t('codexlens.semanticInstalled') + '</span>' +
354
- '<span class="text-muted-foreground">(' + (result.backend || 'fastembed') + ')</span>' +
390
+ '<div class="space-y-2">' +
391
+ '<div class="flex items-center gap-2 text-sm">' +
392
+ '<i data-lucide="check-circle" class="w-4 h-4 text-success"></i>' +
393
+ '<span>' + t('codexlens.semanticInstalled') + '</span>' +
394
+ '<span class="text-muted-foreground">(' + (result.backend || 'fastembed') + ')</span>' +
395
+ '</div>' +
396
+ '<div class="flex items-center gap-2">' +
397
+ '<span class="inline-flex items-center gap-1 px-2 py-0.5 rounded text-xs font-medium ' + acceleratorClass + '">' +
398
+ '<i data-lucide="' + acceleratorIcon + '" class="w-3 h-3"></i>' +
399
+ accelerator +
400
+ '</span>' +
401
+ (result.providers && result.providers.length > 0
402
+ ? '<span class="text-xs text-muted-foreground">' + result.providers.join(', ') + '</span>'
403
+ : '') +
404
+ '</div>' +
355
405
  '</div>';
356
406
  } else {
407
+ // Build GPU mode options
408
+ var gpuOptions = buildGpuModeSelector(gpuInfo);
409
+
357
410
  container.innerHTML =
358
- '<div class="space-y-2">' +
411
+ '<div class="space-y-3">' +
359
412
  '<div class="flex items-center gap-2 text-sm text-muted-foreground">' +
360
413
  '<i data-lucide="alert-circle" class="w-4 h-4"></i>' +
361
414
  '<span>' + t('codexlens.semanticNotInstalled') + '</span>' +
362
415
  '</div>' +
363
- '<button class="btn-sm btn-outline" onclick="installSemanticDeps()">' +
416
+ gpuOptions +
417
+ '<button class="btn-sm btn-primary w-full" onclick="installSemanticDepsWithGpu()">' +
364
418
  '<i data-lucide="download" class="w-3 h-3"></i> ' + t('codexlens.installDeps') +
365
419
  '</button>' +
366
420
  '</div>';
@@ -373,21 +427,120 @@ async function loadSemanticDepsStatus() {
373
427
  }
374
428
 
375
429
  /**
376
- * Install semantic dependencies
430
+ * Build GPU mode selector HTML
377
431
  */
378
- async function installSemanticDeps() {
432
+ function buildGpuModeSelector(gpuInfo) {
433
+ var modes = [
434
+ {
435
+ id: 'cpu',
436
+ label: 'CPU',
437
+ desc: t('codexlens.cpuModeDesc') || 'Standard CPU processing',
438
+ icon: 'cpu',
439
+ available: true
440
+ },
441
+ {
442
+ id: 'directml',
443
+ label: 'DirectML',
444
+ desc: t('codexlens.directmlModeDesc') || 'Windows GPU (NVIDIA/AMD/Intel)',
445
+ icon: 'gpu-card',
446
+ available: gpuInfo.available.includes('directml'),
447
+ recommended: gpuInfo.mode === 'directml'
448
+ },
449
+ {
450
+ id: 'cuda',
451
+ label: 'CUDA',
452
+ desc: t('codexlens.cudaModeDesc') || 'NVIDIA GPU (requires CUDA Toolkit)',
453
+ icon: 'zap',
454
+ available: gpuInfo.available.includes('cuda'),
455
+ recommended: gpuInfo.mode === 'cuda'
456
+ }
457
+ ];
458
+
459
+ var html =
460
+ '<div class="space-y-2">' +
461
+ '<div class="text-xs font-medium text-muted-foreground flex items-center gap-1">' +
462
+ '<i data-lucide="settings" class="w-3 h-3"></i>' +
463
+ (t('codexlens.selectGpuMode') || 'Select acceleration mode') +
464
+ '</div>' +
465
+ '<div class="text-xs text-muted-foreground bg-muted/50 rounded px-2 py-1">' +
466
+ '<i data-lucide="info" class="w-3 h-3 inline"></i> ' + gpuInfo.info +
467
+ '</div>' +
468
+ '<div class="space-y-1">';
469
+
470
+ modes.forEach(function(mode) {
471
+ var isDisabled = !mode.available;
472
+ var isRecommended = mode.recommended;
473
+ var isDefault = mode.id === gpuInfo.mode;
474
+
475
+ html +=
476
+ '<label class="flex items-center gap-3 p-2 rounded border cursor-pointer hover:bg-muted/50 transition-colors ' +
477
+ (isDisabled ? 'opacity-50 cursor-not-allowed' : '') + '">' +
478
+ '<input type="radio" name="gpuMode" value="' + mode.id + '" ' +
479
+ (isDefault ? 'checked' : '') +
480
+ (isDisabled ? ' disabled' : '') +
481
+ ' class="accent-primary">' +
482
+ '<div class="flex-1">' +
483
+ '<div class="flex items-center gap-2">' +
484
+ '<i data-lucide="' + mode.icon + '" class="w-4 h-4"></i>' +
485
+ '<span class="font-medium text-sm">' + mode.label + '</span>' +
486
+ (isRecommended ? '<span class="text-xs bg-primary/20 text-primary px-1.5 py-0.5 rounded">' + (t('common.recommended') || 'Recommended') + '</span>' : '') +
487
+ (isDisabled ? '<span class="text-xs text-muted-foreground">(' + (t('common.unavailable') || 'Unavailable') + ')</span>' : '') +
488
+ '</div>' +
489
+ '<div class="text-xs text-muted-foreground">' + mode.desc + '</div>' +
490
+ '</div>' +
491
+ '</label>';
492
+ });
493
+
494
+ html +=
495
+ '</div>' +
496
+ '</div>';
497
+
498
+ return html;
499
+ }
500
+
501
+ /**
502
+ * Get selected GPU mode
503
+ */
504
+ function getSelectedGpuMode() {
505
+ var selected = document.querySelector('input[name="gpuMode"]:checked');
506
+ return selected ? selected.value : 'cpu';
507
+ }
508
+
509
+ /**
510
+ * Install semantic dependencies with GPU mode
511
+ */
512
+ async function installSemanticDepsWithGpu() {
379
513
  var container = document.getElementById('semanticDepsStatus');
380
514
  if (!container) return;
381
515
 
516
+ var gpuMode = getSelectedGpuMode();
517
+ var modeLabels = {
518
+ cpu: 'CPU',
519
+ cuda: 'NVIDIA CUDA',
520
+ directml: 'DirectML'
521
+ };
522
+
382
523
  container.innerHTML =
383
- '<div class="text-sm text-muted-foreground animate-pulse">' + t('codexlens.installingDeps') + '</div>';
524
+ '<div class="space-y-2">' +
525
+ '<div class="flex items-center gap-2 text-sm text-muted-foreground">' +
526
+ '<div class="animate-spin w-4 h-4 border-2 border-primary border-t-transparent rounded-full"></div>' +
527
+ '<span>' + t('codexlens.installingDeps') + '</span>' +
528
+ '</div>' +
529
+ '<div class="text-xs text-muted-foreground">' +
530
+ (t('codexlens.installingMode') || 'Installing with') + ': ' + modeLabels[gpuMode] +
531
+ '</div>' +
532
+ '</div>';
384
533
 
385
534
  try {
386
- var response = await fetch('/api/codexlens/semantic/install', { method: 'POST' });
535
+ var response = await fetch('/api/codexlens/semantic/install', {
536
+ method: 'POST',
537
+ headers: { 'Content-Type': 'application/json' },
538
+ body: JSON.stringify({ gpuMode: gpuMode })
539
+ });
387
540
  var result = await response.json();
388
541
 
389
542
  if (result.success) {
390
- showRefreshToast(t('codexlens.depsInstalled'), 'success');
543
+ showRefreshToast(t('codexlens.depsInstalled') + ' (' + modeLabels[gpuMode] + ')', 'success');
391
544
  await loadSemanticDepsStatus();
392
545
  await loadModelList();
393
546
  } else {
@@ -400,10 +553,164 @@ async function installSemanticDeps() {
400
553
  }
401
554
  }
402
555
 
556
+ /**
557
+ * Install semantic dependencies (legacy, defaults to CPU)
558
+ */
559
+ async function installSemanticDeps() {
560
+ await installSemanticDepsWithGpu();
561
+ }
562
+
403
563
  // ============================================================
404
564
  // MODEL MANAGEMENT
405
565
  // ============================================================
406
566
 
567
+ /**
568
+ * Build manual download guide HTML
569
+ */
570
+ function buildManualDownloadGuide() {
571
+ var modelData = [
572
+ { profile: 'code', name: 'jinaai/jina-embeddings-v2-base-code', size: '~150 MB' },
573
+ { profile: 'fast', name: 'BAAI/bge-small-en-v1.5', size: '~80 MB' },
574
+ { profile: 'balanced', name: 'mixedbread-ai/mxbai-embed-large-v1', size: '~600 MB' },
575
+ { profile: 'multilingual', name: 'intfloat/multilingual-e5-large', size: '~1 GB' }
576
+ ];
577
+
578
+ var html =
579
+ '<div class="mt-4 border-t pt-4">' +
580
+ '<button class="flex items-center gap-2 text-sm text-muted-foreground hover:text-foreground w-full" onclick="toggleManualDownloadGuide()" id="manualDownloadToggle">' +
581
+ '<i data-lucide="chevron-right" class="w-4 h-4 transition-transform" id="manualDownloadChevron"></i>' +
582
+ '<i data-lucide="terminal" class="w-4 h-4"></i>' +
583
+ '<span>' + (t('codexlens.manualDownloadGuide') || 'Manual Download Guide') + '</span>' +
584
+ '</button>' +
585
+ '<div id="manualDownloadContent" class="hidden mt-3 space-y-3">' +
586
+ // Method 1: CLI
587
+ '<div class="bg-muted/50 rounded-lg p-3 space-y-2">' +
588
+ '<div class="flex items-center gap-2 text-sm font-medium">' +
589
+ '<span class="inline-flex items-center justify-center w-5 h-5 rounded-full bg-primary/20 text-primary text-xs">1</span>' +
590
+ '<span>' + (t('codexlens.cliMethod') || 'Command Line (Recommended)') + '</span>' +
591
+ '</div>' +
592
+ '<div class="text-xs text-muted-foreground mb-2">' +
593
+ (t('codexlens.cliMethodDesc') || 'Run in terminal with progress display:') +
594
+ '</div>' +
595
+ '<div class="space-y-1">';
596
+
597
+ modelData.forEach(function(m) {
598
+ html +=
599
+ '<div class="flex items-center justify-between bg-background rounded px-2 py-1.5">' +
600
+ '<code class="text-xs font-mono">codexlens model-download ' + m.profile + '</code>' +
601
+ '<button class="text-xs text-primary hover:underline" onclick="copyToClipboard(\'codexlens model-download ' + m.profile + '\')">' +
602
+ '<i data-lucide="copy" class="w-3 h-3"></i>' +
603
+ '</button>' +
604
+ '</div>';
605
+ });
606
+
607
+ html +=
608
+ '</div>' +
609
+ '</div>' +
610
+
611
+ // Method 2: Python
612
+ '<div class="bg-muted/50 rounded-lg p-3 space-y-2">' +
613
+ '<div class="flex items-center gap-2 text-sm font-medium">' +
614
+ '<span class="inline-flex items-center justify-center w-5 h-5 rounded-full bg-primary/20 text-primary text-xs">2</span>' +
615
+ '<span>' + (t('codexlens.pythonMethod') || 'Python Script') + '</span>' +
616
+ '</div>' +
617
+ '<div class="text-xs text-muted-foreground mb-2">' +
618
+ (t('codexlens.pythonMethodDesc') || 'Pre-download model using Python:') +
619
+ '</div>' +
620
+ '<div class="bg-background rounded p-2">' +
621
+ '<pre class="text-xs font-mono whitespace-pre-wrap">' +
622
+ '# Install fastembed first\n' +
623
+ 'pip install fastembed\n\n' +
624
+ '# Download model (choose one)\n' +
625
+ 'from fastembed import TextEmbedding\n\n' +
626
+ '# Code model (recommended for code search)\n' +
627
+ 'model = TextEmbedding("jinaai/jina-embeddings-v2-base-code")\n\n' +
628
+ '# Fast model (lightweight)\n' +
629
+ '# model = TextEmbedding("BAAI/bge-small-en-v1.5")' +
630
+ '</pre>' +
631
+ '</div>' +
632
+ '</div>' +
633
+
634
+ // Method 3: Hugging Face Hub
635
+ '<div class="bg-muted/50 rounded-lg p-3 space-y-2">' +
636
+ '<div class="flex items-center gap-2 text-sm font-medium">' +
637
+ '<span class="inline-flex items-center justify-center w-5 h-5 rounded-full bg-primary/20 text-primary text-xs">3</span>' +
638
+ '<span>' + (t('codexlens.hfHubMethod') || 'Hugging Face Hub CLI') + '</span>' +
639
+ '</div>' +
640
+ '<div class="text-xs text-muted-foreground mb-2">' +
641
+ (t('codexlens.hfHubMethodDesc') || 'Download using huggingface-cli with resume support:') +
642
+ '</div>' +
643
+ '<div class="bg-background rounded p-2 space-y-2">' +
644
+ '<pre class="text-xs font-mono whitespace-pre-wrap">' +
645
+ '# Install huggingface_hub\n' +
646
+ 'pip install huggingface_hub\n\n' +
647
+ '# Download model (supports resume on failure)\n' +
648
+ 'huggingface-cli download jinaai/jina-embeddings-v2-base-code' +
649
+ '</pre>' +
650
+ '</div>' +
651
+ '</div>' +
652
+
653
+ // Model Links
654
+ '<div class="bg-muted/50 rounded-lg p-3 space-y-2">' +
655
+ '<div class="flex items-center gap-2 text-sm font-medium">' +
656
+ '<i data-lucide="external-link" class="w-4 h-4"></i>' +
657
+ '<span>' + (t('codexlens.modelLinks') || 'Direct Model Links') + '</span>' +
658
+ '</div>' +
659
+ '<div class="grid grid-cols-2 gap-2">';
660
+
661
+ modelData.forEach(function(m) {
662
+ html +=
663
+ '<a href="https://huggingface.co/' + m.name + '" target="_blank" class="flex items-center justify-between bg-background rounded px-2 py-1.5 hover:bg-muted transition-colors">' +
664
+ '<span class="text-xs font-medium">' + m.profile + '</span>' +
665
+ '<span class="text-xs text-muted-foreground">' + m.size + '</span>' +
666
+ '</a>';
667
+ });
668
+
669
+ html +=
670
+ '</div>' +
671
+ '</div>' +
672
+
673
+ // Cache location info
674
+ '<div class="text-xs text-muted-foreground bg-muted/30 rounded p-2">' +
675
+ '<div class="flex items-start gap-1.5">' +
676
+ '<i data-lucide="info" class="w-3.5 h-3.5 mt-0.5 flex-shrink-0"></i>' +
677
+ '<div>' +
678
+ '<strong>' + (t('codexlens.cacheLocation') || 'Cache Location') + ':</strong><br>' +
679
+ '<code class="text-xs">Windows: %LOCALAPPDATA%\\Temp\\fastembed_cache</code><br>' +
680
+ '<code class="text-xs">Linux/Mac: ~/.cache/fastembed</code>' +
681
+ '</div>' +
682
+ '</div>' +
683
+ '</div>' +
684
+ '</div>' +
685
+ '</div>';
686
+
687
+ return html;
688
+ }
689
+
690
+ /**
691
+ * Toggle manual download guide visibility
692
+ */
693
+ function toggleManualDownloadGuide() {
694
+ var content = document.getElementById('manualDownloadContent');
695
+ var chevron = document.getElementById('manualDownloadChevron');
696
+
697
+ if (content && chevron) {
698
+ content.classList.toggle('hidden');
699
+ chevron.style.transform = content.classList.contains('hidden') ? '' : 'rotate(90deg)';
700
+ }
701
+ }
702
+
703
+ /**
704
+ * Copy text to clipboard
705
+ */
706
+ function copyToClipboard(text) {
707
+ navigator.clipboard.writeText(text).then(function() {
708
+ showRefreshToast(t('common.copied') || 'Copied to clipboard', 'success');
709
+ }).catch(function(err) {
710
+ console.error('Failed to copy:', err);
711
+ });
712
+ }
713
+
407
714
  /**
408
715
  * Load model list
409
716
  */
@@ -476,6 +783,10 @@ async function loadModelList() {
476
783
  });
477
784
 
478
785
  html += '</div>';
786
+
787
+ // Add manual download guide section
788
+ html += buildManualDownloadGuide();
789
+
479
790
  container.innerHTML = html;
480
791
  if (window.lucide) lucide.createIcons();
481
792
  } catch (err) {
@@ -485,18 +796,94 @@ async function loadModelList() {
485
796
  }
486
797
 
487
798
  /**
488
- * Download model
799
+ * Download model with progress simulation and manual download info
489
800
  */
490
801
  async function downloadModel(profile) {
491
802
  var modelCard = document.getElementById('model-' + profile);
492
803
  if (!modelCard) return;
493
804
 
494
805
  var originalHTML = modelCard.innerHTML;
806
+
807
+ // Get model info for size estimation
808
+ var modelSizes = {
809
+ 'fast': { size: 80, time: '1-2' },
810
+ 'code': { size: 150, time: '2-5' },
811
+ 'multilingual': { size: 1000, time: '5-15' },
812
+ 'balanced': { size: 600, time: '3-10' }
813
+ };
814
+
815
+ var modelInfo = modelSizes[profile] || { size: 100, time: '2-5' };
816
+
817
+ // Show detailed download UI with progress simulation
495
818
  modelCard.innerHTML =
496
- '<div class="flex items-center justify-center p-3">' +
497
- '<span class="text-sm text-muted-foreground animate-pulse">' + t('codexlens.downloading') + '</span>' +
819
+ '<div class="p-3 space-y-3">' +
820
+ '<div class="flex items-center gap-2">' +
821
+ '<div class="animate-spin w-4 h-4 border-2 border-primary border-t-transparent rounded-full flex-shrink-0"></div>' +
822
+ '<span class="text-sm font-medium">' + (t('codexlens.downloadingModel') || 'Downloading') + ' ' + profile + '</span>' +
823
+ '</div>' +
824
+ '<div class="space-y-1">' +
825
+ '<div class="h-2 bg-muted rounded-full overflow-hidden">' +
826
+ '<div id="model-progress-' + profile + '" class="h-full bg-primary transition-all duration-1000 ease-out model-download-progress" style="width: 0%"></div>' +
827
+ '</div>' +
828
+ '<div class="flex justify-between text-xs text-muted-foreground">' +
829
+ '<span id="model-status-' + profile + '">' + (t('codexlens.connectingToHuggingFace') || 'Connecting to Hugging Face...') + '</span>' +
830
+ '<span>~' + modelInfo.size + ' MB</span>' +
831
+ '</div>' +
832
+ '</div>' +
833
+ '<div class="text-xs text-muted-foreground bg-muted/50 rounded p-2 space-y-1">' +
834
+ '<div class="flex items-start gap-1">' +
835
+ '<i data-lucide="info" class="w-3 h-3 mt-0.5 flex-shrink-0"></i>' +
836
+ '<span>' + (t('codexlens.downloadTimeEstimate') || 'Estimated time') + ': ' + modelInfo.time + ' ' + (t('common.minutes') || 'minutes') + '</span>' +
837
+ '</div>' +
838
+ '<div class="flex items-start gap-1">' +
839
+ '<i data-lucide="terminal" class="w-3 h-3 mt-0.5 flex-shrink-0"></i>' +
840
+ '<span>' + (t('codexlens.manualDownloadHint') || 'Manual download') + ': <code class="bg-background px-1 rounded">codexlens model-download ' + profile + '</code></span>' +
841
+ '</div>' +
842
+ '</div>' +
843
+ '<button class="text-xs text-muted-foreground hover:text-foreground underline" onclick="cancelModelDownload(\'' + profile + '\')">' +
844
+ (t('common.cancel') || 'Cancel') +
845
+ '</button>' +
498
846
  '</div>';
499
847
 
848
+ if (window.lucide) lucide.createIcons();
849
+
850
+ // Start progress simulation
851
+ var progressBar = document.getElementById('model-progress-' + profile);
852
+ var statusText = document.getElementById('model-status-' + profile);
853
+ var simulatedProgress = 0;
854
+ var progressInterval = null;
855
+ var downloadAborted = false;
856
+
857
+ // Store abort controller for cancellation
858
+ window['modelDownloadAbort_' + profile] = function() {
859
+ downloadAborted = true;
860
+ if (progressInterval) clearInterval(progressInterval);
861
+ };
862
+
863
+ // Simulate progress based on model size
864
+ var progressStages = [
865
+ { percent: 10, msg: t('codexlens.downloadingModelFiles') || 'Downloading model files...' },
866
+ { percent: 30, msg: t('codexlens.downloadingWeights') || 'Downloading model weights...' },
867
+ { percent: 60, msg: t('codexlens.downloadingTokenizer') || 'Downloading tokenizer...' },
868
+ { percent: 80, msg: t('codexlens.verifyingModel') || 'Verifying model...' },
869
+ { percent: 95, msg: t('codexlens.finalizingDownload') || 'Finalizing...' }
870
+ ];
871
+
872
+ var stageIndex = 0;
873
+ var baseInterval = Math.max(2000, modelInfo.size * 30); // Slower for larger models
874
+
875
+ progressInterval = setInterval(function() {
876
+ if (downloadAborted) return;
877
+
878
+ if (stageIndex < progressStages.length) {
879
+ var stage = progressStages[stageIndex];
880
+ simulatedProgress = stage.percent;
881
+ if (progressBar) progressBar.style.width = simulatedProgress + '%';
882
+ if (statusText) statusText.textContent = stage.msg;
883
+ stageIndex++;
884
+ }
885
+ }, baseInterval);
886
+
500
887
  try {
501
888
  var response = await fetch('/api/codexlens/models/download', {
502
889
  method: 'POST',
@@ -504,20 +891,99 @@ async function downloadModel(profile) {
504
891
  body: JSON.stringify({ profile: profile })
505
892
  });
506
893
 
894
+ // Clear simulation
895
+ if (progressInterval) clearInterval(progressInterval);
896
+
897
+ if (downloadAborted) {
898
+ modelCard.innerHTML = originalHTML;
899
+ if (window.lucide) lucide.createIcons();
900
+ return;
901
+ }
902
+
507
903
  var result = await response.json();
508
904
 
509
905
  if (result.success) {
906
+ // Show completion
907
+ if (progressBar) progressBar.style.width = '100%';
908
+ if (statusText) statusText.textContent = t('codexlens.downloadComplete') || 'Download complete!';
909
+
510
910
  showRefreshToast(t('codexlens.modelDownloaded') + ': ' + profile, 'success');
511
- await loadModelList();
911
+
912
+ // Refresh model list after short delay
913
+ setTimeout(function() {
914
+ loadModelList();
915
+ }, 500);
512
916
  } else {
513
917
  showRefreshToast(t('codexlens.modelDownloadFailed') + ': ' + result.error, 'error');
514
- modelCard.innerHTML = originalHTML;
515
- if (window.lucide) lucide.createIcons();
918
+ showModelDownloadError(modelCard, profile, result.error, originalHTML);
516
919
  }
517
920
  } catch (err) {
921
+ if (progressInterval) clearInterval(progressInterval);
518
922
  showRefreshToast(t('common.error') + ': ' + err.message, 'error');
519
- modelCard.innerHTML = originalHTML;
520
- if (window.lucide) lucide.createIcons();
923
+ showModelDownloadError(modelCard, profile, err.message, originalHTML);
924
+ }
925
+
926
+ // Cleanup abort function
927
+ delete window['modelDownloadAbort_' + profile];
928
+ }
929
+
930
+ /**
931
+ * Show model download error with manual download instructions
932
+ */
933
+ function showModelDownloadError(modelCard, profile, error, originalHTML) {
934
+ var modelNames = {
935
+ 'fast': 'BAAI/bge-small-en-v1.5',
936
+ 'code': 'jinaai/jina-embeddings-v2-base-code',
937
+ 'multilingual': 'intfloat/multilingual-e5-large',
938
+ 'balanced': 'mixedbread-ai/mxbai-embed-large-v1'
939
+ };
940
+
941
+ var modelName = modelNames[profile] || profile;
942
+ var hfUrl = 'https://huggingface.co/' + modelName;
943
+
944
+ modelCard.innerHTML =
945
+ '<div class="p-3 space-y-3">' +
946
+ '<div class="flex items-start gap-2 text-destructive">' +
947
+ '<i data-lucide="alert-circle" class="w-4 h-4 mt-0.5 flex-shrink-0"></i>' +
948
+ '<div class="text-sm">' +
949
+ '<div class="font-medium">' + (t('codexlens.downloadFailed') || 'Download failed') + '</div>' +
950
+ '<div class="text-xs text-muted-foreground mt-1">' + error + '</div>' +
951
+ '</div>' +
952
+ '</div>' +
953
+ '<div class="bg-muted/50 rounded p-2 space-y-2 text-xs">' +
954
+ '<div class="font-medium">' + (t('codexlens.manualDownloadOptions') || 'Manual download options') + ':</div>' +
955
+ '<div class="space-y-1.5">' +
956
+ '<div class="flex items-start gap-1">' +
957
+ '<span class="text-muted-foreground">1.</span>' +
958
+ '<span>' + (t('codexlens.cliDownload') || 'CLI') + ': <code class="bg-background px-1 rounded">codexlens model-download ' + profile + '</code></span>' +
959
+ '</div>' +
960
+ '<div class="flex items-start gap-1">' +
961
+ '<span class="text-muted-foreground">2.</span>' +
962
+ '<span>' + (t('codexlens.huggingfaceDownload') || 'Hugging Face') + ': <a href="' + hfUrl + '" target="_blank" class="text-primary hover:underline">' + modelName + '</a></span>' +
963
+ '</div>' +
964
+ '</div>' +
965
+ '</div>' +
966
+ '<div class="flex gap-2">' +
967
+ '<button class="btn-sm btn-outline flex-1" onclick="loadModelList()">' +
968
+ '<i data-lucide="refresh-cw" class="w-3 h-3"></i> ' + (t('common.refresh') || 'Refresh') +
969
+ '</button>' +
970
+ '<button class="btn-sm btn-primary flex-1" onclick="downloadModel(\'' + profile + '\')">' +
971
+ '<i data-lucide="download" class="w-3 h-3"></i> ' + (t('common.retry') || 'Retry') +
972
+ '</button>' +
973
+ '</div>' +
974
+ '</div>';
975
+
976
+ if (window.lucide) lucide.createIcons();
977
+ }
978
+
979
+ /**
980
+ * Cancel model download
981
+ */
982
+ function cancelModelDownload(profile) {
983
+ if (window['modelDownloadAbort_' + profile]) {
984
+ window['modelDownloadAbort_' + profile]();
985
+ showRefreshToast(t('codexlens.downloadCanceled') || 'Download canceled', 'info');
986
+ loadModelList();
521
987
  }
522
988
  }
523
989
 
@@ -876,16 +1342,315 @@ async function cancelCodexLensIndexing() {
876
1342
 
877
1343
  /**
878
1344
  * Install CodexLens
1345
+ * Note: Uses CodexLens-specific install wizard from cli-status.js
1346
+ * which calls /api/codexlens/bootstrap (Python venv), not the generic
1347
+ * CLI install that uses npm install -g (NPM packages)
1348
+ */
1349
+ function installCodexLensFromManager() {
1350
+ // Use the CodexLens-specific install wizard from cli-status.js
1351
+ if (typeof openCodexLensInstallWizard === 'function') {
1352
+ openCodexLensInstallWizard();
1353
+ } else {
1354
+ // Fallback: inline install wizard if cli-status.js not loaded
1355
+ showCodexLensInstallDialog();
1356
+ }
1357
+ }
1358
+
1359
+ /**
1360
+ * Fallback install dialog when cli-status.js is not loaded
879
1361
  */
880
- function installCodexLens() {
881
- openCliInstallWizard('codexlens');
1362
+ function showCodexLensInstallDialog() {
1363
+ var modal = document.createElement('div');
1364
+ modal.id = 'codexlensInstallModalFallback';
1365
+ modal.className = 'fixed inset-0 bg-black/50 flex items-center justify-center z-50';
1366
+ modal.innerHTML =
1367
+ '<div class="bg-card rounded-lg shadow-xl w-full max-w-md mx-4 overflow-hidden">' +
1368
+ '<div class="p-6">' +
1369
+ '<div class="flex items-center gap-3 mb-4">' +
1370
+ '<div class="w-10 h-10 rounded-full bg-primary/10 flex items-center justify-center">' +
1371
+ '<i data-lucide="database" class="w-5 h-5 text-primary"></i>' +
1372
+ '</div>' +
1373
+ '<div>' +
1374
+ '<h3 class="text-lg font-semibold">' + t('codexlens.installCodexLens') + '</h3>' +
1375
+ '<p class="text-sm text-muted-foreground">' + t('codexlens.installDesc') + '</p>' +
1376
+ '</div>' +
1377
+ '</div>' +
1378
+ '<div class="space-y-4">' +
1379
+ '<div class="bg-muted/50 rounded-lg p-4">' +
1380
+ '<h4 class="font-medium mb-2">' + t('codexlens.whatWillBeInstalled') + '</h4>' +
1381
+ '<ul class="text-sm space-y-2 text-muted-foreground">' +
1382
+ '<li class="flex items-start gap-2">' +
1383
+ '<i data-lucide="check" class="w-4 h-4 text-success mt-0.5"></i>' +
1384
+ '<span><strong>' + t('codexlens.pythonVenv') + '</strong> - ' + t('codexlens.pythonVenvDesc') + '</span>' +
1385
+ '</li>' +
1386
+ '<li class="flex items-start gap-2">' +
1387
+ '<i data-lucide="check" class="w-4 h-4 text-success mt-0.5"></i>' +
1388
+ '<span><strong>' + t('codexlens.codexlensPackage') + '</strong> - ' + t('codexlens.codexlensPackageDesc') + '</span>' +
1389
+ '</li>' +
1390
+ '<li class="flex items-start gap-2">' +
1391
+ '<i data-lucide="check" class="w-4 h-4 text-success mt-0.5"></i>' +
1392
+ '<span><strong>SQLite FTS5</strong> - ' + t('codexlens.sqliteFtsDesc') + '</span>' +
1393
+ '</li>' +
1394
+ '</ul>' +
1395
+ '</div>' +
1396
+ '<div class="bg-primary/5 border border-primary/20 rounded-lg p-3">' +
1397
+ '<div class="flex items-start gap-2">' +
1398
+ '<i data-lucide="info" class="w-4 h-4 text-primary mt-0.5"></i>' +
1399
+ '<div class="text-sm text-muted-foreground">' +
1400
+ '<p class="font-medium text-foreground">' + t('codexlens.installLocation') + '</p>' +
1401
+ '<p class="mt-1"><code class="bg-muted px-1 rounded">~/.codexlens/venv</code></p>' +
1402
+ '<p class="mt-1">' + t('codexlens.installTime') + '</p>' +
1403
+ '</div>' +
1404
+ '</div>' +
1405
+ '</div>' +
1406
+ '<div id="codexlensInstallProgressFallback" class="hidden">' +
1407
+ '<div class="flex items-center gap-3">' +
1408
+ '<div class="animate-spin w-5 h-5 border-2 border-primary border-t-transparent rounded-full"></div>' +
1409
+ '<span class="text-sm" id="codexlensInstallStatusFallback">' + t('codexlens.startingInstall') + '</span>' +
1410
+ '</div>' +
1411
+ '<div class="mt-2 h-2 bg-muted rounded-full overflow-hidden">' +
1412
+ '<div id="codexlensInstallProgressBarFallback" class="h-full bg-primary transition-all duration-300" style="width: 0%"></div>' +
1413
+ '</div>' +
1414
+ '</div>' +
1415
+ '</div>' +
1416
+ '</div>' +
1417
+ '<div class="border-t border-border p-4 flex justify-end gap-3 bg-muted/30">' +
1418
+ '<button class="btn-outline px-4 py-2" onclick="closeCodexLensInstallDialogFallback()">' + t('common.cancel') + '</button>' +
1419
+ '<button id="codexlensInstallBtnFallback" class="btn-primary px-4 py-2" onclick="startCodexLensInstallFallback()">' +
1420
+ '<i data-lucide="download" class="w-4 h-4 mr-2"></i>' +
1421
+ t('codexlens.installNow') +
1422
+ '</button>' +
1423
+ '</div>' +
1424
+ '</div>';
1425
+
1426
+ document.body.appendChild(modal);
1427
+ if (window.lucide) lucide.createIcons();
1428
+ }
1429
+
1430
+ function closeCodexLensInstallDialogFallback() {
1431
+ var modal = document.getElementById('codexlensInstallModalFallback');
1432
+ if (modal) modal.remove();
1433
+ }
1434
+
1435
+ async function startCodexLensInstallFallback() {
1436
+ var progressDiv = document.getElementById('codexlensInstallProgressFallback');
1437
+ var installBtn = document.getElementById('codexlensInstallBtnFallback');
1438
+ var statusText = document.getElementById('codexlensInstallStatusFallback');
1439
+ var progressBar = document.getElementById('codexlensInstallProgressBarFallback');
1440
+
1441
+ progressDiv.classList.remove('hidden');
1442
+ installBtn.disabled = true;
1443
+ installBtn.innerHTML = '<span class="animate-pulse">' + t('codexlens.installing') + '</span>';
1444
+
1445
+ var stages = [
1446
+ { progress: 10, text: t('codexlens.creatingVenv') },
1447
+ { progress: 30, text: t('codexlens.installingPip') },
1448
+ { progress: 50, text: t('codexlens.installingPackage') },
1449
+ { progress: 70, text: t('codexlens.settingUpDeps') },
1450
+ { progress: 90, text: t('codexlens.finalizing') }
1451
+ ];
1452
+
1453
+ var currentStage = 0;
1454
+ var progressInterval = setInterval(function() {
1455
+ if (currentStage < stages.length) {
1456
+ statusText.textContent = stages[currentStage].text;
1457
+ progressBar.style.width = stages[currentStage].progress + '%';
1458
+ currentStage++;
1459
+ }
1460
+ }, 1500);
1461
+
1462
+ try {
1463
+ var response = await fetch('/api/codexlens/bootstrap', {
1464
+ method: 'POST',
1465
+ headers: { 'Content-Type': 'application/json' },
1466
+ body: JSON.stringify({})
1467
+ });
1468
+
1469
+ clearInterval(progressInterval);
1470
+ var result = await response.json();
1471
+
1472
+ if (result.success) {
1473
+ progressBar.style.width = '100%';
1474
+ statusText.textContent = t('codexlens.installComplete');
1475
+
1476
+ setTimeout(function() {
1477
+ closeCodexLensInstallDialogFallback();
1478
+ showRefreshToast(t('codexlens.installSuccess'), 'success');
1479
+ // Refresh the page to update status
1480
+ if (typeof loadCodexLensStatus === 'function') {
1481
+ loadCodexLensStatus().then(function() {
1482
+ if (typeof renderCodexLensManager === 'function') renderCodexLensManager();
1483
+ });
1484
+ } else {
1485
+ location.reload();
1486
+ }
1487
+ }, 1000);
1488
+ } else {
1489
+ statusText.textContent = t('common.error') + ': ' + result.error;
1490
+ progressBar.classList.add('bg-destructive');
1491
+ installBtn.disabled = false;
1492
+ installBtn.innerHTML = '<i data-lucide="refresh-cw" class="w-4 h-4 mr-2"></i> ' + t('common.retry');
1493
+ if (window.lucide) lucide.createIcons();
1494
+ }
1495
+ } catch (err) {
1496
+ clearInterval(progressInterval);
1497
+ statusText.textContent = t('common.error') + ': ' + err.message;
1498
+ progressBar.classList.add('bg-destructive');
1499
+ installBtn.disabled = false;
1500
+ installBtn.innerHTML = '<i data-lucide="refresh-cw" class="w-4 h-4 mr-2"></i> ' + t('common.retry');
1501
+ if (window.lucide) lucide.createIcons();
1502
+ }
882
1503
  }
883
1504
 
884
1505
  /**
885
1506
  * Uninstall CodexLens
1507
+ * Note: Uses CodexLens-specific uninstall wizard from cli-status.js
1508
+ * which calls /api/codexlens/uninstall (Python venv), not the generic
1509
+ * CLI uninstall that uses /api/cli/uninstall (NPM packages)
886
1510
  */
887
- function uninstallCodexLens() {
888
- openCliUninstallWizard('codexlens');
1511
+ function uninstallCodexLensFromManager() {
1512
+ // Use the CodexLens-specific uninstall wizard from cli-status.js
1513
+ if (typeof openCodexLensUninstallWizard === 'function') {
1514
+ openCodexLensUninstallWizard();
1515
+ } else {
1516
+ // Fallback: inline uninstall wizard if cli-status.js not loaded
1517
+ showCodexLensUninstallDialog();
1518
+ }
1519
+ }
1520
+
1521
+ /**
1522
+ * Fallback uninstall dialog when cli-status.js is not loaded
1523
+ */
1524
+ function showCodexLensUninstallDialog() {
1525
+ var modal = document.createElement('div');
1526
+ modal.id = 'codexlensUninstallModalFallback';
1527
+ modal.className = 'fixed inset-0 bg-black/50 flex items-center justify-center z-50';
1528
+ modal.innerHTML =
1529
+ '<div class="bg-card rounded-lg shadow-xl w-full max-w-md mx-4 overflow-hidden">' +
1530
+ '<div class="p-6">' +
1531
+ '<div class="flex items-center gap-3 mb-4">' +
1532
+ '<div class="w-10 h-10 rounded-full bg-destructive/10 flex items-center justify-center">' +
1533
+ '<i data-lucide="trash-2" class="w-5 h-5 text-destructive"></i>' +
1534
+ '</div>' +
1535
+ '<div>' +
1536
+ '<h3 class="text-lg font-semibold">' + t('codexlens.uninstall') + '</h3>' +
1537
+ '<p class="text-sm text-muted-foreground">' + t('codexlens.uninstallDesc') + '</p>' +
1538
+ '</div>' +
1539
+ '</div>' +
1540
+ '<div class="space-y-4">' +
1541
+ '<div class="bg-destructive/5 border border-destructive/20 rounded-lg p-4">' +
1542
+ '<h4 class="font-medium text-destructive mb-2">' + t('codexlens.whatWillBeRemoved') + '</h4>' +
1543
+ '<ul class="text-sm space-y-2 text-muted-foreground">' +
1544
+ '<li class="flex items-start gap-2">' +
1545
+ '<i data-lucide="x" class="w-4 h-4 text-destructive mt-0.5"></i>' +
1546
+ '<span>' + t('codexlens.removeVenv') + '</span>' +
1547
+ '</li>' +
1548
+ '<li class="flex items-start gap-2">' +
1549
+ '<i data-lucide="x" class="w-4 h-4 text-destructive mt-0.5"></i>' +
1550
+ '<span>' + t('codexlens.removeData') + '</span>' +
1551
+ '</li>' +
1552
+ '<li class="flex items-start gap-2">' +
1553
+ '<i data-lucide="x" class="w-4 h-4 text-destructive mt-0.5"></i>' +
1554
+ '<span>' + t('codexlens.removeConfig') + '</span>' +
1555
+ '</li>' +
1556
+ '</ul>' +
1557
+ '</div>' +
1558
+ '<div id="codexlensUninstallProgressFallback" class="hidden">' +
1559
+ '<div class="flex items-center gap-3">' +
1560
+ '<div class="animate-spin w-5 h-5 border-2 border-destructive border-t-transparent rounded-full"></div>' +
1561
+ '<span class="text-sm" id="codexlensUninstallStatusFallback">' + t('codexlens.removing') + '</span>' +
1562
+ '</div>' +
1563
+ '<div class="mt-2 h-2 bg-muted rounded-full overflow-hidden">' +
1564
+ '<div id="codexlensUninstallProgressBarFallback" class="h-full bg-destructive transition-all duration-300" style="width: 0%"></div>' +
1565
+ '</div>' +
1566
+ '</div>' +
1567
+ '</div>' +
1568
+ '</div>' +
1569
+ '<div class="border-t border-border p-4 flex justify-end gap-3 bg-muted/30">' +
1570
+ '<button class="btn-outline px-4 py-2" onclick="closeCodexLensUninstallDialogFallback()">' + t('common.cancel') + '</button>' +
1571
+ '<button id="codexlensUninstallBtnFallback" class="btn-destructive px-4 py-2" onclick="startCodexLensUninstallFallback()">' +
1572
+ '<i data-lucide="trash-2" class="w-4 h-4 mr-2"></i>' +
1573
+ t('codexlens.uninstall') +
1574
+ '</button>' +
1575
+ '</div>' +
1576
+ '</div>';
1577
+
1578
+ document.body.appendChild(modal);
1579
+ if (window.lucide) lucide.createIcons();
1580
+ }
1581
+
1582
+ function closeCodexLensUninstallDialogFallback() {
1583
+ var modal = document.getElementById('codexlensUninstallModalFallback');
1584
+ if (modal) modal.remove();
1585
+ }
1586
+
1587
+ async function startCodexLensUninstallFallback() {
1588
+ var progressDiv = document.getElementById('codexlensUninstallProgressFallback');
1589
+ var uninstallBtn = document.getElementById('codexlensUninstallBtnFallback');
1590
+ var statusText = document.getElementById('codexlensUninstallStatusFallback');
1591
+ var progressBar = document.getElementById('codexlensUninstallProgressBarFallback');
1592
+
1593
+ progressDiv.classList.remove('hidden');
1594
+ uninstallBtn.disabled = true;
1595
+ uninstallBtn.innerHTML = '<span class="animate-pulse">' + t('codexlens.uninstalling') + '</span>';
1596
+
1597
+ var stages = [
1598
+ { progress: 25, text: t('codexlens.removingVenv') },
1599
+ { progress: 50, text: t('codexlens.removingData') },
1600
+ { progress: 75, text: t('codexlens.removingConfig') },
1601
+ { progress: 90, text: t('codexlens.finalizing') }
1602
+ ];
1603
+
1604
+ var currentStage = 0;
1605
+ var progressInterval = setInterval(function() {
1606
+ if (currentStage < stages.length) {
1607
+ statusText.textContent = stages[currentStage].text;
1608
+ progressBar.style.width = stages[currentStage].progress + '%';
1609
+ currentStage++;
1610
+ }
1611
+ }, 500);
1612
+
1613
+ try {
1614
+ var response = await fetch('/api/codexlens/uninstall', {
1615
+ method: 'POST',
1616
+ headers: { 'Content-Type': 'application/json' },
1617
+ body: JSON.stringify({})
1618
+ });
1619
+
1620
+ clearInterval(progressInterval);
1621
+ var result = await response.json();
1622
+
1623
+ if (result.success) {
1624
+ progressBar.style.width = '100%';
1625
+ statusText.textContent = t('codexlens.uninstallComplete');
1626
+
1627
+ setTimeout(function() {
1628
+ closeCodexLensUninstallDialogFallback();
1629
+ showRefreshToast(t('codexlens.uninstallSuccess'), 'success');
1630
+ // Refresh the page to update status
1631
+ if (typeof loadCodexLensStatus === 'function') {
1632
+ loadCodexLensStatus().then(function() {
1633
+ if (typeof renderCodexLensManager === 'function') renderCodexLensManager();
1634
+ });
1635
+ } else {
1636
+ location.reload();
1637
+ }
1638
+ }, 1000);
1639
+ } else {
1640
+ statusText.textContent = t('common.error') + ': ' + result.error;
1641
+ progressBar.classList.add('bg-destructive');
1642
+ uninstallBtn.disabled = false;
1643
+ uninstallBtn.innerHTML = '<i data-lucide="refresh-cw" class="w-4 h-4 mr-2"></i> ' + t('common.retry');
1644
+ if (window.lucide) lucide.createIcons();
1645
+ }
1646
+ } catch (err) {
1647
+ clearInterval(progressInterval);
1648
+ statusText.textContent = t('common.error') + ': ' + err.message;
1649
+ progressBar.classList.add('bg-destructive');
1650
+ uninstallBtn.disabled = false;
1651
+ uninstallBtn.innerHTML = '<i data-lucide="refresh-cw" class="w-4 h-4 mr-2"></i> ' + t('common.retry');
1652
+ if (window.lucide) lucide.createIcons();
1653
+ }
889
1654
  }
890
1655
 
891
1656
  /**