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
|
@@ -1,12 +1,87 @@
|
|
|
1
1
|
import { existsSync, readdirSync, readFileSync, statSync } from 'fs';
|
|
2
2
|
import { join } from 'path';
|
|
3
3
|
|
|
4
|
+
interface TaskMeta {
|
|
5
|
+
type: string;
|
|
6
|
+
agent: string | null;
|
|
7
|
+
scope: string | null;
|
|
8
|
+
module: string | null;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
interface TaskContext {
|
|
12
|
+
requirements: string[];
|
|
13
|
+
focus_paths: string[];
|
|
14
|
+
acceptance: string[];
|
|
15
|
+
depends_on: string[];
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
interface TaskFlowControl {
|
|
19
|
+
implementation_approach: Array<{
|
|
20
|
+
step: string;
|
|
21
|
+
action: string;
|
|
22
|
+
}>;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
interface NormalizedTask {
|
|
26
|
+
id: string;
|
|
27
|
+
title: string;
|
|
28
|
+
status: string;
|
|
29
|
+
meta: TaskMeta;
|
|
30
|
+
context: TaskContext;
|
|
31
|
+
flow_control: TaskFlowControl;
|
|
32
|
+
_raw: unknown;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
interface Progress {
|
|
36
|
+
total: number;
|
|
37
|
+
completed: number;
|
|
38
|
+
percentage: number;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
interface DiagnosisItem {
|
|
42
|
+
id: string;
|
|
43
|
+
filename: string;
|
|
44
|
+
[key: string]: unknown;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
interface Diagnoses {
|
|
48
|
+
manifest: unknown | null;
|
|
49
|
+
items: DiagnosisItem[];
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
interface LiteSession {
|
|
53
|
+
id: string;
|
|
54
|
+
type: string;
|
|
55
|
+
path: string;
|
|
56
|
+
createdAt: string;
|
|
57
|
+
plan: unknown | null;
|
|
58
|
+
tasks: NormalizedTask[];
|
|
59
|
+
diagnoses?: Diagnoses;
|
|
60
|
+
progress: Progress;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
interface LiteTasks {
|
|
64
|
+
litePlan: LiteSession[];
|
|
65
|
+
liteFix: LiteSession[];
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
interface LiteTaskDetail {
|
|
69
|
+
id: string;
|
|
70
|
+
type: string;
|
|
71
|
+
path: string;
|
|
72
|
+
plan: unknown | null;
|
|
73
|
+
tasks: NormalizedTask[];
|
|
74
|
+
explorations: unknown[];
|
|
75
|
+
clarifications: unknown | null;
|
|
76
|
+
diagnoses?: Diagnoses;
|
|
77
|
+
}
|
|
78
|
+
|
|
4
79
|
/**
|
|
5
80
|
* Scan lite-plan and lite-fix directories for task sessions
|
|
6
|
-
* @param
|
|
7
|
-
* @returns
|
|
81
|
+
* @param workflowDir - Path to .workflow directory
|
|
82
|
+
* @returns Lite tasks data
|
|
8
83
|
*/
|
|
9
|
-
export async function scanLiteTasks(workflowDir) {
|
|
84
|
+
export async function scanLiteTasks(workflowDir: string): Promise<LiteTasks> {
|
|
10
85
|
const litePlanDir = join(workflowDir, '.lite-plan');
|
|
11
86
|
const liteFixDir = join(workflowDir, '.lite-fix');
|
|
12
87
|
|
|
@@ -18,11 +93,11 @@ export async function scanLiteTasks(workflowDir) {
|
|
|
18
93
|
|
|
19
94
|
/**
|
|
20
95
|
* Scan a lite task directory
|
|
21
|
-
* @param
|
|
22
|
-
* @param
|
|
23
|
-
* @returns
|
|
96
|
+
* @param dir - Directory path
|
|
97
|
+
* @param type - Task type ('lite-plan' or 'lite-fix')
|
|
98
|
+
* @returns Array of lite task sessions
|
|
24
99
|
*/
|
|
25
|
-
function scanLiteDir(dir, type) {
|
|
100
|
+
function scanLiteDir(dir: string, type: string): LiteSession[] {
|
|
26
101
|
if (!existsSync(dir)) return [];
|
|
27
102
|
|
|
28
103
|
try {
|
|
@@ -30,13 +105,14 @@ function scanLiteDir(dir, type) {
|
|
|
30
105
|
.filter(d => d.isDirectory())
|
|
31
106
|
.map(d => {
|
|
32
107
|
const sessionPath = join(dir, d.name);
|
|
33
|
-
const session = {
|
|
108
|
+
const session: LiteSession = {
|
|
34
109
|
id: d.name,
|
|
35
110
|
type,
|
|
36
111
|
path: sessionPath,
|
|
37
112
|
createdAt: getCreatedTime(sessionPath),
|
|
38
113
|
plan: loadPlanJson(sessionPath),
|
|
39
|
-
tasks: loadTaskJsons(sessionPath)
|
|
114
|
+
tasks: loadTaskJsons(sessionPath),
|
|
115
|
+
progress: { total: 0, completed: 0, percentage: 0 }
|
|
40
116
|
};
|
|
41
117
|
|
|
42
118
|
// For lite-fix sessions, also load diagnoses separately
|
|
@@ -49,21 +125,21 @@ function scanLiteDir(dir, type) {
|
|
|
49
125
|
|
|
50
126
|
return session;
|
|
51
127
|
})
|
|
52
|
-
.sort((a, b) => new Date(b.createdAt) - new Date(a.createdAt));
|
|
128
|
+
.sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime());
|
|
53
129
|
|
|
54
130
|
return sessions;
|
|
55
131
|
} catch (err) {
|
|
56
|
-
console.error(`Error scanning ${dir}:`, err.message);
|
|
132
|
+
console.error(`Error scanning ${dir}:`, (err as Error).message);
|
|
57
133
|
return [];
|
|
58
134
|
}
|
|
59
135
|
}
|
|
60
136
|
|
|
61
137
|
/**
|
|
62
138
|
* Load plan.json or fix-plan.json from session directory
|
|
63
|
-
* @param
|
|
64
|
-
* @returns
|
|
139
|
+
* @param sessionPath - Session directory path
|
|
140
|
+
* @returns Plan data or null
|
|
65
141
|
*/
|
|
66
|
-
function loadPlanJson(sessionPath) {
|
|
142
|
+
function loadPlanJson(sessionPath: string): unknown | null {
|
|
67
143
|
// Try fix-plan.json first (for lite-fix), then plan.json (for lite-plan)
|
|
68
144
|
const fixPlanPath = join(sessionPath, 'fix-plan.json');
|
|
69
145
|
const planPath = join(sessionPath, 'plan.json');
|
|
@@ -97,11 +173,11 @@ function loadPlanJson(sessionPath) {
|
|
|
97
173
|
* 1. .task/IMPL-*.json files
|
|
98
174
|
* 2. tasks array in plan.json
|
|
99
175
|
* 3. task-*.json files in session root
|
|
100
|
-
* @param
|
|
101
|
-
* @returns
|
|
176
|
+
* @param sessionPath - Session directory path
|
|
177
|
+
* @returns Array of task objects
|
|
102
178
|
*/
|
|
103
|
-
function loadTaskJsons(sessionPath) {
|
|
104
|
-
let tasks = [];
|
|
179
|
+
function loadTaskJsons(sessionPath: string): NormalizedTask[] {
|
|
180
|
+
let tasks: NormalizedTask[] = [];
|
|
105
181
|
|
|
106
182
|
// Method 1: Check .task/IMPL-*.json files
|
|
107
183
|
const taskDir = join(sessionPath, '.task');
|
|
@@ -124,7 +200,7 @@ function loadTaskJsons(sessionPath) {
|
|
|
124
200
|
return null;
|
|
125
201
|
}
|
|
126
202
|
})
|
|
127
|
-
.filter(
|
|
203
|
+
.filter((t): t is NormalizedTask => t !== null);
|
|
128
204
|
tasks = tasks.concat(implTasks);
|
|
129
205
|
} catch {
|
|
130
206
|
// Continue to other methods
|
|
@@ -142,9 +218,9 @@ function loadTaskJsons(sessionPath) {
|
|
|
142
218
|
|
|
143
219
|
if (planFile) {
|
|
144
220
|
try {
|
|
145
|
-
const plan = JSON.parse(readFileSync(planFile, 'utf8'));
|
|
221
|
+
const plan = JSON.parse(readFileSync(planFile, 'utf8')) as { tasks?: unknown[] };
|
|
146
222
|
if (Array.isArray(plan.tasks)) {
|
|
147
|
-
tasks = plan.tasks.map(t => normalizeTask(t));
|
|
223
|
+
tasks = plan.tasks.map(t => normalizeTask(t)).filter((t): t is NormalizedTask => t !== null);
|
|
148
224
|
}
|
|
149
225
|
} catch {
|
|
150
226
|
// Continue to other methods
|
|
@@ -171,7 +247,7 @@ function loadTaskJsons(sessionPath) {
|
|
|
171
247
|
return null;
|
|
172
248
|
}
|
|
173
249
|
})
|
|
174
|
-
.filter(
|
|
250
|
+
.filter((t): t is NormalizedTask => t !== null);
|
|
175
251
|
tasks = tasks.concat(rootTasks);
|
|
176
252
|
} catch {
|
|
177
253
|
// No tasks found
|
|
@@ -188,39 +264,59 @@ function loadTaskJsons(sessionPath) {
|
|
|
188
264
|
|
|
189
265
|
/**
|
|
190
266
|
* Normalize task object to consistent structure
|
|
191
|
-
* @param
|
|
192
|
-
* @returns
|
|
267
|
+
* @param task - Raw task object
|
|
268
|
+
* @returns Normalized task
|
|
193
269
|
*/
|
|
194
|
-
function normalizeTask(task) {
|
|
195
|
-
if (!task) return null;
|
|
270
|
+
function normalizeTask(task: unknown): NormalizedTask | null {
|
|
271
|
+
if (!task || typeof task !== 'object') return null;
|
|
272
|
+
|
|
273
|
+
const taskObj = task as Record<string, unknown>;
|
|
196
274
|
|
|
197
275
|
// Determine status - support various status formats
|
|
198
|
-
let status =
|
|
276
|
+
let status = (taskObj.status as string | { state?: string; value?: string }) || 'pending';
|
|
199
277
|
if (typeof status === 'object') {
|
|
200
278
|
status = status.state || status.value || 'pending';
|
|
201
279
|
}
|
|
202
280
|
|
|
281
|
+
const meta = taskObj.meta as Record<string, unknown> | undefined;
|
|
282
|
+
const context = taskObj.context as Record<string, unknown> | undefined;
|
|
283
|
+
const flowControl = taskObj.flow_control as Record<string, unknown> | undefined;
|
|
284
|
+
const implementation = taskObj.implementation as unknown[] | undefined;
|
|
285
|
+
const modificationPoints = taskObj.modification_points as Array<{ file?: string }> | undefined;
|
|
286
|
+
|
|
203
287
|
return {
|
|
204
|
-
id:
|
|
205
|
-
title:
|
|
206
|
-
status: status.toLowerCase(),
|
|
288
|
+
id: (taskObj.id as string) || (taskObj.task_id as string) || 'unknown',
|
|
289
|
+
title: (taskObj.title as string) || (taskObj.name as string) || (taskObj.summary as string) || 'Untitled Task',
|
|
290
|
+
status: (status as string).toLowerCase(),
|
|
207
291
|
// Preserve original fields for flexible rendering
|
|
208
|
-
meta:
|
|
209
|
-
type:
|
|
210
|
-
agent:
|
|
211
|
-
scope:
|
|
212
|
-
module:
|
|
292
|
+
meta: meta ? {
|
|
293
|
+
type: (meta.type as string) || (taskObj.type as string) || (taskObj.action as string) || 'task',
|
|
294
|
+
agent: (meta.agent as string) || (taskObj.agent as string) || null,
|
|
295
|
+
scope: (meta.scope as string) || (taskObj.scope as string) || null,
|
|
296
|
+
module: (meta.module as string) || (taskObj.module as string) || null
|
|
297
|
+
} : {
|
|
298
|
+
type: (taskObj.type as string) || (taskObj.action as string) || 'task',
|
|
299
|
+
agent: (taskObj.agent as string) || null,
|
|
300
|
+
scope: (taskObj.scope as string) || null,
|
|
301
|
+
module: (taskObj.module as string) || null
|
|
213
302
|
},
|
|
214
|
-
context:
|
|
215
|
-
requirements:
|
|
216
|
-
focus_paths:
|
|
217
|
-
acceptance:
|
|
218
|
-
depends_on:
|
|
303
|
+
context: context ? {
|
|
304
|
+
requirements: (context.requirements as string[]) || [],
|
|
305
|
+
focus_paths: (context.focus_paths as string[]) || [],
|
|
306
|
+
acceptance: (context.acceptance as string[]) || [],
|
|
307
|
+
depends_on: (context.depends_on as string[]) || []
|
|
308
|
+
} : {
|
|
309
|
+
requirements: (taskObj.requirements as string[]) || (taskObj.description ? [taskObj.description as string] : []),
|
|
310
|
+
focus_paths: (taskObj.focus_paths as string[]) || modificationPoints?.map(m => m.file).filter((f): f is string => !!f) || [],
|
|
311
|
+
acceptance: (taskObj.acceptance as string[]) || [],
|
|
312
|
+
depends_on: (taskObj.depends_on as string[]) || []
|
|
219
313
|
},
|
|
220
|
-
flow_control:
|
|
221
|
-
implementation_approach:
|
|
314
|
+
flow_control: flowControl ? {
|
|
315
|
+
implementation_approach: (flowControl.implementation_approach as Array<{ step: string; action: string }>) || []
|
|
316
|
+
} : {
|
|
317
|
+
implementation_approach: implementation?.map((step, i) => ({
|
|
222
318
|
step: `Step ${i + 1}`,
|
|
223
|
-
action: step
|
|
319
|
+
action: step as string
|
|
224
320
|
})) || []
|
|
225
321
|
},
|
|
226
322
|
// Keep all original fields for raw JSON view
|
|
@@ -230,10 +326,10 @@ function normalizeTask(task) {
|
|
|
230
326
|
|
|
231
327
|
/**
|
|
232
328
|
* Get directory creation time
|
|
233
|
-
* @param
|
|
234
|
-
* @returns
|
|
329
|
+
* @param dirPath - Directory path
|
|
330
|
+
* @returns ISO date string
|
|
235
331
|
*/
|
|
236
|
-
function getCreatedTime(dirPath) {
|
|
332
|
+
function getCreatedTime(dirPath: string): string {
|
|
237
333
|
try {
|
|
238
334
|
const stat = statSync(dirPath);
|
|
239
335
|
return stat.birthtime.toISOString();
|
|
@@ -244,10 +340,10 @@ function getCreatedTime(dirPath) {
|
|
|
244
340
|
|
|
245
341
|
/**
|
|
246
342
|
* Calculate progress from tasks
|
|
247
|
-
* @param
|
|
248
|
-
* @returns
|
|
343
|
+
* @param tasks - Array of task objects
|
|
344
|
+
* @returns Progress info
|
|
249
345
|
*/
|
|
250
|
-
function calculateProgress(tasks) {
|
|
346
|
+
function calculateProgress(tasks: NormalizedTask[]): Progress {
|
|
251
347
|
if (!tasks || tasks.length === 0) {
|
|
252
348
|
return { total: 0, completed: 0, percentage: 0 };
|
|
253
349
|
}
|
|
@@ -261,19 +357,19 @@ function calculateProgress(tasks) {
|
|
|
261
357
|
|
|
262
358
|
/**
|
|
263
359
|
* Get detailed lite task info
|
|
264
|
-
* @param
|
|
265
|
-
* @param
|
|
266
|
-
* @param
|
|
267
|
-
* @returns
|
|
360
|
+
* @param workflowDir - Workflow directory
|
|
361
|
+
* @param type - 'lite-plan' or 'lite-fix'
|
|
362
|
+
* @param sessionId - Session ID
|
|
363
|
+
* @returns Detailed task info
|
|
268
364
|
*/
|
|
269
|
-
export function getLiteTaskDetail(workflowDir, type, sessionId) {
|
|
365
|
+
export function getLiteTaskDetail(workflowDir: string, type: string, sessionId: string): LiteTaskDetail | null {
|
|
270
366
|
const dir = type === 'lite-plan'
|
|
271
367
|
? join(workflowDir, '.lite-plan', sessionId)
|
|
272
368
|
: join(workflowDir, '.lite-fix', sessionId);
|
|
273
369
|
|
|
274
370
|
if (!existsSync(dir)) return null;
|
|
275
371
|
|
|
276
|
-
const detail = {
|
|
372
|
+
const detail: LiteTaskDetail = {
|
|
277
373
|
id: sessionId,
|
|
278
374
|
type,
|
|
279
375
|
path: dir,
|
|
@@ -293,10 +389,10 @@ export function getLiteTaskDetail(workflowDir, type, sessionId) {
|
|
|
293
389
|
|
|
294
390
|
/**
|
|
295
391
|
* Load exploration results
|
|
296
|
-
* @param
|
|
297
|
-
* @returns
|
|
392
|
+
* @param sessionPath - Session directory path
|
|
393
|
+
* @returns Exploration results
|
|
298
394
|
*/
|
|
299
|
-
function loadExplorations(sessionPath) {
|
|
395
|
+
function loadExplorations(sessionPath: string): unknown[] {
|
|
300
396
|
const explorePath = join(sessionPath, 'explorations.json');
|
|
301
397
|
if (!existsSync(explorePath)) return [];
|
|
302
398
|
|
|
@@ -310,10 +406,10 @@ function loadExplorations(sessionPath) {
|
|
|
310
406
|
|
|
311
407
|
/**
|
|
312
408
|
* Load clarification data
|
|
313
|
-
* @param
|
|
314
|
-
* @returns
|
|
409
|
+
* @param sessionPath - Session directory path
|
|
410
|
+
* @returns Clarification data
|
|
315
411
|
*/
|
|
316
|
-
function loadClarifications(sessionPath) {
|
|
412
|
+
function loadClarifications(sessionPath: string): unknown | null {
|
|
317
413
|
const clarifyPath = join(sessionPath, 'clarifications.json');
|
|
318
414
|
if (!existsSync(clarifyPath)) return null;
|
|
319
415
|
|
|
@@ -328,11 +424,11 @@ function loadClarifications(sessionPath) {
|
|
|
328
424
|
/**
|
|
329
425
|
* Load diagnosis files for lite-fix sessions
|
|
330
426
|
* Loads diagnosis-*.json files from session root directory
|
|
331
|
-
* @param
|
|
332
|
-
* @returns
|
|
427
|
+
* @param sessionPath - Session directory path
|
|
428
|
+
* @returns Diagnoses data with manifest and items
|
|
333
429
|
*/
|
|
334
|
-
function loadDiagnoses(sessionPath) {
|
|
335
|
-
const result = {
|
|
430
|
+
function loadDiagnoses(sessionPath: string): Diagnoses {
|
|
431
|
+
const result: Diagnoses = {
|
|
336
432
|
manifest: null,
|
|
337
433
|
items: []
|
|
338
434
|
};
|
|
@@ -355,7 +451,7 @@ function loadDiagnoses(sessionPath) {
|
|
|
355
451
|
for (const file of diagnosisFiles) {
|
|
356
452
|
const filePath = join(sessionPath, file);
|
|
357
453
|
try {
|
|
358
|
-
const content = JSON.parse(readFileSync(filePath, 'utf8'))
|
|
454
|
+
const content = JSON.parse(readFileSync(filePath, 'utf8')) as Record<string, unknown>;
|
|
359
455
|
result.items.push({
|
|
360
456
|
id: file.replace('diagnosis-', '').replace('.json', ''),
|
|
361
457
|
filename: file,
|