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