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
|
@@ -3,10 +3,13 @@
|
|
|
3
3
|
* Generate documentation for modules and projects with multiple strategies
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
+
import { z } from 'zod';
|
|
7
|
+
import type { ToolSchema, ToolResult } from '../types/tool.js';
|
|
6
8
|
import { readdirSync, statSync, existsSync, readFileSync, mkdirSync, writeFileSync, unlinkSync } from 'fs';
|
|
7
9
|
import { join, resolve, basename, extname, relative } from 'path';
|
|
8
10
|
import { execSync } from 'child_process';
|
|
9
11
|
import { tmpdir } from 'os';
|
|
12
|
+
import { getSecondaryModel } from './cli-config-manager.js';
|
|
10
13
|
|
|
11
14
|
// Directories to exclude
|
|
12
15
|
const EXCLUDE_DIRS = [
|
|
@@ -21,7 +24,7 @@ const CODE_EXTENSIONS = [
|
|
|
21
24
|
];
|
|
22
25
|
|
|
23
26
|
// Default models for each tool
|
|
24
|
-
const DEFAULT_MODELS = {
|
|
27
|
+
const DEFAULT_MODELS: Record<string, string> = {
|
|
25
28
|
gemini: 'gemini-2.5-flash',
|
|
26
29
|
qwen: 'coder-model',
|
|
27
30
|
codex: 'gpt5-codex'
|
|
@@ -30,10 +33,35 @@ const DEFAULT_MODELS = {
|
|
|
30
33
|
// Template paths (relative to user home directory)
|
|
31
34
|
const TEMPLATE_BASE = '.claude/workflows/cli-templates/prompts/documentation';
|
|
32
35
|
|
|
36
|
+
// Define Zod schema for validation
|
|
37
|
+
const ParamsSchema = z.object({
|
|
38
|
+
strategy: z.enum(['full', 'single', 'project-readme', 'project-architecture', 'http-api']),
|
|
39
|
+
sourcePath: z.string().min(1, 'Source path is required'),
|
|
40
|
+
projectName: z.string().min(1, 'Project name is required'),
|
|
41
|
+
tool: z.enum(['gemini', 'qwen', 'codex']).default('gemini'),
|
|
42
|
+
model: z.string().optional(),
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
type Params = z.infer<typeof ParamsSchema>;
|
|
46
|
+
|
|
47
|
+
interface ToolOutput {
|
|
48
|
+
success: boolean;
|
|
49
|
+
strategy: string;
|
|
50
|
+
source_path: string;
|
|
51
|
+
project_name: string;
|
|
52
|
+
output_path?: string;
|
|
53
|
+
folder_type?: 'code' | 'navigation';
|
|
54
|
+
tool: string;
|
|
55
|
+
model?: string;
|
|
56
|
+
duration_seconds?: number;
|
|
57
|
+
message?: string;
|
|
58
|
+
error?: string;
|
|
59
|
+
}
|
|
60
|
+
|
|
33
61
|
/**
|
|
34
62
|
* Detect folder type (code vs navigation)
|
|
35
63
|
*/
|
|
36
|
-
function detectFolderType(dirPath) {
|
|
64
|
+
function detectFolderType(dirPath: string): 'code' | 'navigation' {
|
|
37
65
|
try {
|
|
38
66
|
const entries = readdirSync(dirPath, { withFileTypes: true });
|
|
39
67
|
const codeFiles = entries.filter(e => {
|
|
@@ -47,22 +75,10 @@ function detectFolderType(dirPath) {
|
|
|
47
75
|
}
|
|
48
76
|
}
|
|
49
77
|
|
|
50
|
-
/**
|
|
51
|
-
* Count files in directory
|
|
52
|
-
*/
|
|
53
|
-
function countFiles(dirPath) {
|
|
54
|
-
try {
|
|
55
|
-
const entries = readdirSync(dirPath, { withFileTypes: true });
|
|
56
|
-
return entries.filter(e => e.isFile() && !e.name.startsWith('.')).length;
|
|
57
|
-
} catch (e) {
|
|
58
|
-
return 0;
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
|
|
62
78
|
/**
|
|
63
79
|
* Calculate output path
|
|
64
80
|
*/
|
|
65
|
-
function calculateOutputPath(sourcePath, projectName, projectRoot) {
|
|
81
|
+
function calculateOutputPath(sourcePath: string, projectName: string, projectRoot: string): string {
|
|
66
82
|
const absSource = resolve(sourcePath);
|
|
67
83
|
const normRoot = resolve(projectRoot);
|
|
68
84
|
let relPath = relative(normRoot, absSource);
|
|
@@ -74,16 +90,26 @@ function calculateOutputPath(sourcePath, projectName, projectRoot) {
|
|
|
74
90
|
/**
|
|
75
91
|
* Load template content
|
|
76
92
|
*/
|
|
77
|
-
function loadTemplate(templateName) {
|
|
93
|
+
function loadTemplate(templateName: string): string {
|
|
78
94
|
const homePath = process.env.HOME || process.env.USERPROFILE;
|
|
95
|
+
if (!homePath) {
|
|
96
|
+
return getDefaultTemplate(templateName);
|
|
97
|
+
}
|
|
98
|
+
|
|
79
99
|
const templatePath = join(homePath, TEMPLATE_BASE, `${templateName}.txt`);
|
|
80
100
|
|
|
81
101
|
if (existsSync(templatePath)) {
|
|
82
102
|
return readFileSync(templatePath, 'utf8');
|
|
83
103
|
}
|
|
84
104
|
|
|
85
|
-
|
|
86
|
-
|
|
105
|
+
return getDefaultTemplate(templateName);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* Get default template content
|
|
110
|
+
*/
|
|
111
|
+
function getDefaultTemplate(templateName: string): string {
|
|
112
|
+
const fallbacks: Record<string, string> = {
|
|
87
113
|
'api': 'Generate API documentation with function signatures, parameters, return values, and usage examples.',
|
|
88
114
|
'module-readme': 'Generate README documentation with purpose, usage, configuration, and examples.',
|
|
89
115
|
'folder-navigation': 'Generate navigation README with overview of subdirectories and their purposes.',
|
|
@@ -97,7 +123,7 @@ function loadTemplate(templateName) {
|
|
|
97
123
|
/**
|
|
98
124
|
* Create temporary prompt file and return path
|
|
99
125
|
*/
|
|
100
|
-
function createPromptFile(prompt) {
|
|
126
|
+
function createPromptFile(prompt: string): string {
|
|
101
127
|
const timestamp = Date.now();
|
|
102
128
|
const randomSuffix = Math.random().toString(36).substring(2, 8);
|
|
103
129
|
const promptFile = join(tmpdir(), `docs-prompt-${timestamp}-${randomSuffix}.txt`);
|
|
@@ -108,13 +134,13 @@ function createPromptFile(prompt) {
|
|
|
108
134
|
/**
|
|
109
135
|
* Build CLI command using stdin piping (avoids shell escaping issues)
|
|
110
136
|
*/
|
|
111
|
-
function buildCliCommand(tool, promptFile, model) {
|
|
137
|
+
function buildCliCommand(tool: string, promptFile: string, model: string): string {
|
|
112
138
|
const normalizedPath = promptFile.replace(/\\/g, '/');
|
|
113
139
|
const isWindows = process.platform === 'win32';
|
|
114
|
-
|
|
140
|
+
|
|
115
141
|
// Build the cat/read command based on platform
|
|
116
142
|
const catCmd = isWindows ? `Get-Content -Raw "${normalizedPath}" | ` : `cat "${normalizedPath}" | `;
|
|
117
|
-
|
|
143
|
+
|
|
118
144
|
switch (tool) {
|
|
119
145
|
case 'qwen':
|
|
120
146
|
return model === 'coder-model'
|
|
@@ -135,14 +161,17 @@ function buildCliCommand(tool, promptFile, model) {
|
|
|
135
161
|
/**
|
|
136
162
|
* Scan directory structure
|
|
137
163
|
*/
|
|
138
|
-
function scanDirectoryStructure(targetPath
|
|
139
|
-
|
|
164
|
+
function scanDirectoryStructure(targetPath: string): {
|
|
165
|
+
info: string;
|
|
166
|
+
folderType: 'code' | 'navigation';
|
|
167
|
+
} {
|
|
168
|
+
const lines: string[] = [];
|
|
140
169
|
const dirName = basename(targetPath);
|
|
141
170
|
|
|
142
171
|
let totalFiles = 0;
|
|
143
172
|
let totalDirs = 0;
|
|
144
173
|
|
|
145
|
-
function countRecursive(dir) {
|
|
174
|
+
function countRecursive(dir: string): void {
|
|
146
175
|
try {
|
|
147
176
|
const entries = readdirSync(dir, { withFileTypes: true });
|
|
148
177
|
entries.forEach(e => {
|
|
@@ -172,63 +201,101 @@ function scanDirectoryStructure(targetPath, strategy) {
|
|
|
172
201
|
};
|
|
173
202
|
}
|
|
174
203
|
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
const { strategy, sourcePath, projectName, tool = 'gemini', model } = params;
|
|
204
|
+
// Tool schema for MCP
|
|
205
|
+
export const schema: ToolSchema = {
|
|
206
|
+
name: 'generate_module_docs',
|
|
207
|
+
description: `Generate documentation for modules and projects.
|
|
180
208
|
|
|
181
|
-
|
|
182
|
-
|
|
209
|
+
Module-Level Strategies:
|
|
210
|
+
- full: Full documentation (API.md + README.md for all directories)
|
|
211
|
+
- single: Single-layer documentation (current directory only)
|
|
183
212
|
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
213
|
+
Project-Level Strategies:
|
|
214
|
+
- project-readme: Project overview from module docs
|
|
215
|
+
- project-architecture: System design documentation
|
|
216
|
+
- http-api: HTTP API documentation
|
|
187
217
|
|
|
188
|
-
|
|
189
|
-
|
|
218
|
+
Output: .workflow/docs/{projectName}/...`,
|
|
219
|
+
inputSchema: {
|
|
220
|
+
type: 'object',
|
|
221
|
+
properties: {
|
|
222
|
+
strategy: {
|
|
223
|
+
type: 'string',
|
|
224
|
+
enum: ['full', 'single', 'project-readme', 'project-architecture', 'http-api'],
|
|
225
|
+
description: 'Documentation strategy'
|
|
226
|
+
},
|
|
227
|
+
sourcePath: {
|
|
228
|
+
type: 'string',
|
|
229
|
+
description: 'Source module directory path'
|
|
230
|
+
},
|
|
231
|
+
projectName: {
|
|
232
|
+
type: 'string',
|
|
233
|
+
description: 'Project name for output path'
|
|
234
|
+
},
|
|
235
|
+
tool: {
|
|
236
|
+
type: 'string',
|
|
237
|
+
enum: ['gemini', 'qwen', 'codex'],
|
|
238
|
+
description: 'CLI tool to use (default: gemini)',
|
|
239
|
+
default: 'gemini'
|
|
240
|
+
},
|
|
241
|
+
model: {
|
|
242
|
+
type: 'string',
|
|
243
|
+
description: 'Model name (optional, uses tool defaults)'
|
|
244
|
+
}
|
|
245
|
+
},
|
|
246
|
+
required: ['strategy', 'sourcePath', 'projectName']
|
|
190
247
|
}
|
|
248
|
+
};
|
|
191
249
|
|
|
192
|
-
|
|
193
|
-
|
|
250
|
+
// Handler function
|
|
251
|
+
export async function handler(params: Record<string, unknown>): Promise<ToolResult<ToolOutput>> {
|
|
252
|
+
const parsed = ParamsSchema.safeParse(params);
|
|
253
|
+
if (!parsed.success) {
|
|
254
|
+
return { success: false, error: `Invalid params: ${parsed.error.message}` };
|
|
194
255
|
}
|
|
195
256
|
|
|
196
|
-
|
|
197
|
-
throw new Error('Parameter "projectName" is required');
|
|
198
|
-
}
|
|
257
|
+
const { strategy, sourcePath, projectName, tool, model } = parsed.data;
|
|
199
258
|
|
|
200
|
-
|
|
259
|
+
try {
|
|
260
|
+
const targetPath = resolve(process.cwd(), sourcePath);
|
|
201
261
|
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
262
|
+
if (!existsSync(targetPath)) {
|
|
263
|
+
return { success: false, error: `Directory not found: ${targetPath}` };
|
|
264
|
+
}
|
|
205
265
|
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
266
|
+
if (!statSync(targetPath).isDirectory()) {
|
|
267
|
+
return { success: false, error: `Not a directory: ${targetPath}` };
|
|
268
|
+
}
|
|
209
269
|
|
|
210
|
-
|
|
211
|
-
|
|
270
|
+
// Set model (use secondaryModel from config for internal calls)
|
|
271
|
+
let actualModel = model;
|
|
272
|
+
if (!actualModel) {
|
|
273
|
+
try {
|
|
274
|
+
actualModel = getSecondaryModel(process.cwd(), tool);
|
|
275
|
+
} catch {
|
|
276
|
+
actualModel = DEFAULT_MODELS[tool] || DEFAULT_MODELS.gemini;
|
|
277
|
+
}
|
|
278
|
+
}
|
|
212
279
|
|
|
213
|
-
|
|
214
|
-
|
|
280
|
+
// Scan directory
|
|
281
|
+
const { info: structureInfo, folderType } = scanDirectoryStructure(targetPath);
|
|
215
282
|
|
|
216
|
-
|
|
217
|
-
|
|
283
|
+
// Calculate output path
|
|
284
|
+
const outputPath = calculateOutputPath(targetPath, projectName, process.cwd());
|
|
218
285
|
|
|
219
|
-
|
|
220
|
-
|
|
286
|
+
// Ensure output directory exists
|
|
287
|
+
mkdirSync(outputPath, { recursive: true });
|
|
221
288
|
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
289
|
+
// Build prompt based on strategy
|
|
290
|
+
let prompt: string;
|
|
291
|
+
let templateContent: string;
|
|
225
292
|
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
293
|
+
switch (strategy) {
|
|
294
|
+
case 'full':
|
|
295
|
+
case 'single':
|
|
296
|
+
if (folderType === 'code') {
|
|
297
|
+
templateContent = loadTemplate('api');
|
|
298
|
+
prompt = `Directory Structure Analysis:
|
|
232
299
|
${structureInfo}
|
|
233
300
|
|
|
234
301
|
Read: ${strategy === 'full' ? '@**/*' : '@*.ts @*.tsx @*.js @*.jsx @*.py @*.sh @*.md @*.json'}
|
|
@@ -241,9 +308,9 @@ Output directory: ${outputPath}
|
|
|
241
308
|
|
|
242
309
|
Template Guidelines:
|
|
243
310
|
${templateContent}`;
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
311
|
+
} else {
|
|
312
|
+
templateContent = loadTemplate('folder-navigation');
|
|
313
|
+
prompt = `Directory Structure Analysis:
|
|
247
314
|
${structureInfo}
|
|
248
315
|
|
|
249
316
|
Read: @*/API.md @*/README.md
|
|
@@ -255,12 +322,12 @@ Output directory: ${outputPath}
|
|
|
255
322
|
|
|
256
323
|
Template Guidelines:
|
|
257
324
|
${templateContent}`;
|
|
258
|
-
|
|
259
|
-
|
|
325
|
+
}
|
|
326
|
+
break;
|
|
260
327
|
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
328
|
+
case 'project-readme':
|
|
329
|
+
templateContent = loadTemplate('project-readme');
|
|
330
|
+
prompt = `Read all module documentation:
|
|
264
331
|
@.workflow/docs/${projectName}/**/API.md
|
|
265
332
|
@.workflow/docs/${projectName}/**/README.md
|
|
266
333
|
|
|
@@ -269,11 +336,11 @@ Generate project-level documentation:
|
|
|
269
336
|
|
|
270
337
|
Template Guidelines:
|
|
271
338
|
${templateContent}`;
|
|
272
|
-
|
|
339
|
+
break;
|
|
273
340
|
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
341
|
+
case 'project-architecture':
|
|
342
|
+
templateContent = loadTemplate('project-architecture');
|
|
343
|
+
prompt = `Read project documentation:
|
|
277
344
|
@.workflow/docs/${projectName}/README.md
|
|
278
345
|
@.workflow/docs/${projectName}/**/API.md
|
|
279
346
|
|
|
@@ -285,10 +352,10 @@ Output directory: .workflow/docs/${projectName}/
|
|
|
285
352
|
|
|
286
353
|
Template Guidelines:
|
|
287
354
|
${templateContent}`;
|
|
288
|
-
|
|
355
|
+
break;
|
|
289
356
|
|
|
290
|
-
|
|
291
|
-
|
|
357
|
+
case 'http-api':
|
|
358
|
+
prompt = `Read API route files:
|
|
292
359
|
@**/routes/**/*.ts @**/routes/**/*.js
|
|
293
360
|
@**/api/**/*.ts @**/api/**/*.js
|
|
294
361
|
|
|
@@ -296,121 +363,76 @@ Generate HTTP API documentation:
|
|
|
296
363
|
- api/README.md: REST API endpoints documentation
|
|
297
364
|
|
|
298
365
|
Output directory: .workflow/docs/${projectName}/api/`;
|
|
299
|
-
|
|
300
|
-
|
|
366
|
+
break;
|
|
367
|
+
}
|
|
301
368
|
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
// Build command using file-based prompt
|
|
306
|
-
const command = buildCliCommand(tool, promptFile, actualModel);
|
|
369
|
+
// Create temporary prompt file (avoids shell escaping issues)
|
|
370
|
+
const promptFile = createPromptFile(prompt);
|
|
307
371
|
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
console.log(` Strategy: ${strategy} | Tool: ${tool} | Model: ${actualModel}`);
|
|
311
|
-
console.log(` Output: ${outputPath}`);
|
|
312
|
-
console.log(` Prompt file: ${promptFile}`);
|
|
372
|
+
// Build command using file-based prompt
|
|
373
|
+
const command = buildCliCommand(tool, promptFile, actualModel);
|
|
313
374
|
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
cwd: targetPath,
|
|
319
|
-
encoding: 'utf8',
|
|
320
|
-
stdio: 'inherit',
|
|
321
|
-
timeout: 600000, // 10 minutes
|
|
322
|
-
shell: process.platform === 'win32' ? 'powershell.exe' : '/bin/bash'
|
|
323
|
-
});
|
|
324
|
-
|
|
325
|
-
const duration = Math.round((Date.now() - startTime) / 1000);
|
|
375
|
+
// Log execution info
|
|
376
|
+
console.log(`📚 Generating docs: ${sourcePath}`);
|
|
377
|
+
console.log(` Strategy: ${strategy} | Tool: ${tool} | Model: ${actualModel}`);
|
|
378
|
+
console.log(` Output: ${outputPath}`);
|
|
326
379
|
|
|
327
|
-
// Cleanup prompt file
|
|
328
380
|
try {
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
381
|
+
const startTime = Date.now();
|
|
382
|
+
|
|
383
|
+
execSync(command, {
|
|
384
|
+
cwd: targetPath,
|
|
385
|
+
encoding: 'utf8',
|
|
386
|
+
stdio: 'inherit',
|
|
387
|
+
timeout: 600000, // 10 minutes
|
|
388
|
+
shell: process.platform === 'win32' ? 'powershell.exe' : '/bin/bash'
|
|
389
|
+
});
|
|
333
390
|
|
|
334
|
-
|
|
391
|
+
const duration = Math.round((Date.now() - startTime) / 1000);
|
|
335
392
|
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
folder_type: folderType,
|
|
343
|
-
tool,
|
|
344
|
-
model: actualModel,
|
|
345
|
-
duration_seconds: duration,
|
|
346
|
-
message: `Documentation generated successfully in ${duration}s`
|
|
347
|
-
};
|
|
348
|
-
} catch (error) {
|
|
349
|
-
// Cleanup prompt file on error
|
|
350
|
-
try {
|
|
351
|
-
unlinkSync(promptFile);
|
|
352
|
-
} catch (e) {
|
|
353
|
-
// Ignore cleanup errors
|
|
354
|
-
}
|
|
393
|
+
// Cleanup prompt file
|
|
394
|
+
try {
|
|
395
|
+
unlinkSync(promptFile);
|
|
396
|
+
} catch (e) {
|
|
397
|
+
// Ignore cleanup errors
|
|
398
|
+
}
|
|
355
399
|
|
|
356
|
-
|
|
400
|
+
console.log(` ✅ Completed in ${duration}s`);
|
|
401
|
+
|
|
402
|
+
return {
|
|
403
|
+
success: true,
|
|
404
|
+
result: {
|
|
405
|
+
success: true,
|
|
406
|
+
strategy,
|
|
407
|
+
source_path: sourcePath,
|
|
408
|
+
project_name: projectName,
|
|
409
|
+
output_path: outputPath,
|
|
410
|
+
folder_type: folderType,
|
|
411
|
+
tool,
|
|
412
|
+
model: actualModel,
|
|
413
|
+
duration_seconds: duration,
|
|
414
|
+
message: `Documentation generated successfully in ${duration}s`
|
|
415
|
+
}
|
|
416
|
+
};
|
|
417
|
+
} catch (error) {
|
|
418
|
+
// Cleanup prompt file on error
|
|
419
|
+
try {
|
|
420
|
+
unlinkSync(promptFile);
|
|
421
|
+
} catch (e) {
|
|
422
|
+
// Ignore cleanup errors
|
|
423
|
+
}
|
|
357
424
|
|
|
425
|
+
console.log(` ❌ Generation failed: ${(error as Error).message}`);
|
|
426
|
+
|
|
427
|
+
return {
|
|
428
|
+
success: false,
|
|
429
|
+
error: `Documentation generation failed: ${(error as Error).message}`
|
|
430
|
+
};
|
|
431
|
+
}
|
|
432
|
+
} catch (error) {
|
|
358
433
|
return {
|
|
359
434
|
success: false,
|
|
360
|
-
|
|
361
|
-
source_path: sourcePath,
|
|
362
|
-
project_name: projectName,
|
|
363
|
-
tool,
|
|
364
|
-
error: error.message
|
|
435
|
+
error: `Tool execution failed: ${(error as Error).message}`
|
|
365
436
|
};
|
|
366
437
|
}
|
|
367
438
|
}
|
|
368
|
-
|
|
369
|
-
/**
|
|
370
|
-
* Tool Definition
|
|
371
|
-
*/
|
|
372
|
-
export const generateModuleDocsTool = {
|
|
373
|
-
name: 'generate_module_docs',
|
|
374
|
-
description: `Generate documentation for modules and projects.
|
|
375
|
-
|
|
376
|
-
Module-Level Strategies:
|
|
377
|
-
- full: Full documentation (API.md + README.md for all directories)
|
|
378
|
-
- single: Single-layer documentation (current directory only)
|
|
379
|
-
|
|
380
|
-
Project-Level Strategies:
|
|
381
|
-
- project-readme: Project overview from module docs
|
|
382
|
-
- project-architecture: System design documentation
|
|
383
|
-
- http-api: HTTP API documentation
|
|
384
|
-
|
|
385
|
-
Output: .workflow/docs/{projectName}/...`,
|
|
386
|
-
parameters: {
|
|
387
|
-
type: 'object',
|
|
388
|
-
properties: {
|
|
389
|
-
strategy: {
|
|
390
|
-
type: 'string',
|
|
391
|
-
enum: ['full', 'single', 'project-readme', 'project-architecture', 'http-api'],
|
|
392
|
-
description: 'Documentation strategy'
|
|
393
|
-
},
|
|
394
|
-
sourcePath: {
|
|
395
|
-
type: 'string',
|
|
396
|
-
description: 'Source module directory path'
|
|
397
|
-
},
|
|
398
|
-
projectName: {
|
|
399
|
-
type: 'string',
|
|
400
|
-
description: 'Project name for output path'
|
|
401
|
-
},
|
|
402
|
-
tool: {
|
|
403
|
-
type: 'string',
|
|
404
|
-
enum: ['gemini', 'qwen', 'codex'],
|
|
405
|
-
description: 'CLI tool to use (default: gemini)',
|
|
406
|
-
default: 'gemini'
|
|
407
|
-
},
|
|
408
|
-
model: {
|
|
409
|
-
type: 'string',
|
|
410
|
-
description: 'Model name (optional, uses tool defaults)'
|
|
411
|
-
}
|
|
412
|
-
},
|
|
413
|
-
required: ['strategy', 'sourcePath', 'projectName']
|
|
414
|
-
},
|
|
415
|
-
execute
|
|
416
|
-
};
|