@winspan/claude-forge 8.39.0 → 8.50.6
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 +17 -0
- package/.eslintrc.js +23 -0
- package/.prettierrc +8 -0
- package/ARCHITECTURE_ISSUES.md +249 -0
- package/CLAUDE.md +265 -0
- package/CLAUDE.md.backup +488 -0
- package/DEVELOPMENT.md +310 -0
- package/dist/claudemd/claudemd-generator.d.ts +38 -3
- package/dist/claudemd/claudemd-generator.d.ts.map +1 -1
- package/dist/claudemd/claudemd-generator.js +629 -11
- package/dist/claudemd/claudemd-generator.js.map +1 -1
- package/dist/claudemd/index.d.ts +2 -2
- package/dist/claudemd/index.d.ts.map +1 -1
- package/dist/claudemd/index.js.map +1 -1
- package/dist/claudemd/resume-manager.d.ts.map +1 -1
- package/dist/claudemd/resume-manager.js +5 -2
- package/dist/claudemd/resume-manager.js.map +1 -1
- package/dist/claudemd/tech-detector.d.ts +1 -0
- package/dist/claudemd/tech-detector.d.ts.map +1 -1
- package/dist/claudemd/tech-detector.js +53 -0
- package/dist/claudemd/tech-detector.js.map +1 -1
- package/dist/cli/commands/claudemd.js +2 -2
- package/dist/cli/commands/claudemd.js.map +1 -1
- package/dist/cli/commands/daemon.d.ts +28 -0
- package/dist/cli/commands/daemon.d.ts.map +1 -1
- package/dist/cli/commands/daemon.js +200 -8
- package/dist/cli/commands/daemon.js.map +1 -1
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +3 -35
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/menu.js +10 -10
- package/dist/cli/commands/menu.js.map +1 -1
- package/dist/cli/commands/skills.d.ts.map +1 -1
- package/dist/cli/commands/skills.js +8 -2
- package/dist/cli/commands/skills.js.map +1 -1
- package/dist/cli/commands/stats.d.ts.map +1 -1
- package/dist/cli/commands/stats.js +0 -17
- package/dist/cli/commands/stats.js.map +1 -1
- package/dist/cli/commands/trace.d.ts +9 -0
- package/dist/cli/commands/trace.d.ts.map +1 -0
- package/dist/cli/commands/trace.js +137 -0
- package/dist/cli/commands/trace.js.map +1 -0
- package/dist/cli/index.js +2 -4
- package/dist/cli/index.js.map +1 -1
- package/dist/core/ai/provider.d.ts +10 -2
- package/dist/core/ai/provider.d.ts.map +1 -1
- package/dist/core/ai/provider.js.map +1 -1
- package/dist/core/ai/types.d.ts +1 -19
- package/dist/core/ai/types.d.ts.map +1 -1
- package/dist/core/ai/types.js +1 -1
- package/dist/core/config.d.ts +2 -1
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +30 -6
- package/dist/core/config.js.map +1 -1
- package/dist/core/constants.d.ts +2 -2
- package/dist/core/constants.js +2 -2
- package/dist/core/constants.js.map +1 -1
- package/dist/core/queue/index.d.ts +52 -0
- package/dist/core/queue/index.d.ts.map +1 -0
- package/dist/core/queue/index.js +176 -0
- package/dist/core/queue/index.js.map +1 -0
- package/dist/core/storage/base.d.ts +33 -0
- package/dist/core/storage/base.d.ts.map +1 -0
- package/dist/core/storage/base.js +211 -0
- package/dist/core/storage/base.js.map +1 -0
- package/dist/core/storage/events.d.ts +52 -0
- package/dist/core/storage/events.d.ts.map +1 -0
- package/dist/core/storage/events.js +201 -0
- package/dist/core/storage/events.js.map +1 -0
- package/dist/core/storage/injections.d.ts +27 -0
- package/dist/core/storage/injections.d.ts.map +1 -0
- package/dist/core/storage/injections.js +51 -0
- package/dist/core/storage/injections.js.map +1 -0
- package/dist/core/storage/maintenance.d.ts +21 -0
- package/dist/core/storage/maintenance.d.ts.map +1 -0
- package/dist/core/storage/maintenance.js +52 -0
- package/dist/core/storage/maintenance.js.map +1 -0
- package/dist/core/storage/routing.d.ts +71 -0
- package/dist/core/storage/routing.d.ts.map +1 -0
- package/dist/core/storage/routing.js +141 -0
- package/dist/core/storage/routing.js.map +1 -0
- package/dist/core/storage/rows.d.ts +0 -47
- package/dist/core/storage/rows.d.ts.map +1 -1
- package/dist/core/storage/schema.sql +74 -136
- package/dist/core/storage/sessions.d.ts +34 -0
- package/dist/core/storage/sessions.d.ts.map +1 -0
- package/dist/core/storage/sessions.js +78 -0
- package/dist/core/storage/sessions.js.map +1 -0
- package/dist/core/storage/skills.d.ts +40 -0
- package/dist/core/storage/skills.d.ts.map +1 -0
- package/dist/core/storage/skills.js +107 -0
- package/dist/core/storage/skills.js.map +1 -0
- package/dist/core/storage/sqlite.d.ts +63 -265
- package/dist/core/storage/sqlite.d.ts.map +1 -1
- package/dist/core/storage/sqlite.js +102 -759
- package/dist/core/storage/sqlite.js.map +1 -1
- package/dist/core/storage/tasks.d.ts +64 -0
- package/dist/core/storage/tasks.d.ts.map +1 -0
- package/dist/core/storage/tasks.js +134 -0
- package/dist/core/storage/tasks.js.map +1 -0
- package/dist/core/storage/token-usage.d.ts +36 -0
- package/dist/core/storage/token-usage.d.ts.map +1 -0
- package/dist/core/storage/token-usage.js +59 -0
- package/dist/core/storage/token-usage.js.map +1 -0
- package/dist/core/types.d.ts +70 -4
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js +24 -1
- package/dist/core/types.js.map +1 -1
- package/dist/core/utils/format.d.ts +28 -0
- package/dist/core/utils/format.d.ts.map +1 -0
- package/dist/core/utils/format.js +68 -0
- package/dist/core/utils/format.js.map +1 -0
- package/dist/core/utils/logger.d.ts +6 -1
- package/dist/core/utils/logger.d.ts.map +1 -1
- package/dist/core/utils/logger.js +72 -2
- package/dist/core/utils/logger.js.map +1 -1
- package/dist/core/utils/session.d.ts +16 -0
- package/dist/core/utils/session.d.ts.map +1 -0
- package/dist/core/utils/session.js +25 -0
- package/dist/core/utils/session.js.map +1 -0
- package/dist/core/utils/time.d.ts +22 -0
- package/dist/core/utils/time.d.ts.map +1 -0
- package/dist/core/utils/time.js +38 -0
- package/dist/core/utils/time.js.map +1 -0
- package/dist/daemon/handlers/history-exporter.d.ts.map +1 -1
- package/dist/daemon/handlers/history-exporter.js +6 -4
- package/dist/daemon/handlers/history-exporter.js.map +1 -1
- package/dist/daemon/handlers/post-tool-use.d.ts +5 -12
- package/dist/daemon/handlers/post-tool-use.d.ts.map +1 -1
- package/dist/daemon/handlers/post-tool-use.js +21 -79
- package/dist/daemon/handlers/post-tool-use.js.map +1 -1
- package/dist/daemon/handlers/stop.d.ts +24 -12
- package/dist/daemon/handlers/stop.d.ts.map +1 -1
- package/dist/daemon/handlers/stop.js +141 -42
- package/dist/daemon/handlers/stop.js.map +1 -1
- package/dist/daemon/handlers/user-prompt.d.ts +18 -19
- package/dist/daemon/handlers/user-prompt.d.ts.map +1 -1
- package/dist/daemon/handlers/user-prompt.js +103 -227
- package/dist/daemon/handlers/user-prompt.js.map +1 -1
- package/dist/daemon/index.d.ts +6 -2
- package/dist/daemon/index.d.ts.map +1 -1
- package/dist/daemon/index.js +76 -120
- package/dist/daemon/index.js.map +1 -1
- package/dist/daemon/launchd/com.claude-forge.daemon.plist.template +47 -0
- package/dist/daemon/launchd-installer.d.ts +61 -0
- package/dist/daemon/launchd-installer.d.ts.map +1 -0
- package/dist/daemon/launchd-installer.js +182 -0
- package/dist/daemon/launchd-installer.js.map +1 -0
- package/dist/daemon/lifecycle.d.ts +11 -0
- package/dist/daemon/lifecycle.d.ts.map +1 -1
- package/dist/daemon/lifecycle.js +44 -0
- package/dist/daemon/lifecycle.js.map +1 -1
- package/dist/daemon/router.d.ts +9 -2
- package/dist/daemon/router.d.ts.map +1 -1
- package/dist/daemon/router.js +27 -3
- package/dist/daemon/router.js.map +1 -1
- package/dist/daemon/server.d.ts.map +1 -1
- package/dist/daemon/server.js +6 -5
- package/dist/daemon/server.js.map +1 -1
- package/dist/daemon/services/anti-pattern-detector.d.ts +50 -0
- package/dist/daemon/services/anti-pattern-detector.d.ts.map +1 -0
- package/dist/daemon/services/anti-pattern-detector.js +357 -0
- package/dist/daemon/services/anti-pattern-detector.js.map +1 -0
- package/dist/daemon/services/drift-detector.d.ts +64 -0
- package/dist/daemon/services/drift-detector.d.ts.map +1 -0
- package/dist/daemon/services/drift-detector.js +201 -0
- package/dist/daemon/services/drift-detector.js.map +1 -0
- package/dist/{intelligence → daemon/services}/task-segmenter.d.ts +7 -1
- package/dist/daemon/services/task-segmenter.d.ts.map +1 -0
- package/dist/{intelligence → daemon/services}/task-segmenter.js +29 -6
- package/dist/daemon/services/task-segmenter.js.map +1 -0
- package/dist/daemon/services/weekly-report.d.ts +91 -0
- package/dist/daemon/services/weekly-report.d.ts.map +1 -0
- package/dist/daemon/services/weekly-report.js +327 -0
- package/dist/daemon/services/weekly-report.js.map +1 -0
- package/dist/hooks/hook-lib.sh +81 -0
- package/dist/hooks/notification.sh +7 -3
- package/dist/hooks/post-tool-use.sh +8 -4
- package/dist/hooks/pre-tool-use.sh +7 -4
- package/dist/hooks/stop.sh +1 -1
- package/dist/hooks/user-prompt-submit.sh +8 -9
- package/dist/mcp/server.d.ts +2 -2
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +71 -11
- package/dist/mcp/server.js.map +1 -1
- package/dist/skills/invocation-guard.d.ts +20 -0
- package/dist/skills/invocation-guard.d.ts.map +1 -1
- package/dist/skills/invocation-guard.js +63 -0
- package/dist/skills/invocation-guard.js.map +1 -1
- package/dist/skills/matcher.d.ts.map +1 -1
- package/dist/skills/matcher.js +12 -3
- package/dist/skills/matcher.js.map +1 -1
- package/dist/skills/official/code-simplifier.md +16 -0
- package/dist/skills/official/find-skills.md +23 -0
- package/dist/skills/official/official-api-design.md +17 -0
- package/dist/skills/official/official-architecture-decision.md +20 -0
- package/dist/skills/official/official-bmad.md +118 -0
- package/dist/skills/official/official-db-schema-design.md +16 -0
- package/dist/skills/official/official-debug.md +17 -0
- package/dist/skills/official/official-doc-driven.md +31 -0
- package/dist/skills/official/official-harness-engineering.md +108 -0
- package/dist/skills/official/official-performance-optimization.md +30 -0
- package/dist/skills/official/official-pr-review.md +35 -0
- package/dist/skills/official/official-release-checklist.md +30 -0
- package/dist/skills/official/official-security-hardening.md +26 -0
- package/dist/skills/official/official-spec-driven-design.md +31 -0
- package/dist/skills/official/planning-with-files.md +37 -0
- package/dist/skills/official/ui-ux-pro-max.md +18 -0
- package/dist/skills/official/webapp-testing.md +12 -0
- package/dist/skills/official-skills.d.ts +8 -4
- package/dist/skills/official-skills.d.ts.map +1 -1
- package/dist/skills/official-skills.js +48 -704
- package/dist/skills/official-skills.js.map +1 -1
- package/dist/skills/registry.d.ts +5 -0
- package/dist/skills/registry.d.ts.map +1 -1
- package/dist/skills/registry.js +48 -15
- package/dist/skills/registry.js.map +1 -1
- package/dist/skills/tools/pipeline-suggest.d.ts +30 -0
- package/dist/skills/tools/pipeline-suggest.d.ts.map +1 -0
- package/dist/skills/tools/pipeline-suggest.js +178 -0
- package/dist/skills/tools/pipeline-suggest.js.map +1 -0
- package/dist/skills/tools/skill-invoke.d.ts +2 -0
- package/dist/skills/tools/skill-invoke.d.ts.map +1 -1
- package/dist/skills/tools/skill-invoke.js +5 -2
- package/dist/skills/tools/skill-invoke.js.map +1 -1
- package/dist/web/routes/ai.d.ts.map +1 -1
- package/dist/web/routes/ai.js +16 -22
- package/dist/web/routes/ai.js.map +1 -1
- package/dist/web/routes/drift.d.ts +10 -0
- package/dist/web/routes/drift.d.ts.map +1 -0
- package/dist/web/routes/drift.js +21 -0
- package/dist/web/routes/drift.js.map +1 -0
- package/dist/web/routes/error-handler.d.ts +43 -0
- package/dist/web/routes/error-handler.d.ts.map +1 -0
- package/dist/web/routes/error-handler.js +99 -0
- package/dist/web/routes/error-handler.js.map +1 -0
- package/dist/web/routes/insights.d.ts +9 -0
- package/dist/web/routes/insights.d.ts.map +1 -0
- package/dist/web/routes/insights.js +34 -0
- package/dist/web/routes/insights.js.map +1 -0
- package/dist/web/routes/patch.js +2 -2
- package/dist/web/routes/patch.js.map +1 -1
- package/dist/web/routes/reports.d.ts +10 -0
- package/dist/web/routes/reports.d.ts.map +1 -0
- package/dist/web/routes/reports.js +27 -0
- package/dist/web/routes/reports.js.map +1 -0
- package/dist/web/routes/rules.d.ts +10 -3
- package/dist/web/routes/rules.d.ts.map +1 -1
- package/dist/web/routes/rules.js +80 -95
- package/dist/web/routes/rules.js.map +1 -1
- package/dist/web/routes/sessions.d.ts +1 -2
- package/dist/web/routes/sessions.d.ts.map +1 -1
- package/dist/web/routes/sessions.js +27 -39
- package/dist/web/routes/sessions.js.map +1 -1
- package/dist/web/routes/skill-stats.d.ts.map +1 -1
- package/dist/web/routes/skill-stats.js +38 -0
- package/dist/web/routes/skill-stats.js.map +1 -1
- package/dist/web/routes/skills.d.ts.map +1 -1
- package/dist/web/routes/skills.js +34 -0
- package/dist/web/routes/skills.js.map +1 -1
- package/dist/web/routes/stats.d.ts +7 -0
- package/dist/web/routes/stats.d.ts.map +1 -0
- package/dist/web/routes/stats.js +44 -0
- package/dist/web/routes/stats.js.map +1 -0
- package/dist/web/routes/status.js +1 -1
- package/dist/web/routes/status.js.map +1 -1
- package/dist/web/routes/tasks.d.ts +4 -0
- package/dist/web/routes/tasks.d.ts.map +1 -0
- package/dist/web/routes/tasks.js +181 -0
- package/dist/web/routes/tasks.js.map +1 -0
- package/dist/web/routes/trace.d.ts +10 -0
- package/dist/web/routes/trace.d.ts.map +1 -0
- package/dist/web/routes/trace.js +123 -0
- package/dist/web/routes/trace.js.map +1 -0
- package/dist/web/routes/types.d.ts +1 -14
- package/dist/web/routes/types.d.ts.map +1 -1
- package/dist/web/routes/types.js +8 -17
- package/dist/web/routes/types.js.map +1 -1
- package/dist/web/server.d.ts +1 -9
- package/dist/web/server.d.ts.map +1 -1
- package/dist/web/server.js +28 -28
- package/dist/web/server.js.map +1 -1
- package/dist/web/static/assets/AIConfig-BQCAQE9D.js +2 -0
- package/dist/web/static/assets/AIConfig-BQCAQE9D.js.map +1 -0
- package/dist/web/static/assets/Dashboard-D7Bo6Kan.js +2 -0
- package/dist/web/static/assets/Dashboard-D7Bo6Kan.js.map +1 -0
- package/dist/web/static/assets/{Drawer-DcU3ln98.js → Drawer-BeHRQxUS.js} +2 -2
- package/dist/web/static/assets/{Drawer-DcU3ln98.js.map → Drawer-BeHRQxUS.js.map} +1 -1
- package/dist/web/static/assets/Events-K_tCY2ti.js +2 -0
- package/dist/web/static/assets/Events-K_tCY2ti.js.map +1 -0
- package/dist/web/static/assets/Reports-BJCmBnc_.js +2 -0
- package/dist/web/static/assets/Reports-BJCmBnc_.js.map +1 -0
- package/dist/web/static/assets/SearchInput-BX2KhMkw.js +2 -0
- package/dist/web/static/assets/SearchInput-BX2KhMkw.js.map +1 -0
- package/dist/web/static/assets/SessionDetail-Bkr-kC7V.js +2 -0
- package/dist/web/static/assets/SessionDetail-Bkr-kC7V.js.map +1 -0
- package/dist/web/static/assets/Sessions-Chx9OCLH.js +2 -0
- package/dist/web/static/assets/Sessions-Chx9OCLH.js.map +1 -0
- package/dist/web/static/assets/Skills-O0GT1i7m.js +2 -0
- package/dist/web/static/assets/Skills-O0GT1i7m.js.map +1 -0
- package/dist/web/static/assets/TaskDetail-5SR8zGzv.js +2 -0
- package/dist/web/static/assets/TaskDetail-5SR8zGzv.js.map +1 -0
- package/dist/web/static/assets/Tasks-DCgDqvOZ.js +2 -0
- package/dist/web/static/assets/Tasks-DCgDqvOZ.js.map +1 -0
- package/dist/web/static/assets/export-L_VBD2p1.js +4 -0
- package/dist/web/static/assets/export-L_VBD2p1.js.map +1 -0
- package/dist/web/static/assets/index-D8AKj26b.css +1 -0
- package/dist/web/static/assets/index-DxIbmNmr.js +3 -0
- package/dist/web/static/assets/index-DxIbmNmr.js.map +1 -0
- package/dist/web/static/assets/{lucide-53bR2rki.js → lucide-fJlPI3H7.js} +68 -38
- package/dist/web/static/assets/lucide-fJlPI3H7.js.map +1 -0
- package/dist/web/static/assets/time-Bxuk0M-C.js +2 -0
- package/dist/web/static/assets/time-Bxuk0M-C.js.map +1 -0
- package/dist/web/static/index.html +3 -3
- package/docs/concurrent-agents.md +129 -0
- package/docs/design/architecture-review-20260516.md +232 -0
- package/docs/design/fix-skills-data-and-set-leak-spec-20260516-1300.md +219 -0
- package/docs/design/hook-failure-queue-spec-20260516-1530.md +204 -0
- package/docs/design/refactor-phase1-spec-20260515-1600.md +543 -0
- package/docs/design/refactor-phase2-spec-20260515-1700.md +424 -0
- package/docs/design/tasks-list-filter-pagination-spec-20260518-0930.md +208 -0
- package/docs/implementation/fix-skills-data-and-set-leak-changelog-20260516-1300.md +104 -0
- package/docs/implementation/hook-failure-queue-changelog-20260516-1530.md +196 -0
- package/docs/implementation/hotfix-daemon-event-reject-20260516-1430.md +56 -0
- package/docs/implementation/refactor-phase1-changelog-20260515-1630.md +354 -0
- package/docs/implementation/refactor-phase2-changelog-20260515-1705.md +421 -0
- package/docs/implementation/tasks-list-filter-pagination-changelog-20260518-0930.md +72 -0
- package/docs/reviews/claudemd-template-sync.md +54 -0
- package/docs/reviews/tasks-filter-pagination.md +80 -0
- package/docs/ruflo-learning-strategy.md +322 -0
- package/docs/skills-deduplication-analysis.md +83 -0
- package/docs/skills-multiformat-support.md +177 -0
- package/docs/skills-third-party.md +183 -0
- package/docs/testing/tasks-filter-pagination-test-report.md +86 -0
- package/forge +321 -0
- package/package.json +28 -62
- package/playwright.config.ts +40 -0
- package/scripts/demo-v2.ts +91 -0
- package/scripts/dev-daemon.sh +232 -0
- package/scripts/dev-web.ts +109 -0
- package/scripts/e2e-mcp-link.ts +423 -0
- package/scripts/e2e-methodology-quality.ts +253 -0
- package/scripts/e2e-routing.ts +456 -0
- package/scripts/e2e-user-methodology.ts +326 -0
- package/scripts/e2e-web-workflows.ts +299 -0
- package/scripts/migrate-legacy-to-dynamic.sql +108 -0
- package/scripts/regenerate-execution-docs.ts +116 -0
- package/scripts/sync-agent-skills.ts +193 -0
- package/scripts/test-hook.sh +71 -0
- package/scripts/verify-skill-loading.ts +62 -0
- package/src/claudemd/claudemd-generator.ts +777 -0
- package/src/claudemd/convention-extractor.ts +69 -0
- package/src/claudemd/index.ts +35 -0
- package/src/claudemd/persona-manager.ts +88 -0
- package/src/claudemd/resume-manager.ts +236 -0
- package/src/claudemd/tech-detector.ts +220 -0
- package/src/cli/commands/claudemd.ts +84 -0
- package/src/cli/commands/config.ts +46 -0
- package/src/cli/commands/daemon.ts +310 -0
- package/src/cli/commands/executions.ts +114 -0
- package/src/cli/commands/init.ts +204 -0
- package/src/cli/commands/logs.ts +181 -0
- package/src/cli/commands/mcp.ts +244 -0
- package/src/cli/commands/menu.ts +356 -0
- package/src/cli/commands/skills.ts +185 -0
- package/src/cli/commands/stats.ts +74 -0
- package/src/cli/commands/status.ts +69 -0
- package/src/cli/commands/template.ts +77 -0
- package/src/cli/commands/trace.ts +164 -0
- package/src/cli/index.ts +42 -0
- package/src/cli/init/hook-manager.ts +132 -0
- package/src/core/ai/provider.ts +308 -0
- package/src/core/ai/types.ts +51 -0
- package/src/core/config.ts +124 -0
- package/src/core/constants.ts +45 -0
- package/src/core/queue/index.ts +193 -0
- package/src/core/storage/base.ts +226 -0
- package/src/core/storage/events.ts +255 -0
- package/src/core/storage/injections.ts +78 -0
- package/src/core/storage/maintenance.ts +59 -0
- package/src/core/storage/migrations/002_add_skill_tracking.sql +6 -0
- package/src/core/storage/migrations/003_add_skill_invocations.sql +23 -0
- package/src/core/storage/performance-indexes.sql +23 -0
- package/src/core/storage/routing.ts +194 -0
- package/src/core/storage/rows.ts +112 -0
- package/src/core/storage/schema.sql +214 -0
- package/src/core/storage/sessions.ts +104 -0
- package/src/core/storage/skills.ts +164 -0
- package/src/core/storage/sqlite.ts +194 -0
- package/src/core/storage/tasks.ts +170 -0
- package/src/core/storage/token-usage.ts +93 -0
- package/src/core/types.ts +154 -0
- package/src/core/utils/error-handler.ts +256 -0
- package/src/core/utils/forge-resume-block.ts +74 -0
- package/src/core/utils/format.ts +69 -0
- package/src/core/utils/logger.ts +119 -0
- package/src/core/utils/lru-cache.ts +50 -0
- package/src/core/utils/path.ts +19 -0
- package/src/core/utils/session.ts +26 -0
- package/src/core/utils/time.ts +37 -0
- package/src/core/utils/token-tracker.ts +97 -0
- package/src/daemon/event-parser.ts +35 -0
- package/src/daemon/handlers/history-exporter.ts +117 -0
- package/src/daemon/handlers/post-tool-use.ts +50 -0
- package/src/daemon/handlers/stop.ts +215 -0
- package/src/daemon/handlers/user-prompt.ts +188 -0
- package/src/daemon/index.ts +278 -0
- package/src/daemon/launchd/com.claude-forge.daemon.plist.template +47 -0
- package/src/daemon/launchd-installer.ts +260 -0
- package/src/daemon/lifecycle.ts +128 -0
- package/src/daemon/router.ts +40 -0
- package/src/daemon/server.ts +209 -0
- package/src/daemon/services/anti-pattern-detector.ts +412 -0
- package/src/daemon/services/drift-detector.ts +232 -0
- package/src/daemon/services/task-segmenter.ts +112 -0
- package/src/daemon/services/weekly-report.ts +454 -0
- package/src/hooks/hook-lib.sh +81 -0
- package/src/hooks/notification.sh +35 -0
- package/src/hooks/post-tool-use.sh +61 -0
- package/src/hooks/pre-tool-use.sh +63 -0
- package/src/hooks/stop.sh +40 -0
- package/src/hooks/user-prompt-submit.sh +69 -0
- package/src/mcp/server.ts +322 -0
- package/src/skills/index.ts +2 -0
- package/src/skills/invocation-guard.ts +177 -0
- package/src/skills/matcher.ts +148 -0
- package/src/skills/official/code-simplifier.md +16 -0
- package/src/skills/official/find-skills.md +23 -0
- package/src/skills/official/official-api-design.md +17 -0
- package/src/skills/official/official-architecture-decision.md +20 -0
- package/src/skills/official/official-bmad.md +118 -0
- package/src/skills/official/official-db-schema-design.md +16 -0
- package/src/skills/official/official-debug.md +17 -0
- package/src/skills/official/official-doc-driven.md +31 -0
- package/src/skills/official/official-harness-engineering.md +108 -0
- package/src/skills/official/official-performance-optimization.md +30 -0
- package/src/skills/official/official-pr-review.md +35 -0
- package/src/skills/official/official-release-checklist.md +30 -0
- package/src/skills/official/official-security-hardening.md +26 -0
- package/src/skills/official/official-spec-driven-design.md +31 -0
- package/src/skills/official/planning-with-files.md +37 -0
- package/src/skills/official/ui-ux-pro-max.md +18 -0
- package/src/skills/official/webapp-testing.md +12 -0
- package/src/skills/official-skills.ts +89 -0
- package/src/skills/registry.ts +355 -0
- package/src/skills/semantic-matcher.ts +231 -0
- package/src/skills/tools/pipeline-suggest.ts +226 -0
- package/src/skills/tools/skill-invoke.ts +168 -0
- package/src/skills/tools/skill-list.ts +59 -0
- package/src/templates/go.yaml +53 -0
- package/src/templates/python.yaml +59 -0
- package/src/templates/react.yaml +55 -0
- package/src/templates/template-manager.ts +170 -0
- package/src/web/auth-middleware.ts +55 -0
- package/src/web/routes/ai.ts +204 -0
- package/src/web/routes/auth.ts +22 -0
- package/src/web/routes/drift.ts +25 -0
- package/src/web/routes/error-handler.ts +120 -0
- package/src/web/routes/events.ts +47 -0
- package/src/web/routes/insights.ts +43 -0
- package/src/web/routes/patch.ts +117 -0
- package/src/web/routes/reports.ts +34 -0
- package/src/web/routes/rules.ts +101 -0
- package/src/web/routes/sessions.ts +262 -0
- package/src/web/routes/skill-stats.ts +132 -0
- package/src/web/routes/skills.ts +349 -0
- package/src/web/routes/static.ts +67 -0
- package/src/web/routes/stats.ts +60 -0
- package/src/web/routes/status.ts +30 -0
- package/src/web/routes/tasks.ts +218 -0
- package/src/web/routes/token-usage.ts +20 -0
- package/src/web/routes/trace.ts +138 -0
- package/src/web/routes/types.ts +56 -0
- package/src/web/server.ts +134 -0
- package/src/web/ssrf-guard.ts +112 -0
- package/src/web/static/index.html +3251 -0
- package/src/web/static/vendor/chart.umd.min.js +20 -0
- package/tests/e2e/dashboard.spec.ts +205 -0
- package/tests/e2e/routing-skill-e2e.test.ts +39 -0
- package/tests/helpers/mock-ai.ts +92 -0
- package/tests/helpers/mock-storage.ts +159 -0
- package/tests/integration/queue-replay.integration.test.ts +193 -0
- package/tests/integration/tasks-filter.integration.test.ts +154 -0
- package/tests/performance/database.benchmark.ts +161 -0
- package/tests/semantic-matcher.test.ts +99 -0
- package/tests/skill-matcher.test.ts +110 -0
- package/tests/unit/ai-provider-retry.test.ts +194 -0
- package/tests/unit/ai-provider-vision.test.ts +224 -0
- package/tests/unit/claudemd-generator.test.ts +68 -0
- package/tests/unit/cli-mcp.test.ts +141 -0
- package/tests/unit/handlers.test.ts +171 -0
- package/tests/unit/invocation-guard.test.ts +125 -0
- package/tests/unit/queue.test.ts +272 -0
- package/tests/unit/router.test.ts +138 -0
- package/tests/unit/security.test.ts +128 -0
- package/tests/unit/skill-invocations-workflow.test.ts +495 -0
- package/tests/unit/skill-registry.test.ts +94 -0
- package/tests/unit/skills/invocation-guard-ttl.test.ts +211 -0
- package/tests/unit/skills/official-skills-loader.test.ts +126 -0
- package/tests/unit/skills/registry-multiformat.test.ts +92 -0
- package/tests/unit/storage/sessions-aggregate.test.ts +435 -0
- package/tests/unit/storage/sqlite-refactor-harness.test.ts +314 -0
- package/tests/unit/storage.test.ts +172 -0
- package/tests/unit/token-usage.test.ts +144 -0
- package/tests/unit/type-guards.test.ts +201 -0
- package/tests/unit/utils/format.test.ts +189 -0
- package/tests/unit/utils/session.test.ts +89 -0
- package/tests/unit/utils/time.test.ts +112 -0
- package/tests/unit/web/routes-auth.test.ts +93 -0
- package/tests/unit/web/routes-events.test.ts +101 -0
- package/tests/unit/web/routes-sessions.test.ts +181 -0
- package/tests/unit/web/routes-skill-stats.test.ts +179 -0
- package/tests/unit/web/routes-stats.test.ts +92 -0
- package/tests/unit/web/routes-tasks.test.ts +351 -0
- package/tsconfig.json +22 -0
- package/vitest.config.ts +21 -0
- package/vitest.integration.config.ts +16 -0
- package/web/CLAUDE.md +20 -0
- package/web/index.html +13 -0
- package/web/package-lock.json +4854 -0
- package/web/package.json +35 -0
- package/web/postcss.config.js +6 -0
- package/web/src/App.tsx +110 -0
- package/web/src/components/CodeBlock.tsx +31 -0
- package/web/src/components/Confirm.tsx +96 -0
- package/web/src/components/Drawer.tsx +60 -0
- package/web/src/components/Layout.tsx +145 -0
- package/web/src/components/MarkdownRenderer.tsx +77 -0
- package/web/src/components/SearchInput.tsx +31 -0
- package/web/src/components/SessionDetailContent.tsx +157 -0
- package/web/src/components/Toast.tsx +92 -0
- package/web/src/index.css +19 -0
- package/web/src/main.tsx +31 -0
- package/web/src/pages/AIConfig.tsx +233 -0
- package/web/src/pages/Dashboard.tsx +572 -0
- package/web/src/pages/Events.tsx +271 -0
- package/web/src/pages/Reports.tsx +428 -0
- package/web/src/pages/SessionDetail.tsx +162 -0
- package/web/src/pages/Sessions.tsx +205 -0
- package/web/src/pages/Skills.tsx +180 -0
- package/web/src/pages/TaskDetail.tsx +511 -0
- package/web/src/pages/Tasks.tsx +150 -0
- package/web/src/utils/auth.ts +59 -0
- package/web/src/utils/export.ts +54 -0
- package/web/src/utils/time.ts +13 -0
- package/web/tailwind.config.js +11 -0
- package/web/tsconfig.json +21 -0
- package/web/tsconfig.node.json +10 -0
- package/web/vite.config.ts +76 -0
- package/winspan-claude-forge-8.43.0.tgz +0 -0
- package/dist/agents/definition.d.ts +0 -62
- package/dist/agents/definition.d.ts.map +0 -1
- package/dist/agents/definition.js +0 -27
- package/dist/agents/definition.js.map +0 -1
- package/dist/agents/distributor.d.ts +0 -23
- package/dist/agents/distributor.d.ts.map +0 -1
- package/dist/agents/distributor.js +0 -85
- package/dist/agents/distributor.js.map +0 -1
- package/dist/agents/index.d.ts +0 -5
- package/dist/agents/index.d.ts.map +0 -1
- package/dist/agents/index.js +0 -5
- package/dist/agents/index.js.map +0 -1
- package/dist/agents/methodologies/agent-builder.d.ts +0 -21
- package/dist/agents/methodologies/agent-builder.d.ts.map +0 -1
- package/dist/agents/methodologies/agent-builder.js +0 -124
- package/dist/agents/methodologies/agent-builder.js.map +0 -1
- package/dist/agents/methodologies/phases/bmad/analyze.d.ts +0 -3
- package/dist/agents/methodologies/phases/bmad/analyze.d.ts.map +0 -1
- package/dist/agents/methodologies/phases/bmad/analyze.js +0 -18
- package/dist/agents/methodologies/phases/bmad/analyze.js.map +0 -1
- package/dist/agents/methodologies/phases/bmad/design.d.ts +0 -3
- package/dist/agents/methodologies/phases/bmad/design.d.ts.map +0 -1
- package/dist/agents/methodologies/phases/bmad/design.js +0 -17
- package/dist/agents/methodologies/phases/bmad/design.js.map +0 -1
- package/dist/agents/methodologies/phases/bmad/implement.d.ts +0 -3
- package/dist/agents/methodologies/phases/bmad/implement.d.ts.map +0 -1
- package/dist/agents/methodologies/phases/bmad/implement.js +0 -16
- package/dist/agents/methodologies/phases/bmad/implement.js.map +0 -1
- package/dist/agents/methodologies/phases/bmad/index.d.ts +0 -6
- package/dist/agents/methodologies/phases/bmad/index.d.ts.map +0 -1
- package/dist/agents/methodologies/phases/bmad/index.js +0 -6
- package/dist/agents/methodologies/phases/bmad/index.js.map +0 -1
- package/dist/agents/methodologies/phases/bmad/review.d.ts +0 -3
- package/dist/agents/methodologies/phases/bmad/review.d.ts.map +0 -1
- package/dist/agents/methodologies/phases/bmad/review.js +0 -16
- package/dist/agents/methodologies/phases/bmad/review.js.map +0 -1
- package/dist/agents/methodologies/phases/bmad/test.d.ts +0 -3
- package/dist/agents/methodologies/phases/bmad/test.d.ts.map +0 -1
- package/dist/agents/methodologies/phases/bmad/test.js +0 -20
- package/dist/agents/methodologies/phases/bmad/test.js.map +0 -1
- package/dist/agents/methodologies/phases/harness/fix.d.ts +0 -3
- package/dist/agents/methodologies/phases/harness/fix.d.ts.map +0 -1
- package/dist/agents/methodologies/phases/harness/fix.js +0 -16
- package/dist/agents/methodologies/phases/harness/fix.js.map +0 -1
- package/dist/agents/methodologies/phases/harness/index.d.ts +0 -6
- package/dist/agents/methodologies/phases/harness/index.d.ts.map +0 -1
- package/dist/agents/methodologies/phases/harness/index.js +0 -6
- package/dist/agents/methodologies/phases/harness/index.js.map +0 -1
- package/dist/agents/methodologies/phases/harness/reproduce.d.ts +0 -3
- package/dist/agents/methodologies/phases/harness/reproduce.d.ts.map +0 -1
- package/dist/agents/methodologies/phases/harness/reproduce.js +0 -19
- package/dist/agents/methodologies/phases/harness/reproduce.js.map +0 -1
- package/dist/agents/methodologies/phases/harness/root-cause.d.ts +0 -3
- package/dist/agents/methodologies/phases/harness/root-cause.d.ts.map +0 -1
- package/dist/agents/methodologies/phases/harness/root-cause.js +0 -20
- package/dist/agents/methodologies/phases/harness/root-cause.js.map +0 -1
- package/dist/agents/methodologies/phases/harness/safety-net.d.ts +0 -3
- package/dist/agents/methodologies/phases/harness/safety-net.d.ts.map +0 -1
- package/dist/agents/methodologies/phases/harness/safety-net.js +0 -16
- package/dist/agents/methodologies/phases/harness/safety-net.js.map +0 -1
- package/dist/agents/methodologies/phases/harness/verify.d.ts +0 -3
- package/dist/agents/methodologies/phases/harness/verify.d.ts.map +0 -1
- package/dist/agents/methodologies/phases/harness/verify.js +0 -21
- package/dist/agents/methodologies/phases/harness/verify.js.map +0 -1
- package/dist/agents/methodologies/presets.d.ts +0 -10
- package/dist/agents/methodologies/presets.d.ts.map +0 -1
- package/dist/agents/methodologies/presets.js +0 -79
- package/dist/agents/methodologies/presets.js.map +0 -1
- package/dist/agents/methodologies/types.d.ts +0 -43
- package/dist/agents/methodologies/types.d.ts.map +0 -1
- package/dist/agents/methodologies/types.js +0 -10
- package/dist/agents/methodologies/types.js.map +0 -1
- package/dist/agents/methodologies/user-config-loader.d.ts +0 -30
- package/dist/agents/methodologies/user-config-loader.d.ts.map +0 -1
- package/dist/agents/methodologies/user-config-loader.js +0 -159
- package/dist/agents/methodologies/user-config-loader.js.map +0 -1
- package/dist/agents/official-agents.d.ts +0 -4
- package/dist/agents/official-agents.d.ts.map +0 -1
- package/dist/agents/official-agents.js +0 -559
- package/dist/agents/official-agents.js.map +0 -1
- package/dist/agents/registry.d.ts +0 -57
- package/dist/agents/registry.d.ts.map +0 -1
- package/dist/agents/registry.js +0 -271
- package/dist/agents/registry.js.map +0 -1
- package/dist/capability/index.d.ts +0 -10
- package/dist/capability/index.d.ts.map +0 -1
- package/dist/capability/index.js +0 -10
- package/dist/capability/index.js.map +0 -1
- package/dist/capability/types.d.ts +0 -10
- package/dist/capability/types.d.ts.map +0 -1
- package/dist/capability/types.js +0 -10
- package/dist/capability/types.js.map +0 -1
- package/dist/cli/commands/agents.d.ts +0 -3
- package/dist/cli/commands/agents.d.ts.map +0 -1
- package/dist/cli/commands/agents.js +0 -62
- package/dist/cli/commands/agents.js.map +0 -1
- package/dist/cli/commands/rules.d.ts +0 -8
- package/dist/cli/commands/rules.d.ts.map +0 -1
- package/dist/cli/commands/rules.js +0 -89
- package/dist/cli/commands/rules.js.map +0 -1
- package/dist/daemon/auto-disable-scheduler.d.ts +0 -53
- package/dist/daemon/auto-disable-scheduler.d.ts.map +0 -1
- package/dist/daemon/auto-disable-scheduler.js +0 -114
- package/dist/daemon/auto-disable-scheduler.js.map +0 -1
- package/dist/daemon/handlers/pre-tool-use.d.ts +0 -30
- package/dist/daemon/handlers/pre-tool-use.d.ts.map +0 -1
- package/dist/daemon/handlers/pre-tool-use.js +0 -173
- package/dist/daemon/handlers/pre-tool-use.js.map +0 -1
- package/dist/daemon/routing-observer.d.ts +0 -42
- package/dist/daemon/routing-observer.d.ts.map +0 -1
- package/dist/daemon/routing-observer.js +0 -264
- package/dist/daemon/routing-observer.js.map +0 -1
- package/dist/daemon/routing-state.d.ts +0 -63
- package/dist/daemon/routing-state.d.ts.map +0 -1
- package/dist/daemon/routing-state.js +0 -223
- package/dist/daemon/routing-state.js.map +0 -1
- package/dist/engine/agent-router.d.ts +0 -142
- package/dist/engine/agent-router.d.ts.map +0 -1
- package/dist/engine/agent-router.js +0 -276
- package/dist/engine/agent-router.js.map +0 -1
- package/dist/engine/context-builder.d.ts +0 -23
- package/dist/engine/context-builder.d.ts.map +0 -1
- package/dist/engine/context-builder.js +0 -63
- package/dist/engine/context-builder.js.map +0 -1
- package/dist/engine/conventions/basic-security.yaml +0 -109
- package/dist/engine/conventions/code-quality.yaml +0 -123
- package/dist/engine/conventions/database-safety.yaml +0 -74
- package/dist/engine/conventions/dependency-safety.yaml +0 -132
- package/dist/engine/conventions/docker-safety.yaml +0 -69
- package/dist/engine/conventions/git-safety.yaml +0 -118
- package/dist/engine/conventions/go-best-practices.yaml +0 -84
- package/dist/engine/conventions/python-best-practices.yaml +0 -96
- package/dist/engine/conventions/react-best-practices.yaml +0 -96
- package/dist/engine/conventions/routing.yaml +0 -378
- package/dist/engine/conventions/strict-security.yaml +0 -30
- package/dist/engine/conventions/ts-quality.yaml +0 -49
- package/dist/engine/dsl/compiler.d.ts +0 -34
- package/dist/engine/dsl/compiler.d.ts.map +0 -1
- package/dist/engine/dsl/compiler.js +0 -702
- package/dist/engine/dsl/compiler.js.map +0 -1
- package/dist/engine/dsl/parser.d.ts +0 -25
- package/dist/engine/dsl/parser.d.ts.map +0 -1
- package/dist/engine/dsl/parser.js +0 -208
- package/dist/engine/dsl/parser.js.map +0 -1
- package/dist/engine/dsl/runtime.d.ts +0 -46
- package/dist/engine/dsl/runtime.d.ts.map +0 -1
- package/dist/engine/dsl/runtime.js +0 -173
- package/dist/engine/dsl/runtime.js.map +0 -1
- package/dist/engine/dsl/types.d.ts +0 -139
- package/dist/engine/dsl/types.d.ts.map +0 -1
- package/dist/engine/dsl/types.js +0 -11
- package/dist/engine/dsl/types.js.map +0 -1
- package/dist/engine/evidence-store.d.ts +0 -44
- package/dist/engine/evidence-store.d.ts.map +0 -1
- package/dist/engine/evidence-store.js +0 -109
- package/dist/engine/evidence-store.js.map +0 -1
- package/dist/engine/experiment-router.d.ts +0 -102
- package/dist/engine/experiment-router.d.ts.map +0 -1
- package/dist/engine/experiment-router.js +0 -289
- package/dist/engine/experiment-router.js.map +0 -1
- package/dist/engine/recommender.d.ts +0 -52
- package/dist/engine/recommender.d.ts.map +0 -1
- package/dist/engine/recommender.js +0 -162
- package/dist/engine/recommender.js.map +0 -1
- package/dist/engine/rule-engine.d.ts +0 -33
- package/dist/engine/rule-engine.d.ts.map +0 -1
- package/dist/engine/rule-engine.js +0 -250
- package/dist/engine/rule-engine.js.map +0 -1
- package/dist/intelligence/classifier.d.ts +0 -75
- package/dist/intelligence/classifier.d.ts.map +0 -1
- package/dist/intelligence/classifier.js +0 -352
- package/dist/intelligence/classifier.js.map +0 -1
- package/dist/intelligence/context-gatherer.d.ts +0 -101
- package/dist/intelligence/context-gatherer.d.ts.map +0 -1
- package/dist/intelligence/context-gatherer.js +0 -417
- package/dist/intelligence/context-gatherer.js.map +0 -1
- package/dist/intelligence/cot-classifier.d.ts +0 -95
- package/dist/intelligence/cot-classifier.d.ts.map +0 -1
- package/dist/intelligence/cot-classifier.js +0 -391
- package/dist/intelligence/cot-classifier.js.map +0 -1
- package/dist/intelligence/distiller.d.ts +0 -22
- package/dist/intelligence/distiller.d.ts.map +0 -1
- package/dist/intelligence/distiller.js +0 -108
- package/dist/intelligence/distiller.js.map +0 -1
- package/dist/intelligence/execution-doc-builder.d.ts +0 -151
- package/dist/intelligence/execution-doc-builder.d.ts.map +0 -1
- package/dist/intelligence/execution-doc-builder.js +0 -1018
- package/dist/intelligence/execution-doc-builder.js.map +0 -1
- package/dist/intelligence/intent-types.d.ts +0 -13
- package/dist/intelligence/intent-types.d.ts.map +0 -1
- package/dist/intelligence/intent-types.js +0 -19
- package/dist/intelligence/intent-types.js.map +0 -1
- package/dist/intelligence/multimodal-parser.d.ts +0 -105
- package/dist/intelligence/multimodal-parser.d.ts.map +0 -1
- package/dist/intelligence/multimodal-parser.js +0 -425
- package/dist/intelligence/multimodal-parser.js.map +0 -1
- package/dist/intelligence/quality-gate.d.ts +0 -45
- package/dist/intelligence/quality-gate.d.ts.map +0 -1
- package/dist/intelligence/quality-gate.js +0 -193
- package/dist/intelligence/quality-gate.js.map +0 -1
- package/dist/intelligence/task-segmenter.d.ts.map +0 -1
- package/dist/intelligence/task-segmenter.js.map +0 -1
- package/dist/web/routes/agents.d.ts +0 -7
- package/dist/web/routes/agents.d.ts.map +0 -1
- package/dist/web/routes/agents.js +0 -209
- package/dist/web/routes/agents.js.map +0 -1
- package/dist/web/routes/execution-trace.d.ts +0 -21
- package/dist/web/routes/execution-trace.d.ts.map +0 -1
- package/dist/web/routes/execution-trace.js +0 -353
- package/dist/web/routes/execution-trace.js.map +0 -1
- package/dist/web/routes/experiments.d.ts +0 -15
- package/dist/web/routes/experiments.d.ts.map +0 -1
- package/dist/web/routes/experiments.js +0 -187
- package/dist/web/routes/experiments.js.map +0 -1
- package/dist/web/routes/routing.d.ts +0 -17
- package/dist/web/routes/routing.d.ts.map +0 -1
- package/dist/web/routes/routing.js +0 -592
- package/dist/web/routes/routing.js.map +0 -1
- package/dist/web/routes/workflows.d.ts +0 -19
- package/dist/web/routes/workflows.d.ts.map +0 -1
- package/dist/web/routes/workflows.js +0 -86
- package/dist/web/routes/workflows.js.map +0 -1
- package/dist/web/static/assets/AIConfig-R5wZ3ZKT.js +0 -2
- package/dist/web/static/assets/AIConfig-R5wZ3ZKT.js.map +0 -1
- package/dist/web/static/assets/Agents-Beg34V1g.js +0 -2
- package/dist/web/static/assets/Agents-Beg34V1g.js.map +0 -1
- package/dist/web/static/assets/CodeBlock--H53gk46.js +0 -2
- package/dist/web/static/assets/CodeBlock--H53gk46.js.map +0 -1
- package/dist/web/static/assets/Dashboard-Cy1xsj1J.js +0 -2
- package/dist/web/static/assets/Dashboard-Cy1xsj1J.js.map +0 -1
- package/dist/web/static/assets/Events-mFhXl4zI.js +0 -2
- package/dist/web/static/assets/Events-mFhXl4zI.js.map +0 -1
- package/dist/web/static/assets/ExecutionTrace-DG901hLR.js +0 -3
- package/dist/web/static/assets/ExecutionTrace-DG901hLR.js.map +0 -1
- package/dist/web/static/assets/MarkdownRenderer-CCIz1MOz.js +0 -2
- package/dist/web/static/assets/MarkdownRenderer-CCIz1MOz.js.map +0 -1
- package/dist/web/static/assets/Routing-B7BFLfjh.js +0 -2
- package/dist/web/static/assets/Routing-B7BFLfjh.js.map +0 -1
- package/dist/web/static/assets/SessionDetail-BT0l4RrK.js +0 -2
- package/dist/web/static/assets/SessionDetail-BT0l4RrK.js.map +0 -1
- package/dist/web/static/assets/Sessions-C6J_HQ_u.js +0 -2
- package/dist/web/static/assets/Sessions-C6J_HQ_u.js.map +0 -1
- package/dist/web/static/assets/Skills-4DQWLaTv.js +0 -2
- package/dist/web/static/assets/Skills-4DQWLaTv.js.map +0 -1
- package/dist/web/static/assets/WorkflowDetail-zhNqUkBE.js +0 -2
- package/dist/web/static/assets/WorkflowDetail-zhNqUkBE.js.map +0 -1
- package/dist/web/static/assets/Workflows-Btvi-lGw.js +0 -2
- package/dist/web/static/assets/Workflows-Btvi-lGw.js.map +0 -1
- package/dist/web/static/assets/export-BQQZLaHV.js +0 -4
- package/dist/web/static/assets/export-BQQZLaHV.js.map +0 -1
- package/dist/web/static/assets/index-Cgr9qMtq.js +0 -3
- package/dist/web/static/assets/index-Cgr9qMtq.js.map +0 -1
- package/dist/web/static/assets/index-CngWb5gC.css +0 -1
- package/dist/web/static/assets/lucide-53bR2rki.js.map +0 -1
package/CLAUDE.md.backup
ADDED
|
@@ -0,0 +1,488 @@
|
|
|
1
|
+
<!-- forge:claudemd-auto -->
|
|
2
|
+
# claude-forge 工作区规范
|
|
3
|
+
|
|
4
|
+
## Behavioral Rules (Always Enforced)
|
|
5
|
+
|
|
6
|
+
- Do what has been asked; nothing more, nothing less
|
|
7
|
+
- NEVER create files unless they're absolutely necessary for achieving your goal
|
|
8
|
+
- ALWAYS prefer editing an existing file to creating a new one
|
|
9
|
+
- NEVER proactively create documentation files (*.md) or README files unless explicitly requested
|
|
10
|
+
- ALWAYS read a file before editing it
|
|
11
|
+
- Never continuously check status after spawning a swarm — wait for results
|
|
12
|
+
|
|
13
|
+
### Two-Phase Workflow (Design-First for Non-Trivial Tasks)
|
|
14
|
+
|
|
15
|
+
**适用范围**:≥3 文件改动 / 新功能 / 重构 / 架构调整
|
|
16
|
+
|
|
17
|
+
#### Phase 1: Generate Spec (Mandatory)
|
|
18
|
+
|
|
19
|
+
1. **Spawn planner/researcher agent** with `run_in_background: true`
|
|
20
|
+
2. **Agent 任务**:
|
|
21
|
+
- 调研现有代码和架构
|
|
22
|
+
- 设计实现方案
|
|
23
|
+
- 将方案写入 `docs/design/[task]-spec-YYYYMMDD-HHMM.md`
|
|
24
|
+
- 包含:目标、改动文件清单、关键设计决策、风险点、测试策略
|
|
25
|
+
- **禁止写任何代码,只输出设计文档**
|
|
26
|
+
3. **主线程行为**:
|
|
27
|
+
- 告诉用户"已 spawn planner,等待 spec 生成"
|
|
28
|
+
- **然后结束响应,不做任何其他操作**
|
|
29
|
+
- 等待 agent 完成通知
|
|
30
|
+
|
|
31
|
+
#### Phase 1.5: User Review (Critical Gate)
|
|
32
|
+
|
|
33
|
+
Agent 完成后,**主线程必须停止并等待用户确认**:
|
|
34
|
+
|
|
35
|
+
```
|
|
36
|
+
设计方案已生成:docs/design/xxx-spec.md
|
|
37
|
+
|
|
38
|
+
请 review 后回复:
|
|
39
|
+
- "批准" / "approve" / "开始实现" → 我会 spawn coder 实现
|
|
40
|
+
- "修改 [具体意见]" → 我会让 planner 调整 spec
|
|
41
|
+
- "取消" / "cancel" → 停止任务
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
**绝对禁止**:
|
|
45
|
+
- ❌ 主线程自行判断 spec 质量并进入 Phase 2
|
|
46
|
+
- ❌ 主线程说"spec 看起来不错,我开始实现"
|
|
47
|
+
- ❌ 主线程直接 spawn coder 而不等用户确认
|
|
48
|
+
|
|
49
|
+
**只有收到用户明确的批准指令,才能进入 Phase 2。**
|
|
50
|
+
|
|
51
|
+
#### Phase 2: Implement per Spec
|
|
52
|
+
|
|
53
|
+
收到用户"批准"后:
|
|
54
|
+
|
|
55
|
+
1. Spawn coder agent with `run_in_background: true`
|
|
56
|
+
2. **Agent 任务**:
|
|
57
|
+
- 严格按 `docs/design/xxx-spec.md` 执行
|
|
58
|
+
- 不偏离 spec(如需调整,先更新 spec 并再次请求批准)
|
|
59
|
+
- 完成后写 `docs/implementation/[task]-changelog-YYYYMMDD-HHMM.md` 记录实际改动
|
|
60
|
+
3. **主线程行为**:
|
|
61
|
+
- 告诉用户"已 spawn coder,按 spec 实现"
|
|
62
|
+
- 等待 agent 完成通知
|
|
63
|
+
- 汇总结果
|
|
64
|
+
|
|
65
|
+
#### 例外:简单任务可跳过
|
|
66
|
+
|
|
67
|
+
以下情况可以跳过两阶段,直接实现:
|
|
68
|
+
- 单文件 1-2 行修改(typo 级别)
|
|
69
|
+
- 用户明确说"不需要 spec,直接做"
|
|
70
|
+
- 纯查询/调研任务(不涉及代码改动)
|
|
71
|
+
|
|
72
|
+
**其他所有情况必须走两阶段流程。**
|
|
73
|
+
|
|
74
|
+
### MANDATORY Agent Delegation Rule (NEVER SKIP)
|
|
75
|
+
|
|
76
|
+
#### 默认行为:spawn Agent,不是自己做
|
|
77
|
+
|
|
78
|
+
接到任务时,**第一反应是 spawn Agent**。"我自己做" 是需要主动决策并解释的例外,不是默认。
|
|
79
|
+
|
|
80
|
+
#### 激进策略:最大化 Agent 使用(提高效率)
|
|
81
|
+
|
|
82
|
+
**几乎所有任务都 spawn Agent**,包括查询、调研、代码阅读。主线程只做极简协调。
|
|
83
|
+
|
|
84
|
+
#### 不 spawn 的例外清单(仅这 4 条)
|
|
85
|
+
|
|
86
|
+
只有以下情况允许主线程直接处理:
|
|
87
|
+
|
|
88
|
+
1. **单行 typo**:1 个文件,1 行,纯拼写错误(如 `fucntion` → `function`)
|
|
89
|
+
2. **协调与汇总**:把多个 Agent 的结果整合给用户,或等待 Agent 完成通知
|
|
90
|
+
3. **元任务(meta-task)**:修改本规则文件本身、git commit/push、配置 daemon 等"工具的工具"操作
|
|
91
|
+
4. **即时问答**:用户问"现在几点"、"你是谁"、"帮助命令是什么"等不涉及代码/文件的纯对话
|
|
92
|
+
|
|
93
|
+
**以下情况必须 spawn Agent(不再是例外)**:
|
|
94
|
+
- ❌ ~~"查看文件内容"~~ → ✅ spawn Explore agent 并行搜索
|
|
95
|
+
- ❌ ~~"这个函数做什么"~~ → ✅ spawn doc-reviewer 深度分析
|
|
96
|
+
- ❌ ~~"找出 X 在哪"~~ → ✅ spawn Explore agent 定位
|
|
97
|
+
- ❌ ~~"单文件 3 行修改"~~ → ✅ spawn coder(除非是 1 行 typo)
|
|
98
|
+
- ❌ ~~"读取了解上下文"~~ → ✅ spawn researcher 系统化调研
|
|
99
|
+
|
|
100
|
+
#### 强制理由声明
|
|
101
|
+
|
|
102
|
+
**每次决定不 spawn 时,必须在响应开头用一句话说明理由**,格式:
|
|
103
|
+
|
|
104
|
+
> 不 spawn 理由:例外 #N [具体原因]
|
|
105
|
+
|
|
106
|
+
如果一句话写不出像样的理由 → 说明应该 spawn,立刻改正。
|
|
107
|
+
|
|
108
|
+
写理由的目的不是仪式感,而是**让"自己做"成为可见的决策**。决策可见,才能被纠正。
|
|
109
|
+
|
|
110
|
+
#### 触发关键词(强制 spawn)
|
|
111
|
+
|
|
112
|
+
只要用户的 prompt 出现以下**任意一个**词或类似意图,**直接 spawn**,不要犹豫:
|
|
113
|
+
|
|
114
|
+
**实现类**:
|
|
115
|
+
- 实现 / implement / 开发 / develop / 创建 / create / 添加 / add / 构建 / build
|
|
116
|
+
|
|
117
|
+
**修改类**:
|
|
118
|
+
- 修复 / fix / 调试 / debug / 改 / change / 更新 / update / 升级 / upgrade
|
|
119
|
+
|
|
120
|
+
**优化类**:
|
|
121
|
+
- 重构 / refactor / 优化 / optimize / 性能 / performance / 清理 / cleanup
|
|
122
|
+
|
|
123
|
+
**调研类**(新增,不再是例外):
|
|
124
|
+
- 调研 / research / 分析 / analyze / 查 / find / 找 / search / 看 / read / 列出 / list / 梳理 / review
|
|
125
|
+
|
|
126
|
+
**测试类**:
|
|
127
|
+
- 测试 / test / 验证 / verify / 检查 / check / 审查 / audit
|
|
128
|
+
|
|
129
|
+
#### 最小 Agent 模式
|
|
130
|
+
|
|
131
|
+
不需要每次都开完整 pipeline。简单任务用单个 Agent 就行:
|
|
132
|
+
|
|
133
|
+
```javascript
|
|
134
|
+
// 单个 Agent 即可
|
|
135
|
+
Agent({
|
|
136
|
+
description: "修复 X bug",
|
|
137
|
+
subagent_type: "coder",
|
|
138
|
+
prompt: "具体任务描述,包含文件路径和修改要求..."
|
|
139
|
+
})
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
复杂任务才 spawn 多个 Agent 或 pipeline(参考下方 Pipeline Templates)。
|
|
143
|
+
|
|
144
|
+
#### 自检流程(接到任务后必走)
|
|
145
|
+
|
|
146
|
+
1. 这是不是 5 条例外里的?→ 是 → 直接做(写出理由)
|
|
147
|
+
2. 不是 → spawn Agent。多文件改动 → 多个 Agent;调研 → researcher;测试 → tester;最不济单个 coder
|
|
148
|
+
|
|
149
|
+
**违规判定**:一次响应里执行了 Edit/Write 修改 ≥ 2 个文件 + 没写"不 spawn 理由"=违规。
|
|
150
|
+
|
|
151
|
+
## Concurrency: 1 MESSAGE = ALL RELATED OPERATIONS
|
|
152
|
+
|
|
153
|
+
- All operations MUST be concurrent/parallel in a single message
|
|
154
|
+
- Use Claude Code's Task tool for spawning agents, not just MCP
|
|
155
|
+
|
|
156
|
+
**Mandatory patterns:**
|
|
157
|
+
- ALWAYS batch ALL todos in ONE TodoWrite call (5-10+ minimum)
|
|
158
|
+
- ALWAYS spawn ALL agents in ONE message with full instructions via Task tool
|
|
159
|
+
- ALWAYS batch ALL file reads/writes/edits in ONE message
|
|
160
|
+
- ALWAYS batch ALL terminal operations in ONE Bash message
|
|
161
|
+
|
|
162
|
+
---
|
|
163
|
+
|
|
164
|
+
## Swarm Orchestration (AGGRESSIVE PARALLELISM)
|
|
165
|
+
|
|
166
|
+
**核心原则:成本不是考量因素,响应速度和覆盖面是唯一目标。**
|
|
167
|
+
|
|
168
|
+
- **默认开多个 Agent,不要节约** — 只要任务不是"单行修改/问候语",一律 spawn swarm
|
|
169
|
+
- **宁滥勿缺** — 拿不准就开 pipeline;多开一个 reviewer/tester 的边际成本 << 漏掉问题的代价
|
|
170
|
+
- **永远并行,不要串行** — 所有能并行的 Agent 在 ONE message 里同时 spawn
|
|
171
|
+
- **不要自己直接做复杂任务** — 主线程只负责协调,实现/调研/测试/审查全部委托
|
|
172
|
+
|
|
173
|
+
### Auto-Start Swarm Protocol
|
|
174
|
+
|
|
175
|
+
#### 不确定是否需要 Pipeline?调用 pipeline_suggest
|
|
176
|
+
|
|
177
|
+
如果你不确定当前任务是否需要启动 swarm pipeline,可以调用 MCP 工具 `pipeline_suggest` 获取建议:
|
|
178
|
+
|
|
179
|
+
```typescript
|
|
180
|
+
// 通过 MCP 调用(如果可用)
|
|
181
|
+
pipeline_suggest({
|
|
182
|
+
task_description: "修复用户登录时的 session 过期问题",
|
|
183
|
+
file_count: 5,
|
|
184
|
+
is_bug_fix: true
|
|
185
|
+
})
|
|
186
|
+
|
|
187
|
+
// 返回
|
|
188
|
+
{
|
|
189
|
+
should_invoke: true,
|
|
190
|
+
pipeline_type: "bug_fix",
|
|
191
|
+
pipeline_code: "Task({ subagent_type: 'researcher', name: 'investigator', ... })\n...",
|
|
192
|
+
reason: "Bug 修复任务建议使用 Pipeline(调查 → 修复 → 验证)"
|
|
193
|
+
}
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
**决策逻辑**:
|
|
197
|
+
- `file_count >= 3` OR `is_new_feature` OR `is_refactor` OR `is_bug_fix` OR `is_performance` → 建议使用 Pipeline
|
|
198
|
+
- 返回可直接复制的 Task 调用代码
|
|
199
|
+
|
|
200
|
+
**10 种内置模板**:
|
|
201
|
+
- Bug Fix:investigator → fixer → verifier(3 agents)
|
|
202
|
+
- Feature:analyst → designer → developer → tester → reviewer(5 agents)
|
|
203
|
+
- Refactor:safety-net → planner → refactorer → verifier(4 agents)
|
|
204
|
+
- Investigation:reproducer → analyst(2 agents)
|
|
205
|
+
- Performance:benchmarker → analyst → optimizer → verifier(4 agents)
|
|
206
|
+
- BMAD Feature:product-analyst → architect → developer → qa → reviewer(5 agents,完整产品开发)
|
|
207
|
+
- Harness Safe Refactor:safety-net → analyzer → planner → executor → validator(5 agents,先织安全网再动代码)
|
|
208
|
+
- Harness Debug:reproducer → tracer → root-cause → fixer → verifier(5 agents,系统化排查)
|
|
209
|
+
- Migration:impact-analyst + safety-net → planner → migrator → verifier(5 agents,技术迁移)
|
|
210
|
+
- Security Audit:threat-modeler → code-auditor → fixer → verifier(4 agents,安全审计)
|
|
211
|
+
|
|
212
|
+
---
|
|
213
|
+
|
|
214
|
+
When the user requests a complex task (multi-file changes, feature implementation, refactoring), **immediately execute this pattern in a SINGLE message:**
|
|
215
|
+
|
|
216
|
+
```javascript
|
|
217
|
+
// STEP 1: Spawn NAMED agents concurrently — all in ONE message
|
|
218
|
+
// Each agent knows WHO to message next in the pipeline
|
|
219
|
+
Task({
|
|
220
|
+
prompt: "Research requirements and codebase. SendMessage findings to 'architect' when done.",
|
|
221
|
+
subagent_type: "researcher", name: "researcher", run_in_background: true
|
|
222
|
+
})
|
|
223
|
+
Task({
|
|
224
|
+
prompt: "Wait for research from 'researcher'. Design implementation. SendMessage design to 'coder'.",
|
|
225
|
+
subagent_type: "planner", name: "architect", run_in_background: true
|
|
226
|
+
})
|
|
227
|
+
Task({
|
|
228
|
+
prompt: "Wait for design from 'architect'. Implement the solution. SendMessage code paths to 'tester'.",
|
|
229
|
+
subagent_type: "coder", name: "coder", run_in_background: true
|
|
230
|
+
})
|
|
231
|
+
Task({
|
|
232
|
+
prompt: "Wait for implementation from 'coder'. Write tests. SendMessage results to 'reviewer'.",
|
|
233
|
+
subagent_type: "tester", name: "tester", run_in_background: true
|
|
234
|
+
})
|
|
235
|
+
Task({
|
|
236
|
+
prompt: "Wait for test results from 'tester'. Review code quality and security. Report findings.",
|
|
237
|
+
subagent_type: "reviewer", name: "reviewer", run_in_background: true
|
|
238
|
+
})
|
|
239
|
+
|
|
240
|
+
// STEP 2: Kick off the pipeline
|
|
241
|
+
SendMessage({ to: "researcher", summary: "Start research", message: "[task description and context]" })
|
|
242
|
+
|
|
243
|
+
// Pipeline flow via SendMessage:
|
|
244
|
+
// researcher ──→ architect ──→ coder ──→ tester ──→ reviewer
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
### Agent Routing (Anti-Drift)
|
|
248
|
+
|
|
249
|
+
| Code | Task | Agents |
|
|
250
|
+
|------|------|--------|
|
|
251
|
+
| 1 | Bug Fix | researcher, coder, tester, reviewer |
|
|
252
|
+
| 3 | Feature | researcher, architect, coder, tester, reviewer |
|
|
253
|
+
| 5 | Refactor | researcher, architect, refactor-specialist, tester, reviewer |
|
|
254
|
+
| 7 | Performance | researcher, coder, tester, reviewer |
|
|
255
|
+
| 9 | Investigation | tester, researcher |
|
|
256
|
+
|
|
257
|
+
**All codes: hierarchical/specialized (anti-drift)**
|
|
258
|
+
|
|
259
|
+
### Task Complexity Detection
|
|
260
|
+
|
|
261
|
+
**ALWAYS INVOKE SWARM**(默认行为,不要犹豫):
|
|
262
|
+
- 任何涉及代码变更的任务
|
|
263
|
+
- 任何需要理解现有代码的任务
|
|
264
|
+
- 新功能实现(无论大小)
|
|
265
|
+
- Bug 修复(除 1-2 行 typo)
|
|
266
|
+
- 重构、性能优化、架构调整
|
|
267
|
+
- 调研、技术选型、方案对比
|
|
268
|
+
- 测试编写、代码审查
|
|
269
|
+
- 数据库变更、安全相关改动
|
|
270
|
+
|
|
271
|
+
**SKIP SWARM 仅限**:
|
|
272
|
+
- 单行 typo / 格式修正
|
|
273
|
+
- 纯粹的问答("这个函数做什么?")
|
|
274
|
+
- 查看文件内容(Read 即可)
|
|
275
|
+
|
|
276
|
+
当用户说"调研 X"、"实现 Y"、"修复 Z"时,**不要问"要不要用 swarm",直接开**。
|
|
277
|
+
|
|
278
|
+
### Parallel Research Pattern
|
|
279
|
+
|
|
280
|
+
调研类任务:**同时 spawn 多个 researcher 并行搜索不同方面**,而不是让一个 researcher 串行查。
|
|
281
|
+
|
|
282
|
+
```javascript
|
|
283
|
+
// 例:调研一个新框架
|
|
284
|
+
Task({ subagent_type: "researcher", name: "docs-reader", prompt: "Read official docs, report API surface", run_in_background: true })
|
|
285
|
+
Task({ subagent_type: "researcher", name: "code-explorer", prompt: "Find existing uses in codebase", run_in_background: true })
|
|
286
|
+
Task({ subagent_type: "researcher", name: "comparator", prompt: "Compare with alternatives", run_in_background: true })
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
### Phase 文档产出(强制)
|
|
290
|
+
|
|
291
|
+
每个 pipeline 阶段的 Agent 都 **MUST** 在项目 `docs/` 下生成对应阶段文档,作为可追溯的执行产物。
|
|
292
|
+
|
|
293
|
+
**目录约定(自动创建,不存在则 mkdir -p)**:
|
|
294
|
+
|
|
295
|
+
```
|
|
296
|
+
docs/
|
|
297
|
+
├── requirements/ # 需求阶段:需求分析、问题发现、范围定义、复现报告
|
|
298
|
+
├── design/ # 设计阶段:架构设计、详细设计、ADR
|
|
299
|
+
├── implementation/ # 编码阶段:改造点分析、详细执行计划、变更日志
|
|
300
|
+
├── testing/ # 测试阶段:测试报告、回归记录、性能基线
|
|
301
|
+
├── review/ # 审查阶段:代码审查、安全审计、根因分析
|
|
302
|
+
└── operations/ # 运维阶段:迁移手册、回滚预案
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
**命名规范**:`<phase-prefix>-<topic>-<yyyymmdd-hhmm>.md`,例如:
|
|
306
|
+
- `docs/requirements/feature-requirements-20260514-1430.md`
|
|
307
|
+
- `docs/design/feature-architecture-20260514-1500.md`
|
|
308
|
+
- `docs/implementation/feature-plan-20260514-1530.md`
|
|
309
|
+
- `docs/testing/feature-test-report-20260514-1700.md`
|
|
310
|
+
- `docs/review/feature-review-20260514-1730.md`
|
|
311
|
+
|
|
312
|
+
**强制规则**:
|
|
313
|
+
- Pipeline 中**每个 Agent 必须先写文档再做后续操作**(设计师先写架构再交给开发,开发先写计划再写代码)
|
|
314
|
+
- SendMessage 给下游时**必须包含文档路径**,下游 Agent 必须先 Read 该文档
|
|
315
|
+
- 文档要可独立阅读:包含上下文、决策、依据、产出,不依赖会话历史
|
|
316
|
+
- 每个 pipeline 模板(pipeline_suggest 工具返回的 Task 调用)已经内置了文档输出指令,**不要省略**
|
|
317
|
+
|
|
318
|
+
### Skill 方法论调用
|
|
319
|
+
|
|
320
|
+
当任务涉及特定领域时,**主动调用 MCP 工具 `skill_invoke` 获取方法论指导**:
|
|
321
|
+
|
|
322
|
+
```javascript
|
|
323
|
+
// 重构任务 → 获取 Harness 安全重构方法论
|
|
324
|
+
skill_invoke({ skill_id: "official-harness-legacy", reason: "需要安全重构指导" })
|
|
325
|
+
|
|
326
|
+
// 调试任务 → 获取系统化调试方法论
|
|
327
|
+
skill_invoke({ skill_id: "official-debug-methodology", reason: "需要调试方法论" })
|
|
328
|
+
|
|
329
|
+
// 性能优化 → 获取性能优化方法论
|
|
330
|
+
skill_invoke({ skill_id: "official-performance-optimization", reason: "需要性能优化指导" })
|
|
331
|
+
|
|
332
|
+
// 安全审计 → 获取安全加固方法论
|
|
333
|
+
skill_invoke({ skill_id: "official-security-hardening", reason: "需要安全审计指导" })
|
|
334
|
+
|
|
335
|
+
// 代码审查 → 获取审查方法论
|
|
336
|
+
skill_invoke({ skill_id: "official-code-review", reason: "需要代码审查指导" })
|
|
337
|
+
|
|
338
|
+
// 不确定用哪个 → 先列出所有可用 skill
|
|
339
|
+
skill_list({ keywords: ["debug"] })
|
|
340
|
+
```
|
|
341
|
+
|
|
342
|
+
**触发时机**:在 spawn swarm 之前或同时调用,将方法论内容传给对应的 Agent 作为指导。
|
|
343
|
+
|
|
344
|
+
## Swarm Configuration & Anti-Drift
|
|
345
|
+
|
|
346
|
+
### Anti-Drift Coding Swarm (PREFERRED DEFAULT)
|
|
347
|
+
|
|
348
|
+
- ALWAYS use hierarchical topology for coding swarms
|
|
349
|
+
- 不要为了"省 token"合并步骤 — 每个 Agent 都有独立的 context window,拆开更准确
|
|
350
|
+
- Use specialized strategy for clear role boundaries
|
|
351
|
+
- Keep task cycles short with verification gates
|
|
352
|
+
- Each agent MUST end with SendMessage to the next agent in the chain
|
|
353
|
+
- Do NOT implement code directly when a swarm is active — delegate to the coder step
|
|
354
|
+
- Do NOT collapse a multi-step swarm into a single Task call
|
|
355
|
+
|
|
356
|
+
## 项目概述
|
|
357
|
+
|
|
358
|
+
本仓库是 Claude Code 工程化工具集的研发工作区。源码分布在 `src/` 下的以下模块:
|
|
359
|
+
|
|
360
|
+
- `src/core/` — 核心基础设施:`types.ts`(`ForgeEvent`、`HookResult` 等跨层契约)、`config.ts`、`constants.ts`、`storage/`(SQLite + `schema.sql`)、`ai/`(ClaudeProvider)、`utils/`(logger / lru-cache / token-tracker / path 等)
|
|
361
|
+
- `src/engine/` — 规则与治理引擎:`dsl/`(types / parser / compiler / runtime)、`rule-engine.ts`、`context-builder.ts`、`evidence-store.ts`、`agent-router.ts`、`experiment-router.ts`、`recommender.ts`、`conventions/*.yaml`
|
|
362
|
+
- `src/capability/` — 方法论执行核心:`methodology-registry.ts`、`methodology-planner.ts`、`execution-manager.ts`、`executor/`(foreground / background / orchestrator / stream-parser / worker-auth-probe)、`methodologies/*.yaml`
|
|
363
|
+
- `src/daemon/` — 守护进程:`server.ts`、`router.ts`、`lifecycle.ts`、`event-parser.ts`、`idle-detector.ts`、`idle-trigger.ts`、`auto-disable-scheduler.ts`、`methodology-pending-queue.ts`、`routing-observer.ts`、`routing-state.ts`、`handlers/`(pre-tool-use / post-tool-use / user-prompt / stop / history-exporter / methodology-formatter)、`services/`(task-segmenter)
|
|
364
|
+
- `src/cli/` — CLI 入口与子命令:`init/` + `commands/`(claudemd / config / daemon / init / logs / menu / rules / skills / stats / status / template)
|
|
365
|
+
- `src/skills/` — Skill 注册与匹配(registry / matcher / semantic-matcher / official-skills)
|
|
366
|
+
- `src/claudemd/` — CLAUDE.md 生成与维护(tech-detector / claudemd-generator / convention-extractor / persona-manager / resume-manager)
|
|
367
|
+
- `src/templates/` — 项目模板(`*.yaml` + `template-manager.ts`)
|
|
368
|
+
- `src/hooks/` — Claude Code Hook shell 脚本(构建时复制到 `dist/hooks/`)
|
|
369
|
+
- `src/web/` — 嵌入式 Web 服务器(Express + 静态资源 + auth/ssrf 中间件)
|
|
370
|
+
- `web/` — Web 前端(React + TanStack Query + Vite)
|
|
371
|
+
|
|
372
|
+
## 技术栈
|
|
373
|
+
|
|
374
|
+
- 运行时:Node.js
|
|
375
|
+
- 语言:TypeScript(`strict: true`)
|
|
376
|
+
- 测试:Vitest
|
|
377
|
+
- 构建:`tsc`(后端)+ Vite(前端)
|
|
378
|
+
- 存储:SQLite(`better-sqlite3`)
|
|
379
|
+
- Web:Express(后端)+ React + TanStack Query(前端)
|
|
380
|
+
|
|
381
|
+
## 架构要点
|
|
382
|
+
|
|
383
|
+
- 架构以声明式治理为核心:Convention YAML + DSL 表达式驱动规则引擎,而非命令式编排
|
|
384
|
+
- `src/core/types.ts` 承载 `ForgeEvent`、`HookResult` 等跨层类型契约;`src/core/storage/sqlite.ts` 直接封装 SQL(文件头注释明确写了 `No repository pattern, no base class — just direct SQL in one file`),不要误以为存在 Repository 层
|
|
385
|
+
- `src/engine/dsl/` 由 types / parser / compiler / runtime 四件组成;规则模型、事件模型、DSL 类型的变更属于高影响改动,**类型契约先行**收敛后再动实现
|
|
386
|
+
- **决策分级:`block` / `confirm` / `warn` / `allow` 四档**(见 `src/engine/rule-engine.ts` 的 level 优先级定义)。`block` 级在 `pre-tool-use.ts` 中会硬阻断工具执行,不是"仅告知"。实际行为以 `rule-engine.ts` 为准
|
|
387
|
+
- `src/capability/` 是方法论执行核心:planner 负责编排 phase,executor 分前台/后台两条路径,orchestrator 负责推进。daemon **无法主动推送消息**,前台方法论的兜底路径是 Stop → pending 队列 → 下一次 UserPromptSubmit 消费
|
|
388
|
+
|
|
389
|
+
### 目录依赖约束
|
|
390
|
+
|
|
391
|
+
- `core` 不反向依赖业务层
|
|
392
|
+
- `engine` 可依赖 `core`
|
|
393
|
+
- `capability` 可依赖 `core`、`engine`
|
|
394
|
+
- `skills` / `templates` / `claudemd` 可依赖 `core`(必要时依赖 `engine`)
|
|
395
|
+
- `daemon` 可依赖 `core`、`engine`、`capability`、`skills`
|
|
396
|
+
- `cli` 是装配层:组合上述模块,不把规则/执行核心逻辑塞回命令实现
|
|
397
|
+
- `web` 作为服务壳:HTTP 路由只做参数收敛与响应序列化,不在路由里写业务逻辑
|
|
398
|
+
|
|
399
|
+
### 存储
|
|
400
|
+
|
|
401
|
+
- 单一运行时数据库:`~/.claude-forge/data.db`(由 `FORGE_PATHS.database()` 统一返回),存放 events / sessions / routing_events / methodology_executions / phase_executions / tasks / injections / decisions / token_usage 等
|
|
402
|
+
- Schema 通过 `src/core/storage/schema.sql` 初始化;增量迁移走 `runMigrations()`,使用幂等 `ALTER TABLE` + `PRAGMA table_info` 检测
|
|
403
|
+
- 索引见 `src/core/storage/performance-indexes.sql`
|
|
404
|
+
|
|
405
|
+
## 开发规范
|
|
406
|
+
|
|
407
|
+
### 构建与测试
|
|
408
|
+
|
|
409
|
+
```bash
|
|
410
|
+
# 类型检查
|
|
411
|
+
npx tsc --noEmit
|
|
412
|
+
|
|
413
|
+
# 后端构建
|
|
414
|
+
npx tsc
|
|
415
|
+
|
|
416
|
+
# 前端构建
|
|
417
|
+
cd web && npm run build
|
|
418
|
+
|
|
419
|
+
# 测试
|
|
420
|
+
npm run test
|
|
421
|
+
|
|
422
|
+
# 完整构建(含 hook 脚本拷贝)
|
|
423
|
+
npm run build
|
|
424
|
+
```
|
|
425
|
+
|
|
426
|
+
### Convention YAML 规范
|
|
427
|
+
|
|
428
|
+
- Convention 配置统一使用 YAML(见 `src/engine/conventions/*.yaml`)
|
|
429
|
+
- 每个 Convention 文件通常包含 `forbidden`(禁止规则)与 `escalation`(升级策略)段落
|
|
430
|
+
- 规则的 `when` 条件使用 DSL 表达式,由 `src/engine/dsl/parser.ts` + `compiler.ts` 处理
|
|
431
|
+
- 变更后需运行项目测试或对应 demo 脚本验证加载与解析
|
|
432
|
+
|
|
433
|
+
### 边界层类型收敛
|
|
434
|
+
|
|
435
|
+
- `src/daemon/handlers/`、`src/web/` 路由、`src/hooks/` 监听器禁止未经收敛直接访问深层字段
|
|
436
|
+
- 处理动态数据时优先使用显式类型守卫、局部变量收窄或小范围断言
|
|
437
|
+
- 不得把 `any` 或未收窄的 `unknown` 扩散到 `engine`、`core` 等核心层
|
|
438
|
+
|
|
439
|
+
### 守护进程事件推送
|
|
440
|
+
|
|
441
|
+
- SSE 推送按需触发,不要在高频事件上无条件推送完整快照
|
|
442
|
+
- 会话结束、进程启动、异常恢复路径都要检查过期任务与残留索引
|
|
443
|
+
- daemon 不能主动向 Claude 主会话推送消息;跨轮传递必须走 pending 队列 + 下一次 Hook 事件消费
|
|
444
|
+
|
|
445
|
+
### 注意
|
|
446
|
+
|
|
447
|
+
- 用户的全局 `~/.claude/CLAUDE.md` 里有一段 "Pipeline 模块架构约定(claude-forge)",列出 `src/pipeline/` 下六个文件(`completion-gate.ts`、`completion-detector.ts`、`artifact-validator.ts`、`dynamic-node-executor.ts`、`dynamic-pipeline-repository.ts`、`pipeline/index.ts`)。**这些文件在当前代码库中不存在**,属于未落地规划。请忽略该段约束,以本项目 CLAUDE.md 为准。
|
|
448
|
+
<!-- forge:end-claudemd-auto -->
|
|
449
|
+
|
|
450
|
+
<!-- forge:convention-start:custom-claude-forge -->
|
|
451
|
+
## 项目规范约束:claude-forge 综合规范 (v1.2.0)
|
|
452
|
+
|
|
453
|
+
### 来自 Harness Engineering 安全重构规范
|
|
454
|
+
|
|
455
|
+
**核心理念:先织安全网,再动代码**
|
|
456
|
+
|
|
457
|
+
**TypeScript 专项原则**
|
|
458
|
+
|
|
459
|
+
- 严格启用 `strict: true`,禁止 `any`
|
|
460
|
+
- 模块边界用 `interface`,内部用 `type`
|
|
461
|
+
- 统一 `async/await`,禁止混用 Promise 链
|
|
462
|
+
- 错误处理必须显式,不得静默吞异常
|
|
463
|
+
- 禁止硬编码敏感信息
|
|
464
|
+
|
|
465
|
+
## 架构决策记录
|
|
466
|
+
|
|
467
|
+
_架构决策将在此记录_
|
|
468
|
+
|
|
469
|
+
<!-- forge:convention-end:custom-claude-forge -->
|
|
470
|
+
|
|
471
|
+
<!-- forge:resume-begin:99112f2d-5b13-46f9-b39c-44429ea99302 -->
|
|
472
|
+
```forge-resume-body
|
|
473
|
+
## 上次工作续接
|
|
474
|
+
|
|
475
|
+
⚠️ **IMPORTANT: 在开始新任务前,请先检查以下上下文**
|
|
476
|
+
|
|
477
|
+
**上次在做**:
|
|
478
|
+
- 当前的claude.md看起来很长,这个会不会导致理解或者指令偏差呢?
|
|
479
|
+
|
|
480
|
+
**上次活跃**: 刚刚
|
|
481
|
+
|
|
482
|
+
**会话行为**: 工具调用 5194 次 | Agent 委托 108 次 (Explore, coder, feature-developer) | Skill 调用 11 次
|
|
483
|
+
|
|
484
|
+
_生成时间: 2026-05-15T07:10:05.173Z_
|
|
485
|
+
```
|
|
486
|
+
|
|
487
|
+
_生成时间: 2026-05-15T07:10:05.203Z_
|
|
488
|
+
<!-- forge:resume-end:99112f2d-5b13-46f9-b39c-44429ea99302 -->
|