claude-code-workflow 6.2.1 → 6.2.2

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 (927) hide show
  1. package/.claude/CLAUDE.md +10 -0
  2. package/.claude/agents/action-planning-agent.md +857 -0
  3. package/.claude/agents/cli-execution-agent.md +267 -0
  4. package/.claude/agents/cli-explore-agent.md +182 -0
  5. package/.claude/agents/cli-lite-planning-agent.md +446 -0
  6. package/.claude/agents/cli-planning-agent.md +558 -0
  7. package/.claude/agents/code-developer.md +311 -0
  8. package/.claude/agents/conceptual-planning-agent.md +308 -0
  9. package/.claude/agents/context-search-agent.md +581 -0
  10. package/.claude/agents/doc-generator.md +330 -0
  11. package/.claude/agents/memory-bridge.md +94 -0
  12. package/.claude/agents/test-context-search-agent.md +400 -0
  13. package/.claude/agents/test-fix-agent.md +344 -0
  14. package/.claude/agents/ui-design-agent.md +593 -0
  15. package/.claude/agents/universal-executor.md +131 -0
  16. package/.claude/commands/clean.md +516 -0
  17. package/.claude/commands/cli/cli-init.md +440 -0
  18. package/.claude/commands/enhance-prompt.md +93 -0
  19. package/.claude/commands/memory/code-map-memory.md +687 -0
  20. package/.claude/commands/memory/compact.md +383 -0
  21. package/.claude/commands/memory/docs-full-cli.md +471 -0
  22. package/.claude/commands/memory/docs-related-cli.md +386 -0
  23. package/.claude/commands/memory/docs.md +615 -0
  24. package/.claude/commands/memory/load-skill-memory.md +182 -0
  25. package/.claude/commands/memory/load.md +240 -0
  26. package/.claude/commands/memory/skill-memory.md +525 -0
  27. package/.claude/commands/memory/style-skill-memory.md +396 -0
  28. package/.claude/commands/memory/tech-research-rules.md +310 -0
  29. package/.claude/commands/memory/update-full.md +332 -0
  30. package/.claude/commands/memory/update-related.md +332 -0
  31. package/.claude/commands/memory/workflow-skill-memory.md +517 -0
  32. package/.claude/commands/task/breakdown.md +204 -0
  33. package/.claude/commands/task/create.md +152 -0
  34. package/.claude/commands/task/execute.md +270 -0
  35. package/.claude/commands/task/replan.md +437 -0
  36. package/.claude/commands/version.md +254 -0
  37. package/.claude/commands/workflow/action-plan-verify.md +447 -0
  38. package/.claude/commands/workflow/brainstorm/api-designer.md +587 -0
  39. package/.claude/commands/workflow/brainstorm/artifacts.md +453 -0
  40. package/.claude/commands/workflow/brainstorm/auto-parallel.md +443 -0
  41. package/.claude/commands/workflow/brainstorm/data-architect.md +220 -0
  42. package/.claude/commands/workflow/brainstorm/product-manager.md +200 -0
  43. package/.claude/commands/workflow/brainstorm/product-owner.md +200 -0
  44. package/.claude/commands/workflow/brainstorm/scrum-master.md +200 -0
  45. package/.claude/commands/workflow/brainstorm/subject-matter-expert.md +200 -0
  46. package/.claude/commands/workflow/brainstorm/synthesis.md +398 -0
  47. package/.claude/commands/workflow/brainstorm/system-architect.md +389 -0
  48. package/.claude/commands/workflow/brainstorm/ui-designer.md +221 -0
  49. package/.claude/commands/workflow/brainstorm/ux-expert.md +221 -0
  50. package/.claude/commands/workflow/debug.md +321 -0
  51. package/.claude/commands/workflow/execute.md +475 -0
  52. package/.claude/commands/workflow/init.md +165 -0
  53. package/.claude/commands/workflow/lite-execute.md +792 -0
  54. package/.claude/commands/workflow/lite-fix.md +623 -0
  55. package/.claude/commands/workflow/lite-plan.md +610 -0
  56. package/.claude/commands/workflow/plan.md +551 -0
  57. package/.claude/commands/workflow/replan.md +515 -0
  58. package/.claude/commands/workflow/review-fix.md +606 -0
  59. package/.claude/commands/workflow/review-module-cycle.md +767 -0
  60. package/.claude/commands/workflow/review-session-cycle.md +778 -0
  61. package/.claude/commands/workflow/review.md +297 -0
  62. package/.claude/commands/workflow/session/complete.md +153 -0
  63. package/.claude/commands/workflow/session/list.md +96 -0
  64. package/.claude/commands/workflow/session/resume.md +61 -0
  65. package/.claude/commands/workflow/session/start.md +200 -0
  66. package/.claude/commands/workflow/tdd-plan.md +460 -0
  67. package/.claude/commands/workflow/tdd-verify.md +400 -0
  68. package/.claude/commands/workflow/test-cycle-execute.md +500 -0
  69. package/.claude/commands/workflow/test-fix-gen.md +699 -0
  70. package/.claude/commands/workflow/test-gen.md +529 -0
  71. package/.claude/commands/workflow/tools/conflict-resolution.md +766 -0
  72. package/.claude/commands/workflow/tools/context-gather.md +436 -0
  73. package/.claude/commands/workflow/tools/task-generate-agent.md +490 -0
  74. package/.claude/commands/workflow/tools/task-generate-tdd.md +526 -0
  75. package/.claude/commands/workflow/tools/tdd-coverage-analysis.md +309 -0
  76. package/.claude/commands/workflow/tools/test-concept-enhanced.md +164 -0
  77. package/.claude/commands/workflow/tools/test-context-gather.md +236 -0
  78. package/.claude/commands/workflow/tools/test-task-generate.md +257 -0
  79. package/.claude/commands/workflow/ui-design/animation-extract.md +1150 -0
  80. package/.claude/commands/workflow/ui-design/codify-style.md +652 -0
  81. package/.claude/commands/workflow/ui-design/design-sync.md +454 -0
  82. package/.claude/commands/workflow/ui-design/explore-auto.md +678 -0
  83. package/.claude/commands/workflow/ui-design/generate.md +504 -0
  84. package/.claude/commands/workflow/ui-design/imitate-auto.md +745 -0
  85. package/.claude/commands/workflow/ui-design/import-from-code.md +540 -0
  86. package/.claude/commands/workflow/ui-design/layout-extract.md +788 -0
  87. package/.claude/commands/workflow/ui-design/reference-page-generator.md +356 -0
  88. package/.claude/commands/workflow/ui-design/style-extract.md +773 -0
  89. package/.claude/skills/command-guide/SKILL.md +388 -0
  90. package/.claude/skills/command-guide/UPDATE-GUIDELINE.md +592 -0
  91. package/.claude/skills/command-guide/guides/cli-tools-guide.md +410 -0
  92. package/.claude/skills/command-guide/guides/examples.md +537 -0
  93. package/.claude/skills/command-guide/guides/getting-started.md +242 -0
  94. package/.claude/skills/command-guide/guides/implementation-details.md +1010 -0
  95. package/.claude/skills/command-guide/guides/index-structure.md +326 -0
  96. package/.claude/skills/command-guide/guides/troubleshooting.md +92 -0
  97. package/.claude/skills/command-guide/guides/ui-design-workflow-guide.md +316 -0
  98. package/.claude/skills/command-guide/guides/workflow-patterns.md +662 -0
  99. package/.claude/skills/command-guide/index/all-commands.json +772 -0
  100. package/.claude/skills/command-guide/index/by-category.json +800 -0
  101. package/.claude/skills/command-guide/index/by-use-case.json +786 -0
  102. package/.claude/skills/command-guide/index/command-relationships.json +307 -0
  103. package/.claude/skills/command-guide/index/essential-commands.json +112 -0
  104. package/.claude/skills/command-guide/reference/agents/action-planning-agent.md +857 -0
  105. package/.claude/skills/command-guide/reference/agents/cli-execution-agent.md +267 -0
  106. package/.claude/skills/command-guide/reference/agents/cli-explore-agent.md +182 -0
  107. package/.claude/skills/command-guide/reference/agents/cli-lite-planning-agent.md +446 -0
  108. package/.claude/skills/command-guide/reference/agents/cli-planning-agent.md +558 -0
  109. package/.claude/skills/command-guide/reference/agents/code-developer.md +311 -0
  110. package/.claude/skills/command-guide/reference/agents/conceptual-planning-agent.md +308 -0
  111. package/.claude/skills/command-guide/reference/agents/context-search-agent.md +581 -0
  112. package/.claude/skills/command-guide/reference/agents/doc-generator.md +330 -0
  113. package/.claude/skills/command-guide/reference/agents/memory-bridge.md +94 -0
  114. package/.claude/skills/command-guide/reference/agents/test-context-search-agent.md +400 -0
  115. package/.claude/skills/command-guide/reference/agents/test-fix-agent.md +344 -0
  116. package/.claude/skills/command-guide/reference/agents/ui-design-agent.md +593 -0
  117. package/.claude/skills/command-guide/reference/agents/universal-executor.md +131 -0
  118. package/.claude/skills/command-guide/reference/commands/cli/cli-init.md +440 -0
  119. package/.claude/skills/command-guide/reference/commands/enhance-prompt.md +93 -0
  120. package/.claude/skills/command-guide/reference/commands/memory/code-map-memory.md +687 -0
  121. package/.claude/skills/command-guide/reference/commands/memory/docs-full-cli.md +471 -0
  122. package/.claude/skills/command-guide/reference/commands/memory/docs-related-cli.md +386 -0
  123. package/.claude/skills/command-guide/reference/commands/memory/docs.md +616 -0
  124. package/.claude/skills/command-guide/reference/commands/memory/load-skill-memory.md +182 -0
  125. package/.claude/skills/command-guide/reference/commands/memory/load.md +240 -0
  126. package/.claude/skills/command-guide/reference/commands/memory/skill-memory.md +525 -0
  127. package/.claude/skills/command-guide/reference/commands/memory/style-skill-memory.md +396 -0
  128. package/.claude/skills/command-guide/reference/commands/memory/tech-research.md +314 -0
  129. package/.claude/skills/command-guide/reference/commands/memory/update-full.md +332 -0
  130. package/.claude/skills/command-guide/reference/commands/memory/update-related.md +332 -0
  131. package/.claude/skills/command-guide/reference/commands/memory/workflow-skill-memory.md +517 -0
  132. package/.claude/skills/command-guide/reference/commands/task/breakdown.md +204 -0
  133. package/.claude/skills/command-guide/reference/commands/task/create.md +152 -0
  134. package/.claude/skills/command-guide/reference/commands/task/execute.md +270 -0
  135. package/.claude/skills/command-guide/reference/commands/task/replan.md +437 -0
  136. package/.claude/skills/command-guide/reference/commands/version.md +254 -0
  137. package/.claude/skills/command-guide/reference/commands/workflow/action-plan-verify.md +447 -0
  138. package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/api-designer.md +585 -0
  139. package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/artifacts.md +452 -0
  140. package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/auto-parallel.md +443 -0
  141. package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/data-architect.md +220 -0
  142. package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/product-manager.md +200 -0
  143. package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/product-owner.md +200 -0
  144. package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/scrum-master.md +200 -0
  145. package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/subject-matter-expert.md +200 -0
  146. package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/synthesis.md +398 -0
  147. package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/system-architect.md +387 -0
  148. package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/ui-designer.md +221 -0
  149. package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/ux-expert.md +221 -0
  150. package/.claude/skills/command-guide/reference/commands/workflow/execute.md +465 -0
  151. package/.claude/skills/command-guide/reference/commands/workflow/init.md +164 -0
  152. package/.claude/skills/command-guide/reference/commands/workflow/lite-execute.md +748 -0
  153. package/.claude/skills/command-guide/reference/commands/workflow/lite-fix.md +664 -0
  154. package/.claude/skills/command-guide/reference/commands/workflow/lite-plan.md +645 -0
  155. package/.claude/skills/command-guide/reference/commands/workflow/plan.md +551 -0
  156. package/.claude/skills/command-guide/reference/commands/workflow/replan.md +515 -0
  157. package/.claude/skills/command-guide/reference/commands/workflow/review-fix.md +606 -0
  158. package/.claude/skills/command-guide/reference/commands/workflow/review-module-cycle.md +765 -0
  159. package/.claude/skills/command-guide/reference/commands/workflow/review-session-cycle.md +776 -0
  160. package/.claude/skills/command-guide/reference/commands/workflow/review.md +298 -0
  161. package/.claude/skills/command-guide/reference/commands/workflow/session/complete.md +547 -0
  162. package/.claude/skills/command-guide/reference/commands/workflow/session/list.md +114 -0
  163. package/.claude/skills/command-guide/reference/commands/workflow/session/resume.md +77 -0
  164. package/.claude/skills/command-guide/reference/commands/workflow/session/start.md +257 -0
  165. package/.claude/skills/command-guide/reference/commands/workflow/tdd-plan.md +460 -0
  166. package/.claude/skills/command-guide/reference/commands/workflow/tdd-verify.md +400 -0
  167. package/.claude/skills/command-guide/reference/commands/workflow/test-cycle-execute.md +498 -0
  168. package/.claude/skills/command-guide/reference/commands/workflow/test-fix-gen.md +699 -0
  169. package/.claude/skills/command-guide/reference/commands/workflow/test-gen.md +529 -0
  170. package/.claude/skills/command-guide/reference/commands/workflow/tools/conflict-resolution.md +766 -0
  171. package/.claude/skills/command-guide/reference/commands/workflow/tools/context-gather.md +434 -0
  172. package/.claude/skills/command-guide/reference/commands/workflow/tools/task-generate-agent.md +487 -0
  173. package/.claude/skills/command-guide/reference/commands/workflow/tools/task-generate-tdd.md +525 -0
  174. package/.claude/skills/command-guide/reference/commands/workflow/tools/tdd-coverage-analysis.md +309 -0
  175. package/.claude/skills/command-guide/reference/commands/workflow/tools/test-concept-enhanced.md +163 -0
  176. package/.claude/skills/command-guide/reference/commands/workflow/tools/test-context-gather.md +235 -0
  177. package/.claude/skills/command-guide/reference/commands/workflow/tools/test-task-generate.md +256 -0
  178. package/.claude/skills/command-guide/reference/commands/workflow/ui-design/animation-extract.md +1150 -0
  179. package/.claude/skills/command-guide/reference/commands/workflow/ui-design/codify-style.md +652 -0
  180. package/.claude/skills/command-guide/reference/commands/workflow/ui-design/design-sync.md +454 -0
  181. package/.claude/skills/command-guide/reference/commands/workflow/ui-design/explore-auto.md +678 -0
  182. package/.claude/skills/command-guide/reference/commands/workflow/ui-design/generate.md +504 -0
  183. package/.claude/skills/command-guide/reference/commands/workflow/ui-design/imitate-auto.md +745 -0
  184. package/.claude/skills/command-guide/reference/commands/workflow/ui-design/import-from-code.md +537 -0
  185. package/.claude/skills/command-guide/reference/commands/workflow/ui-design/layout-extract.md +788 -0
  186. package/.claude/skills/command-guide/reference/commands/workflow/ui-design/reference-page-generator.md +356 -0
  187. package/.claude/skills/command-guide/reference/commands/workflow/ui-design/style-extract.md +773 -0
  188. package/.claude/skills/command-guide/scripts/analyze_commands.py +502 -0
  189. package/.claude/skills/command-guide/scripts/update-index.sh +130 -0
  190. package/.claude/skills/command-guide/templates/issue-bug.md +104 -0
  191. package/.claude/skills/command-guide/templates/issue-diagnosis.md +275 -0
  192. package/.claude/skills/command-guide/templates/issue-feature.md +97 -0
  193. package/.claude/skills/command-guide/templates/issue-question.md +141 -0
  194. package/.claude/skills/prompt-enhancer/SKILL.md +124 -0
  195. package/.claude/workflows/_template-compare-matrix.html +692 -0
  196. package/.claude/workflows/chinese-response.md +38 -0
  197. package/.claude/workflows/cli-templates/fix-plan-template.json +75 -0
  198. package/.claude/workflows/cli-templates/fix-progress-template.json +48 -0
  199. package/.claude/workflows/cli-templates/memory/style-skill-memory/skill-md-template.md +299 -0
  200. package/.claude/workflows/cli-templates/planning-roles/data-architect.md +120 -0
  201. package/.claude/workflows/cli-templates/planning-roles/product-manager.md +119 -0
  202. package/.claude/workflows/cli-templates/planning-roles/product-owner.md +261 -0
  203. package/.claude/workflows/cli-templates/planning-roles/scrum-master.md +186 -0
  204. package/.claude/workflows/cli-templates/planning-roles/subject-matter-expert.md +281 -0
  205. package/.claude/workflows/cli-templates/planning-roles/synthesis-role.md +414 -0
  206. package/.claude/workflows/cli-templates/planning-roles/system-architect.md +106 -0
  207. package/.claude/workflows/cli-templates/planning-roles/test-strategist.md +124 -0
  208. package/.claude/workflows/cli-templates/planning-roles/ui-designer.md +379 -0
  209. package/.claude/workflows/cli-templates/planning-roles/ux-expert.md +240 -0
  210. package/.claude/workflows/cli-templates/prompts/analysis/01-diagnose-bug-root-cause.txt +127 -0
  211. package/.claude/workflows/cli-templates/prompts/analysis/01-trace-code-execution.txt +115 -0
  212. package/.claude/workflows/cli-templates/prompts/analysis/02-analyze-code-patterns.txt +37 -0
  213. package/.claude/workflows/cli-templates/prompts/analysis/02-analyze-technical-document.txt +33 -0
  214. package/.claude/workflows/cli-templates/prompts/analysis/02-review-architecture.txt +29 -0
  215. package/.claude/workflows/cli-templates/prompts/analysis/02-review-code-quality.txt +28 -0
  216. package/.claude/workflows/cli-templates/prompts/analysis/03-analyze-performance.txt +29 -0
  217. package/.claude/workflows/cli-templates/prompts/analysis/03-assess-security-risks.txt +29 -0
  218. package/.claude/workflows/cli-templates/prompts/analysis/03-review-quality-standards.txt +29 -0
  219. package/.claude/workflows/cli-templates/prompts/development/02-generate-tests.txt +70 -0
  220. package/.claude/workflows/cli-templates/prompts/development/02-implement-component-ui.txt +55 -0
  221. package/.claude/workflows/cli-templates/prompts/development/02-implement-feature.txt +58 -0
  222. package/.claude/workflows/cli-templates/prompts/development/02-refactor-codebase.txt +55 -0
  223. package/.claude/workflows/cli-templates/prompts/development/03-debug-runtime-issues.txt +55 -0
  224. package/.claude/workflows/cli-templates/prompts/documentation/api.txt +15 -0
  225. package/.claude/workflows/cli-templates/prompts/documentation/folder-navigation.txt +27 -0
  226. package/.claude/workflows/cli-templates/prompts/documentation/module-readme.txt +49 -0
  227. package/.claude/workflows/cli-templates/prompts/documentation/project-architecture.txt +41 -0
  228. package/.claude/workflows/cli-templates/prompts/documentation/project-examples.txt +35 -0
  229. package/.claude/workflows/cli-templates/prompts/documentation/project-readme.txt +35 -0
  230. package/.claude/workflows/cli-templates/prompts/memory/02-document-module-structure.txt +165 -0
  231. package/.claude/workflows/cli-templates/prompts/planning/01-plan-architecture-design.txt +109 -0
  232. package/.claude/workflows/cli-templates/prompts/planning/02-breakdown-task-steps.txt +30 -0
  233. package/.claude/workflows/cli-templates/prompts/planning/02-design-component-spec.txt +28 -0
  234. package/.claude/workflows/cli-templates/prompts/planning/03-evaluate-concept-feasibility.txt +127 -0
  235. package/.claude/workflows/cli-templates/prompts/planning/03-plan-migration-strategy.txt +30 -0
  236. package/.claude/workflows/cli-templates/prompts/rules/rule-api.txt +122 -0
  237. package/.claude/workflows/cli-templates/prompts/rules/rule-components.txt +122 -0
  238. package/.claude/workflows/cli-templates/prompts/rules/rule-config.txt +89 -0
  239. package/.claude/workflows/cli-templates/prompts/rules/rule-core.txt +60 -0
  240. package/.claude/workflows/cli-templates/prompts/rules/rule-patterns.txt +70 -0
  241. package/.claude/workflows/cli-templates/prompts/rules/rule-testing.txt +81 -0
  242. package/.claude/workflows/cli-templates/prompts/rules/tech-rules-agent-prompt.txt +89 -0
  243. package/.claude/workflows/cli-templates/prompts/tech/tech-module-format.txt +359 -0
  244. package/.claude/workflows/cli-templates/prompts/tech/tech-skill-index.txt +185 -0
  245. package/.claude/workflows/cli-templates/prompts/test/test-concept-analysis.txt +179 -0
  246. package/.claude/workflows/cli-templates/prompts/universal/00-universal-creative-style.txt +95 -0
  247. package/.claude/workflows/cli-templates/prompts/universal/00-universal-rigorous-style.txt +92 -0
  248. package/.claude/workflows/cli-templates/prompts/verification/codex-technical.txt +28 -0
  249. package/.claude/workflows/cli-templates/prompts/verification/cross-validation.txt +28 -0
  250. package/.claude/workflows/cli-templates/prompts/verification/gemini-strategic.txt +27 -0
  251. package/.claude/workflows/cli-templates/prompts/workflow/analysis-results-structure.txt +224 -0
  252. package/.claude/workflows/cli-templates/prompts/workflow/codex-feasibility-validation.txt +176 -0
  253. package/.claude/workflows/cli-templates/prompts/workflow/gemini-solution-design.txt +131 -0
  254. package/.claude/workflows/cli-templates/prompts/workflow/impl-plan-template.txt +286 -0
  255. package/.claude/workflows/cli-templates/prompts/workflow/skill-aggregation.txt +172 -0
  256. package/.claude/workflows/cli-templates/prompts/workflow/skill-conflict-patterns.txt +94 -0
  257. package/.claude/workflows/cli-templates/prompts/workflow/skill-index.txt +224 -0
  258. package/.claude/workflows/cli-templates/prompts/workflow/skill-lessons-learned.txt +94 -0
  259. package/.claude/workflows/cli-templates/prompts/workflow/skill-sessions-timeline.txt +53 -0
  260. package/.claude/workflows/cli-templates/prompts/workflow/task-json-agent-mode.txt +123 -0
  261. package/.claude/workflows/cli-templates/prompts/workflow/task-json-cli-mode.txt +182 -0
  262. package/.claude/workflows/cli-templates/protocols/analysis-protocol.md +112 -0
  263. package/.claude/workflows/cli-templates/protocols/write-protocol.md +201 -0
  264. package/.claude/workflows/cli-templates/schemas/conflict-resolution-schema.json +137 -0
  265. package/.claude/workflows/cli-templates/schemas/debug-log-json-schema.json +127 -0
  266. package/.claude/workflows/cli-templates/schemas/diagnosis-json-schema.json +234 -0
  267. package/.claude/workflows/cli-templates/schemas/explore-json-schema.json +124 -0
  268. package/.claude/workflows/cli-templates/schemas/fix-plan-json-schema.json +298 -0
  269. package/.claude/workflows/cli-templates/schemas/plan-json-schema.json +244 -0
  270. package/.claude/workflows/cli-templates/schemas/project-json-schema.json +221 -0
  271. package/.claude/workflows/cli-templates/schemas/review-deep-dive-results-schema.json +82 -0
  272. package/.claude/workflows/cli-templates/schemas/review-dimension-results-schema.json +51 -0
  273. package/.claude/workflows/cli-templates/tech-stacks/go-dev.md +91 -0
  274. package/.claude/workflows/cli-templates/tech-stacks/java-dev.md +107 -0
  275. package/.claude/workflows/cli-templates/tech-stacks/javascript-dev.md +58 -0
  276. package/.claude/workflows/cli-templates/tech-stacks/python-dev.md +79 -0
  277. package/.claude/workflows/cli-templates/tech-stacks/react-dev.md +103 -0
  278. package/.claude/workflows/cli-templates/tech-stacks/typescript-dev.md +83 -0
  279. package/.claude/workflows/cli-templates/ui-design/systems/animation-tokens.json +247 -0
  280. package/.claude/workflows/cli-templates/ui-design/systems/design-tokens.json +342 -0
  281. package/.claude/workflows/cli-templates/ui-design/systems/layout-templates.json +145 -0
  282. package/.claude/workflows/cli-tools-usage.md +526 -0
  283. package/.claude/workflows/coding-philosophy.md +70 -0
  284. package/.claude/workflows/context-tools.md +84 -0
  285. package/.claude/workflows/file-modification.md +64 -0
  286. package/.claude/workflows/review-directory-specification.md +336 -0
  287. package/.claude/workflows/task-core.md +214 -0
  288. package/.claude/workflows/tool-strategy.md +216 -0
  289. package/.claude/workflows/windows-platform.md +16 -0
  290. package/.claude/workflows/workflow-architecture.md +942 -0
  291. package/.codex/AGENTS.md +63 -0
  292. package/.codex/prompts/debug.md +318 -0
  293. package/.codex/prompts/execute.md +273 -0
  294. package/.codex/prompts/lite-execute.md +164 -0
  295. package/.codex/prompts/lite-plan.md +469 -0
  296. package/.codex/prompts.zip +0 -0
  297. package/.gemini/GEMINI.md +25 -0
  298. package/.qwen/QWEN.md +25 -0
  299. package/LICENSE +21 -0
  300. package/README.md +294 -145
  301. package/ccw/README.md +145 -0
  302. package/ccw/package.json +65 -0
  303. package/codex-lens/pyproject.toml +48 -0
  304. package/codex-lens/src/codexlens/.workflow/.cli-history/history.db +0 -0
  305. package/codex-lens/src/codexlens/__init__.py +28 -0
  306. package/codex-lens/src/codexlens/__main__.py +14 -0
  307. package/codex-lens/src/codexlens/__pycache__/__init__.cpython-313.pyc +0 -0
  308. package/codex-lens/src/codexlens/__pycache__/__main__.cpython-313.pyc +0 -0
  309. package/codex-lens/src/codexlens/__pycache__/config.cpython-313.pyc +0 -0
  310. package/codex-lens/src/codexlens/__pycache__/entities.cpython-313.pyc +0 -0
  311. package/codex-lens/src/codexlens/__pycache__/errors.cpython-313.pyc +0 -0
  312. package/codex-lens/src/codexlens/cli/__init__.py +27 -0
  313. package/codex-lens/src/codexlens/cli/__pycache__/__init__.cpython-313.pyc +0 -0
  314. package/codex-lens/src/codexlens/cli/__pycache__/commands.cpython-313.pyc +0 -0
  315. package/codex-lens/src/codexlens/cli/__pycache__/embedding_manager.cpython-313.pyc +0 -0
  316. package/codex-lens/src/codexlens/cli/__pycache__/model_manager.cpython-313.pyc +0 -0
  317. package/codex-lens/src/codexlens/cli/__pycache__/output.cpython-313.pyc +0 -0
  318. package/codex-lens/src/codexlens/cli/commands.py +1931 -0
  319. package/codex-lens/src/codexlens/cli/embedding_manager.py +620 -0
  320. package/codex-lens/src/codexlens/cli/model_manager.py +289 -0
  321. package/codex-lens/src/codexlens/cli/output.py +124 -0
  322. package/codex-lens/src/codexlens/config.py +201 -0
  323. package/codex-lens/src/codexlens/entities.py +121 -0
  324. package/codex-lens/src/codexlens/errors.py +55 -0
  325. package/codex-lens/src/codexlens/indexing/README.md +77 -0
  326. package/codex-lens/src/codexlens/indexing/__init__.py +4 -0
  327. package/codex-lens/src/codexlens/indexing/__pycache__/__init__.cpython-313.pyc +0 -0
  328. package/codex-lens/src/codexlens/indexing/__pycache__/symbol_extractor.cpython-313.pyc +0 -0
  329. package/codex-lens/src/codexlens/indexing/symbol_extractor.py +243 -0
  330. package/codex-lens/src/codexlens/parsers/__init__.py +8 -0
  331. package/codex-lens/src/codexlens/parsers/__pycache__/__init__.cpython-313.pyc +0 -0
  332. package/codex-lens/src/codexlens/parsers/__pycache__/encoding.cpython-313.pyc +0 -0
  333. package/codex-lens/src/codexlens/parsers/__pycache__/factory.cpython-313.pyc +0 -0
  334. package/codex-lens/src/codexlens/parsers/__pycache__/tokenizer.cpython-313.pyc +0 -0
  335. package/codex-lens/src/codexlens/parsers/__pycache__/treesitter_parser.cpython-313.pyc +0 -0
  336. package/codex-lens/src/codexlens/parsers/encoding.py +202 -0
  337. package/codex-lens/src/codexlens/parsers/factory.py +256 -0
  338. package/codex-lens/src/codexlens/parsers/tokenizer.py +98 -0
  339. package/codex-lens/src/codexlens/parsers/treesitter_parser.py +335 -0
  340. package/codex-lens/src/codexlens/search/__init__.py +15 -0
  341. package/codex-lens/src/codexlens/search/__pycache__/__init__.cpython-313.pyc +0 -0
  342. package/codex-lens/src/codexlens/search/__pycache__/chain_search.cpython-313.pyc +0 -0
  343. package/codex-lens/src/codexlens/search/__pycache__/enrichment.cpython-313.pyc +0 -0
  344. package/codex-lens/src/codexlens/search/__pycache__/hybrid_search.cpython-313.pyc +0 -0
  345. package/codex-lens/src/codexlens/search/__pycache__/query_parser.cpython-313.pyc +0 -0
  346. package/codex-lens/src/codexlens/search/__pycache__/ranking.cpython-313.pyc +0 -0
  347. package/codex-lens/src/codexlens/search/chain_search.py +647 -0
  348. package/codex-lens/src/codexlens/search/enrichment.py +150 -0
  349. package/codex-lens/src/codexlens/search/hybrid_search.py +313 -0
  350. package/codex-lens/src/codexlens/search/query_parser.py +242 -0
  351. package/codex-lens/src/codexlens/search/ranking.py +274 -0
  352. package/codex-lens/src/codexlens/semantic/__init__.py +39 -0
  353. package/codex-lens/src/codexlens/semantic/__pycache__/__init__.cpython-313.pyc +0 -0
  354. package/codex-lens/src/codexlens/semantic/__pycache__/ann_index.cpython-313.pyc +0 -0
  355. package/codex-lens/src/codexlens/semantic/__pycache__/chunker.cpython-313.pyc +0 -0
  356. package/codex-lens/src/codexlens/semantic/__pycache__/code_extractor.cpython-313.pyc +0 -0
  357. package/codex-lens/src/codexlens/semantic/__pycache__/embedder.cpython-313.pyc +0 -0
  358. package/codex-lens/src/codexlens/semantic/__pycache__/graph_analyzer.cpython-313.pyc +0 -0
  359. package/codex-lens/src/codexlens/semantic/__pycache__/llm_enhancer.cpython-313.pyc +0 -0
  360. package/codex-lens/src/codexlens/semantic/__pycache__/vector_store.cpython-313.pyc +0 -0
  361. package/codex-lens/src/codexlens/semantic/ann_index.py +414 -0
  362. package/codex-lens/src/codexlens/semantic/chunker.py +448 -0
  363. package/codex-lens/src/codexlens/semantic/code_extractor.py +274 -0
  364. package/codex-lens/src/codexlens/semantic/embedder.py +185 -0
  365. package/codex-lens/src/codexlens/semantic/vector_store.py +955 -0
  366. package/codex-lens/src/codexlens/storage/__init__.py +29 -0
  367. package/codex-lens/src/codexlens/storage/__pycache__/__init__.cpython-313.pyc +0 -0
  368. package/codex-lens/src/codexlens/storage/__pycache__/dir_index.cpython-313.pyc +0 -0
  369. package/codex-lens/src/codexlens/storage/__pycache__/file_cache.cpython-313.pyc +0 -0
  370. package/codex-lens/src/codexlens/storage/__pycache__/index_tree.cpython-313.pyc +0 -0
  371. package/codex-lens/src/codexlens/storage/__pycache__/migration_manager.cpython-313.pyc +0 -0
  372. package/codex-lens/src/codexlens/storage/__pycache__/path_mapper.cpython-313.pyc +0 -0
  373. package/codex-lens/src/codexlens/storage/__pycache__/registry.cpython-313.pyc +0 -0
  374. package/codex-lens/src/codexlens/storage/__pycache__/sqlite_store.cpython-313.pyc +0 -0
  375. package/codex-lens/src/codexlens/storage/__pycache__/sqlite_utils.cpython-313.pyc +0 -0
  376. package/codex-lens/src/codexlens/storage/dir_index.py +1850 -0
  377. package/codex-lens/src/codexlens/storage/file_cache.py +32 -0
  378. package/codex-lens/src/codexlens/storage/index_tree.py +776 -0
  379. package/codex-lens/src/codexlens/storage/migration_manager.py +154 -0
  380. package/codex-lens/src/codexlens/storage/migrations/__init__.py +1 -0
  381. package/codex-lens/src/codexlens/storage/migrations/__pycache__/__init__.cpython-313.pyc +0 -0
  382. package/codex-lens/src/codexlens/storage/migrations/__pycache__/migration_001_normalize_keywords.cpython-313.pyc +0 -0
  383. package/codex-lens/src/codexlens/storage/migrations/__pycache__/migration_002_add_token_metadata.cpython-313.pyc +0 -0
  384. package/codex-lens/src/codexlens/storage/migrations/__pycache__/migration_003_code_relationships.cpython-313.pyc +0 -0
  385. package/codex-lens/src/codexlens/storage/migrations/__pycache__/migration_004_dual_fts.cpython-313.pyc +0 -0
  386. package/codex-lens/src/codexlens/storage/migrations/__pycache__/migration_005_cleanup_unused_fields.cpython-313.pyc +0 -0
  387. package/codex-lens/src/codexlens/storage/migrations/migration_001_normalize_keywords.py +123 -0
  388. package/codex-lens/src/codexlens/storage/migrations/migration_002_add_token_metadata.py +48 -0
  389. package/codex-lens/src/codexlens/storage/migrations/migration_004_dual_fts.py +232 -0
  390. package/codex-lens/src/codexlens/storage/migrations/migration_005_cleanup_unused_fields.py +196 -0
  391. package/codex-lens/src/codexlens/storage/path_mapper.py +274 -0
  392. package/codex-lens/src/codexlens/storage/registry.py +670 -0
  393. package/codex-lens/src/codexlens/storage/sqlite_store.py +576 -0
  394. package/codex-lens/src/codexlens/storage/sqlite_utils.py +64 -0
  395. package/package.json +37 -32
  396. package/dist/cli.d.ts +0 -2
  397. package/dist/cli.d.ts.map +0 -1
  398. package/dist/cli.js +0 -219
  399. package/dist/cli.js.map +0 -1
  400. package/dist/commands/cli.d.ts +0 -32
  401. package/dist/commands/cli.d.ts.map +0 -1
  402. package/dist/commands/cli.js +0 -619
  403. package/dist/commands/cli.js.map +0 -1
  404. package/dist/commands/core-memory.d.ts +0 -32
  405. package/dist/commands/core-memory.d.ts.map +0 -1
  406. package/dist/commands/core-memory.js +0 -640
  407. package/dist/commands/core-memory.js.map +0 -1
  408. package/dist/commands/hook.d.ts +0 -16
  409. package/dist/commands/hook.d.ts.map +0 -1
  410. package/dist/commands/hook.js +0 -276
  411. package/dist/commands/hook.js.map +0 -1
  412. package/dist/commands/install.d.ts +0 -12
  413. package/dist/commands/install.d.ts.map +0 -1
  414. package/dist/commands/install.js +0 -443
  415. package/dist/commands/install.js.map +0 -1
  416. package/dist/commands/list.d.ts +0 -5
  417. package/dist/commands/list.d.ts.map +0 -1
  418. package/dist/commands/list.js +0 -32
  419. package/dist/commands/list.js.map +0 -1
  420. package/dist/commands/memory.d.ts +0 -57
  421. package/dist/commands/memory.d.ts.map +0 -1
  422. package/dist/commands/memory.js +0 -890
  423. package/dist/commands/memory.js.map +0 -1
  424. package/dist/commands/serve.d.ts +0 -12
  425. package/dist/commands/serve.d.ts.map +0 -1
  426. package/dist/commands/serve.js +0 -63
  427. package/dist/commands/serve.js.map +0 -1
  428. package/dist/commands/session-path-resolver.d.ts +0 -45
  429. package/dist/commands/session-path-resolver.d.ts.map +0 -1
  430. package/dist/commands/session-path-resolver.js +0 -302
  431. package/dist/commands/session-path-resolver.js.map +0 -1
  432. package/dist/commands/session.d.ts +0 -12
  433. package/dist/commands/session.d.ts.map +0 -1
  434. package/dist/commands/session.js +0 -954
  435. package/dist/commands/session.js.map +0 -1
  436. package/dist/commands/stop.d.ts +0 -11
  437. package/dist/commands/stop.d.ts.map +0 -1
  438. package/dist/commands/stop.js +0 -96
  439. package/dist/commands/stop.js.map +0 -1
  440. package/dist/commands/tool.d.ts +0 -29
  441. package/dist/commands/tool.d.ts.map +0 -1
  442. package/dist/commands/tool.js +0 -173
  443. package/dist/commands/tool.js.map +0 -1
  444. package/dist/commands/uninstall.d.ts +0 -9
  445. package/dist/commands/uninstall.d.ts.map +0 -1
  446. package/dist/commands/uninstall.js +0 -239
  447. package/dist/commands/uninstall.js.map +0 -1
  448. package/dist/commands/upgrade.d.ts +0 -10
  449. package/dist/commands/upgrade.d.ts.map +0 -1
  450. package/dist/commands/upgrade.js +0 -288
  451. package/dist/commands/upgrade.js.map +0 -1
  452. package/dist/commands/view.d.ts +0 -14
  453. package/dist/commands/view.d.ts.map +0 -1
  454. package/dist/commands/view.js +0 -100
  455. package/dist/commands/view.js.map +0 -1
  456. package/dist/config/storage-paths.d.ts +0 -184
  457. package/dist/config/storage-paths.d.ts.map +0 -1
  458. package/dist/config/storage-paths.js +0 -536
  459. package/dist/config/storage-paths.js.map +0 -1
  460. package/dist/core/cache-manager.d.ts +0 -80
  461. package/dist/core/cache-manager.d.ts.map +0 -1
  462. package/dist/core/cache-manager.js +0 -260
  463. package/dist/core/cache-manager.js.map +0 -1
  464. package/dist/core/claude-freshness.d.ts +0 -53
  465. package/dist/core/claude-freshness.d.ts.map +0 -1
  466. package/dist/core/claude-freshness.js +0 -232
  467. package/dist/core/claude-freshness.js.map +0 -1
  468. package/dist/core/core-memory-store.d.ts +0 -320
  469. package/dist/core/core-memory-store.d.ts.map +0 -1
  470. package/dist/core/core-memory-store.js +0 -1177
  471. package/dist/core/core-memory-store.js.map +0 -1
  472. package/dist/core/dashboard-generator-patch.d.ts +0 -2
  473. package/dist/core/dashboard-generator-patch.d.ts.map +0 -1
  474. package/dist/core/dashboard-generator-patch.js +0 -48
  475. package/dist/core/dashboard-generator-patch.js.map +0 -1
  476. package/dist/core/dashboard-generator.d.ts +0 -8
  477. package/dist/core/dashboard-generator.d.ts.map +0 -1
  478. package/dist/core/dashboard-generator.js +0 -695
  479. package/dist/core/dashboard-generator.js.map +0 -1
  480. package/dist/core/data-aggregator.d.ts +0 -145
  481. package/dist/core/data-aggregator.d.ts.map +0 -1
  482. package/dist/core/data-aggregator.js +0 -416
  483. package/dist/core/data-aggregator.js.map +0 -1
  484. package/dist/core/history-importer.d.ts +0 -102
  485. package/dist/core/history-importer.d.ts.map +0 -1
  486. package/dist/core/history-importer.js +0 -493
  487. package/dist/core/history-importer.js.map +0 -1
  488. package/dist/core/lite-scanner-complete.d.ts +0 -81
  489. package/dist/core/lite-scanner-complete.d.ts.map +0 -1
  490. package/dist/core/lite-scanner-complete.js +0 -368
  491. package/dist/core/lite-scanner-complete.js.map +0 -1
  492. package/dist/core/lite-scanner.d.ts +0 -81
  493. package/dist/core/lite-scanner.d.ts.map +0 -1
  494. package/dist/core/lite-scanner.js +0 -368
  495. package/dist/core/lite-scanner.js.map +0 -1
  496. package/dist/core/manifest.d.ts +0 -88
  497. package/dist/core/manifest.d.ts.map +0 -1
  498. package/dist/core/manifest.js +0 -214
  499. package/dist/core/manifest.js.map +0 -1
  500. package/dist/core/memory-embedder-bridge.d.ts +0 -83
  501. package/dist/core/memory-embedder-bridge.d.ts.map +0 -1
  502. package/dist/core/memory-embedder-bridge.js +0 -181
  503. package/dist/core/memory-embedder-bridge.js.map +0 -1
  504. package/dist/core/memory-store.d.ts +0 -249
  505. package/dist/core/memory-store.d.ts.map +0 -1
  506. package/dist/core/memory-store.js +0 -781
  507. package/dist/core/memory-store.js.map +0 -1
  508. package/dist/core/routes/ccw-routes.d.ts +0 -20
  509. package/dist/core/routes/ccw-routes.d.ts.map +0 -1
  510. package/dist/core/routes/ccw-routes.js +0 -70
  511. package/dist/core/routes/ccw-routes.js.map +0 -1
  512. package/dist/core/routes/claude-routes.d.ts +0 -19
  513. package/dist/core/routes/claude-routes.d.ts.map +0 -1
  514. package/dist/core/routes/claude-routes.js +0 -1017
  515. package/dist/core/routes/claude-routes.js.map +0 -1
  516. package/dist/core/routes/cli-routes.d.ts +0 -20
  517. package/dist/core/routes/cli-routes.d.ts.map +0 -1
  518. package/dist/core/routes/cli-routes.js +0 -468
  519. package/dist/core/routes/cli-routes.js.map +0 -1
  520. package/dist/core/routes/codexlens-routes.d.ts +0 -20
  521. package/dist/core/routes/codexlens-routes.d.ts.map +0 -1
  522. package/dist/core/routes/codexlens-routes.js +0 -754
  523. package/dist/core/routes/codexlens-routes.js.map +0 -1
  524. package/dist/core/routes/core-memory-routes.d.ts +0 -21
  525. package/dist/core/routes/core-memory-routes.d.ts.map +0 -1
  526. package/dist/core/routes/core-memory-routes.js +0 -520
  527. package/dist/core/routes/core-memory-routes.js.map +0 -1
  528. package/dist/core/routes/files-routes.d.ts +0 -20
  529. package/dist/core/routes/files-routes.d.ts.map +0 -1
  530. package/dist/core/routes/files-routes.js +0 -374
  531. package/dist/core/routes/files-routes.js.map +0 -1
  532. package/dist/core/routes/graph-routes.d.ts +0 -20
  533. package/dist/core/routes/graph-routes.d.ts.map +0 -1
  534. package/dist/core/routes/graph-routes.js +0 -517
  535. package/dist/core/routes/graph-routes.js.map +0 -1
  536. package/dist/core/routes/help-routes.d.ts +0 -20
  537. package/dist/core/routes/help-routes.d.ts.map +0 -1
  538. package/dist/core/routes/help-routes.js +0 -250
  539. package/dist/core/routes/help-routes.js.map +0 -1
  540. package/dist/core/routes/hooks-routes.d.ts +0 -21
  541. package/dist/core/routes/hooks-routes.d.ts.map +0 -1
  542. package/dist/core/routes/hooks-routes.js +0 -346
  543. package/dist/core/routes/hooks-routes.js.map +0 -1
  544. package/dist/core/routes/mcp-routes.d.ts +0 -20
  545. package/dist/core/routes/mcp-routes.d.ts.map +0 -1
  546. package/dist/core/routes/mcp-routes.js +0 -1129
  547. package/dist/core/routes/mcp-routes.js.map +0 -1
  548. package/dist/core/routes/mcp-templates-db.d.ts +0 -54
  549. package/dist/core/routes/mcp-templates-db.d.ts.map +0 -1
  550. package/dist/core/routes/mcp-templates-db.js +0 -226
  551. package/dist/core/routes/mcp-templates-db.js.map +0 -1
  552. package/dist/core/routes/memory-routes.d.ts +0 -21
  553. package/dist/core/routes/memory-routes.d.ts.map +0 -1
  554. package/dist/core/routes/memory-routes.js +0 -1095
  555. package/dist/core/routes/memory-routes.js.map +0 -1
  556. package/dist/core/routes/rules-routes.d.ts +0 -20
  557. package/dist/core/routes/rules-routes.d.ts.map +0 -1
  558. package/dist/core/routes/rules-routes.js +0 -442
  559. package/dist/core/routes/rules-routes.js.map +0 -1
  560. package/dist/core/routes/session-routes.d.ts +0 -20
  561. package/dist/core/routes/session-routes.d.ts.map +0 -1
  562. package/dist/core/routes/session-routes.js +0 -423
  563. package/dist/core/routes/session-routes.js.map +0 -1
  564. package/dist/core/routes/skills-routes.d.ts +0 -20
  565. package/dist/core/routes/skills-routes.d.ts.map +0 -1
  566. package/dist/core/routes/skills-routes.js +0 -533
  567. package/dist/core/routes/skills-routes.js.map +0 -1
  568. package/dist/core/routes/status-routes.d.ts +0 -20
  569. package/dist/core/routes/status-routes.d.ts.map +0 -1
  570. package/dist/core/routes/status-routes.js +0 -38
  571. package/dist/core/routes/status-routes.js.map +0 -1
  572. package/dist/core/routes/system-routes.d.ts +0 -22
  573. package/dist/core/routes/system-routes.d.ts.map +0 -1
  574. package/dist/core/routes/system-routes.js +0 -354
  575. package/dist/core/routes/system-routes.js.map +0 -1
  576. package/dist/core/server.d.ts +0 -17
  577. package/dist/core/server.d.ts.map +0 -1
  578. package/dist/core/server.js +0 -386
  579. package/dist/core/server.js.map +0 -1
  580. package/dist/core/session-clustering-service.d.ts +0 -153
  581. package/dist/core/session-clustering-service.d.ts.map +0 -1
  582. package/dist/core/session-clustering-service.js +0 -1065
  583. package/dist/core/session-clustering-service.js.map +0 -1
  584. package/dist/core/session-scanner.d.ts +0 -32
  585. package/dist/core/session-scanner.d.ts.map +0 -1
  586. package/dist/core/session-scanner.js +0 -253
  587. package/dist/core/session-scanner.js.map +0 -1
  588. package/dist/core/websocket.d.ts +0 -23
  589. package/dist/core/websocket.d.ts.map +0 -1
  590. package/dist/core/websocket.js +0 -168
  591. package/dist/core/websocket.js.map +0 -1
  592. package/dist/index.d.ts +0 -10
  593. package/dist/index.d.ts.map +0 -1
  594. package/dist/index.js +0 -10
  595. package/dist/index.js.map +0 -1
  596. package/dist/mcp-server/index.d.ts +0 -7
  597. package/dist/mcp-server/index.d.ts.map +0 -1
  598. package/dist/mcp-server/index.js +0 -157
  599. package/dist/mcp-server/index.js.map +0 -1
  600. package/dist/tools/classify-folders.d.ts +0 -26
  601. package/dist/tools/classify-folders.d.ts.map +0 -1
  602. package/dist/tools/classify-folders.js +0 -201
  603. package/dist/tools/classify-folders.js.map +0 -1
  604. package/dist/tools/cli-config-manager.d.ts +0 -62
  605. package/dist/tools/cli-config-manager.d.ts.map +0 -1
  606. package/dist/tools/cli-config-manager.js +0 -221
  607. package/dist/tools/cli-config-manager.js.map +0 -1
  608. package/dist/tools/cli-executor.d.ts +0 -373
  609. package/dist/tools/cli-executor.d.ts.map +0 -1
  610. package/dist/tools/cli-executor.js +0 -1625
  611. package/dist/tools/cli-executor.js.map +0 -1
  612. package/dist/tools/cli-history-store.d.ts +0 -330
  613. package/dist/tools/cli-history-store.d.ts.map +0 -1
  614. package/dist/tools/cli-history-store.js +0 -916
  615. package/dist/tools/cli-history-store.js.map +0 -1
  616. package/dist/tools/codex-lens.d.ts +0 -118
  617. package/dist/tools/codex-lens.d.ts.map +0 -1
  618. package/dist/tools/codex-lens.js +0 -962
  619. package/dist/tools/codex-lens.js.map +0 -1
  620. package/dist/tools/convert-tokens-to-css.d.ts +0 -14
  621. package/dist/tools/convert-tokens-to-css.d.ts.map +0 -1
  622. package/dist/tools/convert-tokens-to-css.js +0 -244
  623. package/dist/tools/convert-tokens-to-css.js.map +0 -1
  624. package/dist/tools/core-memory.d.ts +0 -66
  625. package/dist/tools/core-memory.d.ts.map +0 -1
  626. package/dist/tools/core-memory.js +0 -324
  627. package/dist/tools/core-memory.js.map +0 -1
  628. package/dist/tools/detect-changed-modules.d.ts +0 -24
  629. package/dist/tools/detect-changed-modules.d.ts.map +0 -1
  630. package/dist/tools/detect-changed-modules.js +0 -277
  631. package/dist/tools/detect-changed-modules.js.map +0 -1
  632. package/dist/tools/discover-design-files.d.ts +0 -36
  633. package/dist/tools/discover-design-files.d.ts.map +0 -1
  634. package/dist/tools/discover-design-files.js +0 -147
  635. package/dist/tools/discover-design-files.js.map +0 -1
  636. package/dist/tools/edit-file.d.ts +0 -28
  637. package/dist/tools/edit-file.d.ts.map +0 -1
  638. package/dist/tools/edit-file.js +0 -479
  639. package/dist/tools/edit-file.js.map +0 -1
  640. package/dist/tools/generate-module-docs.d.ts +0 -22
  641. package/dist/tools/generate-module-docs.d.ts.map +0 -1
  642. package/dist/tools/generate-module-docs.js +0 -379
  643. package/dist/tools/generate-module-docs.js.map +0 -1
  644. package/dist/tools/get-modules-by-depth.d.ts +0 -15
  645. package/dist/tools/get-modules-by-depth.d.ts.map +0 -1
  646. package/dist/tools/get-modules-by-depth.js +0 -296
  647. package/dist/tools/get-modules-by-depth.js.map +0 -1
  648. package/dist/tools/index.d.ts +0 -55
  649. package/dist/tools/index.d.ts.map +0 -1
  650. package/dist/tools/index.js +0 -304
  651. package/dist/tools/index.js.map +0 -1
  652. package/dist/tools/native-session-discovery.d.ts +0 -97
  653. package/dist/tools/native-session-discovery.d.ts.map +0 -1
  654. package/dist/tools/native-session-discovery.js +0 -700
  655. package/dist/tools/native-session-discovery.js.map +0 -1
  656. package/dist/tools/notifier.d.ts +0 -50
  657. package/dist/tools/notifier.d.ts.map +0 -1
  658. package/dist/tools/notifier.js +0 -90
  659. package/dist/tools/notifier.js.map +0 -1
  660. package/dist/tools/read-file.d.ts +0 -32
  661. package/dist/tools/read-file.d.ts.map +0 -1
  662. package/dist/tools/read-file.js +0 -329
  663. package/dist/tools/read-file.js.map +0 -1
  664. package/dist/tools/resume-strategy.d.ts +0 -48
  665. package/dist/tools/resume-strategy.d.ts.map +0 -1
  666. package/dist/tools/resume-strategy.js +0 -248
  667. package/dist/tools/resume-strategy.js.map +0 -1
  668. package/dist/tools/session-content-parser.d.ts +0 -58
  669. package/dist/tools/session-content-parser.d.ts.map +0 -1
  670. package/dist/tools/session-content-parser.js +0 -420
  671. package/dist/tools/session-content-parser.js.map +0 -1
  672. package/dist/tools/session-manager.d.ts +0 -9
  673. package/dist/tools/session-manager.d.ts.map +0 -1
  674. package/dist/tools/session-manager.js +0 -834
  675. package/dist/tools/session-manager.js.map +0 -1
  676. package/dist/tools/smart-context.d.ts +0 -35
  677. package/dist/tools/smart-context.d.ts.map +0 -1
  678. package/dist/tools/smart-context.js +0 -182
  679. package/dist/tools/smart-context.js.map +0 -1
  680. package/dist/tools/smart-search.d.ts +0 -105
  681. package/dist/tools/smart-search.d.ts.map +0 -1
  682. package/dist/tools/smart-search.js +0 -1753
  683. package/dist/tools/smart-search.js.map +0 -1
  684. package/dist/tools/storage-manager.d.ts +0 -114
  685. package/dist/tools/storage-manager.d.ts.map +0 -1
  686. package/dist/tools/storage-manager.js +0 -392
  687. package/dist/tools/storage-manager.js.map +0 -1
  688. package/dist/tools/ui-generate-preview.d.ts +0 -39
  689. package/dist/tools/ui-generate-preview.d.ts.map +0 -1
  690. package/dist/tools/ui-generate-preview.js +0 -300
  691. package/dist/tools/ui-generate-preview.js.map +0 -1
  692. package/dist/tools/ui-instantiate-prototypes.d.ts +0 -75
  693. package/dist/tools/ui-instantiate-prototypes.d.ts.map +0 -1
  694. package/dist/tools/ui-instantiate-prototypes.js +0 -256
  695. package/dist/tools/ui-instantiate-prototypes.js.map +0 -1
  696. package/dist/tools/update-module-claude.d.ts +0 -80
  697. package/dist/tools/update-module-claude.d.ts.map +0 -1
  698. package/dist/tools/update-module-claude.js +0 -351
  699. package/dist/tools/update-module-claude.js.map +0 -1
  700. package/dist/tools/write-file.d.ts +0 -19
  701. package/dist/tools/write-file.d.ts.map +0 -1
  702. package/dist/tools/write-file.js +0 -193
  703. package/dist/tools/write-file.js.map +0 -1
  704. package/dist/types/config.d.ts +0 -11
  705. package/dist/types/config.d.ts.map +0 -1
  706. package/dist/types/config.js +0 -2
  707. package/dist/types/config.js.map +0 -1
  708. package/dist/types/index.d.ts +0 -4
  709. package/dist/types/index.d.ts.map +0 -1
  710. package/dist/types/index.js +0 -4
  711. package/dist/types/index.js.map +0 -1
  712. package/dist/types/session.d.ts +0 -20
  713. package/dist/types/session.d.ts.map +0 -1
  714. package/dist/types/session.js +0 -2
  715. package/dist/types/session.js.map +0 -1
  716. package/dist/types/tool.d.ts +0 -36
  717. package/dist/types/tool.d.ts.map +0 -1
  718. package/dist/types/tool.js +0 -11
  719. package/dist/types/tool.js.map +0 -1
  720. package/dist/utils/browser-launcher.d.ts +0 -13
  721. package/dist/utils/browser-launcher.d.ts.map +0 -1
  722. package/dist/utils/browser-launcher.js +0 -60
  723. package/dist/utils/browser-launcher.js.map +0 -1
  724. package/dist/utils/file-utils.d.ts +0 -25
  725. package/dist/utils/file-utils.d.ts.map +0 -1
  726. package/dist/utils/file-utils.js +0 -48
  727. package/dist/utils/file-utils.js.map +0 -1
  728. package/dist/utils/path-resolver.d.ts +0 -80
  729. package/dist/utils/path-resolver.d.ts.map +0 -1
  730. package/dist/utils/path-resolver.js +0 -260
  731. package/dist/utils/path-resolver.js.map +0 -1
  732. package/dist/utils/path-validator.d.ts +0 -49
  733. package/dist/utils/path-validator.d.ts.map +0 -1
  734. package/dist/utils/path-validator.js +0 -123
  735. package/dist/utils/path-validator.js.map +0 -1
  736. package/dist/utils/ui.d.ts +0 -62
  737. package/dist/utils/ui.d.ts.map +0 -1
  738. package/dist/utils/ui.js +0 -129
  739. package/dist/utils/ui.js.map +0 -1
  740. /package/{bin → ccw/bin}/ccw-mcp.js +0 -0
  741. /package/{bin → ccw/bin}/ccw.js +0 -0
  742. /package/{src → ccw/src}/.workflow/.cli-history/history.db +0 -0
  743. /package/{src → ccw/src}/.workflow/.cli-history/history.db-shm +0 -0
  744. /package/{src → ccw/src}/.workflow/.cli-history/history.db-wal +0 -0
  745. /package/{src → ccw/src}/cli.ts +0 -0
  746. /package/{src → ccw/src}/commands/cli.ts +0 -0
  747. /package/{src → ccw/src}/commands/core-memory.ts +0 -0
  748. /package/{src → ccw/src}/commands/hook.ts +0 -0
  749. /package/{src → ccw/src}/commands/install.ts +0 -0
  750. /package/{src → ccw/src}/commands/list.ts +0 -0
  751. /package/{src → ccw/src}/commands/memory.ts +0 -0
  752. /package/{src → ccw/src}/commands/serve.ts +0 -0
  753. /package/{src → ccw/src}/commands/session-path-resolver.ts +0 -0
  754. /package/{src → ccw/src}/commands/session.ts +0 -0
  755. /package/{src → ccw/src}/commands/stop.ts +0 -0
  756. /package/{src → ccw/src}/commands/tool.ts +0 -0
  757. /package/{src → ccw/src}/commands/uninstall.ts +0 -0
  758. /package/{src → ccw/src}/commands/upgrade.ts +0 -0
  759. /package/{src → ccw/src}/commands/view.ts +0 -0
  760. /package/{src → ccw/src}/config/storage-paths.ts +0 -0
  761. /package/{src → ccw/src}/core/cache-manager.ts +0 -0
  762. /package/{src → ccw/src}/core/claude-freshness.ts +0 -0
  763. /package/{src → ccw/src}/core/core-memory-store.ts +0 -0
  764. /package/{src → ccw/src}/core/dashboard-generator-patch.ts +0 -0
  765. /package/{src → ccw/src}/core/dashboard-generator.ts +0 -0
  766. /package/{src → ccw/src}/core/data-aggregator.ts +0 -0
  767. /package/{src → ccw/src}/core/history-importer.ts +0 -0
  768. /package/{src → ccw/src}/core/lite-scanner-complete.ts +0 -0
  769. /package/{src → ccw/src}/core/lite-scanner.ts +0 -0
  770. /package/{src → ccw/src}/core/manifest.ts +0 -0
  771. /package/{src → ccw/src}/core/memory-embedder-bridge.ts +0 -0
  772. /package/{src → ccw/src}/core/memory-store.ts +0 -0
  773. /package/{src → ccw/src}/core/routes/ccw-routes.ts +0 -0
  774. /package/{src → ccw/src}/core/routes/claude-routes.ts +0 -0
  775. /package/{src → ccw/src}/core/routes/cli-routes.ts +0 -0
  776. /package/{src → ccw/src}/core/routes/codexlens-routes.ts +0 -0
  777. /package/{src → ccw/src}/core/routes/core-memory-routes.ts +0 -0
  778. /package/{src → ccw/src}/core/routes/files-routes.ts +0 -0
  779. /package/{src → ccw/src}/core/routes/graph-routes.md +0 -0
  780. /package/{src → ccw/src}/core/routes/graph-routes.ts +0 -0
  781. /package/{src → ccw/src}/core/routes/help-routes.ts +0 -0
  782. /package/{src → ccw/src}/core/routes/hooks-routes.ts +0 -0
  783. /package/{src → ccw/src}/core/routes/mcp-routes.ts +0 -0
  784. /package/{src → ccw/src}/core/routes/mcp-routes.ts.backup +0 -0
  785. /package/{src → ccw/src}/core/routes/mcp-templates-db.ts +0 -0
  786. /package/{src → ccw/src}/core/routes/memory-routes.ts +0 -0
  787. /package/{src → ccw/src}/core/routes/rules-routes.ts +0 -0
  788. /package/{src → ccw/src}/core/routes/session-routes.ts +0 -0
  789. /package/{src → ccw/src}/core/routes/skills-routes.ts +0 -0
  790. /package/{src → ccw/src}/core/routes/status-routes.ts +0 -0
  791. /package/{src → ccw/src}/core/routes/system-routes.ts +0 -0
  792. /package/{src → ccw/src}/core/server.ts +0 -0
  793. /package/{src → ccw/src}/core/session-clustering-service.ts +0 -0
  794. /package/{src → ccw/src}/core/session-scanner.ts +0 -0
  795. /package/{src → ccw/src}/core/websocket.ts +0 -0
  796. /package/{src → ccw/src}/index.ts +0 -0
  797. /package/{src → ccw/src}/mcp-server/index.ts +0 -0
  798. /package/{src → ccw/src}/templates/assets/css/github-dark.min.css +0 -0
  799. /package/{src → ccw/src}/templates/assets/css/github.min.css +0 -0
  800. /package/{src → ccw/src}/templates/assets/js/cytoscape.min.js +0 -0
  801. /package/{src → ccw/src}/templates/assets/js/d3.min.js +0 -0
  802. /package/{src → ccw/src}/templates/assets/js/highlight.min.js +0 -0
  803. /package/{src → ccw/src}/templates/assets/js/lucide.min.js +0 -0
  804. /package/{src → ccw/src}/templates/assets/js/marked.min.js +0 -0
  805. /package/{src → ccw/src}/templates/assets/js/tailwind.js +0 -0
  806. /package/{src → ccw/src}/templates/dashboard-css/01-base.css +0 -0
  807. /package/{src → ccw/src}/templates/dashboard-css/02-session.css +0 -0
  808. /package/{src → ccw/src}/templates/dashboard-css/03-tasks.css +0 -0
  809. /package/{src → ccw/src}/templates/dashboard-css/04-lite-tasks.css +0 -0
  810. /package/{src → ccw/src}/templates/dashboard-css/05-context.css +0 -0
  811. /package/{src → ccw/src}/templates/dashboard-css/06-cards.css +0 -0
  812. /package/{src → ccw/src}/templates/dashboard-css/07-managers.css +0 -0
  813. /package/{src → ccw/src}/templates/dashboard-css/08-review.css +0 -0
  814. /package/{src → ccw/src}/templates/dashboard-css/09-explorer.css +0 -0
  815. /package/{src → ccw/src}/templates/dashboard-css/10-cli-status.css +0 -0
  816. /package/{src → ccw/src}/templates/dashboard-css/11-cli-history.css +0 -0
  817. /package/{src → ccw/src}/templates/dashboard-css/12-cli-legacy.css +0 -0
  818. /package/{src → ccw/src}/templates/dashboard-css/13-cli-ccw.css +0 -0
  819. /package/{src → ccw/src}/templates/dashboard-css/14-cli-modals.css +0 -0
  820. /package/{src → ccw/src}/templates/dashboard-css/15-cli-endpoints.css +0 -0
  821. /package/{src → ccw/src}/templates/dashboard-css/16-cli-session.css +0 -0
  822. /package/{src → ccw/src}/templates/dashboard-css/17-cli-conversation.css +0 -0
  823. /package/{src → ccw/src}/templates/dashboard-css/18-cli-settings.css +0 -0
  824. /package/{src → ccw/src}/templates/dashboard-css/19-cli-native-session.css +0 -0
  825. /package/{src → ccw/src}/templates/dashboard-css/20-cli-taskqueue.css +0 -0
  826. /package/{src → ccw/src}/templates/dashboard-css/21-cli-toolmgmt.css +0 -0
  827. /package/{src → ccw/src}/templates/dashboard-css/22-cli-semantic.css +0 -0
  828. /package/{src → ccw/src}/templates/dashboard-css/23-memory.css +0 -0
  829. /package/{src → ccw/src}/templates/dashboard-css/24-prompt-history.css +0 -0
  830. /package/{src → ccw/src}/templates/dashboard-css/25-skills-rules.css +0 -0
  831. /package/{src → ccw/src}/templates/dashboard-css/26-claude-manager.css +0 -0
  832. /package/{src → ccw/src}/templates/dashboard-css/27-graph-explorer.css +0 -0
  833. /package/{src → ccw/src}/templates/dashboard-css/28-mcp-manager.css +0 -0
  834. /package/{src → ccw/src}/templates/dashboard-css/29-help.css +0 -0
  835. /package/{src → ccw/src}/templates/dashboard-css/30-core-memory.css +0 -0
  836. /package/{src → ccw/src}/templates/dashboard-js/api.js +0 -0
  837. /package/{src → ccw/src}/templates/dashboard-js/components/_conflict_tab.js +0 -0
  838. /package/{src → ccw/src}/templates/dashboard-js/components/_exp_helpers.js +0 -0
  839. /package/{src → ccw/src}/templates/dashboard-js/components/_review_tab.js +0 -0
  840. /package/{src → ccw/src}/templates/dashboard-js/components/carousel.js +0 -0
  841. /package/{src → ccw/src}/templates/dashboard-js/components/cli-history.js +0 -0
  842. /package/{src → ccw/src}/templates/dashboard-js/components/cli-status.js +0 -0
  843. /package/{src → ccw/src}/templates/dashboard-js/components/flowchart.js +0 -0
  844. /package/{src → ccw/src}/templates/dashboard-js/components/global-notifications.js +0 -0
  845. /package/{src → ccw/src}/templates/dashboard-js/components/hook-manager.js +0 -0
  846. /package/{src → ccw/src}/templates/dashboard-js/components/index-manager.js +0 -0
  847. /package/{src → ccw/src}/templates/dashboard-js/components/mcp-manager.js +0 -0
  848. /package/{src → ccw/src}/templates/dashboard-js/components/modals.js +0 -0
  849. /package/{src → ccw/src}/templates/dashboard-js/components/navigation.js +0 -0
  850. /package/{src → ccw/src}/templates/dashboard-js/components/notifications.js +0 -0
  851. /package/{src → ccw/src}/templates/dashboard-js/components/sidebar.js +0 -0
  852. /package/{src → ccw/src}/templates/dashboard-js/components/storage-manager.js +0 -0
  853. /package/{src → ccw/src}/templates/dashboard-js/components/tabs-context.js +0 -0
  854. /package/{src → ccw/src}/templates/dashboard-js/components/tabs-other.js +0 -0
  855. /package/{src → ccw/src}/templates/dashboard-js/components/task-drawer-core.js +0 -0
  856. /package/{src → ccw/src}/templates/dashboard-js/components/task-drawer-renderers.js +0 -0
  857. /package/{src → ccw/src}/templates/dashboard-js/components/task-queue-sidebar.js +0 -0
  858. /package/{src → ccw/src}/templates/dashboard-js/components/theme.js +0 -0
  859. /package/{src → ccw/src}/templates/dashboard-js/components/version-check.js +0 -0
  860. /package/{src → ccw/src}/templates/dashboard-js/help-i18n.js +0 -0
  861. /package/{src → ccw/src}/templates/dashboard-js/i18n.js +0 -0
  862. /package/{src → ccw/src}/templates/dashboard-js/main.js +0 -0
  863. /package/{src → ccw/src}/templates/dashboard-js/state.js +0 -0
  864. /package/{src → ccw/src}/templates/dashboard-js/utils.js +0 -0
  865. /package/{src → ccw/src}/templates/dashboard-js/views/claude-manager.js +0 -0
  866. /package/{src → ccw/src}/templates/dashboard-js/views/cli-manager.js +0 -0
  867. /package/{src → ccw/src}/templates/dashboard-js/views/codexlens-manager.js +0 -0
  868. /package/{src → ccw/src}/templates/dashboard-js/views/core-memory-clusters.js +0 -0
  869. /package/{src → ccw/src}/templates/dashboard-js/views/core-memory.js +0 -0
  870. /package/{src → ccw/src}/templates/dashboard-js/views/explorer.js +0 -0
  871. /package/{src → ccw/src}/templates/dashboard-js/views/fix-session.js +0 -0
  872. /package/{src → ccw/src}/templates/dashboard-js/views/graph-explorer.js +0 -0
  873. /package/{src → ccw/src}/templates/dashboard-js/views/help.js +0 -0
  874. /package/{src → ccw/src}/templates/dashboard-js/views/history.js +0 -0
  875. /package/{src → ccw/src}/templates/dashboard-js/views/home.js +0 -0
  876. /package/{src → ccw/src}/templates/dashboard-js/views/hook-manager.js +0 -0
  877. /package/{src → ccw/src}/templates/dashboard-js/views/lite-tasks.js +0 -0
  878. /package/{src → ccw/src}/templates/dashboard-js/views/mcp-manager.js +0 -0
  879. /package/{src → ccw/src}/templates/dashboard-js/views/mcp-manager.js.backup +0 -0
  880. /package/{src → ccw/src}/templates/dashboard-js/views/mcp-manager.js.new +0 -0
  881. /package/{src → ccw/src}/templates/dashboard-js/views/memory.js +0 -0
  882. /package/{src → ccw/src}/templates/dashboard-js/views/project-overview.js +0 -0
  883. /package/{src → ccw/src}/templates/dashboard-js/views/prompt-history.js +0 -0
  884. /package/{src → ccw/src}/templates/dashboard-js/views/review-session.js +0 -0
  885. /package/{src → ccw/src}/templates/dashboard-js/views/rules-manager.js +0 -0
  886. /package/{src → ccw/src}/templates/dashboard-js/views/session-detail.js +0 -0
  887. /package/{src → ccw/src}/templates/dashboard-js/views/skills-manager.js +0 -0
  888. /package/{src → ccw/src}/templates/dashboard.html +0 -0
  889. /package/{src → ccw/src}/templates/hooks-config-example.json +0 -0
  890. /package/{src → ccw/src}/templates/review-cycle-dashboard.html +0 -0
  891. /package/{src → ccw/src}/templates/workflow-dashboard.html +0 -0
  892. /package/{src → ccw/src}/tools/classify-folders.ts +0 -0
  893. /package/{src → ccw/src}/tools/cli-config-manager.ts +0 -0
  894. /package/{src → ccw/src}/tools/cli-executor.ts +0 -0
  895. /package/{src → ccw/src}/tools/cli-history-store.ts +0 -0
  896. /package/{src → ccw/src}/tools/codex-lens.ts +0 -0
  897. /package/{src → ccw/src}/tools/convert-tokens-to-css.ts +0 -0
  898. /package/{src → ccw/src}/tools/core-memory.ts +0 -0
  899. /package/{src → ccw/src}/tools/detect-changed-modules.ts +0 -0
  900. /package/{src → ccw/src}/tools/discover-design-files.ts +0 -0
  901. /package/{src → ccw/src}/tools/edit-file.ts +0 -0
  902. /package/{src → ccw/src}/tools/generate-module-docs.ts +0 -0
  903. /package/{src → ccw/src}/tools/get-modules-by-depth.ts +0 -0
  904. /package/{src → ccw/src}/tools/index.ts +0 -0
  905. /package/{src → ccw/src}/tools/native-session-discovery.ts +0 -0
  906. /package/{src → ccw/src}/tools/notifier.ts +0 -0
  907. /package/{src → ccw/src}/tools/read-file.ts +0 -0
  908. /package/{src → ccw/src}/tools/resume-strategy.ts +0 -0
  909. /package/{src → ccw/src}/tools/session-content-parser.ts +0 -0
  910. /package/{src → ccw/src}/tools/session-manager.ts +0 -0
  911. /package/{src → ccw/src}/tools/smart-context.ts +0 -0
  912. /package/{src → ccw/src}/tools/smart-search.ts +0 -0
  913. /package/{src → ccw/src}/tools/smart-search.ts.backup +0 -0
  914. /package/{src → ccw/src}/tools/storage-manager.ts +0 -0
  915. /package/{src → ccw/src}/tools/ui-generate-preview.js +0 -0
  916. /package/{src → ccw/src}/tools/ui-instantiate-prototypes.js +0 -0
  917. /package/{src → ccw/src}/tools/update-module-claude.js +0 -0
  918. /package/{src → ccw/src}/tools/write-file.ts +0 -0
  919. /package/{src → ccw/src}/types/config.ts +0 -0
  920. /package/{src → ccw/src}/types/index.ts +0 -0
  921. /package/{src → ccw/src}/types/session.ts +0 -0
  922. /package/{src → ccw/src}/types/tool.ts +0 -0
  923. /package/{src → ccw/src}/utils/browser-launcher.ts +0 -0
  924. /package/{src → ccw/src}/utils/file-utils.ts +0 -0
  925. /package/{src → ccw/src}/utils/path-resolver.ts +0 -0
  926. /package/{src → ccw/src}/utils/path-validator.ts +0 -0
  927. /package/{src → ccw/src}/utils/ui.ts +0 -0
@@ -1,962 +0,0 @@
1
- /**
2
- * CodexLens Tool - Bridge between CCW and CodexLens Python package
3
- * Provides code indexing and semantic search via spawned Python process
4
- *
5
- * Features:
6
- * - Automatic venv bootstrap at ~/.codexlens/venv
7
- * - JSON protocol communication
8
- * - Symbol extraction and semantic search
9
- * - FTS5 full-text search
10
- */
11
- import { z } from 'zod';
12
- import { spawn, execSync } from 'child_process';
13
- import { existsSync, mkdirSync } from 'fs';
14
- import { join, dirname } from 'path';
15
- import { homedir } from 'os';
16
- import { fileURLToPath } from 'url';
17
- // Get directory of this module
18
- const __filename = fileURLToPath(import.meta.url);
19
- const __dirname = dirname(__filename);
20
- // CodexLens configuration
21
- const CODEXLENS_DATA_DIR = join(homedir(), '.codexlens');
22
- const CODEXLENS_VENV = join(CODEXLENS_DATA_DIR, 'venv');
23
- const VENV_PYTHON = process.platform === 'win32'
24
- ? join(CODEXLENS_VENV, 'Scripts', 'python.exe')
25
- : join(CODEXLENS_VENV, 'bin', 'python');
26
- // Bootstrap status cache
27
- let bootstrapChecked = false;
28
- let bootstrapReady = false;
29
- // Track running indexing process for cancellation
30
- let currentIndexingProcess = null;
31
- let currentIndexingAborted = false;
32
- // Define Zod schema for validation
33
- const ParamsSchema = z.object({
34
- action: z.enum([
35
- 'init',
36
- 'search',
37
- 'search_files',
38
- 'status',
39
- 'symbol',
40
- 'check',
41
- 'update',
42
- 'bootstrap',
43
- ]),
44
- path: z.string().optional(),
45
- query: z.string().optional(),
46
- mode: z.enum(['auto', 'text', 'semantic', 'exact', 'fuzzy', 'hybrid', 'vector', 'pure-vector']).default('auto'),
47
- format: z.enum(['json', 'text', 'pretty']).default('json'),
48
- languages: z.array(z.string()).optional(),
49
- limit: z.number().default(20),
50
- enrich: z.boolean().default(false),
51
- // Additional fields for internal functions
52
- file: z.string().optional(),
53
- key: z.string().optional(),
54
- value: z.string().optional(),
55
- newPath: z.string().optional(),
56
- all: z.boolean().optional(),
57
- });
58
- /**
59
- * Detect available Python 3 executable
60
- * @returns Python executable command
61
- */
62
- function getSystemPython() {
63
- const commands = process.platform === 'win32' ? ['python', 'py', 'python3'] : ['python3', 'python'];
64
- for (const cmd of commands) {
65
- try {
66
- const version = execSync(`${cmd} --version 2>&1`, { encoding: 'utf8' });
67
- if (version.includes('Python 3')) {
68
- return cmd;
69
- }
70
- }
71
- catch {
72
- // Try next command
73
- }
74
- }
75
- throw new Error('Python 3 not found. Please install Python 3 and ensure it is in PATH.');
76
- }
77
- /**
78
- * Check if CodexLens venv exists and has required packages
79
- * @returns Ready status
80
- */
81
- async function checkVenvStatus() {
82
- // Check venv exists
83
- if (!existsSync(CODEXLENS_VENV)) {
84
- return { ready: false, error: 'Venv not found' };
85
- }
86
- // Check python executable exists
87
- if (!existsSync(VENV_PYTHON)) {
88
- return { ready: false, error: 'Python executable not found in venv' };
89
- }
90
- // Check codexlens is importable
91
- return new Promise((resolve) => {
92
- const child = spawn(VENV_PYTHON, ['-c', 'import codexlens; print(codexlens.__version__)'], {
93
- stdio: ['ignore', 'pipe', 'pipe'],
94
- timeout: 10000,
95
- });
96
- let stdout = '';
97
- let stderr = '';
98
- child.stdout.on('data', (data) => {
99
- stdout += data.toString();
100
- });
101
- child.stderr.on('data', (data) => {
102
- stderr += data.toString();
103
- });
104
- child.on('close', (code) => {
105
- if (code === 0) {
106
- resolve({ ready: true, version: stdout.trim() });
107
- }
108
- else {
109
- resolve({ ready: false, error: `CodexLens not installed: ${stderr}` });
110
- }
111
- });
112
- child.on('error', (err) => {
113
- resolve({ ready: false, error: `Failed to check venv: ${err.message}` });
114
- });
115
- });
116
- }
117
- /**
118
- * Check if semantic search dependencies are installed
119
- * @returns Semantic status
120
- */
121
- async function checkSemanticStatus() {
122
- // First check if CodexLens is installed
123
- const venvStatus = await checkVenvStatus();
124
- if (!venvStatus.ready) {
125
- return { available: false, error: 'CodexLens not installed' };
126
- }
127
- // Check semantic module availability
128
- return new Promise((resolve) => {
129
- const checkCode = `
130
- import sys
131
- try:
132
- from codexlens.semantic import SEMANTIC_AVAILABLE, SEMANTIC_BACKEND
133
- if SEMANTIC_AVAILABLE:
134
- print(f"available:{SEMANTIC_BACKEND}")
135
- else:
136
- print("unavailable")
137
- except Exception as e:
138
- print(f"error:{e}")
139
- `;
140
- const child = spawn(VENV_PYTHON, ['-c', checkCode], {
141
- stdio: ['ignore', 'pipe', 'pipe'],
142
- timeout: 15000,
143
- });
144
- let stdout = '';
145
- let stderr = '';
146
- child.stdout.on('data', (data) => {
147
- stdout += data.toString();
148
- });
149
- child.stderr.on('data', (data) => {
150
- stderr += data.toString();
151
- });
152
- child.on('close', (code) => {
153
- const output = stdout.trim();
154
- if (output.startsWith('available:')) {
155
- const backend = output.split(':')[1];
156
- resolve({ available: true, backend });
157
- }
158
- else if (output === 'unavailable') {
159
- resolve({ available: false, error: 'Semantic dependencies not installed' });
160
- }
161
- else {
162
- resolve({ available: false, error: output || stderr || 'Unknown error' });
163
- }
164
- });
165
- child.on('error', (err) => {
166
- resolve({ available: false, error: `Check failed: ${err.message}` });
167
- });
168
- });
169
- }
170
- /**
171
- * Install semantic search dependencies (fastembed, ONNX-based, ~200MB)
172
- * @returns Bootstrap result
173
- */
174
- async function installSemantic() {
175
- // First ensure CodexLens is installed
176
- const venvStatus = await checkVenvStatus();
177
- if (!venvStatus.ready) {
178
- return { success: false, error: 'CodexLens not installed. Install CodexLens first.' };
179
- }
180
- const pipPath = process.platform === 'win32'
181
- ? join(CODEXLENS_VENV, 'Scripts', 'pip.exe')
182
- : join(CODEXLENS_VENV, 'bin', 'pip');
183
- return new Promise((resolve) => {
184
- console.log('[CodexLens] Installing semantic search dependencies (fastembed)...');
185
- console.log('[CodexLens] Using ONNX-based fastembed backend (~200MB)');
186
- const child = spawn(pipPath, ['install', 'numpy>=1.24', 'fastembed>=0.2'], {
187
- stdio: ['ignore', 'pipe', 'pipe'],
188
- timeout: 600000, // 10 minutes for potential model download
189
- });
190
- let stdout = '';
191
- let stderr = '';
192
- child.stdout.on('data', (data) => {
193
- stdout += data.toString();
194
- // Log progress
195
- const line = data.toString().trim();
196
- if (line.includes('Downloading') || line.includes('Installing') || line.includes('Collecting')) {
197
- console.log(`[CodexLens] ${line}`);
198
- }
199
- });
200
- child.stderr.on('data', (data) => {
201
- stderr += data.toString();
202
- });
203
- child.on('close', (code) => {
204
- if (code === 0) {
205
- console.log('[CodexLens] Semantic dependencies installed successfully');
206
- resolve({ success: true });
207
- }
208
- else {
209
- resolve({ success: false, error: `Installation failed: ${stderr || stdout}` });
210
- }
211
- });
212
- child.on('error', (err) => {
213
- resolve({ success: false, error: `Failed to run pip: ${err.message}` });
214
- });
215
- });
216
- }
217
- /**
218
- * Bootstrap CodexLens venv with required packages
219
- * @returns Bootstrap result
220
- */
221
- async function bootstrapVenv() {
222
- // Ensure data directory exists
223
- if (!existsSync(CODEXLENS_DATA_DIR)) {
224
- mkdirSync(CODEXLENS_DATA_DIR, { recursive: true });
225
- }
226
- // Create venv if not exists
227
- if (!existsSync(CODEXLENS_VENV)) {
228
- try {
229
- console.log('[CodexLens] Creating virtual environment...');
230
- const pythonCmd = getSystemPython();
231
- execSync(`${pythonCmd} -m venv "${CODEXLENS_VENV}"`, { stdio: 'inherit' });
232
- }
233
- catch (err) {
234
- return { success: false, error: `Failed to create venv: ${err.message}` };
235
- }
236
- }
237
- // Install codexlens with semantic extras
238
- try {
239
- console.log('[CodexLens] Installing codexlens package...');
240
- const pipPath = process.platform === 'win32'
241
- ? join(CODEXLENS_VENV, 'Scripts', 'pip.exe')
242
- : join(CODEXLENS_VENV, 'bin', 'pip');
243
- // Try multiple local paths, then fall back to PyPI
244
- const possiblePaths = [
245
- join(process.cwd(), 'codex-lens'),
246
- join(__dirname, '..', '..', '..', 'codex-lens'), // ccw/src/tools -> project root
247
- join(homedir(), 'codex-lens'),
248
- ];
249
- let installed = false;
250
- for (const localPath of possiblePaths) {
251
- if (existsSync(join(localPath, 'pyproject.toml'))) {
252
- console.log(`[CodexLens] Installing from local path: ${localPath}`);
253
- execSync(`"${pipPath}" install -e "${localPath}"`, { stdio: 'inherit' });
254
- installed = true;
255
- break;
256
- }
257
- }
258
- if (!installed) {
259
- console.log('[CodexLens] Installing from PyPI...');
260
- execSync(`"${pipPath}" install codexlens`, { stdio: 'inherit' });
261
- }
262
- return { success: true };
263
- }
264
- catch (err) {
265
- return { success: false, error: `Failed to install codexlens: ${err.message}` };
266
- }
267
- }
268
- /**
269
- * Ensure CodexLens is ready to use
270
- * @returns Ready status
271
- */
272
- async function ensureReady() {
273
- // Use cached result if already checked
274
- if (bootstrapChecked && bootstrapReady) {
275
- return { ready: true };
276
- }
277
- // Check current status
278
- const status = await checkVenvStatus();
279
- if (status.ready) {
280
- bootstrapChecked = true;
281
- bootstrapReady = true;
282
- return { ready: true, version: status.version };
283
- }
284
- // Attempt bootstrap
285
- const bootstrap = await bootstrapVenv();
286
- if (!bootstrap.success) {
287
- return { ready: false, error: bootstrap.error };
288
- }
289
- // Verify after bootstrap
290
- const recheck = await checkVenvStatus();
291
- bootstrapChecked = true;
292
- bootstrapReady = recheck.ready;
293
- return recheck;
294
- }
295
- /**
296
- * Parse progress info from CodexLens output
297
- * @param line - Output line to parse
298
- * @returns Progress info or null
299
- */
300
- function parseProgressLine(line) {
301
- // Parse file processing progress: "Processing file X/Y: path"
302
- const fileMatch = line.match(/Processing file (\d+)\/(\d+):\s*(.+)/i);
303
- if (fileMatch) {
304
- const current = parseInt(fileMatch[1], 10);
305
- const total = parseInt(fileMatch[2], 10);
306
- return {
307
- stage: 'indexing',
308
- message: `Processing ${fileMatch[3]}`,
309
- percent: Math.round((current / total) * 80) + 10, // 10-90%
310
- filesProcessed: current,
311
- totalFiles: total,
312
- };
313
- }
314
- // Parse stage messages
315
- if (line.includes('Discovering files')) {
316
- return { stage: 'discover', message: 'Discovering files...', percent: 5 };
317
- }
318
- if (line.includes('Building index')) {
319
- return { stage: 'build', message: 'Building index...', percent: 10 };
320
- }
321
- if (line.includes('Extracting symbols')) {
322
- return { stage: 'symbols', message: 'Extracting symbols...', percent: 50 };
323
- }
324
- if (line.includes('Generating embeddings') || line.includes('Creating embeddings')) {
325
- return { stage: 'embeddings', message: 'Generating embeddings...', percent: 70 };
326
- }
327
- // Note: "Finalizing index" and "Building ANN" are handled separately below
328
- // Only match generic "Complete" here (not "Finalizing" which has specific handlers)
329
- // Parse indexed count: "Indexed X files" - FTS complete, but embeddings may follow
330
- const indexedMatch = line.match(/Indexed (\d+) files/i);
331
- if (indexedMatch) {
332
- return {
333
- stage: 'fts_complete', // Not 'complete' - embeddings generation may still be pending
334
- message: `Indexed ${indexedMatch[1]} files, generating embeddings...`,
335
- percent: 60, // FTS done, embeddings starting
336
- filesProcessed: parseInt(indexedMatch[1], 10),
337
- };
338
- }
339
- // Parse embedding batch progress: "Batch X: N files, M chunks"
340
- const batchMatch = line.match(/Batch (\d+):\s*(\d+) files,\s*(\d+) chunks/i);
341
- if (batchMatch) {
342
- return {
343
- stage: 'embeddings',
344
- message: `Embedding batch ${batchMatch[1]}: ${batchMatch[3]} chunks`,
345
- percent: 70, // Stay at 70% during embedding batches
346
- };
347
- }
348
- // Parse embedding progress with file count
349
- const embedProgressMatch = line.match(/Processing (\d+) files/i);
350
- if (embedProgressMatch && line.toLowerCase().includes('embed')) {
351
- return {
352
- stage: 'embeddings',
353
- message: `Processing ${embedProgressMatch[1]} files for embeddings`,
354
- percent: 75,
355
- };
356
- }
357
- // Parse finalizing ANN index
358
- if (line.includes('Finalizing index') || line.includes('Building ANN')) {
359
- return { stage: 'finalizing', message: 'Finalizing vector index...', percent: 90 };
360
- }
361
- // Parse embeddings complete message
362
- const embedCompleteMatch = line.match(/Embeddings complete:\s*(\d+)\s*chunks/i);
363
- if (embedCompleteMatch) {
364
- return {
365
- stage: 'embeddings_complete',
366
- message: `Embeddings complete: ${embedCompleteMatch[1]} chunks`,
367
- percent: 95,
368
- };
369
- }
370
- // Parse generic completion (but not "Embeddings complete" which is handled above)
371
- if (line.includes('Complete') && !line.toLowerCase().includes('embeddings complete')) {
372
- return { stage: 'complete', message: 'Complete', percent: 98 };
373
- }
374
- return null;
375
- }
376
- /**
377
- * Execute CodexLens CLI command with real-time progress updates
378
- * @param args - CLI arguments
379
- * @param options - Execution options
380
- * @returns Execution result
381
- */
382
- async function executeCodexLens(args, options = {}) {
383
- const { timeout = 300000, cwd = process.cwd(), onProgress } = options; // Default 5 min
384
- // Ensure ready
385
- const readyStatus = await ensureReady();
386
- if (!readyStatus.ready) {
387
- return { success: false, error: readyStatus.error };
388
- }
389
- return new Promise((resolve) => {
390
- // Build command string - quote paths for shell execution
391
- const quotedPython = `"${VENV_PYTHON}"`;
392
- const cmdArgs = args.map(arg => {
393
- // Quote arguments that contain spaces or special characters
394
- if (arg.includes(' ') || arg.includes('\\')) {
395
- return `"${arg}"`;
396
- }
397
- return arg;
398
- });
399
- // Build full command - on Windows, prepend cd to handle different drives
400
- let fullCmd;
401
- if (process.platform === 'win32' && cwd) {
402
- // Use cd /d to change drive and directory, then run command
403
- fullCmd = `cd /d "${cwd}" && ${quotedPython} -m codexlens ${cmdArgs.join(' ')}`;
404
- }
405
- else {
406
- fullCmd = `${quotedPython} -m codexlens ${cmdArgs.join(' ')}`;
407
- }
408
- // Use spawn with shell for real-time progress updates
409
- // spawn streams output in real-time, unlike exec which buffers until completion
410
- const child = spawn(fullCmd, [], {
411
- cwd: process.platform === 'win32' ? undefined : cwd,
412
- shell: process.platform === 'win32' ? process.env.ComSpec || true : true,
413
- timeout,
414
- });
415
- // Track indexing process for cancellation (only for init commands)
416
- const isIndexingCommand = args.includes('init');
417
- if (isIndexingCommand) {
418
- currentIndexingProcess = child;
419
- currentIndexingAborted = false;
420
- }
421
- let stdout = '';
422
- let stderr = '';
423
- let stdoutLineBuffer = '';
424
- let stderrLineBuffer = '';
425
- let timeoutHandle = null;
426
- let resolved = false;
427
- // Helper to safely resolve only once
428
- const safeResolve = (result) => {
429
- if (resolved)
430
- return;
431
- resolved = true;
432
- if (timeoutHandle) {
433
- clearTimeout(timeoutHandle);
434
- timeoutHandle = null;
435
- }
436
- // Clear indexing process tracking
437
- if (isIndexingCommand) {
438
- currentIndexingProcess = null;
439
- }
440
- resolve(result);
441
- };
442
- // Set up timeout handler
443
- if (timeout > 0) {
444
- timeoutHandle = setTimeout(() => {
445
- if (!resolved) {
446
- child.kill('SIGTERM');
447
- // Give it a moment to die gracefully, then force kill
448
- setTimeout(() => {
449
- if (!resolved) {
450
- child.kill('SIGKILL');
451
- }
452
- }, 5000);
453
- safeResolve({ success: false, error: 'Command timed out' });
454
- }
455
- }, timeout);
456
- }
457
- // Process stdout line by line for real-time progress
458
- child.stdout?.on('data', (data) => {
459
- const chunk = data.toString();
460
- stdoutLineBuffer += chunk;
461
- stdout += chunk;
462
- // Process complete lines
463
- const lines = stdoutLineBuffer.split('\n');
464
- stdoutLineBuffer = lines.pop() || ''; // Keep incomplete line in buffer
465
- for (const line of lines) {
466
- const trimmedLine = line.trim();
467
- if (trimmedLine && onProgress) {
468
- const progress = parseProgressLine(trimmedLine);
469
- if (progress) {
470
- onProgress(progress);
471
- }
472
- }
473
- }
474
- });
475
- // Collect stderr
476
- child.stderr?.on('data', (data) => {
477
- const chunk = data.toString();
478
- stderrLineBuffer += chunk;
479
- stderr += chunk;
480
- // Also check stderr for progress (some tools output progress to stderr)
481
- const lines = stderrLineBuffer.split('\n');
482
- stderrLineBuffer = lines.pop() || '';
483
- for (const line of lines) {
484
- const trimmedLine = line.trim();
485
- if (trimmedLine && onProgress) {
486
- const progress = parseProgressLine(trimmedLine);
487
- if (progress) {
488
- onProgress(progress);
489
- }
490
- }
491
- }
492
- });
493
- // Handle process errors (spawn failure)
494
- child.on('error', (err) => {
495
- safeResolve({ success: false, error: `Failed to start process: ${err.message}` });
496
- });
497
- // Handle process completion
498
- child.on('close', (code) => {
499
- // Process any remaining buffered content
500
- if (stdoutLineBuffer.trim() && onProgress) {
501
- const progress = parseProgressLine(stdoutLineBuffer.trim());
502
- if (progress) {
503
- onProgress(progress);
504
- }
505
- }
506
- if (code === 0) {
507
- safeResolve({ success: true, output: stdout.trim() });
508
- }
509
- else {
510
- safeResolve({ success: false, error: stderr.trim() || `Process exited with code ${code}` });
511
- }
512
- });
513
- });
514
- }
515
- /**
516
- * Initialize CodexLens index for a directory
517
- * @param params - Parameters
518
- * @returns Execution result
519
- */
520
- async function initIndex(params) {
521
- const { path = '.', languages } = params;
522
- const args = ['init', path];
523
- if (languages && languages.length > 0) {
524
- args.push('--languages', languages.join(','));
525
- }
526
- return executeCodexLens(args, { cwd: path });
527
- }
528
- /**
529
- * Search code using CodexLens
530
- * @param params - Search parameters
531
- * @returns Execution result
532
- */
533
- async function searchCode(params) {
534
- const { query, path = '.', limit = 20, mode = 'auto', enrich = false } = params;
535
- if (!query) {
536
- return { success: false, error: 'Query is required for search action' };
537
- }
538
- // Map MCP mode names to CLI mode names
539
- const modeMap = {
540
- 'text': 'exact',
541
- 'semantic': 'pure-vector',
542
- 'auto': 'auto',
543
- 'exact': 'exact',
544
- 'fuzzy': 'fuzzy',
545
- 'hybrid': 'hybrid',
546
- 'vector': 'vector',
547
- 'pure-vector': 'pure-vector',
548
- };
549
- const cliMode = modeMap[mode] || 'auto';
550
- const args = ['search', query, '--limit', limit.toString(), '--mode', cliMode, '--json'];
551
- if (enrich) {
552
- args.push('--enrich');
553
- }
554
- const result = await executeCodexLens(args, { cwd: path });
555
- if (result.success && result.output) {
556
- try {
557
- result.results = JSON.parse(result.output);
558
- delete result.output;
559
- }
560
- catch {
561
- // Keep raw output if JSON parse fails
562
- }
563
- }
564
- return result;
565
- }
566
- /**
567
- * Search code and return only file paths
568
- * @param params - Search parameters
569
- * @returns Execution result
570
- */
571
- async function searchFiles(params) {
572
- const { query, path = '.', limit = 20, mode = 'auto', enrich = false } = params;
573
- if (!query) {
574
- return { success: false, error: 'Query is required for search_files action' };
575
- }
576
- // Map MCP mode names to CLI mode names
577
- const modeMap = {
578
- 'text': 'exact',
579
- 'semantic': 'pure-vector',
580
- 'auto': 'auto',
581
- 'exact': 'exact',
582
- 'fuzzy': 'fuzzy',
583
- 'hybrid': 'hybrid',
584
- 'vector': 'vector',
585
- 'pure-vector': 'pure-vector',
586
- };
587
- const cliMode = modeMap[mode] || 'auto';
588
- const args = ['search', query, '--files-only', '--limit', limit.toString(), '--mode', cliMode, '--json'];
589
- if (enrich) {
590
- args.push('--enrich');
591
- }
592
- const result = await executeCodexLens(args, { cwd: path });
593
- if (result.success && result.output) {
594
- try {
595
- result.files = JSON.parse(result.output);
596
- delete result.output;
597
- }
598
- catch {
599
- // Keep raw output if JSON parse fails
600
- }
601
- }
602
- return result;
603
- }
604
- /**
605
- * Extract symbols from a file
606
- * @param params - Parameters
607
- * @returns Execution result
608
- */
609
- async function extractSymbols(params) {
610
- const { file } = params;
611
- if (!file) {
612
- return { success: false, error: 'File is required for symbol action' };
613
- }
614
- const args = ['symbol', file, '--json'];
615
- const result = await executeCodexLens(args);
616
- if (result.success && result.output) {
617
- try {
618
- result.symbols = JSON.parse(result.output);
619
- delete result.output;
620
- }
621
- catch {
622
- // Keep raw output if JSON parse fails
623
- }
624
- }
625
- return result;
626
- }
627
- /**
628
- * Get index status
629
- * @param params - Parameters
630
- * @returns Execution result
631
- */
632
- async function getStatus(params) {
633
- const { path = '.' } = params;
634
- const args = ['status', '--json'];
635
- const result = await executeCodexLens(args, { cwd: path });
636
- if (result.success && result.output) {
637
- try {
638
- result.status = JSON.parse(result.output);
639
- delete result.output;
640
- }
641
- catch {
642
- // Keep raw output if JSON parse fails
643
- }
644
- }
645
- return result;
646
- }
647
- /**
648
- * Show configuration
649
- * @param params - Parameters
650
- * @returns Execution result
651
- */
652
- async function configShow() {
653
- const args = ['config', 'show', '--json'];
654
- const result = await executeCodexLens(args);
655
- if (result.success && result.output) {
656
- try {
657
- result.config = JSON.parse(result.output);
658
- delete result.output;
659
- }
660
- catch {
661
- // Keep raw output if JSON parse fails
662
- }
663
- }
664
- return result;
665
- }
666
- /**
667
- * Set configuration value
668
- * @param params - Parameters
669
- * @returns Execution result
670
- */
671
- async function configSet(params) {
672
- const { key, value } = params;
673
- if (!key) {
674
- return { success: false, error: 'key is required for config_set action' };
675
- }
676
- if (!value) {
677
- return { success: false, error: 'value is required for config_set action' };
678
- }
679
- const args = ['config', 'set', key, value, '--json'];
680
- const result = await executeCodexLens(args);
681
- if (result.success && result.output) {
682
- try {
683
- result.config = JSON.parse(result.output);
684
- delete result.output;
685
- }
686
- catch {
687
- // Keep raw output if JSON parse fails
688
- }
689
- }
690
- return result;
691
- }
692
- /**
693
- * Migrate indexes to new location
694
- * @param params - Parameters
695
- * @returns Execution result
696
- */
697
- async function configMigrate(params) {
698
- const { newPath } = params;
699
- if (!newPath) {
700
- return { success: false, error: 'newPath is required for config_migrate action' };
701
- }
702
- const args = ['config', 'migrate', newPath, '--json'];
703
- const result = await executeCodexLens(args, { timeout: 300000 }); // 5 min for migration
704
- if (result.success && result.output) {
705
- try {
706
- result.config = JSON.parse(result.output);
707
- delete result.output;
708
- }
709
- catch {
710
- // Keep raw output if JSON parse fails
711
- }
712
- }
713
- return result;
714
- }
715
- /**
716
- * Clean indexes
717
- * @param params - Parameters
718
- * @returns Execution result
719
- */
720
- async function cleanIndexes(params) {
721
- const { path, all } = params;
722
- const args = ['clean'];
723
- if (all) {
724
- args.push('--all');
725
- }
726
- else if (path) {
727
- args.push(path);
728
- }
729
- args.push('--json');
730
- const result = await executeCodexLens(args);
731
- if (result.success && result.output) {
732
- try {
733
- result.cleanResult = JSON.parse(result.output);
734
- delete result.output;
735
- }
736
- catch {
737
- // Keep raw output if JSON parse fails
738
- }
739
- }
740
- return result;
741
- }
742
- // Tool schema for MCP
743
- export const schema = {
744
- name: 'codex_lens',
745
- description: `CodexLens - Code indexing and semantic search.
746
-
747
- Usage:
748
- codex_lens(action="init", path=".") # Index directory (auto-generates embeddings if available)
749
- codex_lens(action="search", query="func") # Search code (auto: hybrid if embeddings exist, else exact)
750
- codex_lens(action="search", query="func", mode="hybrid") # Force hybrid search
751
- codex_lens(action="search_files", query="x") # Search, return paths only
752
-
753
- Graph Enrichment:
754
- codex_lens(action="search", query="func", enrich=true) # Enrich results with code relationships
755
-
756
- Search Modes:
757
- - auto: Auto-detect (hybrid if embeddings exist, exact otherwise) [default]
758
- - exact/text: Exact FTS for code identifiers
759
- - hybrid: Exact + Fuzzy + Vector fusion (best results, requires embeddings)
760
- - fuzzy: Typo-tolerant search
761
- - vector: Semantic + keyword
762
- - pure-vector/semantic: Pure semantic search
763
-
764
- Note: For advanced operations (config, status, clean), use CLI directly: codexlens --help`,
765
- inputSchema: {
766
- type: 'object',
767
- properties: {
768
- action: {
769
- type: 'string',
770
- enum: [
771
- 'init',
772
- 'search',
773
- 'search_files',
774
- 'status',
775
- 'symbol',
776
- 'check',
777
- 'update',
778
- 'bootstrap',
779
- ],
780
- description: 'Action to perform: init/update (index directory), search (search code), search_files (search files only), status (index status), symbol (extract symbols), check (check if ready), bootstrap (setup venv)',
781
- },
782
- path: {
783
- type: 'string',
784
- description: 'Target directory path (for init, search, search_files). Defaults to current directory.',
785
- },
786
- query: {
787
- type: 'string',
788
- description: 'Search query (required for search and search_files actions)',
789
- },
790
- mode: {
791
- type: 'string',
792
- enum: ['auto', 'text', 'semantic', 'exact', 'fuzzy', 'hybrid', 'vector', 'pure-vector'],
793
- description: 'Search mode: auto (default, hybrid if embeddings exist), text/exact (FTS), hybrid (best), fuzzy, vector, semantic/pure-vector',
794
- default: 'auto',
795
- },
796
- format: {
797
- type: 'string',
798
- enum: ['json', 'text', 'pretty'],
799
- description: 'Output format: json (default), text, pretty',
800
- default: 'json',
801
- },
802
- languages: {
803
- type: 'array',
804
- items: { type: 'string' },
805
- description: 'Languages to index (for init action). Example: ["javascript", "typescript", "python"]',
806
- },
807
- limit: {
808
- type: 'number',
809
- description: 'Maximum number of search results (for search and search_files actions)',
810
- default: 20,
811
- },
812
- enrich: {
813
- type: 'boolean',
814
- description: 'Enrich search results with code graph relationships (calls, imports)',
815
- default: false,
816
- },
817
- },
818
- required: ['action'],
819
- },
820
- };
821
- // Handler function
822
- export async function handler(params) {
823
- const parsed = ParamsSchema.safeParse(params);
824
- if (!parsed.success) {
825
- return { success: false, error: `Invalid params: ${parsed.error.message}` };
826
- }
827
- const { action } = parsed.data;
828
- try {
829
- let result;
830
- switch (action) {
831
- case 'init':
832
- result = await initIndex(parsed.data);
833
- break;
834
- case 'search':
835
- result = await searchCode(parsed.data);
836
- break;
837
- case 'search_files':
838
- result = await searchFiles(parsed.data);
839
- break;
840
- case 'status':
841
- result = await getStatus(parsed.data);
842
- break;
843
- case 'symbol':
844
- result = await extractSymbols(parsed.data);
845
- break;
846
- case 'check':
847
- const checkStatus = await ensureReady();
848
- result = {
849
- success: checkStatus.ready,
850
- ready: checkStatus.ready,
851
- version: checkStatus.version,
852
- error: checkStatus.error,
853
- };
854
- break;
855
- case 'update':
856
- // Update is an alias for init (incremental update)
857
- result = await initIndex(parsed.data);
858
- break;
859
- case 'bootstrap':
860
- const bootstrapResult = await bootstrapVenv();
861
- result = {
862
- success: bootstrapResult.success,
863
- message: bootstrapResult.message,
864
- error: bootstrapResult.error,
865
- };
866
- break;
867
- default:
868
- throw new Error(`Unknown action: ${action}. Valid actions: init, search, search_files, status, symbol, check, update, bootstrap`);
869
- }
870
- return result.success ? { success: true, result } : { success: false, error: result.error };
871
- }
872
- catch (error) {
873
- return { success: false, error: error.message };
874
- }
875
- }
876
- /**
877
- * Uninstall CodexLens by removing the venv directory
878
- * @returns Uninstall result
879
- */
880
- async function uninstallCodexLens() {
881
- try {
882
- // Check if venv exists
883
- if (!existsSync(CODEXLENS_VENV)) {
884
- return { success: false, error: 'CodexLens not installed (venv not found)' };
885
- }
886
- console.log('[CodexLens] Uninstalling CodexLens...');
887
- console.log(`[CodexLens] Removing directory: ${CODEXLENS_DATA_DIR}`);
888
- // Remove the entire .codexlens directory
889
- const fs = await import('fs');
890
- fs.rmSync(CODEXLENS_DATA_DIR, { recursive: true, force: true });
891
- // Reset bootstrap cache
892
- bootstrapChecked = false;
893
- bootstrapReady = false;
894
- console.log('[CodexLens] CodexLens uninstalled successfully');
895
- return { success: true, message: 'CodexLens uninstalled successfully' };
896
- }
897
- catch (err) {
898
- return { success: false, error: `Failed to uninstall CodexLens: ${err.message}` };
899
- }
900
- }
901
- /**
902
- * Cancel the currently running indexing process
903
- * @returns Result indicating if cancellation was successful
904
- */
905
- function cancelIndexing() {
906
- if (!currentIndexingProcess) {
907
- return { success: false, error: 'No indexing process is currently running' };
908
- }
909
- if (currentIndexingAborted) {
910
- return { success: false, error: 'Indexing process is already being cancelled' };
911
- }
912
- try {
913
- currentIndexingAborted = true;
914
- // Send SIGTERM first for graceful shutdown
915
- if (process.platform === 'win32') {
916
- // On Windows, use taskkill to kill the process tree
917
- const { execSync } = require('child_process');
918
- try {
919
- execSync(`taskkill /pid ${currentIndexingProcess.pid} /T /F`, { stdio: 'ignore' });
920
- }
921
- catch {
922
- // Process may have already exited
923
- }
924
- }
925
- else {
926
- // On Unix, send SIGTERM
927
- currentIndexingProcess.kill('SIGTERM');
928
- // Force kill after 3 seconds if still running
929
- setTimeout(() => {
930
- if (currentIndexingProcess) {
931
- currentIndexingProcess.kill('SIGKILL');
932
- }
933
- }, 3000);
934
- }
935
- console.log('[CodexLens] Indexing process cancelled');
936
- return { success: true, message: 'Indexing cancelled successfully' };
937
- }
938
- catch (err) {
939
- return { success: false, error: `Failed to cancel indexing: ${err.message}` };
940
- }
941
- }
942
- /**
943
- * Check if an indexing process is currently running
944
- * @returns True if indexing is in progress
945
- */
946
- function isIndexingInProgress() {
947
- return currentIndexingProcess !== null && !currentIndexingAborted;
948
- }
949
- // Export for direct usage
950
- export { ensureReady, executeCodexLens, checkVenvStatus, bootstrapVenv, checkSemanticStatus, installSemantic, uninstallCodexLens, cancelIndexing, isIndexingInProgress };
951
- // Backward-compatible export for tests
952
- export const codexLensTool = {
953
- name: schema.name,
954
- description: schema.description,
955
- parameters: schema.inputSchema,
956
- execute: async (params) => {
957
- const result = await handler(params);
958
- // Return the result directly - tests expect {success: boolean, ...} format
959
- return result.success ? result.result : { success: false, error: result.error };
960
- }
961
- };
962
- //# sourceMappingURL=codex-lens.js.map