claude-code-workflow 6.2.1 → 6.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/CLAUDE.md +10 -0
- package/.claude/agents/action-planning-agent.md +857 -0
- package/.claude/agents/cli-execution-agent.md +267 -0
- package/.claude/agents/cli-explore-agent.md +182 -0
- package/.claude/agents/cli-lite-planning-agent.md +446 -0
- package/.claude/agents/cli-planning-agent.md +558 -0
- package/.claude/agents/code-developer.md +311 -0
- package/.claude/agents/conceptual-planning-agent.md +308 -0
- package/.claude/agents/context-search-agent.md +581 -0
- package/.claude/agents/doc-generator.md +330 -0
- package/.claude/agents/memory-bridge.md +94 -0
- package/.claude/agents/test-context-search-agent.md +400 -0
- package/.claude/agents/test-fix-agent.md +344 -0
- package/.claude/agents/ui-design-agent.md +593 -0
- package/.claude/agents/universal-executor.md +131 -0
- package/.claude/commands/clean.md +516 -0
- package/.claude/commands/cli/cli-init.md +440 -0
- package/.claude/commands/enhance-prompt.md +93 -0
- package/.claude/commands/memory/code-map-memory.md +687 -0
- package/.claude/commands/memory/compact.md +383 -0
- package/.claude/commands/memory/docs-full-cli.md +471 -0
- package/.claude/commands/memory/docs-related-cli.md +386 -0
- package/.claude/commands/memory/docs.md +615 -0
- package/.claude/commands/memory/load-skill-memory.md +182 -0
- package/.claude/commands/memory/load.md +240 -0
- package/.claude/commands/memory/skill-memory.md +525 -0
- package/.claude/commands/memory/style-skill-memory.md +396 -0
- package/.claude/commands/memory/tech-research-rules.md +310 -0
- package/.claude/commands/memory/update-full.md +332 -0
- package/.claude/commands/memory/update-related.md +332 -0
- package/.claude/commands/memory/workflow-skill-memory.md +517 -0
- package/.claude/commands/task/breakdown.md +204 -0
- package/.claude/commands/task/create.md +152 -0
- package/.claude/commands/task/execute.md +270 -0
- package/.claude/commands/task/replan.md +437 -0
- package/.claude/commands/version.md +254 -0
- package/.claude/commands/workflow/action-plan-verify.md +447 -0
- package/.claude/commands/workflow/brainstorm/api-designer.md +587 -0
- package/.claude/commands/workflow/brainstorm/artifacts.md +453 -0
- package/.claude/commands/workflow/brainstorm/auto-parallel.md +443 -0
- package/.claude/commands/workflow/brainstorm/data-architect.md +220 -0
- package/.claude/commands/workflow/brainstorm/product-manager.md +200 -0
- package/.claude/commands/workflow/brainstorm/product-owner.md +200 -0
- package/.claude/commands/workflow/brainstorm/scrum-master.md +200 -0
- package/.claude/commands/workflow/brainstorm/subject-matter-expert.md +200 -0
- package/.claude/commands/workflow/brainstorm/synthesis.md +398 -0
- package/.claude/commands/workflow/brainstorm/system-architect.md +389 -0
- package/.claude/commands/workflow/brainstorm/ui-designer.md +221 -0
- package/.claude/commands/workflow/brainstorm/ux-expert.md +221 -0
- package/.claude/commands/workflow/debug.md +321 -0
- package/.claude/commands/workflow/execute.md +475 -0
- package/.claude/commands/workflow/init.md +165 -0
- package/.claude/commands/workflow/lite-execute.md +792 -0
- package/.claude/commands/workflow/lite-fix.md +623 -0
- package/.claude/commands/workflow/lite-plan.md +610 -0
- package/.claude/commands/workflow/plan.md +551 -0
- package/.claude/commands/workflow/replan.md +515 -0
- package/.claude/commands/workflow/review-fix.md +606 -0
- package/.claude/commands/workflow/review-module-cycle.md +767 -0
- package/.claude/commands/workflow/review-session-cycle.md +778 -0
- package/.claude/commands/workflow/review.md +297 -0
- package/.claude/commands/workflow/session/complete.md +153 -0
- package/.claude/commands/workflow/session/list.md +96 -0
- package/.claude/commands/workflow/session/resume.md +61 -0
- package/.claude/commands/workflow/session/start.md +200 -0
- package/.claude/commands/workflow/tdd-plan.md +460 -0
- package/.claude/commands/workflow/tdd-verify.md +400 -0
- package/.claude/commands/workflow/test-cycle-execute.md +500 -0
- package/.claude/commands/workflow/test-fix-gen.md +699 -0
- package/.claude/commands/workflow/test-gen.md +529 -0
- package/.claude/commands/workflow/tools/conflict-resolution.md +766 -0
- package/.claude/commands/workflow/tools/context-gather.md +436 -0
- package/.claude/commands/workflow/tools/task-generate-agent.md +490 -0
- package/.claude/commands/workflow/tools/task-generate-tdd.md +526 -0
- package/.claude/commands/workflow/tools/tdd-coverage-analysis.md +309 -0
- package/.claude/commands/workflow/tools/test-concept-enhanced.md +164 -0
- package/.claude/commands/workflow/tools/test-context-gather.md +236 -0
- package/.claude/commands/workflow/tools/test-task-generate.md +257 -0
- package/.claude/commands/workflow/ui-design/animation-extract.md +1150 -0
- package/.claude/commands/workflow/ui-design/codify-style.md +652 -0
- package/.claude/commands/workflow/ui-design/design-sync.md +454 -0
- package/.claude/commands/workflow/ui-design/explore-auto.md +678 -0
- package/.claude/commands/workflow/ui-design/generate.md +504 -0
- package/.claude/commands/workflow/ui-design/imitate-auto.md +745 -0
- package/.claude/commands/workflow/ui-design/import-from-code.md +540 -0
- package/.claude/commands/workflow/ui-design/layout-extract.md +788 -0
- package/.claude/commands/workflow/ui-design/reference-page-generator.md +356 -0
- package/.claude/commands/workflow/ui-design/style-extract.md +773 -0
- package/.claude/skills/command-guide/SKILL.md +388 -0
- package/.claude/skills/command-guide/UPDATE-GUIDELINE.md +592 -0
- package/.claude/skills/command-guide/guides/cli-tools-guide.md +410 -0
- package/.claude/skills/command-guide/guides/examples.md +537 -0
- package/.claude/skills/command-guide/guides/getting-started.md +242 -0
- package/.claude/skills/command-guide/guides/implementation-details.md +1010 -0
- package/.claude/skills/command-guide/guides/index-structure.md +326 -0
- package/.claude/skills/command-guide/guides/troubleshooting.md +92 -0
- package/.claude/skills/command-guide/guides/ui-design-workflow-guide.md +316 -0
- package/.claude/skills/command-guide/guides/workflow-patterns.md +662 -0
- package/.claude/skills/command-guide/index/all-commands.json +772 -0
- package/.claude/skills/command-guide/index/by-category.json +800 -0
- package/.claude/skills/command-guide/index/by-use-case.json +786 -0
- package/.claude/skills/command-guide/index/command-relationships.json +307 -0
- package/.claude/skills/command-guide/index/essential-commands.json +112 -0
- package/.claude/skills/command-guide/reference/agents/action-planning-agent.md +857 -0
- package/.claude/skills/command-guide/reference/agents/cli-execution-agent.md +267 -0
- package/.claude/skills/command-guide/reference/agents/cli-explore-agent.md +182 -0
- package/.claude/skills/command-guide/reference/agents/cli-lite-planning-agent.md +446 -0
- package/.claude/skills/command-guide/reference/agents/cli-planning-agent.md +558 -0
- package/.claude/skills/command-guide/reference/agents/code-developer.md +311 -0
- package/.claude/skills/command-guide/reference/agents/conceptual-planning-agent.md +308 -0
- package/.claude/skills/command-guide/reference/agents/context-search-agent.md +581 -0
- package/.claude/skills/command-guide/reference/agents/doc-generator.md +330 -0
- package/.claude/skills/command-guide/reference/agents/memory-bridge.md +94 -0
- package/.claude/skills/command-guide/reference/agents/test-context-search-agent.md +400 -0
- package/.claude/skills/command-guide/reference/agents/test-fix-agent.md +344 -0
- package/.claude/skills/command-guide/reference/agents/ui-design-agent.md +593 -0
- package/.claude/skills/command-guide/reference/agents/universal-executor.md +131 -0
- package/.claude/skills/command-guide/reference/commands/cli/cli-init.md +440 -0
- package/.claude/skills/command-guide/reference/commands/enhance-prompt.md +93 -0
- package/.claude/skills/command-guide/reference/commands/memory/code-map-memory.md +687 -0
- package/.claude/skills/command-guide/reference/commands/memory/docs-full-cli.md +471 -0
- package/.claude/skills/command-guide/reference/commands/memory/docs-related-cli.md +386 -0
- package/.claude/skills/command-guide/reference/commands/memory/docs.md +616 -0
- package/.claude/skills/command-guide/reference/commands/memory/load-skill-memory.md +182 -0
- package/.claude/skills/command-guide/reference/commands/memory/load.md +240 -0
- package/.claude/skills/command-guide/reference/commands/memory/skill-memory.md +525 -0
- package/.claude/skills/command-guide/reference/commands/memory/style-skill-memory.md +396 -0
- package/.claude/skills/command-guide/reference/commands/memory/tech-research.md +314 -0
- package/.claude/skills/command-guide/reference/commands/memory/update-full.md +332 -0
- package/.claude/skills/command-guide/reference/commands/memory/update-related.md +332 -0
- package/.claude/skills/command-guide/reference/commands/memory/workflow-skill-memory.md +517 -0
- package/.claude/skills/command-guide/reference/commands/task/breakdown.md +204 -0
- package/.claude/skills/command-guide/reference/commands/task/create.md +152 -0
- package/.claude/skills/command-guide/reference/commands/task/execute.md +270 -0
- package/.claude/skills/command-guide/reference/commands/task/replan.md +437 -0
- package/.claude/skills/command-guide/reference/commands/version.md +254 -0
- package/.claude/skills/command-guide/reference/commands/workflow/action-plan-verify.md +447 -0
- package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/api-designer.md +585 -0
- package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/artifacts.md +452 -0
- package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/auto-parallel.md +443 -0
- package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/data-architect.md +220 -0
- package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/product-manager.md +200 -0
- package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/product-owner.md +200 -0
- package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/scrum-master.md +200 -0
- package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/subject-matter-expert.md +200 -0
- package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/synthesis.md +398 -0
- package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/system-architect.md +387 -0
- package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/ui-designer.md +221 -0
- package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/ux-expert.md +221 -0
- package/.claude/skills/command-guide/reference/commands/workflow/execute.md +465 -0
- package/.claude/skills/command-guide/reference/commands/workflow/init.md +164 -0
- package/.claude/skills/command-guide/reference/commands/workflow/lite-execute.md +748 -0
- package/.claude/skills/command-guide/reference/commands/workflow/lite-fix.md +664 -0
- package/.claude/skills/command-guide/reference/commands/workflow/lite-plan.md +645 -0
- package/.claude/skills/command-guide/reference/commands/workflow/plan.md +551 -0
- package/.claude/skills/command-guide/reference/commands/workflow/replan.md +515 -0
- package/.claude/skills/command-guide/reference/commands/workflow/review-fix.md +606 -0
- package/.claude/skills/command-guide/reference/commands/workflow/review-module-cycle.md +765 -0
- package/.claude/skills/command-guide/reference/commands/workflow/review-session-cycle.md +776 -0
- package/.claude/skills/command-guide/reference/commands/workflow/review.md +298 -0
- package/.claude/skills/command-guide/reference/commands/workflow/session/complete.md +547 -0
- package/.claude/skills/command-guide/reference/commands/workflow/session/list.md +114 -0
- package/.claude/skills/command-guide/reference/commands/workflow/session/resume.md +77 -0
- package/.claude/skills/command-guide/reference/commands/workflow/session/start.md +257 -0
- package/.claude/skills/command-guide/reference/commands/workflow/tdd-plan.md +460 -0
- package/.claude/skills/command-guide/reference/commands/workflow/tdd-verify.md +400 -0
- package/.claude/skills/command-guide/reference/commands/workflow/test-cycle-execute.md +498 -0
- package/.claude/skills/command-guide/reference/commands/workflow/test-fix-gen.md +699 -0
- package/.claude/skills/command-guide/reference/commands/workflow/test-gen.md +529 -0
- package/.claude/skills/command-guide/reference/commands/workflow/tools/conflict-resolution.md +766 -0
- package/.claude/skills/command-guide/reference/commands/workflow/tools/context-gather.md +434 -0
- package/.claude/skills/command-guide/reference/commands/workflow/tools/task-generate-agent.md +487 -0
- package/.claude/skills/command-guide/reference/commands/workflow/tools/task-generate-tdd.md +525 -0
- package/.claude/skills/command-guide/reference/commands/workflow/tools/tdd-coverage-analysis.md +309 -0
- package/.claude/skills/command-guide/reference/commands/workflow/tools/test-concept-enhanced.md +163 -0
- package/.claude/skills/command-guide/reference/commands/workflow/tools/test-context-gather.md +235 -0
- package/.claude/skills/command-guide/reference/commands/workflow/tools/test-task-generate.md +256 -0
- package/.claude/skills/command-guide/reference/commands/workflow/ui-design/animation-extract.md +1150 -0
- package/.claude/skills/command-guide/reference/commands/workflow/ui-design/codify-style.md +652 -0
- package/.claude/skills/command-guide/reference/commands/workflow/ui-design/design-sync.md +454 -0
- package/.claude/skills/command-guide/reference/commands/workflow/ui-design/explore-auto.md +678 -0
- package/.claude/skills/command-guide/reference/commands/workflow/ui-design/generate.md +504 -0
- package/.claude/skills/command-guide/reference/commands/workflow/ui-design/imitate-auto.md +745 -0
- package/.claude/skills/command-guide/reference/commands/workflow/ui-design/import-from-code.md +537 -0
- package/.claude/skills/command-guide/reference/commands/workflow/ui-design/layout-extract.md +788 -0
- package/.claude/skills/command-guide/reference/commands/workflow/ui-design/reference-page-generator.md +356 -0
- package/.claude/skills/command-guide/reference/commands/workflow/ui-design/style-extract.md +773 -0
- package/.claude/skills/command-guide/scripts/analyze_commands.py +502 -0
- package/.claude/skills/command-guide/scripts/update-index.sh +130 -0
- package/.claude/skills/command-guide/templates/issue-bug.md +104 -0
- package/.claude/skills/command-guide/templates/issue-diagnosis.md +275 -0
- package/.claude/skills/command-guide/templates/issue-feature.md +97 -0
- package/.claude/skills/command-guide/templates/issue-question.md +141 -0
- package/.claude/skills/prompt-enhancer/SKILL.md +124 -0
- package/.claude/workflows/_template-compare-matrix.html +692 -0
- package/.claude/workflows/chinese-response.md +38 -0
- package/.claude/workflows/cli-templates/fix-plan-template.json +75 -0
- package/.claude/workflows/cli-templates/fix-progress-template.json +48 -0
- package/.claude/workflows/cli-templates/memory/style-skill-memory/skill-md-template.md +299 -0
- package/.claude/workflows/cli-templates/planning-roles/data-architect.md +120 -0
- package/.claude/workflows/cli-templates/planning-roles/product-manager.md +119 -0
- package/.claude/workflows/cli-templates/planning-roles/product-owner.md +261 -0
- package/.claude/workflows/cli-templates/planning-roles/scrum-master.md +186 -0
- package/.claude/workflows/cli-templates/planning-roles/subject-matter-expert.md +281 -0
- package/.claude/workflows/cli-templates/planning-roles/synthesis-role.md +414 -0
- package/.claude/workflows/cli-templates/planning-roles/system-architect.md +106 -0
- package/.claude/workflows/cli-templates/planning-roles/test-strategist.md +124 -0
- package/.claude/workflows/cli-templates/planning-roles/ui-designer.md +379 -0
- package/.claude/workflows/cli-templates/planning-roles/ux-expert.md +240 -0
- package/.claude/workflows/cli-templates/prompts/analysis/01-diagnose-bug-root-cause.txt +127 -0
- package/.claude/workflows/cli-templates/prompts/analysis/01-trace-code-execution.txt +115 -0
- package/.claude/workflows/cli-templates/prompts/analysis/02-analyze-code-patterns.txt +37 -0
- package/.claude/workflows/cli-templates/prompts/analysis/02-analyze-technical-document.txt +33 -0
- package/.claude/workflows/cli-templates/prompts/analysis/02-review-architecture.txt +29 -0
- package/.claude/workflows/cli-templates/prompts/analysis/02-review-code-quality.txt +28 -0
- package/.claude/workflows/cli-templates/prompts/analysis/03-analyze-performance.txt +29 -0
- package/.claude/workflows/cli-templates/prompts/analysis/03-assess-security-risks.txt +29 -0
- package/.claude/workflows/cli-templates/prompts/analysis/03-review-quality-standards.txt +29 -0
- package/.claude/workflows/cli-templates/prompts/development/02-generate-tests.txt +70 -0
- package/.claude/workflows/cli-templates/prompts/development/02-implement-component-ui.txt +55 -0
- package/.claude/workflows/cli-templates/prompts/development/02-implement-feature.txt +58 -0
- package/.claude/workflows/cli-templates/prompts/development/02-refactor-codebase.txt +55 -0
- package/.claude/workflows/cli-templates/prompts/development/03-debug-runtime-issues.txt +55 -0
- package/.claude/workflows/cli-templates/prompts/documentation/api.txt +15 -0
- package/.claude/workflows/cli-templates/prompts/documentation/folder-navigation.txt +27 -0
- package/.claude/workflows/cli-templates/prompts/documentation/module-readme.txt +49 -0
- package/.claude/workflows/cli-templates/prompts/documentation/project-architecture.txt +41 -0
- package/.claude/workflows/cli-templates/prompts/documentation/project-examples.txt +35 -0
- package/.claude/workflows/cli-templates/prompts/documentation/project-readme.txt +35 -0
- package/.claude/workflows/cli-templates/prompts/memory/02-document-module-structure.txt +165 -0
- package/.claude/workflows/cli-templates/prompts/planning/01-plan-architecture-design.txt +109 -0
- package/.claude/workflows/cli-templates/prompts/planning/02-breakdown-task-steps.txt +30 -0
- package/.claude/workflows/cli-templates/prompts/planning/02-design-component-spec.txt +28 -0
- package/.claude/workflows/cli-templates/prompts/planning/03-evaluate-concept-feasibility.txt +127 -0
- package/.claude/workflows/cli-templates/prompts/planning/03-plan-migration-strategy.txt +30 -0
- package/.claude/workflows/cli-templates/prompts/rules/rule-api.txt +122 -0
- package/.claude/workflows/cli-templates/prompts/rules/rule-components.txt +122 -0
- package/.claude/workflows/cli-templates/prompts/rules/rule-config.txt +89 -0
- package/.claude/workflows/cli-templates/prompts/rules/rule-core.txt +60 -0
- package/.claude/workflows/cli-templates/prompts/rules/rule-patterns.txt +70 -0
- package/.claude/workflows/cli-templates/prompts/rules/rule-testing.txt +81 -0
- package/.claude/workflows/cli-templates/prompts/rules/tech-rules-agent-prompt.txt +89 -0
- package/.claude/workflows/cli-templates/prompts/tech/tech-module-format.txt +359 -0
- package/.claude/workflows/cli-templates/prompts/tech/tech-skill-index.txt +185 -0
- package/.claude/workflows/cli-templates/prompts/test/test-concept-analysis.txt +179 -0
- package/.claude/workflows/cli-templates/prompts/universal/00-universal-creative-style.txt +95 -0
- package/.claude/workflows/cli-templates/prompts/universal/00-universal-rigorous-style.txt +92 -0
- package/.claude/workflows/cli-templates/prompts/verification/codex-technical.txt +28 -0
- package/.claude/workflows/cli-templates/prompts/verification/cross-validation.txt +28 -0
- package/.claude/workflows/cli-templates/prompts/verification/gemini-strategic.txt +27 -0
- package/.claude/workflows/cli-templates/prompts/workflow/analysis-results-structure.txt +224 -0
- package/.claude/workflows/cli-templates/prompts/workflow/codex-feasibility-validation.txt +176 -0
- package/.claude/workflows/cli-templates/prompts/workflow/gemini-solution-design.txt +131 -0
- package/.claude/workflows/cli-templates/prompts/workflow/impl-plan-template.txt +286 -0
- package/.claude/workflows/cli-templates/prompts/workflow/skill-aggregation.txt +172 -0
- package/.claude/workflows/cli-templates/prompts/workflow/skill-conflict-patterns.txt +94 -0
- package/.claude/workflows/cli-templates/prompts/workflow/skill-index.txt +224 -0
- package/.claude/workflows/cli-templates/prompts/workflow/skill-lessons-learned.txt +94 -0
- package/.claude/workflows/cli-templates/prompts/workflow/skill-sessions-timeline.txt +53 -0
- package/.claude/workflows/cli-templates/prompts/workflow/task-json-agent-mode.txt +123 -0
- package/.claude/workflows/cli-templates/prompts/workflow/task-json-cli-mode.txt +182 -0
- package/.claude/workflows/cli-templates/protocols/analysis-protocol.md +112 -0
- package/.claude/workflows/cli-templates/protocols/write-protocol.md +201 -0
- package/.claude/workflows/cli-templates/schemas/conflict-resolution-schema.json +137 -0
- package/.claude/workflows/cli-templates/schemas/debug-log-json-schema.json +127 -0
- package/.claude/workflows/cli-templates/schemas/diagnosis-json-schema.json +234 -0
- package/.claude/workflows/cli-templates/schemas/explore-json-schema.json +124 -0
- package/.claude/workflows/cli-templates/schemas/fix-plan-json-schema.json +298 -0
- package/.claude/workflows/cli-templates/schemas/plan-json-schema.json +244 -0
- package/.claude/workflows/cli-templates/schemas/project-json-schema.json +221 -0
- package/.claude/workflows/cli-templates/schemas/review-deep-dive-results-schema.json +82 -0
- package/.claude/workflows/cli-templates/schemas/review-dimension-results-schema.json +51 -0
- package/.claude/workflows/cli-templates/tech-stacks/go-dev.md +91 -0
- package/.claude/workflows/cli-templates/tech-stacks/java-dev.md +107 -0
- package/.claude/workflows/cli-templates/tech-stacks/javascript-dev.md +58 -0
- package/.claude/workflows/cli-templates/tech-stacks/python-dev.md +79 -0
- package/.claude/workflows/cli-templates/tech-stacks/react-dev.md +103 -0
- package/.claude/workflows/cli-templates/tech-stacks/typescript-dev.md +83 -0
- package/.claude/workflows/cli-templates/ui-design/systems/animation-tokens.json +247 -0
- package/.claude/workflows/cli-templates/ui-design/systems/design-tokens.json +342 -0
- package/.claude/workflows/cli-templates/ui-design/systems/layout-templates.json +145 -0
- package/.claude/workflows/cli-tools-usage.md +526 -0
- package/.claude/workflows/coding-philosophy.md +70 -0
- package/.claude/workflows/context-tools.md +84 -0
- package/.claude/workflows/file-modification.md +64 -0
- package/.claude/workflows/review-directory-specification.md +336 -0
- package/.claude/workflows/task-core.md +214 -0
- package/.claude/workflows/tool-strategy.md +216 -0
- package/.claude/workflows/windows-platform.md +16 -0
- package/.claude/workflows/workflow-architecture.md +942 -0
- package/.codex/AGENTS.md +63 -0
- package/.codex/prompts/debug.md +318 -0
- package/.codex/prompts/execute.md +273 -0
- package/.codex/prompts/lite-execute.md +164 -0
- package/.codex/prompts/lite-plan.md +469 -0
- package/.codex/prompts.zip +0 -0
- package/.gemini/GEMINI.md +25 -0
- package/.qwen/QWEN.md +25 -0
- package/LICENSE +21 -0
- package/README.md +294 -145
- package/ccw/README.md +145 -0
- package/ccw/package.json +65 -0
- package/codex-lens/pyproject.toml +48 -0
- package/codex-lens/src/codexlens/.workflow/.cli-history/history.db +0 -0
- package/codex-lens/src/codexlens/__init__.py +28 -0
- package/codex-lens/src/codexlens/__main__.py +14 -0
- package/codex-lens/src/codexlens/__pycache__/__init__.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/__pycache__/__main__.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/__pycache__/config.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/__pycache__/entities.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/__pycache__/errors.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/cli/__init__.py +27 -0
- package/codex-lens/src/codexlens/cli/__pycache__/__init__.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/cli/__pycache__/commands.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/cli/__pycache__/embedding_manager.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/cli/__pycache__/model_manager.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/cli/__pycache__/output.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/cli/commands.py +1931 -0
- package/codex-lens/src/codexlens/cli/embedding_manager.py +620 -0
- package/codex-lens/src/codexlens/cli/model_manager.py +289 -0
- package/codex-lens/src/codexlens/cli/output.py +124 -0
- package/codex-lens/src/codexlens/config.py +201 -0
- package/codex-lens/src/codexlens/entities.py +121 -0
- package/codex-lens/src/codexlens/errors.py +55 -0
- package/codex-lens/src/codexlens/indexing/README.md +77 -0
- package/codex-lens/src/codexlens/indexing/__init__.py +4 -0
- package/codex-lens/src/codexlens/indexing/__pycache__/__init__.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/indexing/__pycache__/symbol_extractor.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/indexing/symbol_extractor.py +243 -0
- package/codex-lens/src/codexlens/parsers/__init__.py +8 -0
- package/codex-lens/src/codexlens/parsers/__pycache__/__init__.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/parsers/__pycache__/encoding.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/parsers/__pycache__/factory.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/parsers/__pycache__/tokenizer.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/parsers/__pycache__/treesitter_parser.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/parsers/encoding.py +202 -0
- package/codex-lens/src/codexlens/parsers/factory.py +256 -0
- package/codex-lens/src/codexlens/parsers/tokenizer.py +98 -0
- package/codex-lens/src/codexlens/parsers/treesitter_parser.py +335 -0
- package/codex-lens/src/codexlens/search/__init__.py +15 -0
- package/codex-lens/src/codexlens/search/__pycache__/__init__.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/search/__pycache__/chain_search.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/search/__pycache__/enrichment.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/search/__pycache__/hybrid_search.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/search/__pycache__/query_parser.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/search/__pycache__/ranking.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/search/chain_search.py +647 -0
- package/codex-lens/src/codexlens/search/enrichment.py +150 -0
- package/codex-lens/src/codexlens/search/hybrid_search.py +313 -0
- package/codex-lens/src/codexlens/search/query_parser.py +242 -0
- package/codex-lens/src/codexlens/search/ranking.py +274 -0
- package/codex-lens/src/codexlens/semantic/__init__.py +39 -0
- package/codex-lens/src/codexlens/semantic/__pycache__/__init__.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/semantic/__pycache__/ann_index.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/semantic/__pycache__/chunker.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/semantic/__pycache__/code_extractor.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/semantic/__pycache__/embedder.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/semantic/__pycache__/graph_analyzer.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/semantic/__pycache__/llm_enhancer.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/semantic/__pycache__/vector_store.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/semantic/ann_index.py +414 -0
- package/codex-lens/src/codexlens/semantic/chunker.py +448 -0
- package/codex-lens/src/codexlens/semantic/code_extractor.py +274 -0
- package/codex-lens/src/codexlens/semantic/embedder.py +185 -0
- package/codex-lens/src/codexlens/semantic/vector_store.py +955 -0
- package/codex-lens/src/codexlens/storage/__init__.py +29 -0
- package/codex-lens/src/codexlens/storage/__pycache__/__init__.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/storage/__pycache__/dir_index.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/storage/__pycache__/file_cache.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/storage/__pycache__/index_tree.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/storage/__pycache__/migration_manager.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/storage/__pycache__/path_mapper.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/storage/__pycache__/registry.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/storage/__pycache__/sqlite_store.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/storage/__pycache__/sqlite_utils.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/storage/dir_index.py +1850 -0
- package/codex-lens/src/codexlens/storage/file_cache.py +32 -0
- package/codex-lens/src/codexlens/storage/index_tree.py +776 -0
- package/codex-lens/src/codexlens/storage/migration_manager.py +154 -0
- package/codex-lens/src/codexlens/storage/migrations/__init__.py +1 -0
- package/codex-lens/src/codexlens/storage/migrations/__pycache__/__init__.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/storage/migrations/__pycache__/migration_001_normalize_keywords.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/storage/migrations/__pycache__/migration_002_add_token_metadata.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/storage/migrations/__pycache__/migration_003_code_relationships.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/storage/migrations/__pycache__/migration_004_dual_fts.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/storage/migrations/__pycache__/migration_005_cleanup_unused_fields.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/storage/migrations/migration_001_normalize_keywords.py +123 -0
- package/codex-lens/src/codexlens/storage/migrations/migration_002_add_token_metadata.py +48 -0
- package/codex-lens/src/codexlens/storage/migrations/migration_004_dual_fts.py +232 -0
- package/codex-lens/src/codexlens/storage/migrations/migration_005_cleanup_unused_fields.py +196 -0
- package/codex-lens/src/codexlens/storage/path_mapper.py +274 -0
- package/codex-lens/src/codexlens/storage/registry.py +670 -0
- package/codex-lens/src/codexlens/storage/sqlite_store.py +576 -0
- package/codex-lens/src/codexlens/storage/sqlite_utils.py +64 -0
- package/package.json +37 -32
- package/dist/cli.d.ts +0 -2
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js +0 -219
- package/dist/cli.js.map +0 -1
- package/dist/commands/cli.d.ts +0 -32
- package/dist/commands/cli.d.ts.map +0 -1
- package/dist/commands/cli.js +0 -619
- package/dist/commands/cli.js.map +0 -1
- package/dist/commands/core-memory.d.ts +0 -32
- package/dist/commands/core-memory.d.ts.map +0 -1
- package/dist/commands/core-memory.js +0 -640
- package/dist/commands/core-memory.js.map +0 -1
- package/dist/commands/hook.d.ts +0 -16
- package/dist/commands/hook.d.ts.map +0 -1
- package/dist/commands/hook.js +0 -276
- package/dist/commands/hook.js.map +0 -1
- package/dist/commands/install.d.ts +0 -12
- package/dist/commands/install.d.ts.map +0 -1
- package/dist/commands/install.js +0 -443
- package/dist/commands/install.js.map +0 -1
- package/dist/commands/list.d.ts +0 -5
- package/dist/commands/list.d.ts.map +0 -1
- package/dist/commands/list.js +0 -32
- package/dist/commands/list.js.map +0 -1
- package/dist/commands/memory.d.ts +0 -57
- package/dist/commands/memory.d.ts.map +0 -1
- package/dist/commands/memory.js +0 -890
- package/dist/commands/memory.js.map +0 -1
- package/dist/commands/serve.d.ts +0 -12
- package/dist/commands/serve.d.ts.map +0 -1
- package/dist/commands/serve.js +0 -63
- package/dist/commands/serve.js.map +0 -1
- package/dist/commands/session-path-resolver.d.ts +0 -45
- package/dist/commands/session-path-resolver.d.ts.map +0 -1
- package/dist/commands/session-path-resolver.js +0 -302
- package/dist/commands/session-path-resolver.js.map +0 -1
- package/dist/commands/session.d.ts +0 -12
- package/dist/commands/session.d.ts.map +0 -1
- package/dist/commands/session.js +0 -954
- package/dist/commands/session.js.map +0 -1
- package/dist/commands/stop.d.ts +0 -11
- package/dist/commands/stop.d.ts.map +0 -1
- package/dist/commands/stop.js +0 -96
- package/dist/commands/stop.js.map +0 -1
- package/dist/commands/tool.d.ts +0 -29
- package/dist/commands/tool.d.ts.map +0 -1
- package/dist/commands/tool.js +0 -173
- package/dist/commands/tool.js.map +0 -1
- package/dist/commands/uninstall.d.ts +0 -9
- package/dist/commands/uninstall.d.ts.map +0 -1
- package/dist/commands/uninstall.js +0 -239
- package/dist/commands/uninstall.js.map +0 -1
- package/dist/commands/upgrade.d.ts +0 -10
- package/dist/commands/upgrade.d.ts.map +0 -1
- package/dist/commands/upgrade.js +0 -288
- package/dist/commands/upgrade.js.map +0 -1
- package/dist/commands/view.d.ts +0 -14
- package/dist/commands/view.d.ts.map +0 -1
- package/dist/commands/view.js +0 -100
- package/dist/commands/view.js.map +0 -1
- package/dist/config/storage-paths.d.ts +0 -184
- package/dist/config/storage-paths.d.ts.map +0 -1
- package/dist/config/storage-paths.js +0 -536
- package/dist/config/storage-paths.js.map +0 -1
- package/dist/core/cache-manager.d.ts +0 -80
- package/dist/core/cache-manager.d.ts.map +0 -1
- package/dist/core/cache-manager.js +0 -260
- package/dist/core/cache-manager.js.map +0 -1
- package/dist/core/claude-freshness.d.ts +0 -53
- package/dist/core/claude-freshness.d.ts.map +0 -1
- package/dist/core/claude-freshness.js +0 -232
- package/dist/core/claude-freshness.js.map +0 -1
- package/dist/core/core-memory-store.d.ts +0 -320
- package/dist/core/core-memory-store.d.ts.map +0 -1
- package/dist/core/core-memory-store.js +0 -1177
- package/dist/core/core-memory-store.js.map +0 -1
- package/dist/core/dashboard-generator-patch.d.ts +0 -2
- package/dist/core/dashboard-generator-patch.d.ts.map +0 -1
- package/dist/core/dashboard-generator-patch.js +0 -48
- package/dist/core/dashboard-generator-patch.js.map +0 -1
- package/dist/core/dashboard-generator.d.ts +0 -8
- package/dist/core/dashboard-generator.d.ts.map +0 -1
- package/dist/core/dashboard-generator.js +0 -695
- package/dist/core/dashboard-generator.js.map +0 -1
- package/dist/core/data-aggregator.d.ts +0 -145
- package/dist/core/data-aggregator.d.ts.map +0 -1
- package/dist/core/data-aggregator.js +0 -416
- package/dist/core/data-aggregator.js.map +0 -1
- package/dist/core/history-importer.d.ts +0 -102
- package/dist/core/history-importer.d.ts.map +0 -1
- package/dist/core/history-importer.js +0 -493
- package/dist/core/history-importer.js.map +0 -1
- package/dist/core/lite-scanner-complete.d.ts +0 -81
- package/dist/core/lite-scanner-complete.d.ts.map +0 -1
- package/dist/core/lite-scanner-complete.js +0 -368
- package/dist/core/lite-scanner-complete.js.map +0 -1
- package/dist/core/lite-scanner.d.ts +0 -81
- package/dist/core/lite-scanner.d.ts.map +0 -1
- package/dist/core/lite-scanner.js +0 -368
- package/dist/core/lite-scanner.js.map +0 -1
- package/dist/core/manifest.d.ts +0 -88
- package/dist/core/manifest.d.ts.map +0 -1
- package/dist/core/manifest.js +0 -214
- package/dist/core/manifest.js.map +0 -1
- package/dist/core/memory-embedder-bridge.d.ts +0 -83
- package/dist/core/memory-embedder-bridge.d.ts.map +0 -1
- package/dist/core/memory-embedder-bridge.js +0 -181
- package/dist/core/memory-embedder-bridge.js.map +0 -1
- package/dist/core/memory-store.d.ts +0 -249
- package/dist/core/memory-store.d.ts.map +0 -1
- package/dist/core/memory-store.js +0 -781
- package/dist/core/memory-store.js.map +0 -1
- package/dist/core/routes/ccw-routes.d.ts +0 -20
- package/dist/core/routes/ccw-routes.d.ts.map +0 -1
- package/dist/core/routes/ccw-routes.js +0 -70
- package/dist/core/routes/ccw-routes.js.map +0 -1
- package/dist/core/routes/claude-routes.d.ts +0 -19
- package/dist/core/routes/claude-routes.d.ts.map +0 -1
- package/dist/core/routes/claude-routes.js +0 -1017
- package/dist/core/routes/claude-routes.js.map +0 -1
- package/dist/core/routes/cli-routes.d.ts +0 -20
- package/dist/core/routes/cli-routes.d.ts.map +0 -1
- package/dist/core/routes/cli-routes.js +0 -468
- package/dist/core/routes/cli-routes.js.map +0 -1
- package/dist/core/routes/codexlens-routes.d.ts +0 -20
- package/dist/core/routes/codexlens-routes.d.ts.map +0 -1
- package/dist/core/routes/codexlens-routes.js +0 -754
- package/dist/core/routes/codexlens-routes.js.map +0 -1
- package/dist/core/routes/core-memory-routes.d.ts +0 -21
- package/dist/core/routes/core-memory-routes.d.ts.map +0 -1
- package/dist/core/routes/core-memory-routes.js +0 -520
- package/dist/core/routes/core-memory-routes.js.map +0 -1
- package/dist/core/routes/files-routes.d.ts +0 -20
- package/dist/core/routes/files-routes.d.ts.map +0 -1
- package/dist/core/routes/files-routes.js +0 -374
- package/dist/core/routes/files-routes.js.map +0 -1
- package/dist/core/routes/graph-routes.d.ts +0 -20
- package/dist/core/routes/graph-routes.d.ts.map +0 -1
- package/dist/core/routes/graph-routes.js +0 -517
- package/dist/core/routes/graph-routes.js.map +0 -1
- package/dist/core/routes/help-routes.d.ts +0 -20
- package/dist/core/routes/help-routes.d.ts.map +0 -1
- package/dist/core/routes/help-routes.js +0 -250
- package/dist/core/routes/help-routes.js.map +0 -1
- package/dist/core/routes/hooks-routes.d.ts +0 -21
- package/dist/core/routes/hooks-routes.d.ts.map +0 -1
- package/dist/core/routes/hooks-routes.js +0 -346
- package/dist/core/routes/hooks-routes.js.map +0 -1
- package/dist/core/routes/mcp-routes.d.ts +0 -20
- package/dist/core/routes/mcp-routes.d.ts.map +0 -1
- package/dist/core/routes/mcp-routes.js +0 -1129
- package/dist/core/routes/mcp-routes.js.map +0 -1
- package/dist/core/routes/mcp-templates-db.d.ts +0 -54
- package/dist/core/routes/mcp-templates-db.d.ts.map +0 -1
- package/dist/core/routes/mcp-templates-db.js +0 -226
- package/dist/core/routes/mcp-templates-db.js.map +0 -1
- package/dist/core/routes/memory-routes.d.ts +0 -21
- package/dist/core/routes/memory-routes.d.ts.map +0 -1
- package/dist/core/routes/memory-routes.js +0 -1095
- package/dist/core/routes/memory-routes.js.map +0 -1
- package/dist/core/routes/rules-routes.d.ts +0 -20
- package/dist/core/routes/rules-routes.d.ts.map +0 -1
- package/dist/core/routes/rules-routes.js +0 -442
- package/dist/core/routes/rules-routes.js.map +0 -1
- package/dist/core/routes/session-routes.d.ts +0 -20
- package/dist/core/routes/session-routes.d.ts.map +0 -1
- package/dist/core/routes/session-routes.js +0 -423
- package/dist/core/routes/session-routes.js.map +0 -1
- package/dist/core/routes/skills-routes.d.ts +0 -20
- package/dist/core/routes/skills-routes.d.ts.map +0 -1
- package/dist/core/routes/skills-routes.js +0 -533
- package/dist/core/routes/skills-routes.js.map +0 -1
- package/dist/core/routes/status-routes.d.ts +0 -20
- package/dist/core/routes/status-routes.d.ts.map +0 -1
- package/dist/core/routes/status-routes.js +0 -38
- package/dist/core/routes/status-routes.js.map +0 -1
- package/dist/core/routes/system-routes.d.ts +0 -22
- package/dist/core/routes/system-routes.d.ts.map +0 -1
- package/dist/core/routes/system-routes.js +0 -354
- package/dist/core/routes/system-routes.js.map +0 -1
- package/dist/core/server.d.ts +0 -17
- package/dist/core/server.d.ts.map +0 -1
- package/dist/core/server.js +0 -386
- package/dist/core/server.js.map +0 -1
- package/dist/core/session-clustering-service.d.ts +0 -153
- package/dist/core/session-clustering-service.d.ts.map +0 -1
- package/dist/core/session-clustering-service.js +0 -1065
- package/dist/core/session-clustering-service.js.map +0 -1
- package/dist/core/session-scanner.d.ts +0 -32
- package/dist/core/session-scanner.d.ts.map +0 -1
- package/dist/core/session-scanner.js +0 -253
- package/dist/core/session-scanner.js.map +0 -1
- package/dist/core/websocket.d.ts +0 -23
- package/dist/core/websocket.d.ts.map +0 -1
- package/dist/core/websocket.js +0 -168
- package/dist/core/websocket.js.map +0 -1
- package/dist/index.d.ts +0 -10
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -10
- package/dist/index.js.map +0 -1
- package/dist/mcp-server/index.d.ts +0 -7
- package/dist/mcp-server/index.d.ts.map +0 -1
- package/dist/mcp-server/index.js +0 -157
- package/dist/mcp-server/index.js.map +0 -1
- package/dist/tools/classify-folders.d.ts +0 -26
- package/dist/tools/classify-folders.d.ts.map +0 -1
- package/dist/tools/classify-folders.js +0 -201
- package/dist/tools/classify-folders.js.map +0 -1
- package/dist/tools/cli-config-manager.d.ts +0 -62
- package/dist/tools/cli-config-manager.d.ts.map +0 -1
- package/dist/tools/cli-config-manager.js +0 -221
- package/dist/tools/cli-config-manager.js.map +0 -1
- package/dist/tools/cli-executor.d.ts +0 -373
- package/dist/tools/cli-executor.d.ts.map +0 -1
- package/dist/tools/cli-executor.js +0 -1625
- package/dist/tools/cli-executor.js.map +0 -1
- package/dist/tools/cli-history-store.d.ts +0 -330
- package/dist/tools/cli-history-store.d.ts.map +0 -1
- package/dist/tools/cli-history-store.js +0 -916
- package/dist/tools/cli-history-store.js.map +0 -1
- package/dist/tools/codex-lens.d.ts +0 -118
- package/dist/tools/codex-lens.d.ts.map +0 -1
- package/dist/tools/codex-lens.js +0 -962
- package/dist/tools/codex-lens.js.map +0 -1
- package/dist/tools/convert-tokens-to-css.d.ts +0 -14
- package/dist/tools/convert-tokens-to-css.d.ts.map +0 -1
- package/dist/tools/convert-tokens-to-css.js +0 -244
- package/dist/tools/convert-tokens-to-css.js.map +0 -1
- package/dist/tools/core-memory.d.ts +0 -66
- package/dist/tools/core-memory.d.ts.map +0 -1
- package/dist/tools/core-memory.js +0 -324
- package/dist/tools/core-memory.js.map +0 -1
- package/dist/tools/detect-changed-modules.d.ts +0 -24
- package/dist/tools/detect-changed-modules.d.ts.map +0 -1
- package/dist/tools/detect-changed-modules.js +0 -277
- package/dist/tools/detect-changed-modules.js.map +0 -1
- package/dist/tools/discover-design-files.d.ts +0 -36
- package/dist/tools/discover-design-files.d.ts.map +0 -1
- package/dist/tools/discover-design-files.js +0 -147
- package/dist/tools/discover-design-files.js.map +0 -1
- package/dist/tools/edit-file.d.ts +0 -28
- package/dist/tools/edit-file.d.ts.map +0 -1
- package/dist/tools/edit-file.js +0 -479
- package/dist/tools/edit-file.js.map +0 -1
- package/dist/tools/generate-module-docs.d.ts +0 -22
- package/dist/tools/generate-module-docs.d.ts.map +0 -1
- package/dist/tools/generate-module-docs.js +0 -379
- package/dist/tools/generate-module-docs.js.map +0 -1
- package/dist/tools/get-modules-by-depth.d.ts +0 -15
- package/dist/tools/get-modules-by-depth.d.ts.map +0 -1
- package/dist/tools/get-modules-by-depth.js +0 -296
- package/dist/tools/get-modules-by-depth.js.map +0 -1
- package/dist/tools/index.d.ts +0 -55
- package/dist/tools/index.d.ts.map +0 -1
- package/dist/tools/index.js +0 -304
- package/dist/tools/index.js.map +0 -1
- package/dist/tools/native-session-discovery.d.ts +0 -97
- package/dist/tools/native-session-discovery.d.ts.map +0 -1
- package/dist/tools/native-session-discovery.js +0 -700
- package/dist/tools/native-session-discovery.js.map +0 -1
- package/dist/tools/notifier.d.ts +0 -50
- package/dist/tools/notifier.d.ts.map +0 -1
- package/dist/tools/notifier.js +0 -90
- package/dist/tools/notifier.js.map +0 -1
- package/dist/tools/read-file.d.ts +0 -32
- package/dist/tools/read-file.d.ts.map +0 -1
- package/dist/tools/read-file.js +0 -329
- package/dist/tools/read-file.js.map +0 -1
- package/dist/tools/resume-strategy.d.ts +0 -48
- package/dist/tools/resume-strategy.d.ts.map +0 -1
- package/dist/tools/resume-strategy.js +0 -248
- package/dist/tools/resume-strategy.js.map +0 -1
- package/dist/tools/session-content-parser.d.ts +0 -58
- package/dist/tools/session-content-parser.d.ts.map +0 -1
- package/dist/tools/session-content-parser.js +0 -420
- package/dist/tools/session-content-parser.js.map +0 -1
- package/dist/tools/session-manager.d.ts +0 -9
- package/dist/tools/session-manager.d.ts.map +0 -1
- package/dist/tools/session-manager.js +0 -834
- package/dist/tools/session-manager.js.map +0 -1
- package/dist/tools/smart-context.d.ts +0 -35
- package/dist/tools/smart-context.d.ts.map +0 -1
- package/dist/tools/smart-context.js +0 -182
- package/dist/tools/smart-context.js.map +0 -1
- package/dist/tools/smart-search.d.ts +0 -105
- package/dist/tools/smart-search.d.ts.map +0 -1
- package/dist/tools/smart-search.js +0 -1753
- package/dist/tools/smart-search.js.map +0 -1
- package/dist/tools/storage-manager.d.ts +0 -114
- package/dist/tools/storage-manager.d.ts.map +0 -1
- package/dist/tools/storage-manager.js +0 -392
- package/dist/tools/storage-manager.js.map +0 -1
- package/dist/tools/ui-generate-preview.d.ts +0 -39
- package/dist/tools/ui-generate-preview.d.ts.map +0 -1
- package/dist/tools/ui-generate-preview.js +0 -300
- package/dist/tools/ui-generate-preview.js.map +0 -1
- package/dist/tools/ui-instantiate-prototypes.d.ts +0 -75
- package/dist/tools/ui-instantiate-prototypes.d.ts.map +0 -1
- package/dist/tools/ui-instantiate-prototypes.js +0 -256
- package/dist/tools/ui-instantiate-prototypes.js.map +0 -1
- package/dist/tools/update-module-claude.d.ts +0 -80
- package/dist/tools/update-module-claude.d.ts.map +0 -1
- package/dist/tools/update-module-claude.js +0 -351
- package/dist/tools/update-module-claude.js.map +0 -1
- package/dist/tools/write-file.d.ts +0 -19
- package/dist/tools/write-file.d.ts.map +0 -1
- package/dist/tools/write-file.js +0 -193
- package/dist/tools/write-file.js.map +0 -1
- package/dist/types/config.d.ts +0 -11
- package/dist/types/config.d.ts.map +0 -1
- package/dist/types/config.js +0 -2
- package/dist/types/config.js.map +0 -1
- package/dist/types/index.d.ts +0 -4
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js +0 -4
- package/dist/types/index.js.map +0 -1
- package/dist/types/session.d.ts +0 -20
- package/dist/types/session.d.ts.map +0 -1
- package/dist/types/session.js +0 -2
- package/dist/types/session.js.map +0 -1
- package/dist/types/tool.d.ts +0 -36
- package/dist/types/tool.d.ts.map +0 -1
- package/dist/types/tool.js +0 -11
- package/dist/types/tool.js.map +0 -1
- package/dist/utils/browser-launcher.d.ts +0 -13
- package/dist/utils/browser-launcher.d.ts.map +0 -1
- package/dist/utils/browser-launcher.js +0 -60
- package/dist/utils/browser-launcher.js.map +0 -1
- package/dist/utils/file-utils.d.ts +0 -25
- package/dist/utils/file-utils.d.ts.map +0 -1
- package/dist/utils/file-utils.js +0 -48
- package/dist/utils/file-utils.js.map +0 -1
- package/dist/utils/path-resolver.d.ts +0 -80
- package/dist/utils/path-resolver.d.ts.map +0 -1
- package/dist/utils/path-resolver.js +0 -260
- package/dist/utils/path-resolver.js.map +0 -1
- package/dist/utils/path-validator.d.ts +0 -49
- package/dist/utils/path-validator.d.ts.map +0 -1
- package/dist/utils/path-validator.js +0 -123
- package/dist/utils/path-validator.js.map +0 -1
- package/dist/utils/ui.d.ts +0 -62
- package/dist/utils/ui.d.ts.map +0 -1
- package/dist/utils/ui.js +0 -129
- package/dist/utils/ui.js.map +0 -1
- /package/{bin → ccw/bin}/ccw-mcp.js +0 -0
- /package/{bin → ccw/bin}/ccw.js +0 -0
- /package/{src → ccw/src}/.workflow/.cli-history/history.db +0 -0
- /package/{src → ccw/src}/.workflow/.cli-history/history.db-shm +0 -0
- /package/{src → ccw/src}/.workflow/.cli-history/history.db-wal +0 -0
- /package/{src → ccw/src}/cli.ts +0 -0
- /package/{src → ccw/src}/commands/cli.ts +0 -0
- /package/{src → ccw/src}/commands/core-memory.ts +0 -0
- /package/{src → ccw/src}/commands/hook.ts +0 -0
- /package/{src → ccw/src}/commands/install.ts +0 -0
- /package/{src → ccw/src}/commands/list.ts +0 -0
- /package/{src → ccw/src}/commands/memory.ts +0 -0
- /package/{src → ccw/src}/commands/serve.ts +0 -0
- /package/{src → ccw/src}/commands/session-path-resolver.ts +0 -0
- /package/{src → ccw/src}/commands/session.ts +0 -0
- /package/{src → ccw/src}/commands/stop.ts +0 -0
- /package/{src → ccw/src}/commands/tool.ts +0 -0
- /package/{src → ccw/src}/commands/uninstall.ts +0 -0
- /package/{src → ccw/src}/commands/upgrade.ts +0 -0
- /package/{src → ccw/src}/commands/view.ts +0 -0
- /package/{src → ccw/src}/config/storage-paths.ts +0 -0
- /package/{src → ccw/src}/core/cache-manager.ts +0 -0
- /package/{src → ccw/src}/core/claude-freshness.ts +0 -0
- /package/{src → ccw/src}/core/core-memory-store.ts +0 -0
- /package/{src → ccw/src}/core/dashboard-generator-patch.ts +0 -0
- /package/{src → ccw/src}/core/dashboard-generator.ts +0 -0
- /package/{src → ccw/src}/core/data-aggregator.ts +0 -0
- /package/{src → ccw/src}/core/history-importer.ts +0 -0
- /package/{src → ccw/src}/core/lite-scanner-complete.ts +0 -0
- /package/{src → ccw/src}/core/lite-scanner.ts +0 -0
- /package/{src → ccw/src}/core/manifest.ts +0 -0
- /package/{src → ccw/src}/core/memory-embedder-bridge.ts +0 -0
- /package/{src → ccw/src}/core/memory-store.ts +0 -0
- /package/{src → ccw/src}/core/routes/ccw-routes.ts +0 -0
- /package/{src → ccw/src}/core/routes/claude-routes.ts +0 -0
- /package/{src → ccw/src}/core/routes/cli-routes.ts +0 -0
- /package/{src → ccw/src}/core/routes/codexlens-routes.ts +0 -0
- /package/{src → ccw/src}/core/routes/core-memory-routes.ts +0 -0
- /package/{src → ccw/src}/core/routes/files-routes.ts +0 -0
- /package/{src → ccw/src}/core/routes/graph-routes.md +0 -0
- /package/{src → ccw/src}/core/routes/graph-routes.ts +0 -0
- /package/{src → ccw/src}/core/routes/help-routes.ts +0 -0
- /package/{src → ccw/src}/core/routes/hooks-routes.ts +0 -0
- /package/{src → ccw/src}/core/routes/mcp-routes.ts +0 -0
- /package/{src → ccw/src}/core/routes/mcp-routes.ts.backup +0 -0
- /package/{src → ccw/src}/core/routes/mcp-templates-db.ts +0 -0
- /package/{src → ccw/src}/core/routes/memory-routes.ts +0 -0
- /package/{src → ccw/src}/core/routes/rules-routes.ts +0 -0
- /package/{src → ccw/src}/core/routes/session-routes.ts +0 -0
- /package/{src → ccw/src}/core/routes/skills-routes.ts +0 -0
- /package/{src → ccw/src}/core/routes/status-routes.ts +0 -0
- /package/{src → ccw/src}/core/routes/system-routes.ts +0 -0
- /package/{src → ccw/src}/core/server.ts +0 -0
- /package/{src → ccw/src}/core/session-clustering-service.ts +0 -0
- /package/{src → ccw/src}/core/session-scanner.ts +0 -0
- /package/{src → ccw/src}/core/websocket.ts +0 -0
- /package/{src → ccw/src}/index.ts +0 -0
- /package/{src → ccw/src}/mcp-server/index.ts +0 -0
- /package/{src → ccw/src}/templates/assets/css/github-dark.min.css +0 -0
- /package/{src → ccw/src}/templates/assets/css/github.min.css +0 -0
- /package/{src → ccw/src}/templates/assets/js/cytoscape.min.js +0 -0
- /package/{src → ccw/src}/templates/assets/js/d3.min.js +0 -0
- /package/{src → ccw/src}/templates/assets/js/highlight.min.js +0 -0
- /package/{src → ccw/src}/templates/assets/js/lucide.min.js +0 -0
- /package/{src → ccw/src}/templates/assets/js/marked.min.js +0 -0
- /package/{src → ccw/src}/templates/assets/js/tailwind.js +0 -0
- /package/{src → ccw/src}/templates/dashboard-css/01-base.css +0 -0
- /package/{src → ccw/src}/templates/dashboard-css/02-session.css +0 -0
- /package/{src → ccw/src}/templates/dashboard-css/03-tasks.css +0 -0
- /package/{src → ccw/src}/templates/dashboard-css/04-lite-tasks.css +0 -0
- /package/{src → ccw/src}/templates/dashboard-css/05-context.css +0 -0
- /package/{src → ccw/src}/templates/dashboard-css/06-cards.css +0 -0
- /package/{src → ccw/src}/templates/dashboard-css/07-managers.css +0 -0
- /package/{src → ccw/src}/templates/dashboard-css/08-review.css +0 -0
- /package/{src → ccw/src}/templates/dashboard-css/09-explorer.css +0 -0
- /package/{src → ccw/src}/templates/dashboard-css/10-cli-status.css +0 -0
- /package/{src → ccw/src}/templates/dashboard-css/11-cli-history.css +0 -0
- /package/{src → ccw/src}/templates/dashboard-css/12-cli-legacy.css +0 -0
- /package/{src → ccw/src}/templates/dashboard-css/13-cli-ccw.css +0 -0
- /package/{src → ccw/src}/templates/dashboard-css/14-cli-modals.css +0 -0
- /package/{src → ccw/src}/templates/dashboard-css/15-cli-endpoints.css +0 -0
- /package/{src → ccw/src}/templates/dashboard-css/16-cli-session.css +0 -0
- /package/{src → ccw/src}/templates/dashboard-css/17-cli-conversation.css +0 -0
- /package/{src → ccw/src}/templates/dashboard-css/18-cli-settings.css +0 -0
- /package/{src → ccw/src}/templates/dashboard-css/19-cli-native-session.css +0 -0
- /package/{src → ccw/src}/templates/dashboard-css/20-cli-taskqueue.css +0 -0
- /package/{src → ccw/src}/templates/dashboard-css/21-cli-toolmgmt.css +0 -0
- /package/{src → ccw/src}/templates/dashboard-css/22-cli-semantic.css +0 -0
- /package/{src → ccw/src}/templates/dashboard-css/23-memory.css +0 -0
- /package/{src → ccw/src}/templates/dashboard-css/24-prompt-history.css +0 -0
- /package/{src → ccw/src}/templates/dashboard-css/25-skills-rules.css +0 -0
- /package/{src → ccw/src}/templates/dashboard-css/26-claude-manager.css +0 -0
- /package/{src → ccw/src}/templates/dashboard-css/27-graph-explorer.css +0 -0
- /package/{src → ccw/src}/templates/dashboard-css/28-mcp-manager.css +0 -0
- /package/{src → ccw/src}/templates/dashboard-css/29-help.css +0 -0
- /package/{src → ccw/src}/templates/dashboard-css/30-core-memory.css +0 -0
- /package/{src → ccw/src}/templates/dashboard-js/api.js +0 -0
- /package/{src → ccw/src}/templates/dashboard-js/components/_conflict_tab.js +0 -0
- /package/{src → ccw/src}/templates/dashboard-js/components/_exp_helpers.js +0 -0
- /package/{src → ccw/src}/templates/dashboard-js/components/_review_tab.js +0 -0
- /package/{src → ccw/src}/templates/dashboard-js/components/carousel.js +0 -0
- /package/{src → ccw/src}/templates/dashboard-js/components/cli-history.js +0 -0
- /package/{src → ccw/src}/templates/dashboard-js/components/cli-status.js +0 -0
- /package/{src → ccw/src}/templates/dashboard-js/components/flowchart.js +0 -0
- /package/{src → ccw/src}/templates/dashboard-js/components/global-notifications.js +0 -0
- /package/{src → ccw/src}/templates/dashboard-js/components/hook-manager.js +0 -0
- /package/{src → ccw/src}/templates/dashboard-js/components/index-manager.js +0 -0
- /package/{src → ccw/src}/templates/dashboard-js/components/mcp-manager.js +0 -0
- /package/{src → ccw/src}/templates/dashboard-js/components/modals.js +0 -0
- /package/{src → ccw/src}/templates/dashboard-js/components/navigation.js +0 -0
- /package/{src → ccw/src}/templates/dashboard-js/components/notifications.js +0 -0
- /package/{src → ccw/src}/templates/dashboard-js/components/sidebar.js +0 -0
- /package/{src → ccw/src}/templates/dashboard-js/components/storage-manager.js +0 -0
- /package/{src → ccw/src}/templates/dashboard-js/components/tabs-context.js +0 -0
- /package/{src → ccw/src}/templates/dashboard-js/components/tabs-other.js +0 -0
- /package/{src → ccw/src}/templates/dashboard-js/components/task-drawer-core.js +0 -0
- /package/{src → ccw/src}/templates/dashboard-js/components/task-drawer-renderers.js +0 -0
- /package/{src → ccw/src}/templates/dashboard-js/components/task-queue-sidebar.js +0 -0
- /package/{src → ccw/src}/templates/dashboard-js/components/theme.js +0 -0
- /package/{src → ccw/src}/templates/dashboard-js/components/version-check.js +0 -0
- /package/{src → ccw/src}/templates/dashboard-js/help-i18n.js +0 -0
- /package/{src → ccw/src}/templates/dashboard-js/i18n.js +0 -0
- /package/{src → ccw/src}/templates/dashboard-js/main.js +0 -0
- /package/{src → ccw/src}/templates/dashboard-js/state.js +0 -0
- /package/{src → ccw/src}/templates/dashboard-js/utils.js +0 -0
- /package/{src → ccw/src}/templates/dashboard-js/views/claude-manager.js +0 -0
- /package/{src → ccw/src}/templates/dashboard-js/views/cli-manager.js +0 -0
- /package/{src → ccw/src}/templates/dashboard-js/views/codexlens-manager.js +0 -0
- /package/{src → ccw/src}/templates/dashboard-js/views/core-memory-clusters.js +0 -0
- /package/{src → ccw/src}/templates/dashboard-js/views/core-memory.js +0 -0
- /package/{src → ccw/src}/templates/dashboard-js/views/explorer.js +0 -0
- /package/{src → ccw/src}/templates/dashboard-js/views/fix-session.js +0 -0
- /package/{src → ccw/src}/templates/dashboard-js/views/graph-explorer.js +0 -0
- /package/{src → ccw/src}/templates/dashboard-js/views/help.js +0 -0
- /package/{src → ccw/src}/templates/dashboard-js/views/history.js +0 -0
- /package/{src → ccw/src}/templates/dashboard-js/views/home.js +0 -0
- /package/{src → ccw/src}/templates/dashboard-js/views/hook-manager.js +0 -0
- /package/{src → ccw/src}/templates/dashboard-js/views/lite-tasks.js +0 -0
- /package/{src → ccw/src}/templates/dashboard-js/views/mcp-manager.js +0 -0
- /package/{src → ccw/src}/templates/dashboard-js/views/mcp-manager.js.backup +0 -0
- /package/{src → ccw/src}/templates/dashboard-js/views/mcp-manager.js.new +0 -0
- /package/{src → ccw/src}/templates/dashboard-js/views/memory.js +0 -0
- /package/{src → ccw/src}/templates/dashboard-js/views/project-overview.js +0 -0
- /package/{src → ccw/src}/templates/dashboard-js/views/prompt-history.js +0 -0
- /package/{src → ccw/src}/templates/dashboard-js/views/review-session.js +0 -0
- /package/{src → ccw/src}/templates/dashboard-js/views/rules-manager.js +0 -0
- /package/{src → ccw/src}/templates/dashboard-js/views/session-detail.js +0 -0
- /package/{src → ccw/src}/templates/dashboard-js/views/skills-manager.js +0 -0
- /package/{src → ccw/src}/templates/dashboard.html +0 -0
- /package/{src → ccw/src}/templates/hooks-config-example.json +0 -0
- /package/{src → ccw/src}/templates/review-cycle-dashboard.html +0 -0
- /package/{src → ccw/src}/templates/workflow-dashboard.html +0 -0
- /package/{src → ccw/src}/tools/classify-folders.ts +0 -0
- /package/{src → ccw/src}/tools/cli-config-manager.ts +0 -0
- /package/{src → ccw/src}/tools/cli-executor.ts +0 -0
- /package/{src → ccw/src}/tools/cli-history-store.ts +0 -0
- /package/{src → ccw/src}/tools/codex-lens.ts +0 -0
- /package/{src → ccw/src}/tools/convert-tokens-to-css.ts +0 -0
- /package/{src → ccw/src}/tools/core-memory.ts +0 -0
- /package/{src → ccw/src}/tools/detect-changed-modules.ts +0 -0
- /package/{src → ccw/src}/tools/discover-design-files.ts +0 -0
- /package/{src → ccw/src}/tools/edit-file.ts +0 -0
- /package/{src → ccw/src}/tools/generate-module-docs.ts +0 -0
- /package/{src → ccw/src}/tools/get-modules-by-depth.ts +0 -0
- /package/{src → ccw/src}/tools/index.ts +0 -0
- /package/{src → ccw/src}/tools/native-session-discovery.ts +0 -0
- /package/{src → ccw/src}/tools/notifier.ts +0 -0
- /package/{src → ccw/src}/tools/read-file.ts +0 -0
- /package/{src → ccw/src}/tools/resume-strategy.ts +0 -0
- /package/{src → ccw/src}/tools/session-content-parser.ts +0 -0
- /package/{src → ccw/src}/tools/session-manager.ts +0 -0
- /package/{src → ccw/src}/tools/smart-context.ts +0 -0
- /package/{src → ccw/src}/tools/smart-search.ts +0 -0
- /package/{src → ccw/src}/tools/smart-search.ts.backup +0 -0
- /package/{src → ccw/src}/tools/storage-manager.ts +0 -0
- /package/{src → ccw/src}/tools/ui-generate-preview.js +0 -0
- /package/{src → ccw/src}/tools/ui-instantiate-prototypes.js +0 -0
- /package/{src → ccw/src}/tools/update-module-claude.js +0 -0
- /package/{src → ccw/src}/tools/write-file.ts +0 -0
- /package/{src → ccw/src}/types/config.ts +0 -0
- /package/{src → ccw/src}/types/index.ts +0 -0
- /package/{src → ccw/src}/types/session.ts +0 -0
- /package/{src → ccw/src}/types/tool.ts +0 -0
- /package/{src → ccw/src}/utils/browser-launcher.ts +0 -0
- /package/{src → ccw/src}/utils/file-utils.ts +0 -0
- /package/{src → ccw/src}/utils/path-resolver.ts +0 -0
- /package/{src → ccw/src}/utils/path-validator.ts +0 -0
- /package/{src → ccw/src}/utils/ui.ts +0 -0
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Manages database schema migrations.
|
|
3
|
+
|
|
4
|
+
This module provides a framework for applying versioned migrations to the SQLite
|
|
5
|
+
database. Migrations are discovered from the `codexlens.storage.migrations`
|
|
6
|
+
package and applied sequentially. The database schema version is tracked using
|
|
7
|
+
the `user_version` pragma.
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
import importlib
|
|
11
|
+
import logging
|
|
12
|
+
import pkgutil
|
|
13
|
+
from pathlib import Path
|
|
14
|
+
from sqlite3 import Connection
|
|
15
|
+
from typing import List, NamedTuple
|
|
16
|
+
|
|
17
|
+
log = logging.getLogger(__name__)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class Migration(NamedTuple):
|
|
21
|
+
"""Represents a single database migration."""
|
|
22
|
+
|
|
23
|
+
version: int
|
|
24
|
+
name: str
|
|
25
|
+
upgrade: callable
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
def discover_migrations() -> List[Migration]:
|
|
29
|
+
"""
|
|
30
|
+
Discovers and returns a sorted list of database migrations.
|
|
31
|
+
|
|
32
|
+
Migrations are expected to be in the `codexlens.storage.migrations` package,
|
|
33
|
+
with filenames in the format `migration_XXX_description.py`, where XXX is
|
|
34
|
+
the version number. Each migration module must contain an `upgrade` function
|
|
35
|
+
that takes a `sqlite3.Connection` object as its argument.
|
|
36
|
+
|
|
37
|
+
Returns:
|
|
38
|
+
A list of Migration objects, sorted by version.
|
|
39
|
+
"""
|
|
40
|
+
import codexlens.storage.migrations
|
|
41
|
+
|
|
42
|
+
migrations = []
|
|
43
|
+
package_path = Path(codexlens.storage.migrations.__file__).parent
|
|
44
|
+
|
|
45
|
+
for _, name, _ in pkgutil.iter_modules([str(package_path)]):
|
|
46
|
+
if name.startswith("migration_"):
|
|
47
|
+
try:
|
|
48
|
+
version = int(name.split("_")[1])
|
|
49
|
+
module = importlib.import_module(f"codexlens.storage.migrations.{name}")
|
|
50
|
+
if hasattr(module, "upgrade"):
|
|
51
|
+
migrations.append(
|
|
52
|
+
Migration(version=version, name=name, upgrade=module.upgrade)
|
|
53
|
+
)
|
|
54
|
+
else:
|
|
55
|
+
log.warning(f"Migration {name} is missing 'upgrade' function.")
|
|
56
|
+
except (ValueError, IndexError) as e:
|
|
57
|
+
log.warning(f"Could not parse migration name {name}: {e}")
|
|
58
|
+
except ImportError as e:
|
|
59
|
+
log.warning(f"Could not import migration {name}: {e}")
|
|
60
|
+
|
|
61
|
+
migrations.sort(key=lambda m: m.version)
|
|
62
|
+
return migrations
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
class MigrationManager:
|
|
66
|
+
"""
|
|
67
|
+
Manages the application of migrations to a database.
|
|
68
|
+
"""
|
|
69
|
+
|
|
70
|
+
def __init__(self, db_conn: Connection):
|
|
71
|
+
"""
|
|
72
|
+
Initializes the MigrationManager.
|
|
73
|
+
|
|
74
|
+
Args:
|
|
75
|
+
db_conn: The SQLite database connection.
|
|
76
|
+
"""
|
|
77
|
+
self.db_conn = db_conn
|
|
78
|
+
self.migrations = discover_migrations()
|
|
79
|
+
|
|
80
|
+
def get_current_version(self) -> int:
|
|
81
|
+
"""
|
|
82
|
+
Gets the current version of the database schema.
|
|
83
|
+
|
|
84
|
+
Returns:
|
|
85
|
+
The current schema version number.
|
|
86
|
+
"""
|
|
87
|
+
return self.db_conn.execute("PRAGMA user_version").fetchone()[0]
|
|
88
|
+
|
|
89
|
+
def set_version(self, version: int):
|
|
90
|
+
"""
|
|
91
|
+
Sets the database schema version.
|
|
92
|
+
|
|
93
|
+
Args:
|
|
94
|
+
version: The version number to set.
|
|
95
|
+
"""
|
|
96
|
+
self.db_conn.execute(f"PRAGMA user_version = {version}")
|
|
97
|
+
log.info(f"Database schema version set to {version}")
|
|
98
|
+
|
|
99
|
+
def apply_migrations(self):
|
|
100
|
+
"""
|
|
101
|
+
Applies all pending migrations to the database.
|
|
102
|
+
|
|
103
|
+
This method checks the current database version and applies all
|
|
104
|
+
subsequent migrations in order. Each migration is applied within
|
|
105
|
+
a transaction, unless the migration manages its own transactions.
|
|
106
|
+
"""
|
|
107
|
+
current_version = self.get_current_version()
|
|
108
|
+
log.info(f"Current database schema version: {current_version}")
|
|
109
|
+
|
|
110
|
+
for migration in self.migrations:
|
|
111
|
+
if migration.version > current_version:
|
|
112
|
+
log.info(f"Applying migration {migration.version}: {migration.name}...")
|
|
113
|
+
try:
|
|
114
|
+
# Check if a transaction is already in progress
|
|
115
|
+
in_transaction = self.db_conn.in_transaction
|
|
116
|
+
|
|
117
|
+
# Only start transaction if not already in one
|
|
118
|
+
if not in_transaction:
|
|
119
|
+
self.db_conn.execute("BEGIN")
|
|
120
|
+
|
|
121
|
+
migration.upgrade(self.db_conn)
|
|
122
|
+
self.set_version(migration.version)
|
|
123
|
+
|
|
124
|
+
# Only commit if we started the transaction and it's still active
|
|
125
|
+
if not in_transaction and self.db_conn.in_transaction:
|
|
126
|
+
self.db_conn.execute("COMMIT")
|
|
127
|
+
|
|
128
|
+
log.info(
|
|
129
|
+
f"Successfully applied migration {migration.version}: {migration.name}"
|
|
130
|
+
)
|
|
131
|
+
except Exception as e:
|
|
132
|
+
log.error(
|
|
133
|
+
f"Failed to apply migration {migration.version}: {migration.name}. Error: {e}",
|
|
134
|
+
exc_info=True,
|
|
135
|
+
)
|
|
136
|
+
# Try to rollback if transaction is active
|
|
137
|
+
try:
|
|
138
|
+
if self.db_conn.in_transaction:
|
|
139
|
+
self.db_conn.execute("ROLLBACK")
|
|
140
|
+
except Exception:
|
|
141
|
+
pass # Ignore rollback errors
|
|
142
|
+
raise
|
|
143
|
+
|
|
144
|
+
latest_migration_version = self.migrations[-1].version if self.migrations else 0
|
|
145
|
+
if current_version < latest_migration_version:
|
|
146
|
+
# This case can be hit if migrations were applied but the loop was exited
|
|
147
|
+
# and set_version was not called for the last one for some reason.
|
|
148
|
+
# To be safe, we explicitly set the version to the latest known migration.
|
|
149
|
+
final_version = self.get_current_version()
|
|
150
|
+
if final_version != latest_migration_version:
|
|
151
|
+
log.warning(f"Database version ({final_version}) is not the latest migration version ({latest_migration_version}). This may indicate a problem.")
|
|
152
|
+
|
|
153
|
+
log.info("All pending migrations applied successfully.")
|
|
154
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# This file makes the 'migrations' directory a Python package.
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Migration 001: Normalize keywords into separate tables.
|
|
3
|
+
|
|
4
|
+
This migration introduces two new tables, `keywords` and `file_keywords`, to
|
|
5
|
+
store semantic keywords in a normalized fashion. It then migrates the existing
|
|
6
|
+
keywords from the `semantic_data` JSON blob in the `files` table into these
|
|
7
|
+
new tables. This is intended to speed up keyword-based searches significantly.
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
import json
|
|
11
|
+
import logging
|
|
12
|
+
from sqlite3 import Connection
|
|
13
|
+
|
|
14
|
+
log = logging.getLogger(__name__)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def upgrade(db_conn: Connection):
|
|
18
|
+
"""
|
|
19
|
+
Applies the migration to normalize keywords.
|
|
20
|
+
|
|
21
|
+
- Creates `keywords` and `file_keywords` tables.
|
|
22
|
+
- Creates indexes for efficient querying.
|
|
23
|
+
- Migrates data from `files.semantic_data` to the new tables.
|
|
24
|
+
|
|
25
|
+
Args:
|
|
26
|
+
db_conn: The SQLite database connection.
|
|
27
|
+
"""
|
|
28
|
+
cursor = db_conn.cursor()
|
|
29
|
+
|
|
30
|
+
log.info("Creating 'keywords' and 'file_keywords' tables...")
|
|
31
|
+
# Create a table to store unique keywords
|
|
32
|
+
cursor.execute(
|
|
33
|
+
"""
|
|
34
|
+
CREATE TABLE IF NOT EXISTS keywords (
|
|
35
|
+
id INTEGER PRIMARY KEY,
|
|
36
|
+
keyword TEXT NOT NULL UNIQUE
|
|
37
|
+
)
|
|
38
|
+
"""
|
|
39
|
+
)
|
|
40
|
+
|
|
41
|
+
# Create a join table to link files and keywords (many-to-many)
|
|
42
|
+
cursor.execute(
|
|
43
|
+
"""
|
|
44
|
+
CREATE TABLE IF NOT EXISTS file_keywords (
|
|
45
|
+
file_id INTEGER NOT NULL,
|
|
46
|
+
keyword_id INTEGER NOT NULL,
|
|
47
|
+
PRIMARY KEY (file_id, keyword_id),
|
|
48
|
+
FOREIGN KEY (file_id) REFERENCES files (id) ON DELETE CASCADE,
|
|
49
|
+
FOREIGN KEY (keyword_id) REFERENCES keywords (id) ON DELETE CASCADE
|
|
50
|
+
)
|
|
51
|
+
"""
|
|
52
|
+
)
|
|
53
|
+
|
|
54
|
+
log.info("Creating indexes for new keyword tables...")
|
|
55
|
+
cursor.execute("CREATE INDEX IF NOT EXISTS idx_keywords_keyword ON keywords (keyword)")
|
|
56
|
+
cursor.execute("CREATE INDEX IF NOT EXISTS idx_file_keywords_file_id ON file_keywords (file_id)")
|
|
57
|
+
cursor.execute("CREATE INDEX IF NOT EXISTS idx_file_keywords_keyword_id ON file_keywords (keyword_id)")
|
|
58
|
+
|
|
59
|
+
log.info("Migrating existing keywords from 'semantic_metadata' table...")
|
|
60
|
+
|
|
61
|
+
# Check if semantic_metadata table exists before querying
|
|
62
|
+
cursor.execute("SELECT name FROM sqlite_master WHERE type='table' AND name='semantic_metadata'")
|
|
63
|
+
if not cursor.fetchone():
|
|
64
|
+
log.info("No 'semantic_metadata' table found, skipping data migration.")
|
|
65
|
+
return
|
|
66
|
+
|
|
67
|
+
# Check if 'keywords' column exists in semantic_metadata table
|
|
68
|
+
# (current schema may already use normalized tables without this column)
|
|
69
|
+
cursor.execute("PRAGMA table_info(semantic_metadata)")
|
|
70
|
+
columns = {row[1] for row in cursor.fetchall()}
|
|
71
|
+
if "keywords" not in columns:
|
|
72
|
+
log.info("No 'keywords' column in semantic_metadata table, skipping data migration.")
|
|
73
|
+
return
|
|
74
|
+
|
|
75
|
+
cursor.execute("SELECT file_id, keywords FROM semantic_metadata WHERE keywords IS NOT NULL AND keywords != ''")
|
|
76
|
+
|
|
77
|
+
files_to_migrate = cursor.fetchall()
|
|
78
|
+
if not files_to_migrate:
|
|
79
|
+
log.info("No existing files with semantic metadata to migrate.")
|
|
80
|
+
return
|
|
81
|
+
|
|
82
|
+
log.info(f"Found {len(files_to_migrate)} files with semantic metadata to migrate.")
|
|
83
|
+
|
|
84
|
+
for file_id, keywords_json in files_to_migrate:
|
|
85
|
+
if not keywords_json:
|
|
86
|
+
continue
|
|
87
|
+
try:
|
|
88
|
+
keywords = json.loads(keywords_json)
|
|
89
|
+
|
|
90
|
+
if not isinstance(keywords, list):
|
|
91
|
+
log.warning(f"Keywords for file_id {file_id} is not a list, skipping.")
|
|
92
|
+
continue
|
|
93
|
+
|
|
94
|
+
for keyword in keywords:
|
|
95
|
+
if not isinstance(keyword, str):
|
|
96
|
+
log.warning(f"Non-string keyword '{keyword}' found for file_id {file_id}, skipping.")
|
|
97
|
+
continue
|
|
98
|
+
|
|
99
|
+
keyword = keyword.strip()
|
|
100
|
+
if not keyword:
|
|
101
|
+
continue
|
|
102
|
+
|
|
103
|
+
# Get or create keyword_id
|
|
104
|
+
cursor.execute("INSERT OR IGNORE INTO keywords (keyword) VALUES (?)", (keyword,))
|
|
105
|
+
cursor.execute("SELECT id FROM keywords WHERE keyword = ?", (keyword,))
|
|
106
|
+
keyword_id_result = cursor.fetchone()
|
|
107
|
+
|
|
108
|
+
if keyword_id_result:
|
|
109
|
+
keyword_id = keyword_id_result[0]
|
|
110
|
+
# Link file to keyword
|
|
111
|
+
cursor.execute(
|
|
112
|
+
"INSERT OR IGNORE INTO file_keywords (file_id, keyword_id) VALUES (?, ?)",
|
|
113
|
+
(file_id, keyword_id),
|
|
114
|
+
)
|
|
115
|
+
else:
|
|
116
|
+
log.error(f"Failed to retrieve or create keyword_id for keyword: {keyword}")
|
|
117
|
+
|
|
118
|
+
except json.JSONDecodeError as e:
|
|
119
|
+
log.warning(f"Could not parse keywords for file_id {file_id}: {e}")
|
|
120
|
+
except Exception as e:
|
|
121
|
+
log.error(f"An unexpected error occurred during migration for file_id {file_id}: {e}", exc_info=True)
|
|
122
|
+
|
|
123
|
+
log.info("Finished migrating keywords.")
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Migration 002: Add token_count and symbol_type to symbols table.
|
|
3
|
+
|
|
4
|
+
This migration adds token counting metadata to symbols for accurate chunk
|
|
5
|
+
splitting and performance optimization. It also adds symbol_type for better
|
|
6
|
+
filtering in searches.
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
import logging
|
|
10
|
+
from sqlite3 import Connection
|
|
11
|
+
|
|
12
|
+
log = logging.getLogger(__name__)
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def upgrade(db_conn: Connection):
|
|
16
|
+
"""
|
|
17
|
+
Applies the migration to add token metadata to symbols.
|
|
18
|
+
|
|
19
|
+
- Adds token_count column to symbols table
|
|
20
|
+
- Adds symbol_type column to symbols table (for future use)
|
|
21
|
+
- Creates index on symbol_type for efficient filtering
|
|
22
|
+
- Backfills existing symbols with NULL token_count (to be calculated lazily)
|
|
23
|
+
|
|
24
|
+
Args:
|
|
25
|
+
db_conn: The SQLite database connection.
|
|
26
|
+
"""
|
|
27
|
+
cursor = db_conn.cursor()
|
|
28
|
+
|
|
29
|
+
log.info("Adding token_count column to symbols table...")
|
|
30
|
+
try:
|
|
31
|
+
cursor.execute("ALTER TABLE symbols ADD COLUMN token_count INTEGER")
|
|
32
|
+
log.info("Successfully added token_count column.")
|
|
33
|
+
except Exception as e:
|
|
34
|
+
# Column might already exist
|
|
35
|
+
log.warning(f"Could not add token_count column (might already exist): {e}")
|
|
36
|
+
|
|
37
|
+
log.info("Adding symbol_type column to symbols table...")
|
|
38
|
+
try:
|
|
39
|
+
cursor.execute("ALTER TABLE symbols ADD COLUMN symbol_type TEXT")
|
|
40
|
+
log.info("Successfully added symbol_type column.")
|
|
41
|
+
except Exception as e:
|
|
42
|
+
# Column might already exist
|
|
43
|
+
log.warning(f"Could not add symbol_type column (might already exist): {e}")
|
|
44
|
+
|
|
45
|
+
log.info("Creating index on symbol_type for efficient filtering...")
|
|
46
|
+
cursor.execute("CREATE INDEX IF NOT EXISTS idx_symbols_type ON symbols(symbol_type)")
|
|
47
|
+
|
|
48
|
+
log.info("Migration 002 completed successfully.")
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Migration 004: Add dual FTS tables for exact and fuzzy matching.
|
|
3
|
+
|
|
4
|
+
This migration introduces two FTS5 tables:
|
|
5
|
+
- files_fts_exact: Uses unicode61 tokenizer for exact token matching
|
|
6
|
+
- files_fts_fuzzy: Uses trigram tokenizer (or extended unicode61) for substring/fuzzy matching
|
|
7
|
+
|
|
8
|
+
Both tables are synchronized with the files table via triggers for automatic updates.
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
import logging
|
|
12
|
+
from sqlite3 import Connection
|
|
13
|
+
|
|
14
|
+
from codexlens.storage.sqlite_utils import check_trigram_support, get_sqlite_version
|
|
15
|
+
|
|
16
|
+
log = logging.getLogger(__name__)
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def upgrade(db_conn: Connection):
|
|
20
|
+
"""
|
|
21
|
+
Applies the migration to add dual FTS tables.
|
|
22
|
+
|
|
23
|
+
- Drops old files_fts table and triggers
|
|
24
|
+
- Creates files_fts_exact with unicode61 tokenizer
|
|
25
|
+
- Creates files_fts_fuzzy with trigram or extended unicode61 tokenizer
|
|
26
|
+
- Creates synchronized triggers for both tables
|
|
27
|
+
- Rebuilds FTS indexes from files table
|
|
28
|
+
|
|
29
|
+
Args:
|
|
30
|
+
db_conn: The SQLite database connection.
|
|
31
|
+
"""
|
|
32
|
+
cursor = db_conn.cursor()
|
|
33
|
+
|
|
34
|
+
try:
|
|
35
|
+
# Check trigram support
|
|
36
|
+
has_trigram = check_trigram_support(db_conn)
|
|
37
|
+
version = get_sqlite_version(db_conn)
|
|
38
|
+
log.info(f"SQLite version: {'.'.join(map(str, version))}")
|
|
39
|
+
|
|
40
|
+
if has_trigram:
|
|
41
|
+
log.info("Trigram tokenizer available, using for fuzzy FTS table")
|
|
42
|
+
fuzzy_tokenizer = "trigram"
|
|
43
|
+
else:
|
|
44
|
+
log.warning(
|
|
45
|
+
f"Trigram tokenizer not available (requires SQLite >= 3.34), "
|
|
46
|
+
f"using extended unicode61 tokenizer for fuzzy matching"
|
|
47
|
+
)
|
|
48
|
+
fuzzy_tokenizer = "unicode61 tokenchars '_-.'"
|
|
49
|
+
|
|
50
|
+
# Start transaction
|
|
51
|
+
cursor.execute("BEGIN TRANSACTION")
|
|
52
|
+
|
|
53
|
+
# Check if files table has 'name' column (v2 schema doesn't have it)
|
|
54
|
+
cursor.execute("PRAGMA table_info(files)")
|
|
55
|
+
columns = {row[1] for row in cursor.fetchall()}
|
|
56
|
+
|
|
57
|
+
if 'name' not in columns:
|
|
58
|
+
log.info("Adding 'name' column to files table (v2 schema upgrade)...")
|
|
59
|
+
# Add name column
|
|
60
|
+
cursor.execute("ALTER TABLE files ADD COLUMN name TEXT")
|
|
61
|
+
# Populate name from path (extract filename from last '/')
|
|
62
|
+
# Use Python to do the extraction since SQLite doesn't have reverse()
|
|
63
|
+
cursor.execute("SELECT rowid, path FROM files")
|
|
64
|
+
rows = cursor.fetchall()
|
|
65
|
+
for rowid, path in rows:
|
|
66
|
+
# Extract filename from path
|
|
67
|
+
name = path.split('/')[-1] if '/' in path else path
|
|
68
|
+
cursor.execute("UPDATE files SET name = ? WHERE rowid = ?", (name, rowid))
|
|
69
|
+
|
|
70
|
+
# Rename 'path' column to 'full_path' if needed
|
|
71
|
+
if 'path' in columns and 'full_path' not in columns:
|
|
72
|
+
log.info("Renaming 'path' to 'full_path' (v2 schema upgrade)...")
|
|
73
|
+
# Check if indexed_at column exists in v2 schema
|
|
74
|
+
has_indexed_at = 'indexed_at' in columns
|
|
75
|
+
has_mtime = 'mtime' in columns
|
|
76
|
+
|
|
77
|
+
# SQLite doesn't support RENAME COLUMN before 3.25, so use table recreation
|
|
78
|
+
cursor.execute("""
|
|
79
|
+
CREATE TABLE files_new (
|
|
80
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
81
|
+
name TEXT NOT NULL,
|
|
82
|
+
full_path TEXT NOT NULL UNIQUE,
|
|
83
|
+
content TEXT,
|
|
84
|
+
language TEXT,
|
|
85
|
+
mtime REAL,
|
|
86
|
+
indexed_at TEXT
|
|
87
|
+
)
|
|
88
|
+
""")
|
|
89
|
+
|
|
90
|
+
# Build INSERT statement based on available columns
|
|
91
|
+
# Note: v2 schema has no rowid (path is PRIMARY KEY), so use NULL for AUTOINCREMENT
|
|
92
|
+
if has_indexed_at and has_mtime:
|
|
93
|
+
cursor.execute("""
|
|
94
|
+
INSERT INTO files_new (name, full_path, content, language, mtime, indexed_at)
|
|
95
|
+
SELECT name, path, content, language, mtime, indexed_at FROM files
|
|
96
|
+
""")
|
|
97
|
+
elif has_indexed_at:
|
|
98
|
+
cursor.execute("""
|
|
99
|
+
INSERT INTO files_new (name, full_path, content, language, indexed_at)
|
|
100
|
+
SELECT name, path, content, language, indexed_at FROM files
|
|
101
|
+
""")
|
|
102
|
+
elif has_mtime:
|
|
103
|
+
cursor.execute("""
|
|
104
|
+
INSERT INTO files_new (name, full_path, content, language, mtime)
|
|
105
|
+
SELECT name, path, content, language, mtime FROM files
|
|
106
|
+
""")
|
|
107
|
+
else:
|
|
108
|
+
cursor.execute("""
|
|
109
|
+
INSERT INTO files_new (name, full_path, content, language)
|
|
110
|
+
SELECT name, path, content, language FROM files
|
|
111
|
+
""")
|
|
112
|
+
|
|
113
|
+
cursor.execute("DROP TABLE files")
|
|
114
|
+
cursor.execute("ALTER TABLE files_new RENAME TO files")
|
|
115
|
+
|
|
116
|
+
log.info("Dropping old FTS triggers and table...")
|
|
117
|
+
# Drop old triggers
|
|
118
|
+
cursor.execute("DROP TRIGGER IF EXISTS files_ai")
|
|
119
|
+
cursor.execute("DROP TRIGGER IF EXISTS files_ad")
|
|
120
|
+
cursor.execute("DROP TRIGGER IF EXISTS files_au")
|
|
121
|
+
|
|
122
|
+
# Drop old FTS table
|
|
123
|
+
cursor.execute("DROP TABLE IF EXISTS files_fts")
|
|
124
|
+
|
|
125
|
+
# Create exact FTS table (unicode61 with underscores/hyphens/dots as token chars)
|
|
126
|
+
# Note: tokenchars includes '.' to properly tokenize qualified names like PortRole.FLOW
|
|
127
|
+
log.info("Creating files_fts_exact table with unicode61 tokenizer...")
|
|
128
|
+
cursor.execute(
|
|
129
|
+
"""
|
|
130
|
+
CREATE VIRTUAL TABLE files_fts_exact USING fts5(
|
|
131
|
+
name, full_path UNINDEXED, content,
|
|
132
|
+
content='files',
|
|
133
|
+
content_rowid='id',
|
|
134
|
+
tokenize="unicode61 tokenchars '_-.'"
|
|
135
|
+
)
|
|
136
|
+
"""
|
|
137
|
+
)
|
|
138
|
+
|
|
139
|
+
# Create fuzzy FTS table (trigram or extended unicode61)
|
|
140
|
+
log.info(f"Creating files_fts_fuzzy table with {fuzzy_tokenizer} tokenizer...")
|
|
141
|
+
cursor.execute(
|
|
142
|
+
f"""
|
|
143
|
+
CREATE VIRTUAL TABLE files_fts_fuzzy USING fts5(
|
|
144
|
+
name, full_path UNINDEXED, content,
|
|
145
|
+
content='files',
|
|
146
|
+
content_rowid='id',
|
|
147
|
+
tokenize="{fuzzy_tokenizer}"
|
|
148
|
+
)
|
|
149
|
+
"""
|
|
150
|
+
)
|
|
151
|
+
|
|
152
|
+
# Create synchronized triggers for files_fts_exact
|
|
153
|
+
log.info("Creating triggers for files_fts_exact...")
|
|
154
|
+
cursor.execute(
|
|
155
|
+
"""
|
|
156
|
+
CREATE TRIGGER files_exact_ai AFTER INSERT ON files BEGIN
|
|
157
|
+
INSERT INTO files_fts_exact(rowid, name, full_path, content)
|
|
158
|
+
VALUES(new.id, new.name, new.full_path, new.content);
|
|
159
|
+
END
|
|
160
|
+
"""
|
|
161
|
+
)
|
|
162
|
+
cursor.execute(
|
|
163
|
+
"""
|
|
164
|
+
CREATE TRIGGER files_exact_ad AFTER DELETE ON files BEGIN
|
|
165
|
+
INSERT INTO files_fts_exact(files_fts_exact, rowid, name, full_path, content)
|
|
166
|
+
VALUES('delete', old.id, old.name, old.full_path, old.content);
|
|
167
|
+
END
|
|
168
|
+
"""
|
|
169
|
+
)
|
|
170
|
+
cursor.execute(
|
|
171
|
+
"""
|
|
172
|
+
CREATE TRIGGER files_exact_au AFTER UPDATE ON files BEGIN
|
|
173
|
+
INSERT INTO files_fts_exact(files_fts_exact, rowid, name, full_path, content)
|
|
174
|
+
VALUES('delete', old.id, old.name, old.full_path, old.content);
|
|
175
|
+
INSERT INTO files_fts_exact(rowid, name, full_path, content)
|
|
176
|
+
VALUES(new.id, new.name, new.full_path, new.content);
|
|
177
|
+
END
|
|
178
|
+
"""
|
|
179
|
+
)
|
|
180
|
+
|
|
181
|
+
# Create synchronized triggers for files_fts_fuzzy
|
|
182
|
+
log.info("Creating triggers for files_fts_fuzzy...")
|
|
183
|
+
cursor.execute(
|
|
184
|
+
"""
|
|
185
|
+
CREATE TRIGGER files_fuzzy_ai AFTER INSERT ON files BEGIN
|
|
186
|
+
INSERT INTO files_fts_fuzzy(rowid, name, full_path, content)
|
|
187
|
+
VALUES(new.id, new.name, new.full_path, new.content);
|
|
188
|
+
END
|
|
189
|
+
"""
|
|
190
|
+
)
|
|
191
|
+
cursor.execute(
|
|
192
|
+
"""
|
|
193
|
+
CREATE TRIGGER files_fuzzy_ad AFTER DELETE ON files BEGIN
|
|
194
|
+
INSERT INTO files_fts_fuzzy(files_fts_fuzzy, rowid, name, full_path, content)
|
|
195
|
+
VALUES('delete', old.id, old.name, old.full_path, old.content);
|
|
196
|
+
END
|
|
197
|
+
"""
|
|
198
|
+
)
|
|
199
|
+
cursor.execute(
|
|
200
|
+
"""
|
|
201
|
+
CREATE TRIGGER files_fuzzy_au AFTER UPDATE ON files BEGIN
|
|
202
|
+
INSERT INTO files_fts_fuzzy(files_fts_fuzzy, rowid, name, full_path, content)
|
|
203
|
+
VALUES('delete', old.id, old.name, old.full_path, old.content);
|
|
204
|
+
INSERT INTO files_fts_fuzzy(rowid, name, full_path, content)
|
|
205
|
+
VALUES(new.id, new.name, new.full_path, new.content);
|
|
206
|
+
END
|
|
207
|
+
"""
|
|
208
|
+
)
|
|
209
|
+
|
|
210
|
+
# Rebuild FTS indexes from files table
|
|
211
|
+
log.info("Rebuilding FTS indexes from files table...")
|
|
212
|
+
cursor.execute("INSERT INTO files_fts_exact(files_fts_exact) VALUES('rebuild')")
|
|
213
|
+
cursor.execute("INSERT INTO files_fts_fuzzy(files_fts_fuzzy) VALUES('rebuild')")
|
|
214
|
+
|
|
215
|
+
# Commit transaction
|
|
216
|
+
cursor.execute("COMMIT")
|
|
217
|
+
log.info("Migration 004 completed successfully")
|
|
218
|
+
|
|
219
|
+
# Vacuum to reclaim space (outside transaction)
|
|
220
|
+
try:
|
|
221
|
+
log.info("Running VACUUM to reclaim space...")
|
|
222
|
+
cursor.execute("VACUUM")
|
|
223
|
+
except Exception as e:
|
|
224
|
+
log.warning(f"VACUUM failed (non-critical): {e}")
|
|
225
|
+
|
|
226
|
+
except Exception as e:
|
|
227
|
+
log.error(f"Migration 004 failed: {e}")
|
|
228
|
+
try:
|
|
229
|
+
cursor.execute("ROLLBACK")
|
|
230
|
+
except Exception:
|
|
231
|
+
pass
|
|
232
|
+
raise
|