claude-code-workflow 6.2.4 → 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 +28 -36
  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
@@ -1,955 +0,0 @@
1
- """Vector storage and similarity search for semantic chunks.
2
-
3
- Optimized for high-performance similarity search using:
4
- - HNSW index for O(log N) approximate nearest neighbor search (primary)
5
- - Cached embedding matrix for batch operations (fallback)
6
- - NumPy vectorized cosine similarity (fallback, 100x+ faster than loops)
7
- - Lazy content loading (only fetch for top-k results)
8
- """
9
-
10
- from __future__ import annotations
11
-
12
- import json
13
- import logging
14
- import sqlite3
15
- import threading
16
- from pathlib import Path
17
- from typing import Any, Dict, List, Optional, Tuple
18
-
19
- from codexlens.entities import SearchResult, SemanticChunk
20
- from codexlens.errors import StorageError
21
-
22
- from . import SEMANTIC_AVAILABLE
23
-
24
- if SEMANTIC_AVAILABLE:
25
- import numpy as np
26
-
27
- # Try to import ANN index (optional hnswlib dependency)
28
- try:
29
- from codexlens.semantic.ann_index import ANNIndex, HNSWLIB_AVAILABLE
30
- except ImportError:
31
- HNSWLIB_AVAILABLE = False
32
- ANNIndex = None
33
-
34
-
35
- logger = logging.getLogger(__name__)
36
-
37
-
38
- def _cosine_similarity(a: List[float], b: List[float]) -> float:
39
- """Compute cosine similarity between two vectors."""
40
- if not SEMANTIC_AVAILABLE:
41
- raise ImportError("numpy required for vector operations")
42
-
43
- a_arr = np.array(a)
44
- b_arr = np.array(b)
45
-
46
- norm_a = np.linalg.norm(a_arr)
47
- norm_b = np.linalg.norm(b_arr)
48
-
49
- if norm_a == 0 or norm_b == 0:
50
- return 0.0
51
-
52
- return float(np.dot(a_arr, b_arr) / (norm_a * norm_b))
53
-
54
-
55
- class VectorStore:
56
- """SQLite-based vector storage with HNSW-accelerated similarity search.
57
-
58
- Performance optimizations:
59
- - HNSW index for O(log N) approximate nearest neighbor search
60
- - Embedding matrix cached in memory for batch similarity computation (fallback)
61
- - NumPy vectorized operations instead of Python loops (fallback)
62
- - Lazy content loading - only fetch full content for top-k results
63
- - Thread-safe cache invalidation
64
- - Bulk insert mode for efficient batch operations
65
- """
66
-
67
- # Default embedding dimension (used when creating new index)
68
- DEFAULT_DIM = 768
69
-
70
- def __init__(self, db_path: str | Path) -> None:
71
- if not SEMANTIC_AVAILABLE:
72
- raise ImportError(
73
- "Semantic search dependencies not available. "
74
- "Install with: pip install codexlens[semantic]"
75
- )
76
-
77
- self.db_path = Path(db_path)
78
- self.db_path.parent.mkdir(parents=True, exist_ok=True)
79
-
80
- # Embedding cache for fast similarity search (fallback)
81
- self._cache_lock = threading.RLock()
82
- self._embedding_matrix: Optional[np.ndarray] = None
83
- self._embedding_norms: Optional[np.ndarray] = None
84
- self._chunk_ids: Optional[List[int]] = None
85
- self._cache_version: int = 0
86
-
87
- # ANN index for O(log N) search
88
- self._ann_index: Optional[ANNIndex] = None
89
- self._ann_dim: Optional[int] = None
90
- self._ann_write_lock = threading.Lock() # Protects ANN index modifications
91
-
92
- # Bulk insert mode tracking
93
- self._bulk_insert_mode: bool = False
94
- self._bulk_insert_ids: List[int] = []
95
- self._bulk_insert_embeddings: List[np.ndarray] = []
96
-
97
- self._init_schema()
98
- self._init_ann_index()
99
-
100
- def _init_schema(self) -> None:
101
- """Initialize vector storage schema."""
102
- with sqlite3.connect(self.db_path) as conn:
103
- # Enable memory mapping for faster reads
104
- conn.execute("PRAGMA mmap_size = 30000000000") # 30GB limit
105
- conn.execute("""
106
- CREATE TABLE IF NOT EXISTS semantic_chunks (
107
- id INTEGER PRIMARY KEY AUTOINCREMENT,
108
- file_path TEXT NOT NULL,
109
- content TEXT NOT NULL,
110
- embedding BLOB NOT NULL,
111
- metadata TEXT,
112
- created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
113
- )
114
- """)
115
- conn.execute("""
116
- CREATE INDEX IF NOT EXISTS idx_chunks_file
117
- ON semantic_chunks(file_path)
118
- """)
119
- conn.commit()
120
-
121
- def _init_ann_index(self) -> None:
122
- """Initialize ANN index (lazy loading from existing data)."""
123
- if not HNSWLIB_AVAILABLE:
124
- logger.debug("hnswlib not available, using brute-force search")
125
- return
126
-
127
- # Try to detect embedding dimension from existing data
128
- dim = self._detect_embedding_dim()
129
- if dim is None:
130
- # No data yet, will initialize on first add
131
- logger.debug("No embeddings found, ANN index will be created on first add")
132
- return
133
-
134
- self._ann_dim = dim
135
-
136
- try:
137
- self._ann_index = ANNIndex(self.db_path, dim)
138
- if self._ann_index.load():
139
- logger.debug(
140
- "Loaded ANN index with %d vectors", self._ann_index.count()
141
- )
142
- else:
143
- # Index file doesn't exist, try to build from SQLite data
144
- logger.debug("ANN index file not found, rebuilding from SQLite")
145
- self._rebuild_ann_index_internal()
146
- except Exception as e:
147
- logger.warning("Failed to initialize ANN index: %s", e)
148
- self._ann_index = None
149
-
150
- def _detect_embedding_dim(self) -> Optional[int]:
151
- """Detect embedding dimension from existing data."""
152
- with sqlite3.connect(self.db_path) as conn:
153
- row = conn.execute(
154
- "SELECT embedding FROM semantic_chunks LIMIT 1"
155
- ).fetchone()
156
- if row and row[0]:
157
- # Embedding is stored as float32 blob
158
- blob = row[0]
159
- return len(blob) // np.dtype(np.float32).itemsize
160
- return None
161
-
162
- @property
163
- def dimension(self) -> Optional[int]:
164
- """Return the dimension of embeddings in the store.
165
-
166
- Returns:
167
- Embedding dimension if available, None if store is empty.
168
- """
169
- if self._ann_dim is not None:
170
- return self._ann_dim
171
- self._ann_dim = self._detect_embedding_dim()
172
- return self._ann_dim
173
-
174
- def _rebuild_ann_index_internal(self) -> int:
175
- """Internal method to rebuild ANN index from SQLite data."""
176
- if self._ann_index is None:
177
- return 0
178
-
179
- with sqlite3.connect(self.db_path) as conn:
180
- conn.execute("PRAGMA mmap_size = 30000000000")
181
- rows = conn.execute(
182
- "SELECT id, embedding FROM semantic_chunks"
183
- ).fetchall()
184
-
185
- if not rows:
186
- return 0
187
-
188
- # Extract IDs and embeddings
189
- ids = [r[0] for r in rows]
190
- embeddings = np.vstack([
191
- np.frombuffer(r[1], dtype=np.float32) for r in rows
192
- ])
193
-
194
- # Add to ANN index
195
- self._ann_index.add_vectors(ids, embeddings)
196
- self._ann_index.save()
197
-
198
- logger.info("Rebuilt ANN index with %d vectors", len(ids))
199
- return len(ids)
200
-
201
- def rebuild_ann_index(self) -> int:
202
- """Rebuild HNSW index from all chunks in SQLite.
203
-
204
- Use this method to:
205
- - Migrate existing data to use ANN search
206
- - Repair corrupted index
207
- - Reclaim space after many deletions
208
-
209
- Returns:
210
- Number of vectors indexed.
211
- """
212
- if not HNSWLIB_AVAILABLE:
213
- logger.warning("hnswlib not available, cannot rebuild ANN index")
214
- return 0
215
-
216
- # Detect dimension
217
- dim = self._detect_embedding_dim()
218
- if dim is None:
219
- logger.warning("No embeddings found, cannot rebuild ANN index")
220
- return 0
221
-
222
- self._ann_dim = dim
223
-
224
- # Create new index
225
- try:
226
- self._ann_index = ANNIndex(self.db_path, dim)
227
- return self._rebuild_ann_index_internal()
228
- except Exception as e:
229
- logger.error("Failed to rebuild ANN index: %s", e)
230
- self._ann_index = None
231
- return 0
232
-
233
- def _invalidate_cache(self) -> None:
234
- """Invalidate the embedding cache (thread-safe)."""
235
- with self._cache_lock:
236
- self._embedding_matrix = None
237
- self._embedding_norms = None
238
- self._chunk_ids = None
239
- self._cache_version += 1
240
-
241
- def _refresh_cache(self) -> bool:
242
- """Load embeddings into numpy matrix for fast similarity search.
243
-
244
- Returns:
245
- True if cache was refreshed successfully, False if no data.
246
- """
247
- with self._cache_lock:
248
- with sqlite3.connect(self.db_path) as conn:
249
- conn.execute("PRAGMA mmap_size = 30000000000")
250
- rows = conn.execute(
251
- "SELECT id, embedding FROM semantic_chunks"
252
- ).fetchall()
253
-
254
- if not rows:
255
- self._embedding_matrix = None
256
- self._embedding_norms = None
257
- self._chunk_ids = None
258
- return False
259
-
260
- # Extract IDs and embeddings
261
- self._chunk_ids = [r[0] for r in rows]
262
-
263
- # Bulk convert binary blobs to numpy matrix
264
- embeddings = [
265
- np.frombuffer(r[1], dtype=np.float32) for r in rows
266
- ]
267
- self._embedding_matrix = np.vstack(embeddings)
268
-
269
- # Pre-compute norms for faster similarity calculation
270
- self._embedding_norms = np.linalg.norm(
271
- self._embedding_matrix, axis=1, keepdims=True
272
- )
273
- # Avoid division by zero
274
- self._embedding_norms = np.where(
275
- self._embedding_norms == 0, 1e-10, self._embedding_norms
276
- )
277
-
278
- return True
279
-
280
- def _ensure_ann_index(self, dim: int) -> bool:
281
- """Ensure ANN index is initialized with correct dimension.
282
-
283
- This method is thread-safe and uses double-checked locking.
284
-
285
- Args:
286
- dim: Embedding dimension
287
-
288
- Returns:
289
- True if ANN index is ready, False otherwise
290
- """
291
- if not HNSWLIB_AVAILABLE:
292
- return False
293
-
294
- # Fast path: index already initialized (no lock needed)
295
- if self._ann_index is not None:
296
- return True
297
-
298
- # Slow path: acquire lock for initialization
299
- with self._ann_write_lock:
300
- # Double-check after acquiring lock
301
- if self._ann_index is not None:
302
- return True
303
-
304
- try:
305
- self._ann_dim = dim
306
- self._ann_index = ANNIndex(self.db_path, dim)
307
- self._ann_index.load() # Try to load existing
308
- return True
309
- except Exception as e:
310
- logger.warning("Failed to initialize ANN index: %s", e)
311
- self._ann_index = None
312
- return False
313
-
314
- def add_chunk(self, chunk: SemanticChunk, file_path: str) -> int:
315
- """Add a single chunk with its embedding.
316
-
317
- Returns:
318
- The inserted chunk ID.
319
- """
320
- if chunk.embedding is None:
321
- raise ValueError("Chunk must have embedding before adding to store")
322
-
323
- embedding_arr = np.array(chunk.embedding, dtype=np.float32)
324
- embedding_blob = embedding_arr.tobytes()
325
- metadata_json = json.dumps(chunk.metadata) if chunk.metadata else None
326
-
327
- with sqlite3.connect(self.db_path) as conn:
328
- cursor = conn.execute(
329
- """
330
- INSERT INTO semantic_chunks (file_path, content, embedding, metadata)
331
- VALUES (?, ?, ?, ?)
332
- """,
333
- (file_path, chunk.content, embedding_blob, metadata_json)
334
- )
335
- conn.commit()
336
- chunk_id = cursor.lastrowid or 0
337
-
338
- # Add to ANN index
339
- if self._ensure_ann_index(len(chunk.embedding)):
340
- with self._ann_write_lock:
341
- try:
342
- self._ann_index.add_vectors([chunk_id], embedding_arr.reshape(1, -1))
343
- self._ann_index.save()
344
- except Exception as e:
345
- logger.warning("Failed to add to ANN index: %s", e)
346
-
347
- # Invalidate cache after modification
348
- self._invalidate_cache()
349
- return chunk_id
350
-
351
- def add_chunks(self, chunks: List[SemanticChunk], file_path: str) -> List[int]:
352
- """Add multiple chunks with embeddings (batch insert).
353
-
354
- Returns:
355
- List of inserted chunk IDs.
356
- """
357
- if not chunks:
358
- return []
359
-
360
- # Prepare batch data
361
- batch_data = []
362
- embeddings_list = []
363
- for chunk in chunks:
364
- if chunk.embedding is None:
365
- raise ValueError("All chunks must have embeddings")
366
- embedding_arr = np.array(chunk.embedding, dtype=np.float32)
367
- embedding_blob = embedding_arr.tobytes()
368
- metadata_json = json.dumps(chunk.metadata) if chunk.metadata else None
369
- batch_data.append((file_path, chunk.content, embedding_blob, metadata_json))
370
- embeddings_list.append(embedding_arr)
371
-
372
- # Batch insert to SQLite
373
- with sqlite3.connect(self.db_path) as conn:
374
- # Get starting ID before insert
375
- row = conn.execute("SELECT MAX(id) FROM semantic_chunks").fetchone()
376
- start_id = (row[0] or 0) + 1
377
-
378
- conn.executemany(
379
- """
380
- INSERT INTO semantic_chunks (file_path, content, embedding, metadata)
381
- VALUES (?, ?, ?, ?)
382
- """,
383
- batch_data
384
- )
385
- conn.commit()
386
- # Calculate inserted IDs based on starting ID
387
- ids = list(range(start_id, start_id + len(chunks)))
388
-
389
- # Add to ANN index
390
- if embeddings_list and self._ensure_ann_index(len(embeddings_list[0])):
391
- with self._ann_write_lock:
392
- try:
393
- embeddings_matrix = np.vstack(embeddings_list)
394
- self._ann_index.add_vectors(ids, embeddings_matrix)
395
- self._ann_index.save()
396
- except Exception as e:
397
- logger.warning("Failed to add batch to ANN index: %s", e)
398
-
399
- # Invalidate cache after modification
400
- self._invalidate_cache()
401
- return ids
402
-
403
- def add_chunks_batch(
404
- self,
405
- chunks_with_paths: List[Tuple[SemanticChunk, str]],
406
- update_ann: bool = True,
407
- auto_save_ann: bool = True,
408
- ) -> List[int]:
409
- """Batch insert chunks from multiple files in a single transaction.
410
-
411
- This method is optimized for bulk operations during index generation.
412
-
413
- Args:
414
- chunks_with_paths: List of (chunk, file_path) tuples
415
- update_ann: If True, update ANN index with new vectors (default: True)
416
- auto_save_ann: If True, save ANN index after update (default: True).
417
- Set to False for bulk inserts to reduce I/O overhead.
418
-
419
- Returns:
420
- List of inserted chunk IDs
421
- """
422
- if not chunks_with_paths:
423
- return []
424
-
425
- # Prepare batch data
426
- batch_data = []
427
- embeddings_list = []
428
- for chunk, file_path in chunks_with_paths:
429
- if chunk.embedding is None:
430
- raise ValueError("All chunks must have embeddings")
431
- # Optimize: avoid repeated np.array() if already numpy
432
- if isinstance(chunk.embedding, np.ndarray):
433
- embedding_arr = chunk.embedding.astype(np.float32)
434
- else:
435
- embedding_arr = np.array(chunk.embedding, dtype=np.float32)
436
- embedding_blob = embedding_arr.tobytes()
437
- metadata_json = json.dumps(chunk.metadata) if chunk.metadata else None
438
- batch_data.append((file_path, chunk.content, embedding_blob, metadata_json))
439
- embeddings_list.append(embedding_arr)
440
-
441
- # Batch insert to SQLite in single transaction
442
- with sqlite3.connect(self.db_path) as conn:
443
- # Get starting ID before insert
444
- row = conn.execute("SELECT MAX(id) FROM semantic_chunks").fetchone()
445
- start_id = (row[0] or 0) + 1
446
-
447
- conn.executemany(
448
- """
449
- INSERT INTO semantic_chunks (file_path, content, embedding, metadata)
450
- VALUES (?, ?, ?, ?)
451
- """,
452
- batch_data
453
- )
454
- conn.commit()
455
- # Calculate inserted IDs based on starting ID
456
- ids = list(range(start_id, start_id + len(chunks_with_paths)))
457
-
458
- # Handle ANN index updates
459
- if embeddings_list and update_ann and self._ensure_ann_index(len(embeddings_list[0])):
460
- # In bulk insert mode, accumulate for later batch update
461
- if self._bulk_insert_mode:
462
- self._bulk_insert_ids.extend(ids)
463
- self._bulk_insert_embeddings.extend(embeddings_list)
464
- else:
465
- # Normal mode: update immediately
466
- with self._ann_write_lock:
467
- try:
468
- embeddings_matrix = np.vstack(embeddings_list)
469
- self._ann_index.add_vectors(ids, embeddings_matrix)
470
- if auto_save_ann:
471
- self._ann_index.save()
472
- except Exception as e:
473
- logger.warning("Failed to add batch to ANN index: %s", e)
474
-
475
- # Invalidate cache after modification
476
- self._invalidate_cache()
477
- return ids
478
-
479
- def add_chunks_batch_numpy(
480
- self,
481
- chunks_with_paths: List[Tuple[SemanticChunk, str]],
482
- embeddings_matrix: np.ndarray,
483
- update_ann: bool = True,
484
- auto_save_ann: bool = True,
485
- ) -> List[int]:
486
- """Batch insert chunks with pre-computed numpy embeddings matrix.
487
-
488
- This method accepts embeddings as a numpy matrix to avoid list->array conversions.
489
- Useful when embeddings are already in numpy format from batch encoding.
490
-
491
- Args:
492
- chunks_with_paths: List of (chunk, file_path) tuples (embeddings can be None)
493
- embeddings_matrix: Pre-computed embeddings as (N, D) numpy array
494
- update_ann: If True, update ANN index with new vectors (default: True)
495
- auto_save_ann: If True, save ANN index after update (default: True)
496
-
497
- Returns:
498
- List of inserted chunk IDs
499
- """
500
- if not chunks_with_paths:
501
- return []
502
-
503
- if len(chunks_with_paths) != embeddings_matrix.shape[0]:
504
- raise ValueError(
505
- f"Mismatch: {len(chunks_with_paths)} chunks but "
506
- f"{embeddings_matrix.shape[0]} embeddings"
507
- )
508
-
509
- # Ensure float32 format
510
- embeddings_matrix = embeddings_matrix.astype(np.float32)
511
-
512
- # Prepare batch data
513
- batch_data = []
514
- for i, (chunk, file_path) in enumerate(chunks_with_paths):
515
- embedding_arr = embeddings_matrix[i]
516
- embedding_blob = embedding_arr.tobytes()
517
- metadata_json = json.dumps(chunk.metadata) if chunk.metadata else None
518
- batch_data.append((file_path, chunk.content, embedding_blob, metadata_json))
519
-
520
- # Batch insert to SQLite in single transaction
521
- with sqlite3.connect(self.db_path) as conn:
522
- # Get starting ID before insert
523
- row = conn.execute("SELECT MAX(id) FROM semantic_chunks").fetchone()
524
- start_id = (row[0] or 0) + 1
525
-
526
- conn.executemany(
527
- """
528
- INSERT INTO semantic_chunks (file_path, content, embedding, metadata)
529
- VALUES (?, ?, ?, ?)
530
- """,
531
- batch_data
532
- )
533
- conn.commit()
534
- # Calculate inserted IDs based on starting ID
535
- ids = list(range(start_id, start_id + len(chunks_with_paths)))
536
-
537
- # Handle ANN index updates
538
- if update_ann and self._ensure_ann_index(embeddings_matrix.shape[1]):
539
- # In bulk insert mode, accumulate for later batch update
540
- if self._bulk_insert_mode:
541
- self._bulk_insert_ids.extend(ids)
542
- # Split matrix into individual arrays for accumulation
543
- self._bulk_insert_embeddings.extend([embeddings_matrix[i] for i in range(len(ids))])
544
- else:
545
- # Normal mode: update immediately
546
- with self._ann_write_lock:
547
- try:
548
- self._ann_index.add_vectors(ids, embeddings_matrix)
549
- if auto_save_ann:
550
- self._ann_index.save()
551
- except Exception as e:
552
- logger.warning("Failed to add batch to ANN index: %s", e)
553
-
554
- # Invalidate cache after modification
555
- self._invalidate_cache()
556
- return ids
557
-
558
- def begin_bulk_insert(self) -> None:
559
- """Begin bulk insert mode - disable ANN auto-update for better performance.
560
-
561
- Usage:
562
- store.begin_bulk_insert()
563
- try:
564
- for batch in batches:
565
- store.add_chunks_batch(batch, auto_save_ann=False)
566
- finally:
567
- store.end_bulk_insert()
568
-
569
- Or use context manager:
570
- with store.bulk_insert():
571
- for batch in batches:
572
- store.add_chunks_batch(batch)
573
- """
574
- self._bulk_insert_mode = True
575
- self._bulk_insert_ids.clear()
576
- self._bulk_insert_embeddings.clear()
577
- logger.debug("Entered bulk insert mode")
578
-
579
- def end_bulk_insert(self) -> None:
580
- """End bulk insert mode and rebuild ANN index from accumulated data.
581
-
582
- This method should be called after all bulk inserts are complete to
583
- update the ANN index in a single batch operation.
584
- """
585
- if not self._bulk_insert_mode:
586
- logger.warning("end_bulk_insert called but not in bulk insert mode")
587
- return
588
-
589
- self._bulk_insert_mode = False
590
-
591
- # Update ANN index with all accumulated data
592
- if self._bulk_insert_ids and self._bulk_insert_embeddings:
593
- if self._ensure_ann_index(len(self._bulk_insert_embeddings[0])):
594
- with self._ann_write_lock:
595
- try:
596
- embeddings_matrix = np.vstack(self._bulk_insert_embeddings)
597
- self._ann_index.add_vectors(self._bulk_insert_ids, embeddings_matrix)
598
- self._ann_index.save()
599
- logger.info(
600
- "Bulk insert complete: added %d vectors to ANN index",
601
- len(self._bulk_insert_ids)
602
- )
603
- except Exception as e:
604
- logger.error("Failed to update ANN index after bulk insert: %s", e)
605
-
606
- # Clear accumulated data
607
- self._bulk_insert_ids.clear()
608
- self._bulk_insert_embeddings.clear()
609
- logger.debug("Exited bulk insert mode")
610
-
611
- class BulkInsertContext:
612
- """Context manager for bulk insert operations."""
613
-
614
- def __init__(self, store: "VectorStore") -> None:
615
- self.store = store
616
-
617
- def __enter__(self) -> "VectorStore":
618
- self.store.begin_bulk_insert()
619
- return self.store
620
-
621
- def __exit__(self, exc_type, exc_val, exc_tb) -> None:
622
- self.store.end_bulk_insert()
623
-
624
- def bulk_insert(self) -> "VectorStore.BulkInsertContext":
625
- """Return a context manager for bulk insert operations.
626
-
627
- Usage:
628
- with store.bulk_insert():
629
- for batch in batches:
630
- store.add_chunks_batch(batch)
631
- """
632
- return self.BulkInsertContext(self)
633
-
634
- def delete_file_chunks(self, file_path: str) -> int:
635
- """Delete all chunks for a file.
636
-
637
- Returns:
638
- Number of deleted chunks.
639
- """
640
- # Get chunk IDs before deletion (for ANN index)
641
- chunk_ids_to_delete = []
642
- if self._ann_index is not None:
643
- with sqlite3.connect(self.db_path) as conn:
644
- rows = conn.execute(
645
- "SELECT id FROM semantic_chunks WHERE file_path = ?",
646
- (file_path,)
647
- ).fetchall()
648
- chunk_ids_to_delete = [r[0] for r in rows]
649
-
650
- # Delete from SQLite
651
- with sqlite3.connect(self.db_path) as conn:
652
- cursor = conn.execute(
653
- "DELETE FROM semantic_chunks WHERE file_path = ?",
654
- (file_path,)
655
- )
656
- conn.commit()
657
- deleted = cursor.rowcount
658
-
659
- # Remove from ANN index
660
- if deleted > 0 and self._ann_index is not None and chunk_ids_to_delete:
661
- with self._ann_write_lock:
662
- try:
663
- self._ann_index.remove_vectors(chunk_ids_to_delete)
664
- self._ann_index.save()
665
- except Exception as e:
666
- logger.warning("Failed to remove from ANN index: %s", e)
667
-
668
- if deleted > 0:
669
- self._invalidate_cache()
670
- return deleted
671
-
672
- def search_similar(
673
- self,
674
- query_embedding: List[float],
675
- top_k: int = 10,
676
- min_score: float = 0.0,
677
- return_full_content: bool = True,
678
- ) -> List[SearchResult]:
679
- """Find chunks most similar to query embedding.
680
-
681
- Uses HNSW index for O(log N) search when available, falls back to
682
- brute-force NumPy search otherwise.
683
-
684
- Args:
685
- query_embedding: Query vector.
686
- top_k: Maximum results to return.
687
- min_score: Minimum similarity score (0-1).
688
- return_full_content: If True, return full code block content.
689
-
690
- Returns:
691
- List of SearchResult ordered by similarity (highest first).
692
- """
693
- query_vec = np.array(query_embedding, dtype=np.float32)
694
-
695
- # Try HNSW search first (O(log N))
696
- if (
697
- HNSWLIB_AVAILABLE
698
- and self._ann_index is not None
699
- and self._ann_index.is_loaded
700
- and self._ann_index.count() > 0
701
- ):
702
- try:
703
- return self._search_with_ann(
704
- query_vec, top_k, min_score, return_full_content
705
- )
706
- except Exception as e:
707
- logger.warning("ANN search failed, falling back to brute-force: %s", e)
708
-
709
- # Fallback to brute-force search (O(N))
710
- return self._search_brute_force(
711
- query_vec, top_k, min_score, return_full_content
712
- )
713
-
714
- def _search_with_ann(
715
- self,
716
- query_vec: np.ndarray,
717
- top_k: int,
718
- min_score: float,
719
- return_full_content: bool,
720
- ) -> List[SearchResult]:
721
- """Search using HNSW index (O(log N)).
722
-
723
- Args:
724
- query_vec: Query vector as numpy array
725
- top_k: Maximum results to return
726
- min_score: Minimum similarity score (0-1)
727
- return_full_content: If True, return full code block content
728
-
729
- Returns:
730
- List of SearchResult ordered by similarity (highest first)
731
- """
732
- # Limit top_k to available vectors to prevent hnswlib error
733
- ann_count = self._ann_index.count()
734
- effective_top_k = min(top_k, ann_count) if ann_count > 0 else 0
735
-
736
- if effective_top_k == 0:
737
- return []
738
-
739
- # HNSW search returns (ids, distances)
740
- # For cosine space: distance = 1 - similarity
741
- ids, distances = self._ann_index.search(query_vec, effective_top_k)
742
-
743
- if not ids:
744
- return []
745
-
746
- # Convert distances to similarity scores
747
- scores = [1.0 - d for d in distances]
748
-
749
- # Filter by min_score
750
- filtered = [
751
- (chunk_id, score)
752
- for chunk_id, score in zip(ids, scores)
753
- if score >= min_score
754
- ]
755
-
756
- if not filtered:
757
- return []
758
-
759
- top_ids = [f[0] for f in filtered]
760
- top_scores = [f[1] for f in filtered]
761
-
762
- # Fetch content from SQLite
763
- return self._fetch_results_by_ids(top_ids, top_scores, return_full_content)
764
-
765
- def _search_brute_force(
766
- self,
767
- query_vec: np.ndarray,
768
- top_k: int,
769
- min_score: float,
770
- return_full_content: bool,
771
- ) -> List[SearchResult]:
772
- """Brute-force search using NumPy (O(N) fallback).
773
-
774
- Args:
775
- query_vec: Query vector as numpy array
776
- top_k: Maximum results to return
777
- min_score: Minimum similarity score (0-1)
778
- return_full_content: If True, return full code block content
779
-
780
- Returns:
781
- List of SearchResult ordered by similarity (highest first)
782
- """
783
- logger.warning(
784
- "Using brute-force vector search (hnswlib not available). "
785
- "This may cause high memory usage for large indexes. "
786
- "Install hnswlib for better performance: pip install hnswlib"
787
- )
788
-
789
- with self._cache_lock:
790
- # Refresh cache if needed
791
- if self._embedding_matrix is None:
792
- if not self._refresh_cache():
793
- return [] # No data
794
-
795
- # Vectorized cosine similarity
796
- query_vec = query_vec.reshape(1, -1)
797
- query_norm = np.linalg.norm(query_vec)
798
- if query_norm == 0:
799
- return []
800
-
801
- # Compute all similarities at once: (N,) scores
802
- # similarity = (A @ B.T) / (||A|| * ||B||)
803
- dot_products = np.dot(self._embedding_matrix, query_vec.T).flatten()
804
- scores = dot_products / (self._embedding_norms.flatten() * query_norm)
805
-
806
- # Filter by min_score and get top-k indices
807
- valid_mask = scores >= min_score
808
- valid_indices = np.where(valid_mask)[0]
809
-
810
- if len(valid_indices) == 0:
811
- return []
812
-
813
- # Sort by score descending and take top_k
814
- valid_scores = scores[valid_indices]
815
- sorted_order = np.argsort(valid_scores)[::-1][:top_k]
816
- top_indices = valid_indices[sorted_order]
817
- top_scores = valid_scores[sorted_order]
818
-
819
- # Get chunk IDs for top results
820
- top_ids = [self._chunk_ids[i] for i in top_indices]
821
-
822
- # Fetch content only for top-k results (lazy loading)
823
- results = self._fetch_results_by_ids(
824
- top_ids, top_scores.tolist(), return_full_content
825
- )
826
-
827
- return results
828
-
829
- def _fetch_results_by_ids(
830
- self,
831
- chunk_ids: List[int],
832
- scores: List[float],
833
- return_full_content: bool,
834
- ) -> List[SearchResult]:
835
- """Fetch full result data for specific chunk IDs.
836
-
837
- Args:
838
- chunk_ids: List of chunk IDs to fetch.
839
- scores: Corresponding similarity scores.
840
- return_full_content: Whether to include full content.
841
-
842
- Returns:
843
- List of SearchResult objects.
844
- """
845
- if not chunk_ids:
846
- return []
847
-
848
- # Build parameterized query for IN clause
849
- placeholders = ",".join("?" * len(chunk_ids))
850
- query = f"""
851
- SELECT id, file_path, content, metadata
852
- FROM semantic_chunks
853
- WHERE id IN ({placeholders})
854
- """
855
-
856
- with sqlite3.connect(self.db_path) as conn:
857
- conn.execute("PRAGMA mmap_size = 30000000000")
858
- rows = conn.execute(query, chunk_ids).fetchall()
859
-
860
- # Build ID -> row mapping
861
- id_to_row = {r[0]: r for r in rows}
862
-
863
- results = []
864
- for chunk_id, score in zip(chunk_ids, scores):
865
- row = id_to_row.get(chunk_id)
866
- if not row:
867
- continue
868
-
869
- _, file_path, content, metadata_json = row
870
- metadata = json.loads(metadata_json) if metadata_json else {}
871
-
872
- # Build excerpt (short preview)
873
- excerpt = content[:200] + "..." if len(content) > 200 else content
874
-
875
- # Extract symbol information from metadata
876
- symbol_name = metadata.get("symbol_name")
877
- symbol_kind = metadata.get("symbol_kind")
878
- start_line = metadata.get("start_line")
879
- end_line = metadata.get("end_line")
880
-
881
- # Build Symbol object if we have symbol info
882
- symbol = None
883
- if symbol_name and symbol_kind and start_line and end_line:
884
- try:
885
- from codexlens.entities import Symbol
886
- symbol = Symbol(
887
- name=symbol_name,
888
- kind=symbol_kind,
889
- range=(start_line, end_line)
890
- )
891
- except Exception:
892
- pass
893
-
894
- results.append(SearchResult(
895
- path=file_path,
896
- score=score,
897
- excerpt=excerpt,
898
- content=content if return_full_content else None,
899
- symbol=symbol,
900
- metadata=metadata,
901
- start_line=start_line,
902
- end_line=end_line,
903
- symbol_name=symbol_name,
904
- symbol_kind=symbol_kind,
905
- ))
906
-
907
- return results
908
-
909
- def count_chunks(self) -> int:
910
- """Count total chunks in store."""
911
- with sqlite3.connect(self.db_path) as conn:
912
- row = conn.execute("SELECT COUNT(*) FROM semantic_chunks").fetchone()
913
- return row[0] if row else 0
914
-
915
- def clear_cache(self) -> None:
916
- """Manually clear the embedding cache."""
917
- self._invalidate_cache()
918
-
919
- @property
920
- def ann_available(self) -> bool:
921
- """Check if ANN index is available and ready."""
922
- return (
923
- HNSWLIB_AVAILABLE
924
- and self._ann_index is not None
925
- and self._ann_index.is_loaded
926
- )
927
-
928
- @property
929
- def ann_count(self) -> int:
930
- """Get number of vectors in ANN index."""
931
- if self._ann_index is not None:
932
- return self._ann_index.count()
933
- return 0
934
-
935
- def close(self) -> None:
936
- """Close the vector store and release resources.
937
-
938
- This ensures SQLite connections are closed and ANN index is cleared,
939
- allowing temporary files to be deleted on Windows.
940
- """
941
- with self._cache_lock:
942
- self._embedding_matrix = None
943
- self._embedding_norms = None
944
- self._chunk_ids = None
945
-
946
- with self._ann_write_lock:
947
- self._ann_index = None
948
-
949
- def __enter__(self) -> "VectorStore":
950
- """Context manager entry."""
951
- return self
952
-
953
- def __exit__(self, exc_type, exc_val, exc_tb) -> None:
954
- """Context manager exit - close resources."""
955
- self.close()