claude-code-workflow 6.2.5 → 6.2.7

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 (965) 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/dist/core/lite-scanner-complete.d.ts.map +1 -0
  303. package/ccw/dist/core/lite-scanner-complete.js +371 -0
  304. package/ccw/dist/core/lite-scanner-complete.js.map +1 -0
  305. package/ccw/dist/core/lite-scanner.d.ts.map +1 -0
  306. package/ccw/dist/core/lite-scanner.js +371 -0
  307. package/ccw/dist/core/lite-scanner.js.map +1 -0
  308. package/ccw/dist/core/routes/claude-routes.d.ts.map +1 -0
  309. package/ccw/dist/core/routes/claude-routes.js +1015 -0
  310. package/ccw/dist/core/routes/claude-routes.js.map +1 -0
  311. package/ccw/dist/core/routes/cli-routes.d.ts.map +1 -0
  312. package/ccw/dist/core/routes/cli-routes.js +469 -0
  313. package/ccw/dist/core/routes/cli-routes.js.map +1 -0
  314. package/ccw/dist/core/routes/rules-routes.d.ts.map +1 -0
  315. package/ccw/dist/core/routes/rules-routes.js +443 -0
  316. package/ccw/dist/core/routes/rules-routes.js.map +1 -0
  317. package/ccw/dist/core/routes/skills-routes.d.ts.map +1 -0
  318. package/ccw/dist/core/routes/skills-routes.js +651 -0
  319. package/ccw/dist/core/routes/skills-routes.js.map +1 -0
  320. package/ccw/dist/tools/cli-executor.d.ts +376 -0
  321. package/ccw/dist/tools/cli-executor.d.ts.map +1 -0
  322. package/ccw/dist/tools/cli-executor.js +1677 -0
  323. package/ccw/dist/tools/cli-executor.js.map +1 -0
  324. package/ccw/package.json +65 -0
  325. package/ccw/src/core/lite-scanner-complete.ts +473 -0
  326. package/ccw/src/core/lite-scanner.ts +473 -0
  327. package/ccw/src/core/routes/claude-routes.ts +1181 -0
  328. package/ccw/src/core/routes/cli-routes.ts +562 -0
  329. package/ccw/src/core/routes/rules-routes.ts +527 -0
  330. package/ccw/src/core/routes/skills-routes.ts +737 -0
  331. package/ccw/src/templates/dashboard-js/components/cli-status.js +1011 -0
  332. package/ccw/src/templates/dashboard-js/i18n.js +2969 -0
  333. package/ccw/src/templates/dashboard-js/views/claude-manager.js +926 -0
  334. package/ccw/src/templates/dashboard-js/views/cli-manager.js +2313 -0
  335. package/ccw/src/templates/dashboard-js/views/rules-manager.js +857 -0
  336. package/ccw/src/templates/dashboard-js/views/skills-manager.js +1183 -0
  337. package/ccw/src/tools/cli-executor.ts +2082 -0
  338. package/codex-lens/pyproject.toml +66 -0
  339. package/codex-lens/src/codexlens/.workflow/.cli-history/history.db +0 -0
  340. package/codex-lens/src/codexlens/__init__.py +28 -0
  341. package/codex-lens/src/codexlens/__main__.py +14 -0
  342. package/codex-lens/src/codexlens/__pycache__/__init__.cpython-313.pyc +0 -0
  343. package/codex-lens/src/codexlens/__pycache__/__main__.cpython-313.pyc +0 -0
  344. package/codex-lens/src/codexlens/__pycache__/config.cpython-313.pyc +0 -0
  345. package/codex-lens/src/codexlens/__pycache__/entities.cpython-313.pyc +0 -0
  346. package/codex-lens/src/codexlens/__pycache__/errors.cpython-313.pyc +0 -0
  347. package/codex-lens/src/codexlens/cli/__init__.py +27 -0
  348. package/codex-lens/src/codexlens/cli/__pycache__/__init__.cpython-313.pyc +0 -0
  349. package/codex-lens/src/codexlens/cli/__pycache__/commands.cpython-313.pyc +0 -0
  350. package/codex-lens/src/codexlens/cli/__pycache__/embedding_manager.cpython-313.pyc +0 -0
  351. package/codex-lens/src/codexlens/cli/__pycache__/model_manager.cpython-313.pyc +0 -0
  352. package/codex-lens/src/codexlens/cli/__pycache__/output.cpython-313.pyc +0 -0
  353. package/codex-lens/src/codexlens/cli/commands.py +1940 -0
  354. package/codex-lens/src/codexlens/cli/embedding_manager.py +635 -0
  355. package/codex-lens/src/codexlens/cli/model_manager.py +337 -0
  356. package/codex-lens/src/codexlens/cli/output.py +124 -0
  357. package/codex-lens/src/codexlens/config.py +201 -0
  358. package/codex-lens/src/codexlens/entities.py +121 -0
  359. package/codex-lens/src/codexlens/errors.py +55 -0
  360. package/codex-lens/src/codexlens/indexing/README.md +77 -0
  361. package/codex-lens/src/codexlens/indexing/__init__.py +4 -0
  362. package/codex-lens/src/codexlens/indexing/__pycache__/__init__.cpython-313.pyc +0 -0
  363. package/codex-lens/src/codexlens/indexing/__pycache__/symbol_extractor.cpython-313.pyc +0 -0
  364. package/codex-lens/src/codexlens/indexing/symbol_extractor.py +243 -0
  365. package/codex-lens/src/codexlens/parsers/__init__.py +8 -0
  366. package/codex-lens/src/codexlens/parsers/__pycache__/__init__.cpython-313.pyc +0 -0
  367. package/codex-lens/src/codexlens/parsers/__pycache__/encoding.cpython-313.pyc +0 -0
  368. package/codex-lens/src/codexlens/parsers/__pycache__/factory.cpython-313.pyc +0 -0
  369. package/codex-lens/src/codexlens/parsers/__pycache__/tokenizer.cpython-313.pyc +0 -0
  370. package/codex-lens/src/codexlens/parsers/__pycache__/treesitter_parser.cpython-313.pyc +0 -0
  371. package/codex-lens/src/codexlens/parsers/encoding.py +202 -0
  372. package/codex-lens/src/codexlens/parsers/factory.py +256 -0
  373. package/codex-lens/src/codexlens/parsers/tokenizer.py +98 -0
  374. package/codex-lens/src/codexlens/parsers/treesitter_parser.py +335 -0
  375. package/codex-lens/src/codexlens/search/__init__.py +15 -0
  376. package/codex-lens/src/codexlens/search/__pycache__/__init__.cpython-313.pyc +0 -0
  377. package/codex-lens/src/codexlens/search/__pycache__/chain_search.cpython-313.pyc +0 -0
  378. package/codex-lens/src/codexlens/search/__pycache__/enrichment.cpython-313.pyc +0 -0
  379. package/codex-lens/src/codexlens/search/__pycache__/hybrid_search.cpython-313.pyc +0 -0
  380. package/codex-lens/src/codexlens/search/__pycache__/query_parser.cpython-313.pyc +0 -0
  381. package/codex-lens/src/codexlens/search/__pycache__/ranking.cpython-313.pyc +0 -0
  382. package/codex-lens/src/codexlens/search/chain_search.py +660 -0
  383. package/codex-lens/src/codexlens/search/enrichment.py +150 -0
  384. package/codex-lens/src/codexlens/search/hybrid_search.py +326 -0
  385. package/codex-lens/src/codexlens/search/query_parser.py +242 -0
  386. package/codex-lens/src/codexlens/search/ranking.py +274 -0
  387. package/codex-lens/src/codexlens/semantic/__init__.py +76 -0
  388. package/codex-lens/src/codexlens/semantic/__pycache__/__init__.cpython-313.pyc +0 -0
  389. package/codex-lens/src/codexlens/semantic/__pycache__/ann_index.cpython-313.pyc +0 -0
  390. package/codex-lens/src/codexlens/semantic/__pycache__/chunker.cpython-313.pyc +0 -0
  391. package/codex-lens/src/codexlens/semantic/__pycache__/code_extractor.cpython-313.pyc +0 -0
  392. package/codex-lens/src/codexlens/semantic/__pycache__/embedder.cpython-313.pyc +0 -0
  393. package/codex-lens/src/codexlens/semantic/__pycache__/gpu_support.cpython-313.pyc +0 -0
  394. package/codex-lens/src/codexlens/semantic/__pycache__/graph_analyzer.cpython-313.pyc +0 -0
  395. package/codex-lens/src/codexlens/semantic/__pycache__/llm_enhancer.cpython-313.pyc +0 -0
  396. package/codex-lens/src/codexlens/semantic/__pycache__/ollama_backend.cpython-313.pyc +0 -0
  397. package/codex-lens/src/codexlens/semantic/__pycache__/vector_store.cpython-313.pyc +0 -0
  398. package/codex-lens/src/codexlens/semantic/ann_index.py +414 -0
  399. package/codex-lens/src/codexlens/semantic/chunker.py +448 -0
  400. package/codex-lens/src/codexlens/semantic/code_extractor.py +274 -0
  401. package/codex-lens/src/codexlens/semantic/embedder.py +244 -0
  402. package/codex-lens/src/codexlens/semantic/gpu_support.py +192 -0
  403. package/codex-lens/src/codexlens/semantic/vector_store.py +1052 -0
  404. package/codex-lens/src/codexlens/storage/__init__.py +29 -0
  405. package/codex-lens/src/codexlens/storage/__pycache__/__init__.cpython-313.pyc +0 -0
  406. package/codex-lens/src/codexlens/storage/__pycache__/dir_index.cpython-313.pyc +0 -0
  407. package/codex-lens/src/codexlens/storage/__pycache__/file_cache.cpython-313.pyc +0 -0
  408. package/codex-lens/src/codexlens/storage/__pycache__/index_tree.cpython-313.pyc +0 -0
  409. package/codex-lens/src/codexlens/storage/__pycache__/migration_manager.cpython-313.pyc +0 -0
  410. package/codex-lens/src/codexlens/storage/__pycache__/path_mapper.cpython-313.pyc +0 -0
  411. package/codex-lens/src/codexlens/storage/__pycache__/registry.cpython-313.pyc +0 -0
  412. package/codex-lens/src/codexlens/storage/__pycache__/sqlite_store.cpython-313.pyc +0 -0
  413. package/codex-lens/src/codexlens/storage/__pycache__/sqlite_utils.cpython-313.pyc +0 -0
  414. package/codex-lens/src/codexlens/storage/dir_index.py +1850 -0
  415. package/codex-lens/src/codexlens/storage/file_cache.py +32 -0
  416. package/codex-lens/src/codexlens/storage/index_tree.py +776 -0
  417. package/codex-lens/src/codexlens/storage/migration_manager.py +154 -0
  418. package/codex-lens/src/codexlens/storage/migrations/__init__.py +1 -0
  419. package/codex-lens/src/codexlens/storage/migrations/__pycache__/__init__.cpython-313.pyc +0 -0
  420. package/codex-lens/src/codexlens/storage/migrations/__pycache__/migration_001_normalize_keywords.cpython-313.pyc +0 -0
  421. package/codex-lens/src/codexlens/storage/migrations/__pycache__/migration_002_add_token_metadata.cpython-313.pyc +0 -0
  422. package/codex-lens/src/codexlens/storage/migrations/__pycache__/migration_003_code_relationships.cpython-313.pyc +0 -0
  423. package/codex-lens/src/codexlens/storage/migrations/__pycache__/migration_004_dual_fts.cpython-313.pyc +0 -0
  424. package/codex-lens/src/codexlens/storage/migrations/__pycache__/migration_005_cleanup_unused_fields.cpython-313.pyc +0 -0
  425. package/codex-lens/src/codexlens/storage/migrations/migration_001_normalize_keywords.py +123 -0
  426. package/codex-lens/src/codexlens/storage/migrations/migration_002_add_token_metadata.py +48 -0
  427. package/codex-lens/src/codexlens/storage/migrations/migration_004_dual_fts.py +232 -0
  428. package/codex-lens/src/codexlens/storage/migrations/migration_005_cleanup_unused_fields.py +196 -0
  429. package/codex-lens/src/codexlens/storage/path_mapper.py +274 -0
  430. package/codex-lens/src/codexlens/storage/registry.py +670 -0
  431. package/codex-lens/src/codexlens/storage/sqlite_store.py +576 -0
  432. package/codex-lens/src/codexlens/storage/sqlite_utils.py +64 -0
  433. package/package.json +36 -28
  434. package/dist/core/lite-scanner-complete.d.ts.map +0 -1
  435. package/dist/core/lite-scanner-complete.js +0 -368
  436. package/dist/core/lite-scanner-complete.js.map +0 -1
  437. package/dist/core/lite-scanner.d.ts.map +0 -1
  438. package/dist/core/lite-scanner.js +0 -368
  439. package/dist/core/lite-scanner.js.map +0 -1
  440. package/dist/core/routes/claude-routes.d.ts.map +0 -1
  441. package/dist/core/routes/claude-routes.js +0 -1017
  442. package/dist/core/routes/claude-routes.js.map +0 -1
  443. package/dist/core/routes/cli-routes.d.ts.map +0 -1
  444. package/dist/core/routes/cli-routes.js +0 -468
  445. package/dist/core/routes/cli-routes.js.map +0 -1
  446. package/dist/core/routes/rules-routes.d.ts.map +0 -1
  447. package/dist/core/routes/rules-routes.js +0 -442
  448. package/dist/core/routes/rules-routes.js.map +0 -1
  449. package/dist/core/routes/skills-routes.d.ts.map +0 -1
  450. package/dist/core/routes/skills-routes.js +0 -533
  451. package/dist/core/routes/skills-routes.js.map +0 -1
  452. package/dist/tools/cli-executor.d.ts +0 -373
  453. package/dist/tools/cli-executor.d.ts.map +0 -1
  454. package/dist/tools/cli-executor.js +0 -1625
  455. package/dist/tools/cli-executor.js.map +0 -1
  456. package/src/core/lite-scanner-complete.ts +0 -469
  457. package/src/core/lite-scanner.ts +0 -469
  458. package/src/core/routes/claude-routes.ts +0 -1183
  459. package/src/core/routes/cli-routes.ts +0 -561
  460. package/src/core/routes/rules-routes.ts +0 -526
  461. package/src/core/routes/skills-routes.ts +0 -599
  462. package/src/templates/dashboard-js/components/cli-status.js +0 -978
  463. package/src/templates/dashboard-js/i18n.js +0 -2963
  464. package/src/templates/dashboard-js/views/claude-manager.js +0 -912
  465. package/src/templates/dashboard-js/views/cli-manager.js +0 -2272
  466. package/src/templates/dashboard-js/views/rules-manager.js +0 -828
  467. package/src/templates/dashboard-js/views/skills-manager.js +0 -819
  468. package/src/tools/cli-executor.ts +0 -2014
  469. /package/{bin → ccw/bin}/ccw-mcp.js +0 -0
  470. /package/{bin → ccw/bin}/ccw.js +0 -0
  471. /package/{dist → ccw/dist}/cli.d.ts +0 -0
  472. /package/{dist → ccw/dist}/cli.d.ts.map +0 -0
  473. /package/{dist → ccw/dist}/cli.js +0 -0
  474. /package/{dist → ccw/dist}/cli.js.map +0 -0
  475. /package/{dist → ccw/dist}/commands/cli.d.ts +0 -0
  476. /package/{dist → ccw/dist}/commands/cli.d.ts.map +0 -0
  477. /package/{dist → ccw/dist}/commands/cli.js +0 -0
  478. /package/{dist → ccw/dist}/commands/cli.js.map +0 -0
  479. /package/{dist → ccw/dist}/commands/core-memory.d.ts +0 -0
  480. /package/{dist → ccw/dist}/commands/core-memory.d.ts.map +0 -0
  481. /package/{dist → ccw/dist}/commands/core-memory.js +0 -0
  482. /package/{dist → ccw/dist}/commands/core-memory.js.map +0 -0
  483. /package/{dist → ccw/dist}/commands/hook.d.ts +0 -0
  484. /package/{dist → ccw/dist}/commands/hook.d.ts.map +0 -0
  485. /package/{dist → ccw/dist}/commands/hook.js +0 -0
  486. /package/{dist → ccw/dist}/commands/hook.js.map +0 -0
  487. /package/{dist → ccw/dist}/commands/install.d.ts +0 -0
  488. /package/{dist → ccw/dist}/commands/install.d.ts.map +0 -0
  489. /package/{dist → ccw/dist}/commands/install.js +0 -0
  490. /package/{dist → ccw/dist}/commands/install.js.map +0 -0
  491. /package/{dist → ccw/dist}/commands/list.d.ts +0 -0
  492. /package/{dist → ccw/dist}/commands/list.d.ts.map +0 -0
  493. /package/{dist → ccw/dist}/commands/list.js +0 -0
  494. /package/{dist → ccw/dist}/commands/list.js.map +0 -0
  495. /package/{dist → ccw/dist}/commands/memory.d.ts +0 -0
  496. /package/{dist → ccw/dist}/commands/memory.d.ts.map +0 -0
  497. /package/{dist → ccw/dist}/commands/memory.js +0 -0
  498. /package/{dist → ccw/dist}/commands/memory.js.map +0 -0
  499. /package/{dist → ccw/dist}/commands/serve.d.ts +0 -0
  500. /package/{dist → ccw/dist}/commands/serve.d.ts.map +0 -0
  501. /package/{dist → ccw/dist}/commands/serve.js +0 -0
  502. /package/{dist → ccw/dist}/commands/serve.js.map +0 -0
  503. /package/{dist → ccw/dist}/commands/session-path-resolver.d.ts +0 -0
  504. /package/{dist → ccw/dist}/commands/session-path-resolver.d.ts.map +0 -0
  505. /package/{dist → ccw/dist}/commands/session-path-resolver.js +0 -0
  506. /package/{dist → ccw/dist}/commands/session-path-resolver.js.map +0 -0
  507. /package/{dist → ccw/dist}/commands/session.d.ts +0 -0
  508. /package/{dist → ccw/dist}/commands/session.d.ts.map +0 -0
  509. /package/{dist → ccw/dist}/commands/session.js +0 -0
  510. /package/{dist → ccw/dist}/commands/session.js.map +0 -0
  511. /package/{dist → ccw/dist}/commands/stop.d.ts +0 -0
  512. /package/{dist → ccw/dist}/commands/stop.d.ts.map +0 -0
  513. /package/{dist → ccw/dist}/commands/stop.js +0 -0
  514. /package/{dist → ccw/dist}/commands/stop.js.map +0 -0
  515. /package/{dist → ccw/dist}/commands/tool.d.ts +0 -0
  516. /package/{dist → ccw/dist}/commands/tool.d.ts.map +0 -0
  517. /package/{dist → ccw/dist}/commands/tool.js +0 -0
  518. /package/{dist → ccw/dist}/commands/tool.js.map +0 -0
  519. /package/{dist → ccw/dist}/commands/uninstall.d.ts +0 -0
  520. /package/{dist → ccw/dist}/commands/uninstall.d.ts.map +0 -0
  521. /package/{dist → ccw/dist}/commands/uninstall.js +0 -0
  522. /package/{dist → ccw/dist}/commands/uninstall.js.map +0 -0
  523. /package/{dist → ccw/dist}/commands/upgrade.d.ts +0 -0
  524. /package/{dist → ccw/dist}/commands/upgrade.d.ts.map +0 -0
  525. /package/{dist → ccw/dist}/commands/upgrade.js +0 -0
  526. /package/{dist → ccw/dist}/commands/upgrade.js.map +0 -0
  527. /package/{dist → ccw/dist}/commands/view.d.ts +0 -0
  528. /package/{dist → ccw/dist}/commands/view.d.ts.map +0 -0
  529. /package/{dist → ccw/dist}/commands/view.js +0 -0
  530. /package/{dist → ccw/dist}/commands/view.js.map +0 -0
  531. /package/{dist → ccw/dist}/config/storage-paths.d.ts +0 -0
  532. /package/{dist → ccw/dist}/config/storage-paths.d.ts.map +0 -0
  533. /package/{dist → ccw/dist}/config/storage-paths.js +0 -0
  534. /package/{dist → ccw/dist}/config/storage-paths.js.map +0 -0
  535. /package/{dist → ccw/dist}/core/cache-manager.d.ts +0 -0
  536. /package/{dist → ccw/dist}/core/cache-manager.d.ts.map +0 -0
  537. /package/{dist → ccw/dist}/core/cache-manager.js +0 -0
  538. /package/{dist → ccw/dist}/core/cache-manager.js.map +0 -0
  539. /package/{dist → ccw/dist}/core/claude-freshness.d.ts +0 -0
  540. /package/{dist → ccw/dist}/core/claude-freshness.d.ts.map +0 -0
  541. /package/{dist → ccw/dist}/core/claude-freshness.js +0 -0
  542. /package/{dist → ccw/dist}/core/claude-freshness.js.map +0 -0
  543. /package/{dist → ccw/dist}/core/core-memory-store.d.ts +0 -0
  544. /package/{dist → ccw/dist}/core/core-memory-store.d.ts.map +0 -0
  545. /package/{dist → ccw/dist}/core/core-memory-store.js +0 -0
  546. /package/{dist → ccw/dist}/core/core-memory-store.js.map +0 -0
  547. /package/{dist → ccw/dist}/core/dashboard-generator-patch.d.ts +0 -0
  548. /package/{dist → ccw/dist}/core/dashboard-generator-patch.d.ts.map +0 -0
  549. /package/{dist → ccw/dist}/core/dashboard-generator-patch.js +0 -0
  550. /package/{dist → ccw/dist}/core/dashboard-generator-patch.js.map +0 -0
  551. /package/{dist → ccw/dist}/core/dashboard-generator.d.ts +0 -0
  552. /package/{dist → ccw/dist}/core/dashboard-generator.d.ts.map +0 -0
  553. /package/{dist → ccw/dist}/core/dashboard-generator.js +0 -0
  554. /package/{dist → ccw/dist}/core/dashboard-generator.js.map +0 -0
  555. /package/{dist → ccw/dist}/core/data-aggregator.d.ts +0 -0
  556. /package/{dist → ccw/dist}/core/data-aggregator.d.ts.map +0 -0
  557. /package/{dist → ccw/dist}/core/data-aggregator.js +0 -0
  558. /package/{dist → ccw/dist}/core/data-aggregator.js.map +0 -0
  559. /package/{dist → ccw/dist}/core/history-importer.d.ts +0 -0
  560. /package/{dist → ccw/dist}/core/history-importer.d.ts.map +0 -0
  561. /package/{dist → ccw/dist}/core/history-importer.js +0 -0
  562. /package/{dist → ccw/dist}/core/history-importer.js.map +0 -0
  563. /package/{dist → ccw/dist}/core/lite-scanner-complete.d.ts +0 -0
  564. /package/{dist → ccw/dist}/core/lite-scanner.d.ts +0 -0
  565. /package/{dist → ccw/dist}/core/manifest.d.ts +0 -0
  566. /package/{dist → ccw/dist}/core/manifest.d.ts.map +0 -0
  567. /package/{dist → ccw/dist}/core/manifest.js +0 -0
  568. /package/{dist → ccw/dist}/core/manifest.js.map +0 -0
  569. /package/{dist → ccw/dist}/core/memory-embedder-bridge.d.ts +0 -0
  570. /package/{dist → ccw/dist}/core/memory-embedder-bridge.d.ts.map +0 -0
  571. /package/{dist → ccw/dist}/core/memory-embedder-bridge.js +0 -0
  572. /package/{dist → ccw/dist}/core/memory-embedder-bridge.js.map +0 -0
  573. /package/{dist → ccw/dist}/core/memory-store.d.ts +0 -0
  574. /package/{dist → ccw/dist}/core/memory-store.d.ts.map +0 -0
  575. /package/{dist → ccw/dist}/core/memory-store.js +0 -0
  576. /package/{dist → ccw/dist}/core/memory-store.js.map +0 -0
  577. /package/{dist → ccw/dist}/core/routes/ccw-routes.d.ts +0 -0
  578. /package/{dist → ccw/dist}/core/routes/ccw-routes.d.ts.map +0 -0
  579. /package/{dist → ccw/dist}/core/routes/ccw-routes.js +0 -0
  580. /package/{dist → ccw/dist}/core/routes/ccw-routes.js.map +0 -0
  581. /package/{dist → ccw/dist}/core/routes/claude-routes.d.ts +0 -0
  582. /package/{dist → ccw/dist}/core/routes/cli-routes.d.ts +0 -0
  583. /package/{dist → ccw/dist}/core/routes/codexlens-routes.d.ts +0 -0
  584. /package/{dist → ccw/dist}/core/routes/codexlens-routes.d.ts.map +0 -0
  585. /package/{dist → ccw/dist}/core/routes/codexlens-routes.js +0 -0
  586. /package/{dist → ccw/dist}/core/routes/codexlens-routes.js.map +0 -0
  587. /package/{dist → ccw/dist}/core/routes/core-memory-routes.d.ts +0 -0
  588. /package/{dist → ccw/dist}/core/routes/core-memory-routes.d.ts.map +0 -0
  589. /package/{dist → ccw/dist}/core/routes/core-memory-routes.js +0 -0
  590. /package/{dist → ccw/dist}/core/routes/core-memory-routes.js.map +0 -0
  591. /package/{dist → ccw/dist}/core/routes/files-routes.d.ts +0 -0
  592. /package/{dist → ccw/dist}/core/routes/files-routes.d.ts.map +0 -0
  593. /package/{dist → ccw/dist}/core/routes/files-routes.js +0 -0
  594. /package/{dist → ccw/dist}/core/routes/files-routes.js.map +0 -0
  595. /package/{dist → ccw/dist}/core/routes/graph-routes.d.ts +0 -0
  596. /package/{dist → ccw/dist}/core/routes/graph-routes.d.ts.map +0 -0
  597. /package/{dist → ccw/dist}/core/routes/graph-routes.js +0 -0
  598. /package/{dist → ccw/dist}/core/routes/graph-routes.js.map +0 -0
  599. /package/{dist → ccw/dist}/core/routes/help-routes.d.ts +0 -0
  600. /package/{dist → ccw/dist}/core/routes/help-routes.d.ts.map +0 -0
  601. /package/{dist → ccw/dist}/core/routes/help-routes.js +0 -0
  602. /package/{dist → ccw/dist}/core/routes/help-routes.js.map +0 -0
  603. /package/{dist → ccw/dist}/core/routes/hooks-routes.d.ts +0 -0
  604. /package/{dist → ccw/dist}/core/routes/hooks-routes.d.ts.map +0 -0
  605. /package/{dist → ccw/dist}/core/routes/hooks-routes.js +0 -0
  606. /package/{dist → ccw/dist}/core/routes/hooks-routes.js.map +0 -0
  607. /package/{dist → ccw/dist}/core/routes/mcp-routes.d.ts +0 -0
  608. /package/{dist → ccw/dist}/core/routes/mcp-routes.d.ts.map +0 -0
  609. /package/{dist → ccw/dist}/core/routes/mcp-routes.js +0 -0
  610. /package/{dist → ccw/dist}/core/routes/mcp-routes.js.map +0 -0
  611. /package/{dist → ccw/dist}/core/routes/mcp-templates-db.d.ts +0 -0
  612. /package/{dist → ccw/dist}/core/routes/mcp-templates-db.d.ts.map +0 -0
  613. /package/{dist → ccw/dist}/core/routes/mcp-templates-db.js +0 -0
  614. /package/{dist → ccw/dist}/core/routes/mcp-templates-db.js.map +0 -0
  615. /package/{dist → ccw/dist}/core/routes/memory-routes.d.ts +0 -0
  616. /package/{dist → ccw/dist}/core/routes/memory-routes.d.ts.map +0 -0
  617. /package/{dist → ccw/dist}/core/routes/memory-routes.js +0 -0
  618. /package/{dist → ccw/dist}/core/routes/memory-routes.js.map +0 -0
  619. /package/{dist → ccw/dist}/core/routes/rules-routes.d.ts +0 -0
  620. /package/{dist → ccw/dist}/core/routes/session-routes.d.ts +0 -0
  621. /package/{dist → ccw/dist}/core/routes/session-routes.d.ts.map +0 -0
  622. /package/{dist → ccw/dist}/core/routes/session-routes.js +0 -0
  623. /package/{dist → ccw/dist}/core/routes/session-routes.js.map +0 -0
  624. /package/{dist → ccw/dist}/core/routes/skills-routes.d.ts +0 -0
  625. /package/{dist → ccw/dist}/core/routes/status-routes.d.ts +0 -0
  626. /package/{dist → ccw/dist}/core/routes/status-routes.d.ts.map +0 -0
  627. /package/{dist → ccw/dist}/core/routes/status-routes.js +0 -0
  628. /package/{dist → ccw/dist}/core/routes/status-routes.js.map +0 -0
  629. /package/{dist → ccw/dist}/core/routes/system-routes.d.ts +0 -0
  630. /package/{dist → ccw/dist}/core/routes/system-routes.d.ts.map +0 -0
  631. /package/{dist → ccw/dist}/core/routes/system-routes.js +0 -0
  632. /package/{dist → ccw/dist}/core/routes/system-routes.js.map +0 -0
  633. /package/{dist → ccw/dist}/core/server.d.ts +0 -0
  634. /package/{dist → ccw/dist}/core/server.d.ts.map +0 -0
  635. /package/{dist → ccw/dist}/core/server.js +0 -0
  636. /package/{dist → ccw/dist}/core/server.js.map +0 -0
  637. /package/{dist → ccw/dist}/core/session-clustering-service.d.ts +0 -0
  638. /package/{dist → ccw/dist}/core/session-clustering-service.d.ts.map +0 -0
  639. /package/{dist → ccw/dist}/core/session-clustering-service.js +0 -0
  640. /package/{dist → ccw/dist}/core/session-clustering-service.js.map +0 -0
  641. /package/{dist → ccw/dist}/core/session-scanner.d.ts +0 -0
  642. /package/{dist → ccw/dist}/core/session-scanner.d.ts.map +0 -0
  643. /package/{dist → ccw/dist}/core/session-scanner.js +0 -0
  644. /package/{dist → ccw/dist}/core/session-scanner.js.map +0 -0
  645. /package/{dist → ccw/dist}/core/websocket.d.ts +0 -0
  646. /package/{dist → ccw/dist}/core/websocket.d.ts.map +0 -0
  647. /package/{dist → ccw/dist}/core/websocket.js +0 -0
  648. /package/{dist → ccw/dist}/core/websocket.js.map +0 -0
  649. /package/{dist → ccw/dist}/index.d.ts +0 -0
  650. /package/{dist → ccw/dist}/index.d.ts.map +0 -0
  651. /package/{dist → ccw/dist}/index.js +0 -0
  652. /package/{dist → ccw/dist}/index.js.map +0 -0
  653. /package/{dist → ccw/dist}/mcp-server/index.d.ts +0 -0
  654. /package/{dist → ccw/dist}/mcp-server/index.d.ts.map +0 -0
  655. /package/{dist → ccw/dist}/mcp-server/index.js +0 -0
  656. /package/{dist → ccw/dist}/mcp-server/index.js.map +0 -0
  657. /package/{dist → ccw/dist}/tools/classify-folders.d.ts +0 -0
  658. /package/{dist → ccw/dist}/tools/classify-folders.d.ts.map +0 -0
  659. /package/{dist → ccw/dist}/tools/classify-folders.js +0 -0
  660. /package/{dist → ccw/dist}/tools/classify-folders.js.map +0 -0
  661. /package/{dist → ccw/dist}/tools/cli-config-manager.d.ts +0 -0
  662. /package/{dist → ccw/dist}/tools/cli-config-manager.d.ts.map +0 -0
  663. /package/{dist → ccw/dist}/tools/cli-config-manager.js +0 -0
  664. /package/{dist → ccw/dist}/tools/cli-config-manager.js.map +0 -0
  665. /package/{dist → ccw/dist}/tools/cli-history-store.d.ts +0 -0
  666. /package/{dist → ccw/dist}/tools/cli-history-store.d.ts.map +0 -0
  667. /package/{dist → ccw/dist}/tools/cli-history-store.js +0 -0
  668. /package/{dist → ccw/dist}/tools/cli-history-store.js.map +0 -0
  669. /package/{dist → ccw/dist}/tools/codex-lens.d.ts +0 -0
  670. /package/{dist → ccw/dist}/tools/codex-lens.d.ts.map +0 -0
  671. /package/{dist → ccw/dist}/tools/codex-lens.js +0 -0
  672. /package/{dist → ccw/dist}/tools/codex-lens.js.map +0 -0
  673. /package/{dist → ccw/dist}/tools/convert-tokens-to-css.d.ts +0 -0
  674. /package/{dist → ccw/dist}/tools/convert-tokens-to-css.d.ts.map +0 -0
  675. /package/{dist → ccw/dist}/tools/convert-tokens-to-css.js +0 -0
  676. /package/{dist → ccw/dist}/tools/convert-tokens-to-css.js.map +0 -0
  677. /package/{dist → ccw/dist}/tools/core-memory.d.ts +0 -0
  678. /package/{dist → ccw/dist}/tools/core-memory.d.ts.map +0 -0
  679. /package/{dist → ccw/dist}/tools/core-memory.js +0 -0
  680. /package/{dist → ccw/dist}/tools/core-memory.js.map +0 -0
  681. /package/{dist → ccw/dist}/tools/detect-changed-modules.d.ts +0 -0
  682. /package/{dist → ccw/dist}/tools/detect-changed-modules.d.ts.map +0 -0
  683. /package/{dist → ccw/dist}/tools/detect-changed-modules.js +0 -0
  684. /package/{dist → ccw/dist}/tools/detect-changed-modules.js.map +0 -0
  685. /package/{dist → ccw/dist}/tools/discover-design-files.d.ts +0 -0
  686. /package/{dist → ccw/dist}/tools/discover-design-files.d.ts.map +0 -0
  687. /package/{dist → ccw/dist}/tools/discover-design-files.js +0 -0
  688. /package/{dist → ccw/dist}/tools/discover-design-files.js.map +0 -0
  689. /package/{dist → ccw/dist}/tools/edit-file.d.ts +0 -0
  690. /package/{dist → ccw/dist}/tools/edit-file.d.ts.map +0 -0
  691. /package/{dist → ccw/dist}/tools/edit-file.js +0 -0
  692. /package/{dist → ccw/dist}/tools/edit-file.js.map +0 -0
  693. /package/{dist → ccw/dist}/tools/generate-module-docs.d.ts +0 -0
  694. /package/{dist → ccw/dist}/tools/generate-module-docs.d.ts.map +0 -0
  695. /package/{dist → ccw/dist}/tools/generate-module-docs.js +0 -0
  696. /package/{dist → ccw/dist}/tools/generate-module-docs.js.map +0 -0
  697. /package/{dist → ccw/dist}/tools/get-modules-by-depth.d.ts +0 -0
  698. /package/{dist → ccw/dist}/tools/get-modules-by-depth.d.ts.map +0 -0
  699. /package/{dist → ccw/dist}/tools/get-modules-by-depth.js +0 -0
  700. /package/{dist → ccw/dist}/tools/get-modules-by-depth.js.map +0 -0
  701. /package/{dist → ccw/dist}/tools/index.d.ts +0 -0
  702. /package/{dist → ccw/dist}/tools/index.d.ts.map +0 -0
  703. /package/{dist → ccw/dist}/tools/index.js +0 -0
  704. /package/{dist → ccw/dist}/tools/index.js.map +0 -0
  705. /package/{dist → ccw/dist}/tools/native-session-discovery.d.ts +0 -0
  706. /package/{dist → ccw/dist}/tools/native-session-discovery.d.ts.map +0 -0
  707. /package/{dist → ccw/dist}/tools/native-session-discovery.js +0 -0
  708. /package/{dist → ccw/dist}/tools/native-session-discovery.js.map +0 -0
  709. /package/{dist → ccw/dist}/tools/notifier.d.ts +0 -0
  710. /package/{dist → ccw/dist}/tools/notifier.d.ts.map +0 -0
  711. /package/{dist → ccw/dist}/tools/notifier.js +0 -0
  712. /package/{dist → ccw/dist}/tools/notifier.js.map +0 -0
  713. /package/{dist → ccw/dist}/tools/read-file.d.ts +0 -0
  714. /package/{dist → ccw/dist}/tools/read-file.d.ts.map +0 -0
  715. /package/{dist → ccw/dist}/tools/read-file.js +0 -0
  716. /package/{dist → ccw/dist}/tools/read-file.js.map +0 -0
  717. /package/{dist → ccw/dist}/tools/resume-strategy.d.ts +0 -0
  718. /package/{dist → ccw/dist}/tools/resume-strategy.d.ts.map +0 -0
  719. /package/{dist → ccw/dist}/tools/resume-strategy.js +0 -0
  720. /package/{dist → ccw/dist}/tools/resume-strategy.js.map +0 -0
  721. /package/{dist → ccw/dist}/tools/session-content-parser.d.ts +0 -0
  722. /package/{dist → ccw/dist}/tools/session-content-parser.d.ts.map +0 -0
  723. /package/{dist → ccw/dist}/tools/session-content-parser.js +0 -0
  724. /package/{dist → ccw/dist}/tools/session-content-parser.js.map +0 -0
  725. /package/{dist → ccw/dist}/tools/session-manager.d.ts +0 -0
  726. /package/{dist → ccw/dist}/tools/session-manager.d.ts.map +0 -0
  727. /package/{dist → ccw/dist}/tools/session-manager.js +0 -0
  728. /package/{dist → ccw/dist}/tools/session-manager.js.map +0 -0
  729. /package/{dist → ccw/dist}/tools/smart-context.d.ts +0 -0
  730. /package/{dist → ccw/dist}/tools/smart-context.d.ts.map +0 -0
  731. /package/{dist → ccw/dist}/tools/smart-context.js +0 -0
  732. /package/{dist → ccw/dist}/tools/smart-context.js.map +0 -0
  733. /package/{dist → ccw/dist}/tools/smart-search.d.ts +0 -0
  734. /package/{dist → ccw/dist}/tools/smart-search.d.ts.map +0 -0
  735. /package/{dist → ccw/dist}/tools/smart-search.js +0 -0
  736. /package/{dist → ccw/dist}/tools/smart-search.js.map +0 -0
  737. /package/{dist → ccw/dist}/tools/storage-manager.d.ts +0 -0
  738. /package/{dist → ccw/dist}/tools/storage-manager.d.ts.map +0 -0
  739. /package/{dist → ccw/dist}/tools/storage-manager.js +0 -0
  740. /package/{dist → ccw/dist}/tools/storage-manager.js.map +0 -0
  741. /package/{dist → ccw/dist}/tools/ui-generate-preview.d.ts +0 -0
  742. /package/{dist → ccw/dist}/tools/ui-generate-preview.d.ts.map +0 -0
  743. /package/{dist → ccw/dist}/tools/ui-generate-preview.js +0 -0
  744. /package/{dist → ccw/dist}/tools/ui-generate-preview.js.map +0 -0
  745. /package/{dist → ccw/dist}/tools/ui-instantiate-prototypes.d.ts +0 -0
  746. /package/{dist → ccw/dist}/tools/ui-instantiate-prototypes.d.ts.map +0 -0
  747. /package/{dist → ccw/dist}/tools/ui-instantiate-prototypes.js +0 -0
  748. /package/{dist → ccw/dist}/tools/ui-instantiate-prototypes.js.map +0 -0
  749. /package/{dist → ccw/dist}/tools/update-module-claude.d.ts +0 -0
  750. /package/{dist → ccw/dist}/tools/update-module-claude.d.ts.map +0 -0
  751. /package/{dist → ccw/dist}/tools/update-module-claude.js +0 -0
  752. /package/{dist → ccw/dist}/tools/update-module-claude.js.map +0 -0
  753. /package/{dist → ccw/dist}/tools/write-file.d.ts +0 -0
  754. /package/{dist → ccw/dist}/tools/write-file.d.ts.map +0 -0
  755. /package/{dist → ccw/dist}/tools/write-file.js +0 -0
  756. /package/{dist → ccw/dist}/tools/write-file.js.map +0 -0
  757. /package/{dist → ccw/dist}/types/config.d.ts +0 -0
  758. /package/{dist → ccw/dist}/types/config.d.ts.map +0 -0
  759. /package/{dist → ccw/dist}/types/config.js +0 -0
  760. /package/{dist → ccw/dist}/types/config.js.map +0 -0
  761. /package/{dist → ccw/dist}/types/index.d.ts +0 -0
  762. /package/{dist → ccw/dist}/types/index.d.ts.map +0 -0
  763. /package/{dist → ccw/dist}/types/index.js +0 -0
  764. /package/{dist → ccw/dist}/types/index.js.map +0 -0
  765. /package/{dist → ccw/dist}/types/session.d.ts +0 -0
  766. /package/{dist → ccw/dist}/types/session.d.ts.map +0 -0
  767. /package/{dist → ccw/dist}/types/session.js +0 -0
  768. /package/{dist → ccw/dist}/types/session.js.map +0 -0
  769. /package/{dist → ccw/dist}/types/tool.d.ts +0 -0
  770. /package/{dist → ccw/dist}/types/tool.d.ts.map +0 -0
  771. /package/{dist → ccw/dist}/types/tool.js +0 -0
  772. /package/{dist → ccw/dist}/types/tool.js.map +0 -0
  773. /package/{dist → ccw/dist}/utils/browser-launcher.d.ts +0 -0
  774. /package/{dist → ccw/dist}/utils/browser-launcher.d.ts.map +0 -0
  775. /package/{dist → ccw/dist}/utils/browser-launcher.js +0 -0
  776. /package/{dist → ccw/dist}/utils/browser-launcher.js.map +0 -0
  777. /package/{dist → ccw/dist}/utils/file-utils.d.ts +0 -0
  778. /package/{dist → ccw/dist}/utils/file-utils.d.ts.map +0 -0
  779. /package/{dist → ccw/dist}/utils/file-utils.js +0 -0
  780. /package/{dist → ccw/dist}/utils/file-utils.js.map +0 -0
  781. /package/{dist → ccw/dist}/utils/path-resolver.d.ts +0 -0
  782. /package/{dist → ccw/dist}/utils/path-resolver.d.ts.map +0 -0
  783. /package/{dist → ccw/dist}/utils/path-resolver.js +0 -0
  784. /package/{dist → ccw/dist}/utils/path-resolver.js.map +0 -0
  785. /package/{dist → ccw/dist}/utils/path-validator.d.ts +0 -0
  786. /package/{dist → ccw/dist}/utils/path-validator.d.ts.map +0 -0
  787. /package/{dist → ccw/dist}/utils/path-validator.js +0 -0
  788. /package/{dist → ccw/dist}/utils/path-validator.js.map +0 -0
  789. /package/{dist → ccw/dist}/utils/ui.d.ts +0 -0
  790. /package/{dist → ccw/dist}/utils/ui.d.ts.map +0 -0
  791. /package/{dist → ccw/dist}/utils/ui.js +0 -0
  792. /package/{dist → ccw/dist}/utils/ui.js.map +0 -0
  793. /package/{src → ccw/src}/.workflow/.cli-history/history.db +0 -0
  794. /package/{src → ccw/src}/.workflow/.cli-history/history.db-shm +0 -0
  795. /package/{src → ccw/src}/.workflow/.cli-history/history.db-wal +0 -0
  796. /package/{src → ccw/src}/cli.ts +0 -0
  797. /package/{src → ccw/src}/commands/cli.ts +0 -0
  798. /package/{src → ccw/src}/commands/core-memory.ts +0 -0
  799. /package/{src → ccw/src}/commands/hook.ts +0 -0
  800. /package/{src → ccw/src}/commands/install.ts +0 -0
  801. /package/{src → ccw/src}/commands/list.ts +0 -0
  802. /package/{src → ccw/src}/commands/memory.ts +0 -0
  803. /package/{src → ccw/src}/commands/serve.ts +0 -0
  804. /package/{src → ccw/src}/commands/session-path-resolver.ts +0 -0
  805. /package/{src → ccw/src}/commands/session.ts +0 -0
  806. /package/{src → ccw/src}/commands/stop.ts +0 -0
  807. /package/{src → ccw/src}/commands/tool.ts +0 -0
  808. /package/{src → ccw/src}/commands/uninstall.ts +0 -0
  809. /package/{src → ccw/src}/commands/upgrade.ts +0 -0
  810. /package/{src → ccw/src}/commands/view.ts +0 -0
  811. /package/{src → ccw/src}/config/storage-paths.ts +0 -0
  812. /package/{src → ccw/src}/core/cache-manager.ts +0 -0
  813. /package/{src → ccw/src}/core/claude-freshness.ts +0 -0
  814. /package/{src → ccw/src}/core/core-memory-store.ts +0 -0
  815. /package/{src → ccw/src}/core/dashboard-generator-patch.ts +0 -0
  816. /package/{src → ccw/src}/core/dashboard-generator.ts +0 -0
  817. /package/{src → ccw/src}/core/data-aggregator.ts +0 -0
  818. /package/{src → ccw/src}/core/history-importer.ts +0 -0
  819. /package/{src → ccw/src}/core/manifest.ts +0 -0
  820. /package/{src → ccw/src}/core/memory-embedder-bridge.ts +0 -0
  821. /package/{src → ccw/src}/core/memory-store.ts +0 -0
  822. /package/{src → ccw/src}/core/routes/ccw-routes.ts +0 -0
  823. /package/{src → ccw/src}/core/routes/codexlens-routes.ts +0 -0
  824. /package/{src → ccw/src}/core/routes/core-memory-routes.ts +0 -0
  825. /package/{src → ccw/src}/core/routes/files-routes.ts +0 -0
  826. /package/{src → ccw/src}/core/routes/graph-routes.md +0 -0
  827. /package/{src → ccw/src}/core/routes/graph-routes.ts +0 -0
  828. /package/{src → ccw/src}/core/routes/help-routes.ts +0 -0
  829. /package/{src → ccw/src}/core/routes/hooks-routes.ts +0 -0
  830. /package/{src → ccw/src}/core/routes/mcp-routes.ts +0 -0
  831. /package/{src → ccw/src}/core/routes/mcp-routes.ts.backup +0 -0
  832. /package/{src → ccw/src}/core/routes/mcp-templates-db.ts +0 -0
  833. /package/{src → ccw/src}/core/routes/memory-routes.ts +0 -0
  834. /package/{src → ccw/src}/core/routes/session-routes.ts +0 -0
  835. /package/{src → ccw/src}/core/routes/status-routes.ts +0 -0
  836. /package/{src → ccw/src}/core/routes/system-routes.ts +0 -0
  837. /package/{src → ccw/src}/core/server.ts +0 -0
  838. /package/{src → ccw/src}/core/session-clustering-service.ts +0 -0
  839. /package/{src → ccw/src}/core/session-scanner.ts +0 -0
  840. /package/{src → ccw/src}/core/websocket.ts +0 -0
  841. /package/{src → ccw/src}/index.ts +0 -0
  842. /package/{src → ccw/src}/mcp-server/index.ts +0 -0
  843. /package/{src → ccw/src}/templates/assets/css/github-dark.min.css +0 -0
  844. /package/{src → ccw/src}/templates/assets/css/github.min.css +0 -0
  845. /package/{src → ccw/src}/templates/assets/js/cytoscape.min.js +0 -0
  846. /package/{src → ccw/src}/templates/assets/js/d3.min.js +0 -0
  847. /package/{src → ccw/src}/templates/assets/js/highlight.min.js +0 -0
  848. /package/{src → ccw/src}/templates/assets/js/lucide.min.js +0 -0
  849. /package/{src → ccw/src}/templates/assets/js/marked.min.js +0 -0
  850. /package/{src → ccw/src}/templates/assets/js/tailwind.js +0 -0
  851. /package/{src → ccw/src}/templates/dashboard-css/01-base.css +0 -0
  852. /package/{src → ccw/src}/templates/dashboard-css/02-session.css +0 -0
  853. /package/{src → ccw/src}/templates/dashboard-css/03-tasks.css +0 -0
  854. /package/{src → ccw/src}/templates/dashboard-css/04-lite-tasks.css +0 -0
  855. /package/{src → ccw/src}/templates/dashboard-css/05-context.css +0 -0
  856. /package/{src → ccw/src}/templates/dashboard-css/06-cards.css +0 -0
  857. /package/{src → ccw/src}/templates/dashboard-css/07-managers.css +0 -0
  858. /package/{src → ccw/src}/templates/dashboard-css/08-review.css +0 -0
  859. /package/{src → ccw/src}/templates/dashboard-css/09-explorer.css +0 -0
  860. /package/{src → ccw/src}/templates/dashboard-css/10-cli-status.css +0 -0
  861. /package/{src → ccw/src}/templates/dashboard-css/11-cli-history.css +0 -0
  862. /package/{src → ccw/src}/templates/dashboard-css/12-cli-legacy.css +0 -0
  863. /package/{src → ccw/src}/templates/dashboard-css/13-cli-ccw.css +0 -0
  864. /package/{src → ccw/src}/templates/dashboard-css/14-cli-modals.css +0 -0
  865. /package/{src → ccw/src}/templates/dashboard-css/15-cli-endpoints.css +0 -0
  866. /package/{src → ccw/src}/templates/dashboard-css/16-cli-session.css +0 -0
  867. /package/{src → ccw/src}/templates/dashboard-css/17-cli-conversation.css +0 -0
  868. /package/{src → ccw/src}/templates/dashboard-css/18-cli-settings.css +0 -0
  869. /package/{src → ccw/src}/templates/dashboard-css/19-cli-native-session.css +0 -0
  870. /package/{src → ccw/src}/templates/dashboard-css/20-cli-taskqueue.css +0 -0
  871. /package/{src → ccw/src}/templates/dashboard-css/21-cli-toolmgmt.css +0 -0
  872. /package/{src → ccw/src}/templates/dashboard-css/22-cli-semantic.css +0 -0
  873. /package/{src → ccw/src}/templates/dashboard-css/23-memory.css +0 -0
  874. /package/{src → ccw/src}/templates/dashboard-css/24-prompt-history.css +0 -0
  875. /package/{src → ccw/src}/templates/dashboard-css/25-skills-rules.css +0 -0
  876. /package/{src → ccw/src}/templates/dashboard-css/26-claude-manager.css +0 -0
  877. /package/{src → ccw/src}/templates/dashboard-css/27-graph-explorer.css +0 -0
  878. /package/{src → ccw/src}/templates/dashboard-css/28-mcp-manager.css +0 -0
  879. /package/{src → ccw/src}/templates/dashboard-css/29-help.css +0 -0
  880. /package/{src → ccw/src}/templates/dashboard-css/30-core-memory.css +0 -0
  881. /package/{src → ccw/src}/templates/dashboard-js/api.js +0 -0
  882. /package/{src → ccw/src}/templates/dashboard-js/components/_conflict_tab.js +0 -0
  883. /package/{src → ccw/src}/templates/dashboard-js/components/_exp_helpers.js +0 -0
  884. /package/{src → ccw/src}/templates/dashboard-js/components/_review_tab.js +0 -0
  885. /package/{src → ccw/src}/templates/dashboard-js/components/carousel.js +0 -0
  886. /package/{src → ccw/src}/templates/dashboard-js/components/cli-history.js +0 -0
  887. /package/{src → ccw/src}/templates/dashboard-js/components/flowchart.js +0 -0
  888. /package/{src → ccw/src}/templates/dashboard-js/components/global-notifications.js +0 -0
  889. /package/{src → ccw/src}/templates/dashboard-js/components/hook-manager.js +0 -0
  890. /package/{src → ccw/src}/templates/dashboard-js/components/index-manager.js +0 -0
  891. /package/{src → ccw/src}/templates/dashboard-js/components/mcp-manager.js +0 -0
  892. /package/{src → ccw/src}/templates/dashboard-js/components/modals.js +0 -0
  893. /package/{src → ccw/src}/templates/dashboard-js/components/navigation.js +0 -0
  894. /package/{src → ccw/src}/templates/dashboard-js/components/notifications.js +0 -0
  895. /package/{src → ccw/src}/templates/dashboard-js/components/sidebar.js +0 -0
  896. /package/{src → ccw/src}/templates/dashboard-js/components/storage-manager.js +0 -0
  897. /package/{src → ccw/src}/templates/dashboard-js/components/tabs-context.js +0 -0
  898. /package/{src → ccw/src}/templates/dashboard-js/components/tabs-other.js +0 -0
  899. /package/{src → ccw/src}/templates/dashboard-js/components/task-drawer-core.js +0 -0
  900. /package/{src → ccw/src}/templates/dashboard-js/components/task-drawer-renderers.js +0 -0
  901. /package/{src → ccw/src}/templates/dashboard-js/components/task-queue-sidebar.js +0 -0
  902. /package/{src → ccw/src}/templates/dashboard-js/components/theme.js +0 -0
  903. /package/{src → ccw/src}/templates/dashboard-js/components/version-check.js +0 -0
  904. /package/{src → ccw/src}/templates/dashboard-js/help-i18n.js +0 -0
  905. /package/{src → ccw/src}/templates/dashboard-js/main.js +0 -0
  906. /package/{src → ccw/src}/templates/dashboard-js/state.js +0 -0
  907. /package/{src → ccw/src}/templates/dashboard-js/utils.js +0 -0
  908. /package/{src → ccw/src}/templates/dashboard-js/views/codexlens-manager.js +0 -0
  909. /package/{src → ccw/src}/templates/dashboard-js/views/core-memory-clusters.js +0 -0
  910. /package/{src → ccw/src}/templates/dashboard-js/views/core-memory.js +0 -0
  911. /package/{src → ccw/src}/templates/dashboard-js/views/explorer.js +0 -0
  912. /package/{src → ccw/src}/templates/dashboard-js/views/fix-session.js +0 -0
  913. /package/{src → ccw/src}/templates/dashboard-js/views/graph-explorer.js +0 -0
  914. /package/{src → ccw/src}/templates/dashboard-js/views/help.js +0 -0
  915. /package/{src → ccw/src}/templates/dashboard-js/views/history.js +0 -0
  916. /package/{src → ccw/src}/templates/dashboard-js/views/home.js +0 -0
  917. /package/{src → ccw/src}/templates/dashboard-js/views/hook-manager.js +0 -0
  918. /package/{src → ccw/src}/templates/dashboard-js/views/lite-tasks.js +0 -0
  919. /package/{src → ccw/src}/templates/dashboard-js/views/mcp-manager.js +0 -0
  920. /package/{src → ccw/src}/templates/dashboard-js/views/mcp-manager.js.backup +0 -0
  921. /package/{src → ccw/src}/templates/dashboard-js/views/mcp-manager.js.new +0 -0
  922. /package/{src → ccw/src}/templates/dashboard-js/views/memory.js +0 -0
  923. /package/{src → ccw/src}/templates/dashboard-js/views/project-overview.js +0 -0
  924. /package/{src → ccw/src}/templates/dashboard-js/views/prompt-history.js +0 -0
  925. /package/{src → ccw/src}/templates/dashboard-js/views/review-session.js +0 -0
  926. /package/{src → ccw/src}/templates/dashboard-js/views/session-detail.js +0 -0
  927. /package/{src → ccw/src}/templates/dashboard.html +0 -0
  928. /package/{src → ccw/src}/templates/hooks-config-example.json +0 -0
  929. /package/{src → ccw/src}/templates/review-cycle-dashboard.html +0 -0
  930. /package/{src → ccw/src}/templates/workflow-dashboard.html +0 -0
  931. /package/{src → ccw/src}/tools/classify-folders.ts +0 -0
  932. /package/{src → ccw/src}/tools/cli-config-manager.ts +0 -0
  933. /package/{src → ccw/src}/tools/cli-history-store.ts +0 -0
  934. /package/{src → ccw/src}/tools/codex-lens.ts +0 -0
  935. /package/{src → ccw/src}/tools/convert-tokens-to-css.ts +0 -0
  936. /package/{src → ccw/src}/tools/core-memory.ts +0 -0
  937. /package/{src → ccw/src}/tools/detect-changed-modules.ts +0 -0
  938. /package/{src → ccw/src}/tools/discover-design-files.ts +0 -0
  939. /package/{src → ccw/src}/tools/edit-file.ts +0 -0
  940. /package/{src → ccw/src}/tools/generate-module-docs.ts +0 -0
  941. /package/{src → ccw/src}/tools/get-modules-by-depth.ts +0 -0
  942. /package/{src → ccw/src}/tools/index.ts +0 -0
  943. /package/{src → ccw/src}/tools/native-session-discovery.ts +0 -0
  944. /package/{src → ccw/src}/tools/notifier.ts +0 -0
  945. /package/{src → ccw/src}/tools/read-file.ts +0 -0
  946. /package/{src → ccw/src}/tools/resume-strategy.ts +0 -0
  947. /package/{src → ccw/src}/tools/session-content-parser.ts +0 -0
  948. /package/{src → ccw/src}/tools/session-manager.ts +0 -0
  949. /package/{src → ccw/src}/tools/smart-context.ts +0 -0
  950. /package/{src → ccw/src}/tools/smart-search.ts +0 -0
  951. /package/{src → ccw/src}/tools/smart-search.ts.backup +0 -0
  952. /package/{src → ccw/src}/tools/storage-manager.ts +0 -0
  953. /package/{src → ccw/src}/tools/ui-generate-preview.js +0 -0
  954. /package/{src → ccw/src}/tools/ui-instantiate-prototypes.js +0 -0
  955. /package/{src → ccw/src}/tools/update-module-claude.js +0 -0
  956. /package/{src → ccw/src}/tools/write-file.ts +0 -0
  957. /package/{src → ccw/src}/types/config.ts +0 -0
  958. /package/{src → ccw/src}/types/index.ts +0 -0
  959. /package/{src → ccw/src}/types/session.ts +0 -0
  960. /package/{src → ccw/src}/types/tool.ts +0 -0
  961. /package/{src → ccw/src}/utils/browser-launcher.ts +0 -0
  962. /package/{src → ccw/src}/utils/file-utils.ts +0 -0
  963. /package/{src → ccw/src}/utils/path-resolver.ts +0 -0
  964. /package/{src → ccw/src}/utils/path-validator.ts +0 -0
  965. /package/{src → ccw/src}/utils/ui.ts +0 -0
@@ -0,0 +1,660 @@
1
+ """Chain search engine for recursive multi-directory searching.
2
+
3
+ Provides parallel search across directory hierarchies using indexed _index.db files.
4
+ Supports depth-limited traversal, result aggregation, and symbol search.
5
+ """
6
+
7
+ from __future__ import annotations
8
+
9
+ from concurrent.futures import ThreadPoolExecutor, as_completed
10
+ from dataclasses import dataclass, field
11
+ from pathlib import Path
12
+ from typing import List, Optional, Dict, Any
13
+ import logging
14
+ import time
15
+
16
+ from codexlens.entities import SearchResult, Symbol
17
+ from codexlens.storage.registry import RegistryStore, DirMapping
18
+ from codexlens.storage.dir_index import DirIndexStore, SubdirLink
19
+ from codexlens.storage.path_mapper import PathMapper
20
+ from codexlens.storage.sqlite_store import SQLiteStore
21
+ from codexlens.search.hybrid_search import HybridSearchEngine
22
+
23
+
24
+ @dataclass
25
+ class SearchOptions:
26
+ """Configuration options for chain search.
27
+
28
+ Attributes:
29
+ depth: Maximum search depth (-1 = unlimited, 0 = current dir only)
30
+ max_workers: Number of parallel worker threads
31
+ limit_per_dir: Maximum results per directory
32
+ total_limit: Total result limit across all directories
33
+ include_symbols: Whether to include symbol search results
34
+ files_only: Return only file paths without excerpts
35
+ include_semantic: Whether to include semantic keyword search results
36
+ hybrid_mode: Enable hybrid search with RRF fusion (default False)
37
+ enable_fuzzy: Enable fuzzy FTS in hybrid mode (default True)
38
+ enable_vector: Enable vector semantic search (default False)
39
+ pure_vector: If True, only use vector search without FTS fallback (default False)
40
+ hybrid_weights: Custom RRF weights for hybrid search (optional)
41
+ group_results: Enable grouping of similar results (default False)
42
+ grouping_threshold: Score threshold for grouping similar results (default 0.01)
43
+ """
44
+ depth: int = -1
45
+ max_workers: int = 8
46
+ limit_per_dir: int = 10
47
+ total_limit: int = 100
48
+ include_symbols: bool = False
49
+ files_only: bool = False
50
+ include_semantic: bool = False
51
+ hybrid_mode: bool = False
52
+ enable_fuzzy: bool = True
53
+ enable_vector: bool = False
54
+ pure_vector: bool = False
55
+ hybrid_weights: Optional[Dict[str, float]] = None
56
+ group_results: bool = False
57
+ grouping_threshold: float = 0.01
58
+
59
+
60
+ @dataclass
61
+ class SearchStats:
62
+ """Statistics collected during search execution.
63
+
64
+ Attributes:
65
+ dirs_searched: Number of directories searched
66
+ files_matched: Number of files with matches
67
+ time_ms: Total search time in milliseconds
68
+ errors: List of error messages encountered
69
+ """
70
+ dirs_searched: int = 0
71
+ files_matched: int = 0
72
+ time_ms: float = 0
73
+ errors: List[str] = field(default_factory=list)
74
+
75
+
76
+ @dataclass
77
+ class ChainSearchResult:
78
+ """Comprehensive search result with metadata.
79
+
80
+ Attributes:
81
+ query: Original search query
82
+ results: List of SearchResult objects
83
+ symbols: List of Symbol objects (if include_symbols=True)
84
+ stats: SearchStats with execution metrics
85
+ """
86
+ query: str
87
+ results: List[SearchResult]
88
+ symbols: List[Symbol]
89
+ stats: SearchStats
90
+
91
+
92
+ class ChainSearchEngine:
93
+ """Parallel chain search engine for hierarchical directory indexes.
94
+
95
+ Searches across multiple directory indexes in parallel, following subdirectory
96
+ links to recursively traverse the file tree. Supports depth limits, result
97
+ aggregation, and both content and symbol searches.
98
+
99
+ Thread-safe with configurable parallelism.
100
+
101
+ Attributes:
102
+ registry: Global project registry
103
+ mapper: Path mapping utility
104
+ logger: Python logger instance
105
+ """
106
+
107
+ def __init__(self,
108
+ registry: RegistryStore,
109
+ mapper: PathMapper,
110
+ max_workers: int = 8):
111
+ """Initialize chain search engine.
112
+
113
+ Args:
114
+ registry: Global project registry for path lookups
115
+ mapper: Path mapper for source/index conversions
116
+ max_workers: Maximum parallel workers (default 8)
117
+ """
118
+ self.registry = registry
119
+ self.mapper = mapper
120
+ self.logger = logging.getLogger(__name__)
121
+ self._max_workers = max_workers
122
+ self._executor: Optional[ThreadPoolExecutor] = None
123
+
124
+ def _get_executor(self, max_workers: Optional[int] = None) -> ThreadPoolExecutor:
125
+ """Get or create the shared thread pool executor.
126
+
127
+ Lazy initialization to avoid creating executor if never used.
128
+
129
+ Args:
130
+ max_workers: Override default max_workers if specified
131
+
132
+ Returns:
133
+ ThreadPoolExecutor instance
134
+ """
135
+ workers = max_workers or self._max_workers
136
+ if self._executor is None:
137
+ self._executor = ThreadPoolExecutor(max_workers=workers)
138
+ return self._executor
139
+
140
+ def close(self) -> None:
141
+ """Shutdown the thread pool executor."""
142
+ if self._executor is not None:
143
+ self._executor.shutdown(wait=True)
144
+ self._executor = None
145
+
146
+ def __enter__(self) -> "ChainSearchEngine":
147
+ """Context manager entry."""
148
+ return self
149
+
150
+ def __exit__(self, exc_type: object, exc: object, tb: object) -> None:
151
+ """Context manager exit."""
152
+ self.close()
153
+
154
+ def search(self, query: str,
155
+ source_path: Path,
156
+ options: Optional[SearchOptions] = None) -> ChainSearchResult:
157
+ """Execute chain search from source_path with recursive traversal.
158
+
159
+ Process:
160
+ 1. Locate starting index for source_path
161
+ 2. Collect all child indexes based on depth limit
162
+ 3. Search indexes in parallel using ThreadPoolExecutor
163
+ 4. Aggregate, deduplicate, and rank results
164
+
165
+ Args:
166
+ query: FTS5 search query string
167
+ source_path: Starting directory path
168
+ options: Search configuration (uses defaults if None)
169
+
170
+ Returns:
171
+ ChainSearchResult with results, symbols, and statistics
172
+
173
+ Examples:
174
+ >>> engine = ChainSearchEngine(registry, mapper)
175
+ >>> result = engine.search("authentication", Path("D:/project/src"))
176
+ >>> for r in result.results[:5]:
177
+ ... print(f"{r.path}: {r.score:.2f}")
178
+ """
179
+ options = options or SearchOptions()
180
+ start_time = time.time()
181
+ stats = SearchStats()
182
+
183
+ # Step 1: Find starting index
184
+ start_index = self._find_start_index(source_path)
185
+ if not start_index:
186
+ self.logger.warning(f"No index found for {source_path}")
187
+ stats.time_ms = (time.time() - start_time) * 1000
188
+ return ChainSearchResult(
189
+ query=query,
190
+ results=[],
191
+ symbols=[],
192
+ stats=stats
193
+ )
194
+
195
+ # Step 2: Collect all index paths to search
196
+ index_paths = self._collect_index_paths(start_index, options.depth)
197
+ stats.dirs_searched = len(index_paths)
198
+
199
+ if not index_paths:
200
+ self.logger.warning(f"No indexes collected from {start_index}")
201
+ stats.time_ms = (time.time() - start_time) * 1000
202
+ return ChainSearchResult(
203
+ query=query,
204
+ results=[],
205
+ symbols=[],
206
+ stats=stats
207
+ )
208
+
209
+ # Step 3: Parallel search
210
+ results, search_stats = self._search_parallel(
211
+ index_paths, query, options
212
+ )
213
+ stats.errors = search_stats.errors
214
+
215
+ # Step 4: Merge and rank
216
+ final_results = self._merge_and_rank(results, options.total_limit)
217
+
218
+ # Step 5: Optional grouping of similar results
219
+ if options.group_results:
220
+ from codexlens.search.ranking import group_similar_results
221
+ final_results = group_similar_results(
222
+ final_results, score_threshold_abs=options.grouping_threshold
223
+ )
224
+
225
+ stats.files_matched = len(final_results)
226
+
227
+ # Optional: Symbol search
228
+ symbols = []
229
+ if options.include_symbols:
230
+ symbols = self._search_symbols_parallel(
231
+ index_paths, query, None, options.total_limit
232
+ )
233
+
234
+ stats.time_ms = (time.time() - start_time) * 1000
235
+
236
+ return ChainSearchResult(
237
+ query=query,
238
+ results=final_results,
239
+ symbols=symbols,
240
+ stats=stats
241
+ )
242
+
243
+ def search_files_only(self, query: str,
244
+ source_path: Path,
245
+ options: Optional[SearchOptions] = None) -> List[str]:
246
+ """Search and return only matching file paths.
247
+
248
+ Faster than full search when excerpts are not needed.
249
+
250
+ Args:
251
+ query: FTS5 search query string
252
+ source_path: Starting directory path
253
+ options: Search configuration (uses defaults if None)
254
+
255
+ Returns:
256
+ List of file paths as strings
257
+
258
+ Examples:
259
+ >>> engine = ChainSearchEngine(registry, mapper)
260
+ >>> paths = engine.search_files_only("TODO", Path("D:/project"))
261
+ >>> print(f"Found {len(paths)} files with TODOs")
262
+ """
263
+ options = options or SearchOptions()
264
+ options.files_only = True
265
+
266
+ result = self.search(query, source_path, options)
267
+ return [r.path for r in result.results]
268
+
269
+ def search_symbols(self, name: str,
270
+ source_path: Path,
271
+ kind: Optional[str] = None,
272
+ options: Optional[SearchOptions] = None) -> List[Symbol]:
273
+ """Chain symbol search across directory hierarchy.
274
+
275
+ Args:
276
+ name: Symbol name pattern (partial match supported)
277
+ source_path: Starting directory path
278
+ kind: Optional symbol kind filter (e.g., 'function', 'class')
279
+ options: Search configuration (uses defaults if None)
280
+
281
+ Returns:
282
+ List of Symbol objects sorted by name
283
+
284
+ Examples:
285
+ >>> engine = ChainSearchEngine(registry, mapper)
286
+ >>> funcs = engine.search_symbols("init", Path("D:/project"), kind="function")
287
+ >>> for sym in funcs[:10]:
288
+ ... print(f"{sym.name} ({sym.kind}): lines {sym.range}")
289
+ """
290
+ options = options or SearchOptions()
291
+
292
+ start_index = self._find_start_index(source_path)
293
+ if not start_index:
294
+ self.logger.warning(f"No index found for {source_path}")
295
+ return []
296
+
297
+ index_paths = self._collect_index_paths(start_index, options.depth)
298
+ if not index_paths:
299
+ return []
300
+
301
+ return self._search_symbols_parallel(
302
+ index_paths, name, kind, options.total_limit
303
+ )
304
+
305
+ # === Internal Methods ===
306
+
307
+ def _find_start_index(self, source_path: Path) -> Optional[Path]:
308
+ """Find index database path for source directory.
309
+
310
+ Attempts exact match first, then searches for nearest ancestor index.
311
+
312
+ Args:
313
+ source_path: Source directory path
314
+
315
+ Returns:
316
+ Path to _index.db file, or None if not found
317
+ """
318
+ source_path = source_path.resolve()
319
+
320
+ # Try exact match first
321
+ exact_index = self.mapper.source_to_index_db(source_path)
322
+ if exact_index.exists():
323
+ self.logger.debug(f"Found exact index: {exact_index}")
324
+ return exact_index
325
+
326
+ # Try nearest ancestor via registry
327
+ nearest = self.registry.find_nearest_index(source_path)
328
+ if nearest:
329
+ self.logger.debug(f"Found nearest index: {nearest.index_path}")
330
+ return nearest.index_path
331
+
332
+ self.logger.warning(f"No index found for {source_path}")
333
+ return None
334
+
335
+ def _collect_index_paths(self, start_index: Path,
336
+ depth: int) -> List[Path]:
337
+ """Recursively collect all subdirectory index paths.
338
+
339
+ Traverses directory tree via subdirs table in each _index.db,
340
+ respecting depth limit.
341
+
342
+ Args:
343
+ start_index: Starting _index.db path
344
+ depth: Maximum depth (-1 = unlimited, 0 = current only)
345
+
346
+ Returns:
347
+ List of _index.db paths to search
348
+ """
349
+ collected = []
350
+ visited = set()
351
+
352
+ def _collect_recursive(index_path: Path, current_depth: int):
353
+ # Normalize path to avoid duplicates
354
+ normalized = index_path.resolve()
355
+ if normalized in visited:
356
+ return
357
+ visited.add(normalized)
358
+
359
+ # Add current index
360
+ if normalized.exists():
361
+ collected.append(normalized)
362
+ else:
363
+ self.logger.debug(f"Index does not exist: {normalized}")
364
+ return
365
+
366
+ # Check depth limit
367
+ if depth >= 0 and current_depth >= depth:
368
+ return
369
+
370
+ # Read subdirs and recurse
371
+ try:
372
+ with DirIndexStore(normalized) as store:
373
+ subdirs = store.get_subdirs()
374
+ for subdir in subdirs:
375
+ _collect_recursive(subdir.index_path, current_depth + 1)
376
+ except Exception as exc:
377
+ self.logger.warning(f"Failed to read subdirs from {normalized}: {exc}")
378
+
379
+ _collect_recursive(start_index, 0)
380
+ self.logger.info(f"Collected {len(collected)} indexes (depth={depth})")
381
+ return collected
382
+
383
+ def _search_parallel(self, index_paths: List[Path],
384
+ query: str,
385
+ options: SearchOptions) -> tuple[List[SearchResult], SearchStats]:
386
+ """Search multiple indexes in parallel using shared ThreadPoolExecutor.
387
+
388
+ Args:
389
+ index_paths: List of _index.db paths to search
390
+ query: FTS5 query string
391
+ options: Search configuration
392
+
393
+ Returns:
394
+ Tuple of (all results, search statistics)
395
+ """
396
+ all_results = []
397
+ stats = SearchStats()
398
+
399
+ # Force single-threaded execution for vector/hybrid search to avoid GPU crashes
400
+ # DirectML/ONNX have threading issues when multiple threads access GPU resources
401
+ effective_workers = options.max_workers
402
+ if options.enable_vector or options.hybrid_mode:
403
+ effective_workers = 1
404
+ self.logger.debug("Using single-threaded mode for vector search (GPU safety)")
405
+ # Pre-load embedder to avoid initialization overhead per-search
406
+ try:
407
+ from codexlens.semantic.embedder import get_embedder
408
+ get_embedder(profile="code", use_gpu=True)
409
+ except Exception:
410
+ pass # Ignore pre-load failures
411
+
412
+ executor = self._get_executor(effective_workers)
413
+ # Submit all search tasks
414
+ future_to_path = {
415
+ executor.submit(
416
+ self._search_single_index,
417
+ idx_path,
418
+ query,
419
+ options.limit_per_dir,
420
+ options.files_only,
421
+ options.include_semantic,
422
+ options.hybrid_mode,
423
+ options.enable_fuzzy,
424
+ options.enable_vector,
425
+ options.pure_vector,
426
+ options.hybrid_weights
427
+ ): idx_path
428
+ for idx_path in index_paths
429
+ }
430
+
431
+ # Collect results as they complete
432
+ for future in as_completed(future_to_path):
433
+ idx_path = future_to_path[future]
434
+ try:
435
+ results = future.result()
436
+ all_results.extend(results)
437
+ self.logger.debug(f"Got {len(results)} results from {idx_path.parent.name}")
438
+ except Exception as exc:
439
+ error_msg = f"Search failed for {idx_path}: {exc}"
440
+ self.logger.error(error_msg)
441
+ stats.errors.append(error_msg)
442
+
443
+ return all_results, stats
444
+
445
+ def _search_single_index(self, index_path: Path,
446
+ query: str,
447
+ limit: int,
448
+ files_only: bool = False,
449
+ include_semantic: bool = False,
450
+ hybrid_mode: bool = False,
451
+ enable_fuzzy: bool = True,
452
+ enable_vector: bool = False,
453
+ pure_vector: bool = False,
454
+ hybrid_weights: Optional[Dict[str, float]] = None) -> List[SearchResult]:
455
+ """Search a single index database.
456
+
457
+ Handles exceptions gracefully, returning empty list on failure.
458
+
459
+ Args:
460
+ index_path: Path to _index.db file
461
+ query: FTS5 query string (for FTS) or natural language query (for vector)
462
+ limit: Maximum results from this index
463
+ files_only: If True, skip snippet generation for faster search
464
+ include_semantic: If True, also search semantic keywords and merge results
465
+ hybrid_mode: If True, use hybrid search with RRF fusion
466
+ enable_fuzzy: Enable fuzzy FTS in hybrid mode
467
+ enable_vector: Enable vector semantic search
468
+ pure_vector: If True, only use vector search without FTS fallback
469
+ hybrid_weights: Custom RRF weights for hybrid search
470
+
471
+ Returns:
472
+ List of SearchResult objects (empty on error)
473
+ """
474
+ try:
475
+ # Use hybrid search if enabled
476
+ if hybrid_mode:
477
+ hybrid_engine = HybridSearchEngine(weights=hybrid_weights)
478
+ fts_results = hybrid_engine.search(
479
+ index_path,
480
+ query,
481
+ limit=limit,
482
+ enable_fuzzy=enable_fuzzy,
483
+ enable_vector=enable_vector,
484
+ pure_vector=pure_vector,
485
+ )
486
+ else:
487
+ # Single-FTS search (exact or fuzzy mode)
488
+ with DirIndexStore(index_path) as store:
489
+ # Get FTS results
490
+ if files_only:
491
+ # Fast path: return paths only without snippets
492
+ paths = store.search_files_only(query, limit=limit)
493
+ fts_results = [SearchResult(path=p, score=0.0, excerpt="") for p in paths]
494
+ else:
495
+ # Use fuzzy FTS if enable_fuzzy=True (mode="fuzzy"), otherwise exact FTS
496
+ if enable_fuzzy:
497
+ fts_results = store.search_fts_fuzzy(query, limit=limit)
498
+ else:
499
+ fts_results = store.search_fts(query, limit=limit)
500
+
501
+ # Optionally add semantic keyword results
502
+ if include_semantic:
503
+ try:
504
+ semantic_matches = store.search_semantic_keywords(query)
505
+ # Convert semantic matches to SearchResult with 0.8x weight
506
+ for file_entry, keywords in semantic_matches:
507
+ # Create excerpt from keywords
508
+ excerpt = f"Keywords: {', '.join(keywords[:5])}"
509
+ # Use a base score of 10.0 for semantic matches, weighted by 0.8
510
+ semantic_result = SearchResult(
511
+ path=str(file_entry.full_path),
512
+ score=10.0 * 0.8,
513
+ excerpt=excerpt
514
+ )
515
+ fts_results.append(semantic_result)
516
+ except Exception as sem_exc:
517
+ self.logger.debug(f"Semantic search error in {index_path}: {sem_exc}")
518
+
519
+ return fts_results
520
+ except Exception as exc:
521
+ self.logger.debug(f"Search error in {index_path}: {exc}")
522
+ return []
523
+
524
+ def _merge_and_rank(self, results: List[SearchResult],
525
+ limit: int) -> List[SearchResult]:
526
+ """Aggregate, deduplicate, and rank results.
527
+
528
+ Process:
529
+ 1. Deduplicate by path (keep highest score)
530
+ 2. Sort by score descending
531
+ 3. Limit to requested count
532
+
533
+ Args:
534
+ results: Raw results from all indexes
535
+ limit: Maximum results to return
536
+
537
+ Returns:
538
+ Deduplicated and ranked results
539
+ """
540
+ # Deduplicate by path, keeping best score
541
+ path_to_result: Dict[str, SearchResult] = {}
542
+ for result in results:
543
+ path = result.path
544
+ if path not in path_to_result or result.score > path_to_result[path].score:
545
+ path_to_result[path] = result
546
+
547
+ # Sort by score descending
548
+ unique_results = list(path_to_result.values())
549
+ unique_results.sort(key=lambda r: r.score, reverse=True)
550
+
551
+ # Apply limit
552
+ return unique_results[:limit]
553
+
554
+ def _search_symbols_parallel(self, index_paths: List[Path],
555
+ name: str,
556
+ kind: Optional[str],
557
+ limit: int) -> List[Symbol]:
558
+ """Search symbols across multiple indexes in parallel.
559
+
560
+ Args:
561
+ index_paths: List of _index.db paths to search
562
+ name: Symbol name pattern
563
+ kind: Optional symbol kind filter
564
+ limit: Total symbol limit
565
+
566
+ Returns:
567
+ Deduplicated and sorted symbols
568
+ """
569
+ all_symbols = []
570
+
571
+ executor = self._get_executor()
572
+ # Submit all symbol search tasks
573
+ future_to_path = {
574
+ executor.submit(
575
+ self._search_symbols_single,
576
+ idx_path,
577
+ name,
578
+ kind
579
+ ): idx_path
580
+ for idx_path in index_paths
581
+ }
582
+
583
+ # Collect results
584
+ for future in as_completed(future_to_path):
585
+ try:
586
+ symbols = future.result()
587
+ all_symbols.extend(symbols)
588
+ except Exception as exc:
589
+ self.logger.error(f"Symbol search failed: {exc}")
590
+
591
+ # Deduplicate by (name, kind, range)
592
+ seen = set()
593
+ unique_symbols = []
594
+ for sym in all_symbols:
595
+ key = (sym.name, sym.kind, sym.range)
596
+ if key not in seen:
597
+ seen.add(key)
598
+ unique_symbols.append(sym)
599
+
600
+ # Sort by name
601
+ unique_symbols.sort(key=lambda s: s.name)
602
+
603
+ return unique_symbols[:limit]
604
+
605
+ def _search_symbols_single(self, index_path: Path,
606
+ name: str,
607
+ kind: Optional[str]) -> List[Symbol]:
608
+ """Search symbols in a single index.
609
+
610
+ Args:
611
+ index_path: Path to _index.db file
612
+ name: Symbol name pattern
613
+ kind: Optional symbol kind filter
614
+
615
+ Returns:
616
+ List of Symbol objects (empty on error)
617
+ """
618
+ try:
619
+ with DirIndexStore(index_path) as store:
620
+ return store.search_symbols(name, kind=kind)
621
+ except Exception as exc:
622
+ self.logger.debug(f"Symbol search error in {index_path}: {exc}")
623
+ return []
624
+
625
+
626
+ # === Convenience Functions ===
627
+
628
+ def quick_search(query: str,
629
+ source_path: Path,
630
+ depth: int = -1) -> List[SearchResult]:
631
+ """Quick search convenience function with automatic initialization.
632
+
633
+ Creates temporary registry and mapper instances for one-off searches.
634
+ For repeated searches, create a ChainSearchEngine instance directly.
635
+
636
+ Args:
637
+ query: FTS5 search query string
638
+ source_path: Starting directory path
639
+ depth: Maximum search depth (-1 = unlimited)
640
+
641
+ Returns:
642
+ List of SearchResult objects sorted by relevance
643
+
644
+ Examples:
645
+ >>> from pathlib import Path
646
+ >>> results = quick_search("authentication", Path("D:/project/src"))
647
+ >>> print(f"Found {len(results)} matches")
648
+ """
649
+ registry = RegistryStore()
650
+ registry.initialize()
651
+
652
+ mapper = PathMapper()
653
+
654
+ with ChainSearchEngine(registry, mapper) as engine:
655
+ options = SearchOptions(depth=depth)
656
+ result = engine.search(query, source_path, options)
657
+
658
+ registry.close()
659
+
660
+ return result.results