claude-code-workflow 6.1.4 → 6.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/CLAUDE.md +10 -0
- package/.claude/agents/action-planning-agent.md +857 -778
- package/.claude/agents/cli-execution-agent.md +266 -269
- package/.claude/agents/cli-explore-agent.md +2 -2
- package/.claude/agents/cli-lite-planning-agent.md +142 -92
- package/.claude/agents/cli-planning-agent.md +4 -4
- package/.claude/agents/code-developer.md +7 -6
- package/.claude/agents/conceptual-planning-agent.md +2 -2
- package/.claude/agents/context-search-agent.md +31 -32
- package/.claude/agents/doc-generator.md +4 -4
- package/.claude/agents/memory-bridge.md +93 -93
- package/.claude/agents/test-context-search-agent.md +8 -7
- package/.claude/agents/test-fix-agent.md +7 -6
- package/.claude/commands/clean.md +516 -0
- package/.claude/commands/memory/compact.md +383 -0
- package/.claude/commands/memory/docs-full-cli.md +471 -471
- package/.claude/commands/memory/docs-related-cli.md +386 -386
- package/.claude/commands/memory/docs.md +615 -615
- package/.claude/commands/memory/load.md +5 -5
- package/.claude/commands/memory/tech-research-rules.md +310 -0
- package/.claude/commands/memory/update-full.md +332 -332
- package/.claude/commands/memory/workflow-skill-memory.md +4 -4
- package/.claude/commands/task/create.md +151 -151
- package/.claude/commands/version.md +254 -254
- package/.claude/commands/workflow/brainstorm/api-designer.md +587 -585
- package/.claude/commands/workflow/brainstorm/artifacts.md +1 -0
- package/.claude/commands/workflow/brainstorm/auto-parallel.md +443 -443
- package/.claude/commands/workflow/brainstorm/data-architect.md +220 -220
- package/.claude/commands/workflow/brainstorm/product-manager.md +200 -200
- package/.claude/commands/workflow/brainstorm/product-owner.md +200 -200
- package/.claude/commands/workflow/brainstorm/scrum-master.md +200 -200
- package/.claude/commands/workflow/brainstorm/subject-matter-expert.md +200 -200
- package/.claude/commands/workflow/brainstorm/system-architect.md +389 -387
- package/.claude/commands/workflow/brainstorm/ui-designer.md +221 -221
- package/.claude/commands/workflow/brainstorm/ux-expert.md +221 -221
- package/.claude/commands/workflow/debug.md +321 -0
- package/.claude/commands/workflow/execute.md +13 -0
- package/.claude/commands/workflow/init.md +165 -164
- package/.claude/commands/workflow/lite-execute.md +119 -13
- package/.claude/commands/workflow/lite-fix.md +623 -621
- package/.claude/commands/workflow/lite-plan.md +610 -592
- package/.claude/commands/workflow/plan.md +5 -5
- package/.claude/commands/workflow/review-module-cycle.md +2 -0
- package/.claude/commands/workflow/review-session-cycle.md +2 -0
- package/.claude/commands/workflow/review.md +297 -291
- package/.claude/commands/workflow/session/complete.md +153 -500
- package/.claude/commands/workflow/session/list.md +95 -95
- package/.claude/commands/workflow/session/resume.md +60 -60
- package/.claude/commands/workflow/session/start.md +199 -199
- package/.claude/commands/workflow/tdd-plan.md +3 -3
- package/.claude/commands/workflow/tdd-verify.md +23 -9
- package/.claude/commands/workflow/test-cycle-execute.md +2 -0
- package/.claude/commands/workflow/test-fix-gen.md +699 -699
- package/.claude/commands/workflow/tools/conflict-resolution.md +104 -18
- package/.claude/commands/workflow/tools/context-gather.md +436 -434
- package/.claude/commands/workflow/tools/task-generate-agent.md +490 -291
- package/.claude/commands/workflow/tools/task-generate-tdd.md +18 -10
- package/.claude/commands/workflow/tools/test-concept-enhanced.md +2 -1
- package/.claude/commands/workflow/tools/test-context-gather.md +1 -0
- package/.claude/commands/workflow/tools/test-task-generate.md +1 -0
- package/.claude/commands/workflow/ui-design/import-from-code.md +9 -6
- package/.claude/skills/command-guide/SKILL.md +5 -5
- package/.claude/skills/command-guide/index/all-commands.json +1 -1
- package/.claude/skills/command-guide/index/by-category.json +1 -1
- package/.claude/skills/command-guide/index/by-use-case.json +1 -1
- package/.claude/skills/command-guide/reference/agents/action-planning-agent.md +857 -778
- package/.claude/skills/command-guide/reference/agents/cli-execution-agent.md +266 -269
- package/.claude/skills/command-guide/reference/agents/cli-explore-agent.md +2 -2
- package/.claude/skills/command-guide/reference/agents/cli-lite-planning-agent.md +142 -92
- package/.claude/skills/command-guide/reference/agents/cli-planning-agent.md +4 -4
- package/.claude/skills/command-guide/reference/agents/code-developer.md +7 -6
- package/.claude/skills/command-guide/reference/agents/conceptual-planning-agent.md +2 -2
- package/.claude/skills/command-guide/reference/agents/context-search-agent.md +31 -32
- package/.claude/skills/command-guide/reference/agents/doc-generator.md +4 -4
- package/.claude/skills/command-guide/reference/agents/memory-bridge.md +93 -93
- package/.claude/skills/command-guide/reference/agents/test-context-search-agent.md +8 -7
- package/.claude/skills/command-guide/reference/agents/test-fix-agent.md +7 -6
- package/.claude/skills/command-guide/reference/commands/memory/docs-full-cli.md +471 -471
- package/.claude/skills/command-guide/reference/commands/memory/docs-related-cli.md +386 -386
- package/.claude/skills/command-guide/reference/commands/memory/docs.md +17 -16
- package/.claude/skills/command-guide/reference/commands/memory/load.md +5 -5
- package/.claude/skills/command-guide/reference/commands/memory/tech-research.md +194 -357
- package/.claude/skills/command-guide/reference/commands/memory/update-full.md +332 -332
- package/.claude/skills/command-guide/reference/commands/memory/workflow-skill-memory.md +4 -4
- package/.claude/skills/command-guide/reference/commands/task/create.md +151 -151
- package/.claude/skills/command-guide/reference/commands/version.md +254 -254
- package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/api-designer.md +585 -585
- package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/auto-parallel.md +443 -443
- package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/data-architect.md +220 -220
- package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/product-manager.md +200 -200
- package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/product-owner.md +200 -200
- package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/scrum-master.md +200 -200
- package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/subject-matter-expert.md +200 -200
- package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/system-architect.md +387 -387
- package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/ui-designer.md +221 -221
- package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/ux-expert.md +221 -221
- package/.claude/skills/command-guide/reference/commands/workflow/execute.md +25 -20
- package/.claude/skills/command-guide/reference/commands/workflow/init.md +164 -164
- package/.claude/skills/command-guide/reference/commands/workflow/lite-execute.md +748 -686
- package/.claude/skills/command-guide/reference/commands/workflow/lite-fix.md +664 -621
- package/.claude/skills/command-guide/reference/commands/workflow/lite-plan.md +645 -592
- package/.claude/skills/command-guide/reference/commands/workflow/plan.md +5 -5
- package/.claude/skills/command-guide/reference/commands/workflow/review.md +25 -18
- package/.claude/skills/command-guide/reference/commands/workflow/session/complete.md +547 -500
- package/.claude/skills/command-guide/reference/commands/workflow/session/list.md +45 -27
- package/.claude/skills/command-guide/reference/commands/workflow/session/resume.md +35 -19
- package/.claude/skills/command-guide/reference/commands/workflow/session/start.md +90 -33
- package/.claude/skills/command-guide/reference/commands/workflow/tdd-plan.md +3 -3
- package/.claude/skills/command-guide/reference/commands/workflow/tdd-verify.md +23 -9
- package/.claude/skills/command-guide/reference/commands/workflow/test-fix-gen.md +699 -699
- package/.claude/skills/command-guide/reference/commands/workflow/tools/conflict-resolution.md +103 -17
- package/.claude/skills/command-guide/reference/commands/workflow/tools/context-gather.md +434 -434
- package/.claude/skills/command-guide/reference/commands/workflow/tools/task-generate-agent.md +487 -291
- package/.claude/skills/command-guide/reference/commands/workflow/tools/task-generate-tdd.md +17 -10
- package/.claude/skills/command-guide/reference/commands/workflow/tools/test-concept-enhanced.md +1 -1
- package/.claude/skills/command-guide/reference/commands/workflow/ui-design/import-from-code.md +6 -6
- package/.claude/workflows/chinese-response.md +38 -0
- package/.claude/workflows/cli-templates/prompts/rules/rule-api.txt +122 -0
- package/.claude/workflows/cli-templates/prompts/rules/rule-components.txt +122 -0
- package/.claude/workflows/cli-templates/prompts/rules/rule-config.txt +89 -0
- package/.claude/workflows/cli-templates/prompts/rules/rule-core.txt +60 -0
- package/.claude/workflows/cli-templates/prompts/rules/rule-patterns.txt +70 -0
- package/.claude/workflows/cli-templates/prompts/rules/rule-testing.txt +81 -0
- package/.claude/workflows/cli-templates/prompts/rules/tech-rules-agent-prompt.txt +89 -0
- package/.claude/workflows/cli-templates/prompts/workflow/gemini-solution-design.txt +131 -131
- package/.claude/workflows/cli-templates/prompts/workflow/skill-conflict-patterns.txt +5 -9
- package/.claude/workflows/cli-templates/prompts/workflow/skill-lessons-learned.txt +5 -9
- package/.claude/workflows/cli-templates/protocols/analysis-protocol.md +112 -0
- package/.claude/workflows/cli-templates/protocols/write-protocol.md +201 -0
- package/.claude/workflows/cli-templates/schemas/conflict-resolution-schema.json +137 -0
- package/.claude/workflows/cli-templates/schemas/debug-log-json-schema.json +127 -0
- package/.claude/workflows/cli-templates/schemas/fix-plan-json-schema.json +25 -0
- package/.claude/workflows/cli-templates/schemas/plan-json-schema.json +25 -0
- package/.claude/workflows/cli-tools-usage.md +526 -0
- package/{CLAUDE.md → .claude/workflows/coding-philosophy.md} +24 -45
- package/.claude/workflows/context-tools.md +84 -0
- package/.claude/workflows/file-modification.md +64 -0
- package/.claude/workflows/tool-strategy.md +216 -79
- package/.claude/workflows/windows-platform.md +16 -0
- package/.claude/workflows/workflow-architecture.md +942 -942
- package/.codex/AGENTS.md +63 -330
- package/.codex/prompts/debug.md +318 -0
- package/.codex/prompts/execute.md +273 -0
- package/.codex/prompts/lite-execute.md +164 -0
- package/.codex/prompts/lite-plan.md +469 -0
- package/.codex/prompts.zip +0 -0
- package/.gemini/GEMINI.md +25 -164
- package/.qwen/QWEN.md +0 -139
- package/README.md +29 -9
- package/ccw/README.md +30 -6
- package/ccw/bin/ccw-mcp.js +7 -0
- package/ccw/bin/ccw.js +9 -9
- package/ccw/package.json +65 -47
- package/ccw/src/.workflow/.cli-history/history.db +0 -0
- package/ccw/src/.workflow/.cli-history/history.db-shm +0 -0
- package/ccw/src/.workflow/.cli-history/history.db-wal +0 -0
- package/ccw/src/cli.ts +244 -0
- package/ccw/src/commands/cli.ts +740 -0
- package/ccw/src/commands/core-memory.ts +770 -0
- package/ccw/src/commands/hook.ts +315 -0
- package/ccw/src/commands/install.ts +519 -0
- package/ccw/src/commands/{list.js → list.ts} +1 -1
- package/ccw/src/commands/memory.ts +1090 -0
- package/ccw/src/commands/{serve.js → serve.ts} +14 -5
- package/ccw/src/commands/session-path-resolver.ts +372 -0
- package/ccw/src/commands/session.ts +1141 -0
- package/ccw/src/commands/{stop.js → stop.ts} +16 -6
- package/ccw/src/commands/tool.ts +201 -0
- package/ccw/src/commands/{uninstall.js → uninstall.ts} +89 -40
- package/ccw/src/commands/{upgrade.js → upgrade.ts} +68 -23
- package/ccw/src/commands/{view.js → view.ts} +22 -8
- package/ccw/src/config/storage-paths.ts +670 -0
- package/ccw/src/core/cache-manager.ts +294 -0
- package/ccw/src/core/claude-freshness.ts +319 -0
- package/ccw/src/core/core-memory-store.ts +1528 -0
- package/ccw/src/core/{dashboard-generator-patch.js → dashboard-generator-patch.ts} +18 -0
- package/ccw/src/core/{dashboard-generator.js → dashboard-generator.ts} +69 -12
- package/ccw/src/core/data-aggregator.ts +584 -0
- package/ccw/src/core/history-importer.ts +625 -0
- package/ccw/src/core/{lite-scanner.js → lite-scanner-complete.ts} +162 -66
- package/ccw/src/core/lite-scanner.ts +469 -0
- package/ccw/src/core/{manifest.js → manifest.ts} +104 -34
- package/ccw/src/core/memory-embedder-bridge.ts +262 -0
- package/ccw/src/core/memory-store.ts +978 -0
- package/ccw/src/core/routes/ccw-routes.ts +96 -0
- package/ccw/src/core/routes/claude-routes.ts +1183 -0
- package/ccw/src/core/routes/cli-routes.ts +561 -0
- package/ccw/src/core/routes/codexlens-routes.ts +806 -0
- package/ccw/src/core/routes/core-memory-routes.ts +605 -0
- package/ccw/src/core/routes/files-routes.ts +428 -0
- package/ccw/src/core/routes/graph-routes.md +164 -0
- package/ccw/src/core/routes/graph-routes.ts +626 -0
- package/ccw/src/core/routes/help-routes.ts +308 -0
- package/ccw/src/core/routes/hooks-routes.ts +405 -0
- package/ccw/src/core/routes/mcp-routes.ts +1271 -0
- package/ccw/src/core/routes/mcp-routes.ts.backup +550 -0
- package/ccw/src/core/routes/mcp-templates-db.ts +268 -0
- package/ccw/src/core/routes/memory-routes.ts +1206 -0
- package/ccw/src/core/routes/rules-routes.ts +526 -0
- package/ccw/src/core/routes/session-routes.ts +467 -0
- package/ccw/src/core/routes/skills-routes.ts +599 -0
- package/ccw/src/core/routes/status-routes.ts +57 -0
- package/ccw/src/core/routes/system-routes.ts +427 -0
- package/ccw/src/core/server.ts +431 -0
- package/ccw/src/core/session-clustering-service.ts +1258 -0
- package/ccw/src/core/session-scanner.ts +283 -0
- package/ccw/src/core/websocket.ts +190 -0
- package/ccw/src/{index.js → index.ts} +1 -0
- package/ccw/src/mcp-server/index.ts +186 -0
- package/ccw/src/templates/assets/css/github-dark.min.css +10 -0
- package/ccw/src/templates/assets/css/github.min.css +10 -0
- package/ccw/src/templates/assets/js/cytoscape.min.js +32 -0
- package/ccw/src/templates/assets/js/d3.min.js +2 -0
- package/ccw/src/templates/assets/js/highlight.min.js +1244 -0
- package/ccw/src/templates/assets/js/lucide.min.js +12 -0
- package/ccw/src/templates/assets/js/marked.min.js +69 -0
- package/ccw/src/templates/assets/js/tailwind.js +83 -0
- package/ccw/src/templates/dashboard-css/01-base.css +11 -0
- package/ccw/src/templates/dashboard-css/02-session.css +22 -0
- package/ccw/src/templates/dashboard-css/04-lite-tasks.css +10 -0
- package/ccw/src/templates/dashboard-css/06-cards.css +10 -4
- package/ccw/src/templates/dashboard-css/07-managers.css +1178 -7
- package/ccw/src/templates/dashboard-css/09-explorer.css +23 -12
- package/ccw/src/templates/dashboard-css/10-cli-status.css +337 -0
- package/ccw/src/templates/dashboard-css/11-cli-history.css +271 -0
- package/ccw/src/templates/dashboard-css/12-cli-legacy.css +796 -0
- package/ccw/src/templates/dashboard-css/13-cli-ccw.css +199 -0
- package/ccw/src/templates/dashboard-css/14-cli-modals.css +258 -0
- package/ccw/src/templates/dashboard-css/15-cli-endpoints.css +305 -0
- package/ccw/src/templates/dashboard-css/16-cli-session.css +241 -0
- package/ccw/src/templates/dashboard-css/17-cli-conversation.css +283 -0
- package/ccw/src/templates/dashboard-css/18-cli-settings.css +160 -0
- package/ccw/src/templates/dashboard-css/19-cli-native-session.css +496 -0
- package/ccw/src/templates/dashboard-css/20-cli-taskqueue.css +188 -0
- package/ccw/src/templates/dashboard-css/21-cli-toolmgmt.css +310 -0
- package/ccw/src/templates/dashboard-css/22-cli-semantic.css +240 -0
- package/ccw/src/templates/dashboard-css/23-memory.css +2390 -0
- package/ccw/src/templates/dashboard-css/24-prompt-history.css +1089 -0
- package/ccw/src/templates/dashboard-css/25-skills-rules.css +326 -0
- package/ccw/src/templates/dashboard-css/26-claude-manager.css +908 -0
- package/ccw/src/templates/dashboard-css/27-graph-explorer.css +1678 -0
- package/ccw/src/templates/dashboard-css/28-mcp-manager.css +748 -0
- package/ccw/src/templates/dashboard-css/29-help.css +264 -0
- package/ccw/src/templates/dashboard-css/30-core-memory.css +1700 -0
- package/ccw/src/templates/dashboard-js/api.js +162 -142
- package/ccw/src/templates/dashboard-js/components/carousel.js +4 -4
- package/ccw/src/templates/dashboard-js/components/cli-history.js +876 -0
- package/ccw/src/templates/dashboard-js/components/cli-status.js +978 -0
- package/ccw/src/templates/dashboard-js/components/global-notifications.js +508 -219
- package/ccw/src/templates/dashboard-js/components/hook-manager.js +1277 -282
- package/ccw/src/templates/dashboard-js/components/index-manager.js +302 -0
- package/ccw/src/templates/dashboard-js/components/mcp-manager.js +718 -27
- package/ccw/src/templates/dashboard-js/components/modals.js +66 -0
- package/ccw/src/templates/dashboard-js/components/navigation.js +80 -12
- package/ccw/src/templates/dashboard-js/components/notifications.js +758 -194
- package/ccw/src/templates/dashboard-js/components/storage-manager.js +478 -0
- package/ccw/src/templates/dashboard-js/components/tabs-other.js +157 -6
- package/ccw/src/templates/dashboard-js/components/task-queue-sidebar.js +716 -0
- package/ccw/src/templates/dashboard-js/help-i18n.js +272 -0
- package/ccw/src/templates/dashboard-js/i18n.js +2807 -0
- package/ccw/src/templates/dashboard-js/main.js +15 -0
- package/ccw/src/templates/dashboard-js/state.js +243 -42
- package/ccw/src/templates/dashboard-js/utils.js +47 -1
- package/ccw/src/templates/dashboard-js/views/claude-manager.js +912 -0
- package/ccw/src/templates/dashboard-js/views/cli-manager.js +2272 -0
- package/ccw/src/templates/dashboard-js/views/codexlens-manager.js +964 -0
- package/ccw/src/templates/dashboard-js/views/core-memory-clusters.js +503 -0
- package/ccw/src/templates/dashboard-js/views/core-memory.js +782 -0
- package/ccw/src/templates/dashboard-js/views/explorer.js +888 -852
- package/ccw/src/templates/dashboard-js/views/graph-explorer.js +1157 -0
- package/ccw/src/templates/dashboard-js/views/help.js +856 -0
- package/ccw/src/templates/dashboard-js/views/history.js +337 -0
- package/ccw/src/templates/dashboard-js/views/home.js +61 -15
- package/ccw/src/templates/dashboard-js/views/hook-manager.js +311 -43
- package/ccw/src/templates/dashboard-js/views/lite-tasks.js +204 -28
- package/ccw/src/templates/dashboard-js/views/mcp-manager.js +2187 -411
- package/ccw/src/templates/dashboard-js/views/mcp-manager.js.backup +1729 -0
- package/ccw/src/templates/dashboard-js/views/mcp-manager.js.new +928 -0
- package/ccw/src/templates/dashboard-js/views/memory.js +1221 -0
- package/ccw/src/templates/dashboard-js/views/prompt-history.js +713 -0
- package/ccw/src/templates/dashboard-js/views/rules-manager.js +828 -0
- package/ccw/src/templates/dashboard-js/views/session-detail.js +54 -53
- package/ccw/src/templates/dashboard-js/views/skills-manager.js +819 -0
- package/ccw/src/templates/dashboard.html +185 -85
- package/ccw/src/templates/hooks-config-example.json +60 -0
- package/ccw/src/tools/classify-folders.ts +245 -0
- package/ccw/src/tools/cli-config-manager.ts +268 -0
- package/ccw/src/tools/cli-executor.ts +2014 -0
- package/ccw/src/tools/cli-history-store.ts +1195 -0
- package/ccw/src/tools/codex-lens.ts +1141 -0
- package/ccw/src/tools/{convert-tokens-to-css.js → convert-tokens-to-css.ts} +73 -23
- package/ccw/src/tools/core-memory.ts +444 -0
- package/ccw/src/tools/detect-changed-modules.ts +325 -0
- package/ccw/src/tools/{discover-design-files.js → discover-design-files.ts} +74 -24
- package/ccw/src/tools/edit-file.ts +568 -0
- package/ccw/src/tools/{generate-module-docs.js → generate-module-docs.ts} +207 -185
- package/ccw/src/tools/{get-modules-by-depth.js → get-modules-by-depth.ts} +120 -79
- package/ccw/src/tools/index.ts +370 -0
- package/ccw/src/tools/native-session-discovery.ts +795 -0
- package/ccw/src/tools/notifier.ts +129 -0
- package/ccw/src/tools/read-file.ts +410 -0
- package/ccw/src/tools/resume-strategy.ts +345 -0
- package/ccw/src/tools/session-content-parser.ts +619 -0
- package/ccw/src/tools/session-manager.ts +1026 -0
- package/ccw/src/tools/smart-context.ts +228 -0
- package/ccw/src/tools/smart-search.ts +2065 -0
- package/ccw/src/tools/smart-search.ts.backup +1233 -0
- package/ccw/src/tools/storage-manager.ts +455 -0
- package/ccw/src/tools/write-file.ts +222 -0
- package/ccw/src/types/config.ts +11 -0
- package/ccw/src/types/index.ts +3 -0
- package/ccw/src/types/session.ts +25 -0
- package/ccw/src/types/tool.ts +41 -0
- package/ccw/src/utils/{browser-launcher.js → browser-launcher.ts} +10 -8
- package/ccw/src/utils/file-utils.ts +48 -0
- package/ccw/src/utils/{path-resolver.js → path-resolver.ts} +114 -78
- package/ccw/src/utils/path-validator.ts +153 -0
- package/ccw/src/utils/{ui.js → ui.ts} +32 -25
- package/codex-lens/pyproject.toml +48 -0
- package/codex-lens/src/codexlens/.workflow/.cli-history/history.db +0 -0
- package/codex-lens/src/codexlens/__init__.py +28 -0
- package/codex-lens/src/codexlens/__main__.py +14 -0
- package/codex-lens/src/codexlens/__pycache__/__init__.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/__pycache__/__main__.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/__pycache__/config.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/__pycache__/entities.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/__pycache__/errors.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/cli/__init__.py +27 -0
- package/codex-lens/src/codexlens/cli/__pycache__/__init__.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/cli/__pycache__/commands.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/cli/__pycache__/embedding_manager.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/cli/__pycache__/model_manager.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/cli/__pycache__/output.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/cli/commands.py +1931 -0
- package/codex-lens/src/codexlens/cli/embedding_manager.py +620 -0
- package/codex-lens/src/codexlens/cli/model_manager.py +289 -0
- package/codex-lens/src/codexlens/cli/output.py +124 -0
- package/codex-lens/src/codexlens/config.py +201 -0
- package/codex-lens/src/codexlens/entities.py +121 -0
- package/codex-lens/src/codexlens/errors.py +55 -0
- package/codex-lens/src/codexlens/indexing/README.md +77 -0
- package/codex-lens/src/codexlens/indexing/__init__.py +4 -0
- package/codex-lens/src/codexlens/indexing/__pycache__/__init__.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/indexing/__pycache__/symbol_extractor.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/indexing/symbol_extractor.py +243 -0
- package/codex-lens/src/codexlens/parsers/__init__.py +8 -0
- package/codex-lens/src/codexlens/parsers/__pycache__/__init__.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/parsers/__pycache__/encoding.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/parsers/__pycache__/factory.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/parsers/__pycache__/tokenizer.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/parsers/__pycache__/treesitter_parser.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/parsers/encoding.py +202 -0
- package/codex-lens/src/codexlens/parsers/factory.py +256 -0
- package/codex-lens/src/codexlens/parsers/tokenizer.py +98 -0
- package/codex-lens/src/codexlens/parsers/treesitter_parser.py +335 -0
- package/codex-lens/src/codexlens/search/__init__.py +15 -0
- package/codex-lens/src/codexlens/search/__pycache__/__init__.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/search/__pycache__/chain_search.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/search/__pycache__/enrichment.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/search/__pycache__/hybrid_search.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/search/__pycache__/query_parser.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/search/__pycache__/ranking.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/search/chain_search.py +647 -0
- package/codex-lens/src/codexlens/search/enrichment.py +150 -0
- package/codex-lens/src/codexlens/search/hybrid_search.py +313 -0
- package/codex-lens/src/codexlens/search/query_parser.py +242 -0
- package/codex-lens/src/codexlens/search/ranking.py +274 -0
- package/codex-lens/src/codexlens/semantic/__init__.py +39 -0
- package/codex-lens/src/codexlens/semantic/__pycache__/__init__.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/semantic/__pycache__/ann_index.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/semantic/__pycache__/chunker.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/semantic/__pycache__/code_extractor.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/semantic/__pycache__/embedder.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/semantic/__pycache__/graph_analyzer.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/semantic/__pycache__/llm_enhancer.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/semantic/__pycache__/vector_store.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/semantic/ann_index.py +414 -0
- package/codex-lens/src/codexlens/semantic/chunker.py +448 -0
- package/codex-lens/src/codexlens/semantic/code_extractor.py +274 -0
- package/codex-lens/src/codexlens/semantic/embedder.py +185 -0
- package/codex-lens/src/codexlens/semantic/vector_store.py +955 -0
- package/codex-lens/src/codexlens/storage/__init__.py +29 -0
- package/codex-lens/src/codexlens/storage/__pycache__/__init__.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/storage/__pycache__/dir_index.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/storage/__pycache__/file_cache.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/storage/__pycache__/index_tree.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/storage/__pycache__/migration_manager.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/storage/__pycache__/path_mapper.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/storage/__pycache__/registry.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/storage/__pycache__/sqlite_store.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/storage/__pycache__/sqlite_utils.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/storage/dir_index.py +1850 -0
- package/codex-lens/src/codexlens/storage/file_cache.py +32 -0
- package/codex-lens/src/codexlens/storage/index_tree.py +776 -0
- package/codex-lens/src/codexlens/storage/migration_manager.py +154 -0
- package/codex-lens/src/codexlens/storage/migrations/__init__.py +1 -0
- package/codex-lens/src/codexlens/storage/migrations/__pycache__/__init__.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/storage/migrations/__pycache__/migration_001_normalize_keywords.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/storage/migrations/__pycache__/migration_002_add_token_metadata.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/storage/migrations/__pycache__/migration_003_code_relationships.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/storage/migrations/__pycache__/migration_004_dual_fts.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/storage/migrations/__pycache__/migration_005_cleanup_unused_fields.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/storage/migrations/migration_001_normalize_keywords.py +123 -0
- package/codex-lens/src/codexlens/storage/migrations/migration_002_add_token_metadata.py +48 -0
- package/codex-lens/src/codexlens/storage/migrations/migration_004_dual_fts.py +232 -0
- package/codex-lens/src/codexlens/storage/migrations/migration_005_cleanup_unused_fields.py +196 -0
- package/codex-lens/src/codexlens/storage/path_mapper.py +274 -0
- package/codex-lens/src/codexlens/storage/registry.py +670 -0
- package/codex-lens/src/codexlens/storage/sqlite_store.py +576 -0
- package/codex-lens/src/codexlens/storage/sqlite_utils.py +64 -0
- package/package.json +4 -1
- package/.claude/commands/memory/tech-research.md +0 -477
- package/.claude/scripts/classify-folders.sh +0 -39
- package/.claude/scripts/convert_tokens_to_css.sh +0 -229
- package/.claude/scripts/detect_changed_modules.sh +0 -161
- package/.claude/scripts/discover-design-files.sh +0 -87
- package/.claude/scripts/extract-animations.js +0 -243
- package/.claude/scripts/extract-computed-styles.js +0 -118
- package/.claude/scripts/extract-layout-structure.js +0 -411
- package/.claude/scripts/generate_module_docs.sh +0 -717
- package/.claude/scripts/get_modules_by_depth.sh +0 -170
- package/.claude/scripts/ui-generate-preview.sh +0 -395
- package/.claude/scripts/ui-instantiate-prototypes.sh +0 -815
- package/.claude/scripts/update_module_claude.sh +0 -337
- package/.claude/workflows/context-search-strategy.md +0 -77
- package/.claude/workflows/intelligent-tools-strategy.md +0 -662
- package/ccw/src/cli.js +0 -119
- package/ccw/src/commands/install.js +0 -324
- package/ccw/src/commands/tool.js +0 -138
- package/ccw/src/core/data-aggregator.js +0 -409
- package/ccw/src/core/server.js +0 -2063
- package/ccw/src/core/session-scanner.js +0 -235
- package/ccw/src/tools/classify-folders.js +0 -204
- package/ccw/src/tools/detect-changed-modules.js +0 -288
- package/ccw/src/tools/edit-file.js +0 -266
- package/ccw/src/tools/index.js +0 -176
- package/ccw/src/utils/file-utils.js +0 -48
package/ccw/src/cli.js
DELETED
|
@@ -1,119 +0,0 @@
|
|
|
1
|
-
import { Command } from 'commander';
|
|
2
|
-
import { viewCommand } from './commands/view.js';
|
|
3
|
-
import { serveCommand } from './commands/serve.js';
|
|
4
|
-
import { stopCommand } from './commands/stop.js';
|
|
5
|
-
import { installCommand } from './commands/install.js';
|
|
6
|
-
import { uninstallCommand } from './commands/uninstall.js';
|
|
7
|
-
import { upgradeCommand } from './commands/upgrade.js';
|
|
8
|
-
import { listCommand } from './commands/list.js';
|
|
9
|
-
import { toolCommand } from './commands/tool.js';
|
|
10
|
-
import { readFileSync, existsSync } from 'fs';
|
|
11
|
-
import { fileURLToPath } from 'url';
|
|
12
|
-
import { dirname, join } from 'path';
|
|
13
|
-
|
|
14
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
15
|
-
const __dirname = dirname(__filename);
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* Load package.json with error handling
|
|
19
|
-
* @returns {Object} - Package info with version
|
|
20
|
-
*/
|
|
21
|
-
function loadPackageInfo() {
|
|
22
|
-
const pkgPath = join(__dirname, '../package.json');
|
|
23
|
-
|
|
24
|
-
try {
|
|
25
|
-
if (!existsSync(pkgPath)) {
|
|
26
|
-
console.error('Fatal Error: package.json not found.');
|
|
27
|
-
console.error(`Expected location: ${pkgPath}`);
|
|
28
|
-
process.exit(1);
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
const content = readFileSync(pkgPath, 'utf8');
|
|
32
|
-
return JSON.parse(content);
|
|
33
|
-
} catch (error) {
|
|
34
|
-
if (error instanceof SyntaxError) {
|
|
35
|
-
console.error('Fatal Error: package.json contains invalid JSON.');
|
|
36
|
-
console.error(`Parse error: ${error.message}`);
|
|
37
|
-
} else {
|
|
38
|
-
console.error('Fatal Error: Could not read package.json.');
|
|
39
|
-
console.error(`Error: ${error.message}`);
|
|
40
|
-
}
|
|
41
|
-
process.exit(1);
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
const pkg = loadPackageInfo();
|
|
46
|
-
|
|
47
|
-
export function run(argv) {
|
|
48
|
-
const program = new Command();
|
|
49
|
-
|
|
50
|
-
program
|
|
51
|
-
.name('ccw')
|
|
52
|
-
.description('Claude Code Workflow CLI - Dashboard and workflow tools')
|
|
53
|
-
.version(pkg.version);
|
|
54
|
-
|
|
55
|
-
// View command (server mode with live path switching)
|
|
56
|
-
program
|
|
57
|
-
.command('view')
|
|
58
|
-
.description('Open workflow dashboard server with live path switching')
|
|
59
|
-
.option('-p, --path <path>', 'Path to project directory', '.')
|
|
60
|
-
.option('--port <port>', 'Server port', '3456')
|
|
61
|
-
.option('--no-browser', 'Start server without opening browser')
|
|
62
|
-
.action(viewCommand);
|
|
63
|
-
|
|
64
|
-
// Serve command (alias for view)
|
|
65
|
-
program
|
|
66
|
-
.command('serve')
|
|
67
|
-
.description('Alias for view command')
|
|
68
|
-
.option('-p, --path <path>', 'Initial project directory')
|
|
69
|
-
.option('--port <port>', 'Server port', '3456')
|
|
70
|
-
.option('--no-browser', 'Start server without opening browser')
|
|
71
|
-
.action(serveCommand);
|
|
72
|
-
|
|
73
|
-
// Stop command
|
|
74
|
-
program
|
|
75
|
-
.command('stop')
|
|
76
|
-
.description('Stop the running CCW dashboard server')
|
|
77
|
-
.option('--port <port>', 'Server port', '3456')
|
|
78
|
-
.option('-f, --force', 'Force kill process on the port')
|
|
79
|
-
.action(stopCommand);
|
|
80
|
-
|
|
81
|
-
// Install command
|
|
82
|
-
program
|
|
83
|
-
.command('install')
|
|
84
|
-
.description('Install Claude Code Workflow to your system')
|
|
85
|
-
.option('-m, --mode <mode>', 'Installation mode: Global or Path')
|
|
86
|
-
.option('-p, --path <path>', 'Installation path (for Path mode)')
|
|
87
|
-
.option('-f, --force', 'Force installation without prompts')
|
|
88
|
-
.action(installCommand);
|
|
89
|
-
|
|
90
|
-
// Uninstall command
|
|
91
|
-
program
|
|
92
|
-
.command('uninstall')
|
|
93
|
-
.description('Uninstall Claude Code Workflow')
|
|
94
|
-
.action(uninstallCommand);
|
|
95
|
-
|
|
96
|
-
// Upgrade command
|
|
97
|
-
program
|
|
98
|
-
.command('upgrade')
|
|
99
|
-
.description('Upgrade Claude Code Workflow installations')
|
|
100
|
-
.option('-a, --all', 'Upgrade all installations without prompting')
|
|
101
|
-
.action(upgradeCommand);
|
|
102
|
-
|
|
103
|
-
// List command
|
|
104
|
-
program
|
|
105
|
-
.command('list')
|
|
106
|
-
.description('List all installed Claude Code Workflow instances')
|
|
107
|
-
.action(listCommand);
|
|
108
|
-
|
|
109
|
-
// Tool command
|
|
110
|
-
program
|
|
111
|
-
.command('tool [subcommand] [args]')
|
|
112
|
-
.description('Execute CCW tools')
|
|
113
|
-
.option('--path <path>', 'File path (for edit_file)')
|
|
114
|
-
.option('--old <text>', 'Old text to replace (for edit_file)')
|
|
115
|
-
.option('--new <text>', 'New text (for edit_file)')
|
|
116
|
-
.action((subcommand, args, options) => toolCommand(subcommand, args, options));
|
|
117
|
-
|
|
118
|
-
program.parse(argv);
|
|
119
|
-
}
|
|
@@ -1,324 +0,0 @@
|
|
|
1
|
-
import { existsSync, mkdirSync, readdirSync, statSync, copyFileSync, readFileSync, writeFileSync } from 'fs';
|
|
2
|
-
import { join, dirname, basename } from 'path';
|
|
3
|
-
import { homedir } from 'os';
|
|
4
|
-
import { fileURLToPath } from 'url';
|
|
5
|
-
import inquirer from 'inquirer';
|
|
6
|
-
import chalk from 'chalk';
|
|
7
|
-
import { showHeader, createSpinner, info, warning, error, summaryBox, divider } from '../utils/ui.js';
|
|
8
|
-
import { createManifest, addFileEntry, addDirectoryEntry, saveManifest, findManifest, getAllManifests } from '../core/manifest.js';
|
|
9
|
-
import { validatePath } from '../utils/path-resolver.js';
|
|
10
|
-
|
|
11
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
12
|
-
const __dirname = dirname(__filename);
|
|
13
|
-
|
|
14
|
-
// Source directories to install
|
|
15
|
-
const SOURCE_DIRS = ['.claude', '.codex', '.gemini', '.qwen'];
|
|
16
|
-
|
|
17
|
-
// Get package root directory (ccw/src/commands -> ccw)
|
|
18
|
-
function getPackageRoot() {
|
|
19
|
-
return join(__dirname, '..', '..');
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
// Get source installation directory (parent of ccw)
|
|
23
|
-
function getSourceDir() {
|
|
24
|
-
return join(getPackageRoot(), '..');
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* Install command handler
|
|
29
|
-
* @param {Object} options - Command options
|
|
30
|
-
*/
|
|
31
|
-
export async function installCommand(options) {
|
|
32
|
-
const version = getVersion();
|
|
33
|
-
|
|
34
|
-
// Show beautiful header
|
|
35
|
-
showHeader(version);
|
|
36
|
-
|
|
37
|
-
// Check for existing installations
|
|
38
|
-
const existingManifests = getAllManifests();
|
|
39
|
-
if (existingManifests.length > 0 && !options.force) {
|
|
40
|
-
info('Existing installations detected:');
|
|
41
|
-
console.log('');
|
|
42
|
-
existingManifests.forEach((m, i) => {
|
|
43
|
-
console.log(chalk.gray(` ${i + 1}. ${m.installation_mode} - ${m.installation_path}`));
|
|
44
|
-
console.log(chalk.gray(` Installed: ${new Date(m.installation_date).toLocaleDateString()}`));
|
|
45
|
-
});
|
|
46
|
-
console.log('');
|
|
47
|
-
|
|
48
|
-
const { proceed } = await inquirer.prompt([{
|
|
49
|
-
type: 'confirm',
|
|
50
|
-
name: 'proceed',
|
|
51
|
-
message: 'Continue with new installation?',
|
|
52
|
-
default: true
|
|
53
|
-
}]);
|
|
54
|
-
|
|
55
|
-
if (!proceed) {
|
|
56
|
-
info('Installation cancelled');
|
|
57
|
-
return;
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
// Local installation from package source
|
|
62
|
-
const sourceDir = getSourceDir();
|
|
63
|
-
|
|
64
|
-
// Interactive mode selection
|
|
65
|
-
const mode = options.mode || await selectMode();
|
|
66
|
-
|
|
67
|
-
let installPath;
|
|
68
|
-
if (mode === 'Global') {
|
|
69
|
-
installPath = homedir();
|
|
70
|
-
info(`Global installation to: ${installPath}`);
|
|
71
|
-
} else {
|
|
72
|
-
const inputPath = options.path || await selectPath();
|
|
73
|
-
|
|
74
|
-
// Validate the installation path
|
|
75
|
-
const pathValidation = validatePath(inputPath, { mustExist: true });
|
|
76
|
-
if (!pathValidation.valid) {
|
|
77
|
-
error(`Invalid installation path: ${pathValidation.error}`);
|
|
78
|
-
process.exit(1);
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
installPath = pathValidation.path;
|
|
82
|
-
info(`Path installation to: ${installPath}`);
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
// Validate source directories exist
|
|
86
|
-
const availableDirs = SOURCE_DIRS.filter(dir => existsSync(join(sourceDir, dir)));
|
|
87
|
-
|
|
88
|
-
if (availableDirs.length === 0) {
|
|
89
|
-
error('No source directories found to install.');
|
|
90
|
-
error(`Expected directories in: ${sourceDir}`);
|
|
91
|
-
process.exit(1);
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
console.log('');
|
|
95
|
-
info(`Found ${availableDirs.length} directories to install: ${availableDirs.join(', ')}`);
|
|
96
|
-
divider();
|
|
97
|
-
|
|
98
|
-
// Check for existing installation at target path
|
|
99
|
-
const existingManifest = findManifest(installPath, mode);
|
|
100
|
-
if (existingManifest) {
|
|
101
|
-
warning('Existing installation found at this location');
|
|
102
|
-
const { backup } = await inquirer.prompt([{
|
|
103
|
-
type: 'confirm',
|
|
104
|
-
name: 'backup',
|
|
105
|
-
message: 'Create backup before reinstalling?',
|
|
106
|
-
default: true
|
|
107
|
-
}]);
|
|
108
|
-
|
|
109
|
-
if (backup) {
|
|
110
|
-
await createBackup(installPath, existingManifest);
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
// Create manifest
|
|
115
|
-
const manifest = createManifest(mode, installPath);
|
|
116
|
-
|
|
117
|
-
// Perform installation
|
|
118
|
-
console.log('');
|
|
119
|
-
const spinner = createSpinner('Installing files...').start();
|
|
120
|
-
|
|
121
|
-
let totalFiles = 0;
|
|
122
|
-
let totalDirs = 0;
|
|
123
|
-
|
|
124
|
-
try {
|
|
125
|
-
for (const dir of availableDirs) {
|
|
126
|
-
const srcPath = join(sourceDir, dir);
|
|
127
|
-
const destPath = join(installPath, dir);
|
|
128
|
-
|
|
129
|
-
spinner.text = `Installing ${dir}...`;
|
|
130
|
-
|
|
131
|
-
const { files, directories } = await copyDirectory(srcPath, destPath, manifest);
|
|
132
|
-
totalFiles += files;
|
|
133
|
-
totalDirs += directories;
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
// Copy CLAUDE.md to .claude directory
|
|
137
|
-
const claudeMdSrc = join(sourceDir, 'CLAUDE.md');
|
|
138
|
-
const claudeMdDest = join(installPath, '.claude', 'CLAUDE.md');
|
|
139
|
-
if (existsSync(claudeMdSrc) && existsSync(dirname(claudeMdDest))) {
|
|
140
|
-
spinner.text = 'Installing CLAUDE.md...';
|
|
141
|
-
copyFileSync(claudeMdSrc, claudeMdDest);
|
|
142
|
-
addFileEntry(manifest, claudeMdDest);
|
|
143
|
-
totalFiles++;
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
// Create version.json
|
|
147
|
-
const versionPath = join(installPath, '.claude', 'version.json');
|
|
148
|
-
if (existsSync(dirname(versionPath))) {
|
|
149
|
-
const versionData = {
|
|
150
|
-
version: version,
|
|
151
|
-
installedAt: new Date().toISOString(),
|
|
152
|
-
mode: mode,
|
|
153
|
-
installer: 'ccw'
|
|
154
|
-
};
|
|
155
|
-
writeFileSync(versionPath, JSON.stringify(versionData, null, 2), 'utf8');
|
|
156
|
-
addFileEntry(manifest, versionPath);
|
|
157
|
-
totalFiles++;
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
spinner.succeed('Installation complete!');
|
|
161
|
-
|
|
162
|
-
} catch (err) {
|
|
163
|
-
spinner.fail('Installation failed');
|
|
164
|
-
error(err.message);
|
|
165
|
-
process.exit(1);
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
// Save manifest
|
|
169
|
-
const manifestPath = saveManifest(manifest);
|
|
170
|
-
|
|
171
|
-
// Show summary
|
|
172
|
-
console.log('');
|
|
173
|
-
const summaryLines = [
|
|
174
|
-
chalk.green.bold('✓ Installation Successful'),
|
|
175
|
-
'',
|
|
176
|
-
chalk.white(`Mode: ${chalk.cyan(mode)}`),
|
|
177
|
-
chalk.white(`Path: ${chalk.cyan(installPath)}`),
|
|
178
|
-
chalk.white(`Version: ${chalk.cyan(version)}`),
|
|
179
|
-
'',
|
|
180
|
-
chalk.gray(`Files installed: ${totalFiles}`),
|
|
181
|
-
chalk.gray(`Directories created: ${totalDirs}`),
|
|
182
|
-
'',
|
|
183
|
-
chalk.gray(`Manifest: ${basename(manifestPath)}`)
|
|
184
|
-
];
|
|
185
|
-
|
|
186
|
-
summaryBox({
|
|
187
|
-
title: ' Installation Summary ',
|
|
188
|
-
lines: summaryLines,
|
|
189
|
-
borderColor: 'green'
|
|
190
|
-
});
|
|
191
|
-
|
|
192
|
-
// Show next steps
|
|
193
|
-
console.log('');
|
|
194
|
-
info('Next steps:');
|
|
195
|
-
console.log(chalk.gray(' 1. Restart Claude Code or your IDE'));
|
|
196
|
-
console.log(chalk.gray(' 2. Run: ccw view - to open the workflow dashboard'));
|
|
197
|
-
console.log(chalk.gray(' 3. Run: ccw uninstall - to remove this installation'));
|
|
198
|
-
console.log('');
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
/**
|
|
202
|
-
* Interactive mode selection
|
|
203
|
-
* @returns {Promise<string>} - Selected mode
|
|
204
|
-
*/
|
|
205
|
-
async function selectMode() {
|
|
206
|
-
const { mode } = await inquirer.prompt([{
|
|
207
|
-
type: 'list',
|
|
208
|
-
name: 'mode',
|
|
209
|
-
message: 'Select installation mode:',
|
|
210
|
-
choices: [
|
|
211
|
-
{
|
|
212
|
-
name: `${chalk.cyan('Global')} - Install to home directory (recommended)`,
|
|
213
|
-
value: 'Global'
|
|
214
|
-
},
|
|
215
|
-
{
|
|
216
|
-
name: `${chalk.yellow('Path')} - Install to specific project path`,
|
|
217
|
-
value: 'Path'
|
|
218
|
-
}
|
|
219
|
-
]
|
|
220
|
-
}]);
|
|
221
|
-
|
|
222
|
-
return mode;
|
|
223
|
-
}
|
|
224
|
-
|
|
225
|
-
/**
|
|
226
|
-
* Interactive path selection
|
|
227
|
-
* @returns {Promise<string>} - Selected path
|
|
228
|
-
*/
|
|
229
|
-
async function selectPath() {
|
|
230
|
-
const { path } = await inquirer.prompt([{
|
|
231
|
-
type: 'input',
|
|
232
|
-
name: 'path',
|
|
233
|
-
message: 'Enter installation path:',
|
|
234
|
-
default: process.cwd(),
|
|
235
|
-
validate: (input) => {
|
|
236
|
-
if (!input) return 'Path is required';
|
|
237
|
-
if (!existsSync(input)) {
|
|
238
|
-
return `Path does not exist: ${input}`;
|
|
239
|
-
}
|
|
240
|
-
return true;
|
|
241
|
-
}
|
|
242
|
-
}]);
|
|
243
|
-
|
|
244
|
-
return path;
|
|
245
|
-
}
|
|
246
|
-
|
|
247
|
-
/**
|
|
248
|
-
* Create backup of existing installation
|
|
249
|
-
* @param {string} installPath - Installation path
|
|
250
|
-
* @param {Object} manifest - Existing manifest
|
|
251
|
-
*/
|
|
252
|
-
async function createBackup(installPath, manifest) {
|
|
253
|
-
const spinner = createSpinner('Creating backup...').start();
|
|
254
|
-
|
|
255
|
-
try {
|
|
256
|
-
const timestamp = new Date().toISOString().replace(/[-:]/g, '').replace('T', '-').split('.')[0];
|
|
257
|
-
const backupDir = join(installPath, `.claude-backup-${timestamp}`);
|
|
258
|
-
|
|
259
|
-
mkdirSync(backupDir, { recursive: true });
|
|
260
|
-
|
|
261
|
-
// Copy existing .claude directory
|
|
262
|
-
const claudeDir = join(installPath, '.claude');
|
|
263
|
-
if (existsSync(claudeDir)) {
|
|
264
|
-
await copyDirectory(claudeDir, join(backupDir, '.claude'));
|
|
265
|
-
}
|
|
266
|
-
|
|
267
|
-
spinner.succeed(`Backup created: ${backupDir}`);
|
|
268
|
-
} catch (err) {
|
|
269
|
-
spinner.warn(`Backup failed: ${err.message}`);
|
|
270
|
-
}
|
|
271
|
-
}
|
|
272
|
-
|
|
273
|
-
/**
|
|
274
|
-
* Copy directory recursively
|
|
275
|
-
* @param {string} src - Source directory
|
|
276
|
-
* @param {string} dest - Destination directory
|
|
277
|
-
* @param {Object} manifest - Manifest to track files (optional)
|
|
278
|
-
* @returns {Object} - Count of files and directories
|
|
279
|
-
*/
|
|
280
|
-
async function copyDirectory(src, dest, manifest = null) {
|
|
281
|
-
let files = 0;
|
|
282
|
-
let directories = 0;
|
|
283
|
-
|
|
284
|
-
// Create destination directory
|
|
285
|
-
if (!existsSync(dest)) {
|
|
286
|
-
mkdirSync(dest, { recursive: true });
|
|
287
|
-
directories++;
|
|
288
|
-
if (manifest) addDirectoryEntry(manifest, dest);
|
|
289
|
-
}
|
|
290
|
-
|
|
291
|
-
const entries = readdirSync(src);
|
|
292
|
-
|
|
293
|
-
for (const entry of entries) {
|
|
294
|
-
const srcPath = join(src, entry);
|
|
295
|
-
const destPath = join(dest, entry);
|
|
296
|
-
const stat = statSync(srcPath);
|
|
297
|
-
|
|
298
|
-
if (stat.isDirectory()) {
|
|
299
|
-
const result = await copyDirectory(srcPath, destPath, manifest);
|
|
300
|
-
files += result.files;
|
|
301
|
-
directories += result.directories;
|
|
302
|
-
} else {
|
|
303
|
-
copyFileSync(srcPath, destPath);
|
|
304
|
-
files++;
|
|
305
|
-
if (manifest) addFileEntry(manifest, destPath);
|
|
306
|
-
}
|
|
307
|
-
}
|
|
308
|
-
|
|
309
|
-
return { files, directories };
|
|
310
|
-
}
|
|
311
|
-
|
|
312
|
-
/**
|
|
313
|
-
* Get package version
|
|
314
|
-
* @returns {string} - Version string
|
|
315
|
-
*/
|
|
316
|
-
function getVersion() {
|
|
317
|
-
try {
|
|
318
|
-
const pkgPath = join(getPackageRoot(), 'package.json');
|
|
319
|
-
const pkg = JSON.parse(readFileSync(pkgPath, 'utf8'));
|
|
320
|
-
return pkg.version || '1.0.0';
|
|
321
|
-
} catch {
|
|
322
|
-
return '1.0.0';
|
|
323
|
-
}
|
|
324
|
-
}
|
package/ccw/src/commands/tool.js
DELETED
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Tool Command - Execute and manage CCW tools
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
import chalk from 'chalk';
|
|
6
|
-
import { listTools, executeTool, getTool, getAllToolSchemas } from '../tools/index.js';
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* List all available tools
|
|
10
|
-
*/
|
|
11
|
-
async function listAction() {
|
|
12
|
-
const tools = listTools();
|
|
13
|
-
|
|
14
|
-
if (tools.length === 0) {
|
|
15
|
-
console.log(chalk.yellow('No tools registered'));
|
|
16
|
-
return;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
console.log(chalk.bold.cyan('\nAvailable Tools:\n'));
|
|
20
|
-
|
|
21
|
-
for (const tool of tools) {
|
|
22
|
-
console.log(chalk.bold.white(` ${tool.name}`));
|
|
23
|
-
console.log(chalk.gray(` ${tool.description}`));
|
|
24
|
-
|
|
25
|
-
if (tool.parameters?.properties) {
|
|
26
|
-
const props = tool.parameters.properties;
|
|
27
|
-
const required = tool.parameters.required || [];
|
|
28
|
-
|
|
29
|
-
console.log(chalk.gray(' Parameters:'));
|
|
30
|
-
for (const [name, schema] of Object.entries(props)) {
|
|
31
|
-
const req = required.includes(name) ? chalk.red('*') : '';
|
|
32
|
-
const defaultVal = schema.default !== undefined ? chalk.gray(` (default: ${schema.default})`) : '';
|
|
33
|
-
console.log(chalk.gray(` - ${name}${req}: ${schema.description}${defaultVal}`));
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
console.log();
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* Show tool schema in MCP-compatible JSON format
|
|
42
|
-
*/
|
|
43
|
-
async function schemaAction(options) {
|
|
44
|
-
const { name } = options;
|
|
45
|
-
|
|
46
|
-
if (name) {
|
|
47
|
-
const tool = getTool(name);
|
|
48
|
-
if (!tool) {
|
|
49
|
-
console.error(chalk.red(`Tool not found: ${name}`));
|
|
50
|
-
process.exit(1);
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
const schema = {
|
|
54
|
-
name: tool.name,
|
|
55
|
-
description: tool.description,
|
|
56
|
-
inputSchema: {
|
|
57
|
-
type: 'object',
|
|
58
|
-
properties: tool.parameters?.properties || {},
|
|
59
|
-
required: tool.parameters?.required || []
|
|
60
|
-
}
|
|
61
|
-
};
|
|
62
|
-
console.log(JSON.stringify(schema, null, 2));
|
|
63
|
-
} else {
|
|
64
|
-
const schemas = getAllToolSchemas();
|
|
65
|
-
console.log(JSON.stringify({ tools: schemas }, null, 2));
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
/**
|
|
70
|
-
* Execute a tool with given parameters
|
|
71
|
-
*/
|
|
72
|
-
async function execAction(toolName, options) {
|
|
73
|
-
if (!toolName) {
|
|
74
|
-
console.error(chalk.red('Tool name is required'));
|
|
75
|
-
console.error(chalk.gray('Usage: ccw tool exec edit_file --path file.txt --old "old" --new "new"'));
|
|
76
|
-
process.exit(1);
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
const tool = getTool(toolName);
|
|
80
|
-
if (!tool) {
|
|
81
|
-
console.error(chalk.red(`Tool not found: ${toolName}`));
|
|
82
|
-
console.error(chalk.gray('Use "ccw tool list" to see available tools'));
|
|
83
|
-
process.exit(1);
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
// Build params from CLI options
|
|
87
|
-
const params = {};
|
|
88
|
-
|
|
89
|
-
if (toolName === 'edit_file') {
|
|
90
|
-
if (!options.path || !options.old || !options.new) {
|
|
91
|
-
console.error(chalk.red('edit_file requires --path, --old, and --new parameters'));
|
|
92
|
-
console.error(chalk.gray('Usage: ccw tool exec edit_file --path file.txt --old "old text" --new "new text"'));
|
|
93
|
-
process.exit(1);
|
|
94
|
-
}
|
|
95
|
-
params.path = options.path;
|
|
96
|
-
params.oldText = options.old;
|
|
97
|
-
params.newText = options.new;
|
|
98
|
-
} else {
|
|
99
|
-
console.error(chalk.red(`Tool "${toolName}" is not supported via CLI parameters`));
|
|
100
|
-
console.error(chalk.gray('Currently only edit_file is supported'));
|
|
101
|
-
process.exit(1);
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
// Execute tool
|
|
105
|
-
const result = await executeTool(toolName, params);
|
|
106
|
-
|
|
107
|
-
// Always output JSON
|
|
108
|
-
console.log(JSON.stringify(result, null, 2));
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
/**
|
|
112
|
-
* Tool command entry point
|
|
113
|
-
*/
|
|
114
|
-
export async function toolCommand(subcommand, args, options) {
|
|
115
|
-
// Handle subcommands
|
|
116
|
-
switch (subcommand) {
|
|
117
|
-
case 'list':
|
|
118
|
-
await listAction();
|
|
119
|
-
break;
|
|
120
|
-
case 'schema':
|
|
121
|
-
await schemaAction({ name: args });
|
|
122
|
-
break;
|
|
123
|
-
case 'exec':
|
|
124
|
-
await execAction(args, options);
|
|
125
|
-
break;
|
|
126
|
-
default:
|
|
127
|
-
console.log(chalk.bold.cyan('\nCCW Tool System\n'));
|
|
128
|
-
console.log('Subcommands:');
|
|
129
|
-
console.log(chalk.gray(' list List all available tools'));
|
|
130
|
-
console.log(chalk.gray(' schema [name] Show tool schema (JSON)'));
|
|
131
|
-
console.log(chalk.gray(' exec <name> Execute a tool'));
|
|
132
|
-
console.log();
|
|
133
|
-
console.log('Usage:');
|
|
134
|
-
console.log(chalk.gray(' ccw tool list'));
|
|
135
|
-
console.log(chalk.gray(' ccw tool schema edit_file'));
|
|
136
|
-
console.log(chalk.gray(' ccw tool exec edit_file --path file.txt --old "old text" --new "new text"'));
|
|
137
|
-
}
|
|
138
|
-
}
|