@winspan/claude-forge 0.1.1
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/LICENSE +21 -0
- package/README.md +505 -0
- package/dist/autopilot/index.d.ts +4 -0
- package/dist/autopilot/index.d.ts.map +1 -0
- package/dist/autopilot/index.js +4 -0
- package/dist/autopilot/index.js.map +1 -0
- package/dist/autopilot/intent-engine.d.ts +60 -0
- package/dist/autopilot/intent-engine.d.ts.map +1 -0
- package/dist/autopilot/intent-engine.js +308 -0
- package/dist/autopilot/intent-engine.js.map +1 -0
- package/dist/autopilot/knowledge-engine.d.ts +67 -0
- package/dist/autopilot/knowledge-engine.d.ts.map +1 -0
- package/dist/autopilot/knowledge-engine.js +262 -0
- package/dist/autopilot/knowledge-engine.js.map +1 -0
- package/dist/autopilot/quality-gate.d.ts +69 -0
- package/dist/autopilot/quality-gate.d.ts.map +1 -0
- package/dist/autopilot/quality-gate.js +244 -0
- package/dist/autopilot/quality-gate.js.map +1 -0
- package/dist/autopilot/team-orchestrator.d.ts +16 -0
- package/dist/autopilot/team-orchestrator.d.ts.map +1 -0
- package/dist/autopilot/team-orchestrator.js +56 -0
- package/dist/autopilot/team-orchestrator.js.map +1 -0
- package/dist/backup/index.d.ts +16 -0
- package/dist/backup/index.d.ts.map +1 -0
- package/dist/backup/index.js +169 -0
- package/dist/backup/index.js.map +1 -0
- package/dist/claudemd/detector.d.ts +54 -0
- package/dist/claudemd/detector.d.ts.map +1 -0
- package/dist/claudemd/detector.js +510 -0
- package/dist/claudemd/detector.js.map +1 -0
- package/dist/claudemd/index.d.ts +44 -0
- package/dist/claudemd/index.d.ts.map +1 -0
- package/dist/claudemd/index.js +193 -0
- package/dist/claudemd/index.js.map +1 -0
- package/dist/claudemd/modules-config.d.ts +37 -0
- package/dist/claudemd/modules-config.d.ts.map +1 -0
- package/dist/claudemd/modules-config.js +80 -0
- package/dist/claudemd/modules-config.js.map +1 -0
- package/dist/claudemd/prompt-injector.d.ts +29 -0
- package/dist/claudemd/prompt-injector.d.ts.map +1 -0
- package/dist/claudemd/prompt-injector.js +144 -0
- package/dist/claudemd/prompt-injector.js.map +1 -0
- package/dist/claudemd/prompts.d.ts +16 -0
- package/dist/claudemd/prompts.d.ts.map +1 -0
- package/dist/claudemd/prompts.js +439 -0
- package/dist/claudemd/prompts.js.map +1 -0
- package/dist/claudemd/writer.d.ts +27 -0
- package/dist/claudemd/writer.d.ts.map +1 -0
- package/dist/claudemd/writer.js +91 -0
- package/dist/claudemd/writer.js.map +1 -0
- package/dist/cli/commands/backup.d.ts +3 -0
- package/dist/cli/commands/backup.d.ts.map +1 -0
- package/dist/cli/commands/backup.js +63 -0
- package/dist/cli/commands/backup.js.map +1 -0
- package/dist/cli/commands/claudemd.d.ts +3 -0
- package/dist/cli/commands/claudemd.d.ts.map +1 -0
- package/dist/cli/commands/claudemd.js +322 -0
- package/dist/cli/commands/claudemd.js.map +1 -0
- package/dist/cli/commands/config.d.ts +3 -0
- package/dist/cli/commands/config.d.ts.map +1 -0
- package/dist/cli/commands/config.js +67 -0
- package/dist/cli/commands/config.js.map +1 -0
- package/dist/cli/commands/console.d.ts +3 -0
- package/dist/cli/commands/console.d.ts.map +1 -0
- package/dist/cli/commands/console.js +11 -0
- package/dist/cli/commands/console.js.map +1 -0
- package/dist/cli/commands/convention.d.ts +3 -0
- package/dist/cli/commands/convention.d.ts.map +1 -0
- package/dist/cli/commands/convention.js +269 -0
- package/dist/cli/commands/convention.js.map +1 -0
- package/dist/cli/commands/daemon.d.ts +3 -0
- package/dist/cli/commands/daemon.d.ts.map +1 -0
- package/dist/cli/commands/daemon.js +191 -0
- package/dist/cli/commands/daemon.js.map +1 -0
- package/dist/cli/commands/distill.d.ts +3 -0
- package/dist/cli/commands/distill.d.ts.map +1 -0
- package/dist/cli/commands/distill.js +61 -0
- package/dist/cli/commands/distill.js.map +1 -0
- package/dist/cli/commands/init.d.ts +3 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +306 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/logs.d.ts +3 -0
- package/dist/cli/commands/logs.d.ts.map +1 -0
- package/dist/cli/commands/logs.js +311 -0
- package/dist/cli/commands/logs.js.map +1 -0
- package/dist/cli/commands/pattern.d.ts +3 -0
- package/dist/cli/commands/pattern.d.ts.map +1 -0
- package/dist/cli/commands/pattern.js +118 -0
- package/dist/cli/commands/pattern.js.map +1 -0
- package/dist/cli/commands/pipeline.d.ts +3 -0
- package/dist/cli/commands/pipeline.d.ts.map +1 -0
- package/dist/cli/commands/pipeline.js +75 -0
- package/dist/cli/commands/pipeline.js.map +1 -0
- package/dist/cli/commands/profile.d.ts +3 -0
- package/dist/cli/commands/profile.d.ts.map +1 -0
- package/dist/cli/commands/profile.js +213 -0
- package/dist/cli/commands/profile.js.map +1 -0
- package/dist/cli/commands/query.d.ts +3 -0
- package/dist/cli/commands/query.d.ts.map +1 -0
- package/dist/cli/commands/query.js +115 -0
- package/dist/cli/commands/query.js.map +1 -0
- package/dist/cli/commands/skill.d.ts +3 -0
- package/dist/cli/commands/skill.d.ts.map +1 -0
- package/dist/cli/commands/skill.js +466 -0
- package/dist/cli/commands/skill.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +49 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/interceptor.d.ts +5 -0
- package/dist/cli/interceptor.d.ts.map +1 -0
- package/dist/cli/interceptor.js +55 -0
- package/dist/cli/interceptor.js.map +1 -0
- package/dist/cli/tui.d.ts +2 -0
- package/dist/cli/tui.d.ts.map +1 -0
- package/dist/cli/tui.js +360 -0
- package/dist/cli/tui.js.map +1 -0
- package/dist/cli/utils/errors.d.ts +17 -0
- package/dist/cli/utils/errors.d.ts.map +1 -0
- package/dist/cli/utils/errors.js +42 -0
- package/dist/cli/utils/errors.js.map +1 -0
- package/dist/cli/utils/output.d.ts +23 -0
- package/dist/cli/utils/output.d.ts.map +1 -0
- package/dist/cli/utils/output.js +69 -0
- package/dist/cli/utils/output.js.map +1 -0
- package/dist/config/defaults.d.ts +3 -0
- package/dist/config/defaults.d.ts.map +1 -0
- package/dist/config/defaults.js +50 -0
- package/dist/config/defaults.js.map +1 -0
- package/dist/config/index.d.ts +26 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +161 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/schema.d.ts +59 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/config/schema.js +86 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/convention/convention-distiller.d.ts +28 -0
- package/dist/convention/convention-distiller.d.ts.map +1 -0
- package/dist/convention/convention-distiller.js +172 -0
- package/dist/convention/convention-distiller.js.map +1 -0
- package/dist/convention/convention-evolver.d.ts +31 -0
- package/dist/convention/convention-evolver.d.ts.map +1 -0
- package/dist/convention/convention-evolver.js +175 -0
- package/dist/convention/convention-evolver.js.map +1 -0
- package/dist/convention/convention-loader.d.ts +22 -0
- package/dist/convention/convention-loader.d.ts.map +1 -0
- package/dist/convention/convention-loader.js +139 -0
- package/dist/convention/convention-loader.js.map +1 -0
- package/dist/convention/convention-manager.d.ts +46 -0
- package/dist/convention/convention-manager.d.ts.map +1 -0
- package/dist/convention/convention-manager.js +193 -0
- package/dist/convention/convention-manager.js.map +1 -0
- package/dist/convention/index.d.ts +6 -0
- package/dist/convention/index.d.ts.map +1 -0
- package/dist/convention/index.js +5 -0
- package/dist/convention/index.js.map +1 -0
- package/dist/convention/types.d.ts +90 -0
- package/dist/convention/types.d.ts.map +1 -0
- package/dist/convention/types.js +13 -0
- package/dist/convention/types.js.map +1 -0
- package/dist/daemon/engine-registry/init-autopilot.d.ts +12 -0
- package/dist/daemon/engine-registry/init-autopilot.d.ts.map +1 -0
- package/dist/daemon/engine-registry/init-autopilot.js +20 -0
- package/dist/daemon/engine-registry/init-autopilot.js.map +1 -0
- package/dist/daemon/engine-registry/init-distill.d.ts +6 -0
- package/dist/daemon/engine-registry/init-distill.d.ts.map +1 -0
- package/dist/daemon/engine-registry/init-distill.js +25 -0
- package/dist/daemon/engine-registry/init-distill.js.map +1 -0
- package/dist/daemon/engine-registry/init-orchestration.d.ts +5 -0
- package/dist/daemon/engine-registry/init-orchestration.d.ts.map +1 -0
- package/dist/daemon/engine-registry/init-orchestration.js +11 -0
- package/dist/daemon/engine-registry/init-orchestration.js.map +1 -0
- package/dist/daemon/engine-registry/init-pattern-engine.d.ts +9 -0
- package/dist/daemon/engine-registry/init-pattern-engine.d.ts.map +1 -0
- package/dist/daemon/engine-registry/init-pattern-engine.js +22 -0
- package/dist/daemon/engine-registry/init-pattern-engine.js.map +1 -0
- package/dist/daemon/engine-registry/init-pipeline.d.ts +5 -0
- package/dist/daemon/engine-registry/init-pipeline.d.ts.map +1 -0
- package/dist/daemon/engine-registry/init-pipeline.js +12 -0
- package/dist/daemon/engine-registry/init-pipeline.js.map +1 -0
- package/dist/daemon/engine-registry/init-profile.d.ts +3 -0
- package/dist/daemon/engine-registry/init-profile.d.ts.map +1 -0
- package/dist/daemon/engine-registry/init-profile.js +28 -0
- package/dist/daemon/engine-registry/init-profile.js.map +1 -0
- package/dist/daemon/engine-registry/init-resume.d.ts +6 -0
- package/dist/daemon/engine-registry/init-resume.d.ts.map +1 -0
- package/dist/daemon/engine-registry/init-resume.js +16 -0
- package/dist/daemon/engine-registry/init-resume.js.map +1 -0
- package/dist/daemon/engine-registry/init-skill-registry.d.ts +10 -0
- package/dist/daemon/engine-registry/init-skill-registry.d.ts.map +1 -0
- package/dist/daemon/engine-registry/init-skill-registry.js +46 -0
- package/dist/daemon/engine-registry/init-skill-registry.js.map +1 -0
- package/dist/daemon/engine-registry.d.ts +13 -0
- package/dist/daemon/engine-registry.d.ts.map +1 -0
- package/dist/daemon/engine-registry.js +45 -0
- package/dist/daemon/engine-registry.js.map +1 -0
- package/dist/daemon/event-parser.d.ts +5 -0
- package/dist/daemon/event-parser.d.ts.map +1 -0
- package/dist/daemon/event-parser.js +29 -0
- package/dist/daemon/event-parser.js.map +1 -0
- package/dist/daemon/handler-context.d.ts +37 -0
- package/dist/daemon/handler-context.d.ts.map +1 -0
- package/dist/daemon/handler-context.js +2 -0
- package/dist/daemon/handler-context.js.map +1 -0
- package/dist/daemon/handlers/base-handler.d.ts +14 -0
- package/dist/daemon/handlers/base-handler.d.ts.map +1 -0
- package/dist/daemon/handlers/base-handler.js +18 -0
- package/dist/daemon/handlers/base-handler.js.map +1 -0
- package/dist/daemon/handlers/conversational-config-handler.d.ts +24 -0
- package/dist/daemon/handlers/conversational-config-handler.d.ts.map +1 -0
- package/dist/daemon/handlers/conversational-config-handler.js +175 -0
- package/dist/daemon/handlers/conversational-config-handler.js.map +1 -0
- package/dist/daemon/handlers/post-tool-use-handler.d.ts +9 -0
- package/dist/daemon/handlers/post-tool-use-handler.d.ts.map +1 -0
- package/dist/daemon/handlers/post-tool-use-handler.js +82 -0
- package/dist/daemon/handlers/post-tool-use-handler.js.map +1 -0
- package/dist/daemon/handlers/pre-tool-use-handler.d.ts +11 -0
- package/dist/daemon/handlers/pre-tool-use-handler.d.ts.map +1 -0
- package/dist/daemon/handlers/pre-tool-use-handler.js +58 -0
- package/dist/daemon/handlers/pre-tool-use-handler.js.map +1 -0
- package/dist/daemon/handlers/stop-handler.d.ts +11 -0
- package/dist/daemon/handlers/stop-handler.d.ts.map +1 -0
- package/dist/daemon/handlers/stop-handler.js +112 -0
- package/dist/daemon/handlers/stop-handler.js.map +1 -0
- package/dist/daemon/handlers/user-prompt-handler.d.ts +72 -0
- package/dist/daemon/handlers/user-prompt-handler.d.ts.map +1 -0
- package/dist/daemon/handlers/user-prompt-handler.js +374 -0
- package/dist/daemon/handlers/user-prompt-handler.js.map +1 -0
- package/dist/daemon/index.d.ts +2 -0
- package/dist/daemon/index.d.ts.map +1 -0
- package/dist/daemon/index.js +284 -0
- package/dist/daemon/index.js.map +1 -0
- package/dist/daemon/lifecycle.d.ts +9 -0
- package/dist/daemon/lifecycle.d.ts.map +1 -0
- package/dist/daemon/lifecycle.js +56 -0
- package/dist/daemon/lifecycle.js.map +1 -0
- package/dist/daemon/server.d.ts +22 -0
- package/dist/daemon/server.d.ts.map +1 -0
- package/dist/daemon/server.js +139 -0
- package/dist/daemon/server.js.map +1 -0
- package/dist/distill/index.d.ts +16 -0
- package/dist/distill/index.d.ts.map +1 -0
- package/dist/distill/index.js +104 -0
- package/dist/distill/index.js.map +1 -0
- package/dist/distill/prompts.d.ts +6 -0
- package/dist/distill/prompts.d.ts.map +1 -0
- package/dist/distill/prompts.js +77 -0
- package/dist/distill/prompts.js.map +1 -0
- package/dist/distill/trigger.d.ts +40 -0
- package/dist/distill/trigger.d.ts.map +1 -0
- package/dist/distill/trigger.js +127 -0
- package/dist/distill/trigger.js.map +1 -0
- package/dist/distill/writer.d.ts +15 -0
- package/dist/distill/writer.d.ts.map +1 -0
- package/dist/distill/writer.js +73 -0
- package/dist/distill/writer.js.map +1 -0
- package/dist/doc-sync/index.d.ts +21 -0
- package/dist/doc-sync/index.d.ts.map +1 -0
- package/dist/doc-sync/index.js +190 -0
- package/dist/doc-sync/index.js.map +1 -0
- package/dist/hooks/check-context-limit.sh +97 -0
- package/dist/hooks/hooks/check-context-limit.sh +97 -0
- package/dist/hooks/hooks/notification.sh +33 -0
- package/dist/hooks/hooks/post-tool-use.sh +49 -0
- package/dist/hooks/hooks/pre-tool-use.sh +55 -0
- package/dist/hooks/hooks/stop.sh +29 -0
- package/dist/hooks/hooks/user-prompt-submit.sh +72 -0
- package/dist/hooks/notification.sh +33 -0
- package/dist/hooks/post-tool-use.sh +49 -0
- package/dist/hooks/pre-tool-use.sh +55 -0
- package/dist/hooks/stop.sh +29 -0
- package/dist/hooks/user-prompt-submit.sh +72 -0
- package/dist/orchestration/index.d.ts +32 -0
- package/dist/orchestration/index.d.ts.map +1 -0
- package/dist/orchestration/index.js +72 -0
- package/dist/orchestration/index.js.map +1 -0
- package/dist/orchestration/notifier.d.ts +11 -0
- package/dist/orchestration/notifier.d.ts.map +1 -0
- package/dist/orchestration/notifier.js +22 -0
- package/dist/orchestration/notifier.js.map +1 -0
- package/dist/orchestration/policy-engine.d.ts +21 -0
- package/dist/orchestration/policy-engine.d.ts.map +1 -0
- package/dist/orchestration/policy-engine.js +77 -0
- package/dist/orchestration/policy-engine.js.map +1 -0
- package/dist/orchestration/tracker.d.ts +45 -0
- package/dist/orchestration/tracker.d.ts.map +1 -0
- package/dist/orchestration/tracker.js +95 -0
- package/dist/orchestration/tracker.js.map +1 -0
- package/dist/pattern-engine/execution-tracker.d.ts +45 -0
- package/dist/pattern-engine/execution-tracker.d.ts.map +1 -0
- package/dist/pattern-engine/execution-tracker.js +132 -0
- package/dist/pattern-engine/execution-tracker.js.map +1 -0
- package/dist/pattern-engine/index.d.ts +52 -0
- package/dist/pattern-engine/index.d.ts.map +1 -0
- package/dist/pattern-engine/index.js +104 -0
- package/dist/pattern-engine/index.js.map +1 -0
- package/dist/pattern-engine/pattern-evolver.d.ts +39 -0
- package/dist/pattern-engine/pattern-evolver.d.ts.map +1 -0
- package/dist/pattern-engine/pattern-evolver.js +170 -0
- package/dist/pattern-engine/pattern-evolver.js.map +1 -0
- package/dist/pattern-engine/pattern-executor.d.ts +43 -0
- package/dist/pattern-engine/pattern-executor.d.ts.map +1 -0
- package/dist/pattern-engine/pattern-executor.js +185 -0
- package/dist/pattern-engine/pattern-executor.js.map +1 -0
- package/dist/pattern-engine/pattern-loader.d.ts +14 -0
- package/dist/pattern-engine/pattern-loader.d.ts.map +1 -0
- package/dist/pattern-engine/pattern-loader.js +111 -0
- package/dist/pattern-engine/pattern-loader.js.map +1 -0
- package/dist/pattern-engine/pattern-router.d.ts +24 -0
- package/dist/pattern-engine/pattern-router.d.ts.map +1 -0
- package/dist/pattern-engine/pattern-router.js +124 -0
- package/dist/pattern-engine/pattern-router.js.map +1 -0
- package/dist/pattern-engine/types.d.ts +144 -0
- package/dist/pattern-engine/types.d.ts.map +1 -0
- package/dist/pattern-engine/types.js +8 -0
- package/dist/pattern-engine/types.js.map +1 -0
- package/dist/pipeline/analyzer.d.ts +17 -0
- package/dist/pipeline/analyzer.d.ts.map +1 -0
- package/dist/pipeline/analyzer.js +103 -0
- package/dist/pipeline/analyzer.js.map +1 -0
- package/dist/pipeline/index.d.ts +68 -0
- package/dist/pipeline/index.d.ts.map +1 -0
- package/dist/pipeline/index.js +183 -0
- package/dist/pipeline/index.js.map +1 -0
- package/dist/pipeline/phase-manager.d.ts +32 -0
- package/dist/pipeline/phase-manager.d.ts.map +1 -0
- package/dist/pipeline/phase-manager.js +188 -0
- package/dist/pipeline/phase-manager.js.map +1 -0
- package/dist/pipeline/pipeline-options.d.ts +19 -0
- package/dist/pipeline/pipeline-options.d.ts.map +1 -0
- package/dist/pipeline/pipeline-options.js +136 -0
- package/dist/pipeline/pipeline-options.js.map +1 -0
- package/dist/pipeline/store.d.ts +32 -0
- package/dist/pipeline/store.d.ts.map +1 -0
- package/dist/pipeline/store.js +113 -0
- package/dist/pipeline/store.js.map +1 -0
- package/dist/pipeline/types.d.ts +25 -0
- package/dist/pipeline/types.d.ts.map +1 -0
- package/dist/pipeline/types.js +16 -0
- package/dist/pipeline/types.js.map +1 -0
- package/dist/profile/index.d.ts +77 -0
- package/dist/profile/index.d.ts.map +1 -0
- package/dist/profile/index.js +407 -0
- package/dist/profile/index.js.map +1 -0
- package/dist/resume/context-gen.d.ts +20 -0
- package/dist/resume/context-gen.d.ts.map +1 -0
- package/dist/resume/context-gen.js +130 -0
- package/dist/resume/context-gen.js.map +1 -0
- package/dist/resume/index.d.ts +32 -0
- package/dist/resume/index.d.ts.map +1 -0
- package/dist/resume/index.js +142 -0
- package/dist/resume/index.js.map +1 -0
- package/dist/resume/state-machine.d.ts +21 -0
- package/dist/resume/state-machine.d.ts.map +1 -0
- package/dist/resume/state-machine.js +58 -0
- package/dist/resume/state-machine.js.map +1 -0
- package/dist/skill-registry/collector.d.ts +75 -0
- package/dist/skill-registry/collector.d.ts.map +1 -0
- package/dist/skill-registry/collector.js +334 -0
- package/dist/skill-registry/collector.js.map +1 -0
- package/dist/skill-registry/evolver.d.ts +84 -0
- package/dist/skill-registry/evolver.d.ts.map +1 -0
- package/dist/skill-registry/evolver.js +585 -0
- package/dist/skill-registry/evolver.js.map +1 -0
- package/dist/skill-registry/index.d.ts +73 -0
- package/dist/skill-registry/index.d.ts.map +1 -0
- package/dist/skill-registry/index.js +195 -0
- package/dist/skill-registry/index.js.map +1 -0
- package/dist/skill-registry/official-sync.d.ts +20 -0
- package/dist/skill-registry/official-sync.d.ts.map +1 -0
- package/dist/skill-registry/official-sync.js +576 -0
- package/dist/skill-registry/official-sync.js.map +1 -0
- package/dist/skill-registry/orchestration-config.d.ts +35 -0
- package/dist/skill-registry/orchestration-config.d.ts.map +1 -0
- package/dist/skill-registry/orchestration-config.js +125 -0
- package/dist/skill-registry/orchestration-config.js.map +1 -0
- package/dist/skill-registry/orchestrator.d.ts +45 -0
- package/dist/skill-registry/orchestrator.d.ts.map +1 -0
- package/dist/skill-registry/orchestrator.js +183 -0
- package/dist/skill-registry/orchestrator.js.map +1 -0
- package/dist/skill-registry/project-learner.d.ts +25 -0
- package/dist/skill-registry/project-learner.d.ts.map +1 -0
- package/dist/skill-registry/project-learner.js +176 -0
- package/dist/skill-registry/project-learner.js.map +1 -0
- package/dist/skill-registry/recommender.d.ts +25 -0
- package/dist/skill-registry/recommender.d.ts.map +1 -0
- package/dist/skill-registry/recommender.js +91 -0
- package/dist/skill-registry/recommender.js.map +1 -0
- package/dist/skill-registry/registry.d.ts +49 -0
- package/dist/skill-registry/registry.d.ts.map +1 -0
- package/dist/skill-registry/registry.js +160 -0
- package/dist/skill-registry/registry.js.map +1 -0
- package/dist/skill-registry/scanner.d.ts +36 -0
- package/dist/skill-registry/scanner.d.ts.map +1 -0
- package/dist/skill-registry/scanner.js +122 -0
- package/dist/skill-registry/scanner.js.map +1 -0
- package/dist/skill-registry/skills-config.d.ts +29 -0
- package/dist/skill-registry/skills-config.d.ts.map +1 -0
- package/dist/skill-registry/skills-config.js +86 -0
- package/dist/skill-registry/skills-config.js.map +1 -0
- package/dist/storage/index.d.ts +31 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +2 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/storage/sqlite.d.ts +58 -0
- package/dist/storage/sqlite.d.ts.map +1 -0
- package/dist/storage/sqlite.js +375 -0
- package/dist/storage/sqlite.js.map +1 -0
- package/dist/tests/claude-api.test.d.ts +2 -0
- package/dist/tests/claude-api.test.d.ts.map +1 -0
- package/dist/tests/claude-api.test.js +96 -0
- package/dist/tests/claude-api.test.js.map +1 -0
- package/dist/tests/conversational-config-handler.test.d.ts +2 -0
- package/dist/tests/conversational-config-handler.test.d.ts.map +1 -0
- package/dist/tests/conversational-config-handler.test.js +107 -0
- package/dist/tests/conversational-config-handler.test.js.map +1 -0
- package/dist/tests/doc-sync.test.d.ts +2 -0
- package/dist/tests/doc-sync.test.d.ts.map +1 -0
- package/dist/tests/doc-sync.test.js +148 -0
- package/dist/tests/doc-sync.test.js.map +1 -0
- package/dist/tests/orchestration-config.test.d.ts +2 -0
- package/dist/tests/orchestration-config.test.d.ts.map +1 -0
- package/dist/tests/orchestration-config.test.js +122 -0
- package/dist/tests/orchestration-config.test.js.map +1 -0
- package/dist/tests/pipeline-options.test.d.ts +2 -0
- package/dist/tests/pipeline-options.test.d.ts.map +1 -0
- package/dist/tests/pipeline-options.test.js +68 -0
- package/dist/tests/pipeline-options.test.js.map +1 -0
- package/dist/tests/resume-context-gen.test.d.ts +2 -0
- package/dist/tests/resume-context-gen.test.d.ts.map +1 -0
- package/dist/tests/resume-context-gen.test.js +93 -0
- package/dist/tests/resume-context-gen.test.js.map +1 -0
- package/dist/tests/sqlite.test.d.ts +2 -0
- package/dist/tests/sqlite.test.d.ts.map +1 -0
- package/dist/tests/sqlite.test.js +154 -0
- package/dist/tests/sqlite.test.js.map +1 -0
- package/dist/tests/tracker.test.d.ts +2 -0
- package/dist/tests/tracker.test.d.ts.map +1 -0
- package/dist/tests/tracker.test.js +75 -0
- package/dist/tests/tracker.test.js.map +1 -0
- package/dist/tests/tui.test.d.ts +2 -0
- package/dist/tests/tui.test.d.ts.map +1 -0
- package/dist/tests/tui.test.js +39 -0
- package/dist/tests/tui.test.js.map +1 -0
- package/dist/tests/user-prompt-handler.test.d.ts +2 -0
- package/dist/tests/user-prompt-handler.test.d.ts.map +1 -0
- package/dist/tests/user-prompt-handler.test.js +182 -0
- package/dist/tests/user-prompt-handler.test.js.map +1 -0
- package/dist/tui/index.d.ts +2 -0
- package/dist/tui/index.d.ts.map +1 -0
- package/dist/tui/index.js +486 -0
- package/dist/tui/index.js.map +1 -0
- package/dist/types/event.d.ts +24 -0
- package/dist/types/event.d.ts.map +1 -0
- package/dist/types/event.js +2 -0
- package/dist/types/event.js.map +1 -0
- package/dist/types/index.d.ts +3 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/session.d.ts +11 -0
- package/dist/types/session.d.ts.map +1 -0
- package/dist/types/session.js +2 -0
- package/dist/types/session.js.map +1 -0
- package/dist/utils/claude-api.d.ts +49 -0
- package/dist/utils/claude-api.d.ts.map +1 -0
- package/dist/utils/claude-api.js +233 -0
- package/dist/utils/claude-api.js.map +1 -0
- package/dist/utils/formatter.d.ts +57 -0
- package/dist/utils/formatter.d.ts.map +1 -0
- package/dist/utils/formatter.js +109 -0
- package/dist/utils/formatter.js.map +1 -0
- package/dist/utils/logger.d.ts +25 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +136 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/mutex-lock.d.ts +23 -0
- package/dist/utils/mutex-lock.d.ts.map +1 -0
- package/dist/utils/mutex-lock.js +42 -0
- package/dist/utils/mutex-lock.js.map +1 -0
- package/dist/utils/truncate.d.ts +30 -0
- package/dist/utils/truncate.d.ts.map +1 -0
- package/dist/utils/truncate.js +64 -0
- package/dist/utils/truncate.js.map +1 -0
- package/package.json +63 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Claude Forge Contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,505 @@
|
|
|
1
|
+
# Claude Forge
|
|
2
|
+
|
|
3
|
+
SDLC 智能编排引擎 — 透明旁听 Claude Code 对话,让 Claude 越用越聪明。
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 核心功能
|
|
8
|
+
|
|
9
|
+
- **意图识别**:自动分析每条指令的复杂度,决定走直接执行还是多阶段编排
|
|
10
|
+
- **技能编排**:根据意图自动匹配并注入高质量技能(TDD、调试、重构、代码审查等)
|
|
11
|
+
- **Team 模式**:复杂任务自动启动并行 Agent 分解——需求分析、代码搜索、方案规划三路并发,再汇总执行
|
|
12
|
+
- **Pipeline 编排**:复杂任务自动拆解为 analyze → design → code → test → review 五阶段
|
|
13
|
+
- **质量门禁**:Pipeline 模式下每次代码修改后自动触发 AI 审查
|
|
14
|
+
- **会话蒸馏**:将对话中的决策和时间线自动提炼为 `decisions.md` 和 `timeline.md`
|
|
15
|
+
- **上下文续接**:会话中断后,下次打开自动恢复上次工作状态
|
|
16
|
+
- **结构化事件日志**:所有 Hook 事件按项目分类写入 `events.jsonl`,支持 `claude-forge logs` 实时查看
|
|
17
|
+
- **CLAUDE.md 优化**:根据积累的决策日志自动优化项目规范文件,支持多语言生态子模块扫描
|
|
18
|
+
- **用户画像**:根据行为自适应调整干预深度(guided / balanced / autonomous)
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## 快速开始
|
|
23
|
+
|
|
24
|
+
### 前置条件
|
|
25
|
+
|
|
26
|
+
- Node.js 18+
|
|
27
|
+
- Claude Code CLI 已安装
|
|
28
|
+
- Anthropic API Key
|
|
29
|
+
|
|
30
|
+
### 安装
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
cd claude-forge
|
|
34
|
+
npm install
|
|
35
|
+
npm run build
|
|
36
|
+
|
|
37
|
+
# 可选:全局链接,之后可直接使用 claude-forge 命令
|
|
38
|
+
npm link
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### 初始化
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
claude-forge init
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
`init` 会完成:
|
|
48
|
+
1. 创建 `~/.claude-forge/` 数据目录
|
|
49
|
+
2. 生成默认配置 `~/.claude-forge/config.yaml`
|
|
50
|
+
3. 安装 Hook 脚本到 `~/.claude-forge/hooks/`
|
|
51
|
+
4. 注册 Hook 到 `~/.claude/settings.json`
|
|
52
|
+
|
|
53
|
+
> 初始化后需要重启 Claude Code 会话,Hook 才会生效。
|
|
54
|
+
|
|
55
|
+
### 启动守护进程
|
|
56
|
+
|
|
57
|
+
#### 方式一:交互式菜单(推荐)
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
./forge
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
首次运行自动引导初始化,之后显示交互式菜单。也可以直接传参数:
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
./forge start # 启动
|
|
67
|
+
./forge stop # 停止
|
|
68
|
+
./forge restart # 重启
|
|
69
|
+
./forge status # 查看状态
|
|
70
|
+
./forge logs # 查看日志
|
|
71
|
+
./forge sessions # 查看会话
|
|
72
|
+
./forge distill # 手动蒸馏
|
|
73
|
+
./forge backup # 备份数据
|
|
74
|
+
./forge config # 配置 API
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
#### 方式二:CLI 命令
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
claude-forge daemon start # 后台启动
|
|
81
|
+
claude-forge daemon start --foreground # 前台启动(调试用)
|
|
82
|
+
claude-forge daemon stop
|
|
83
|
+
claude-forge daemon status
|
|
84
|
+
claude-forge daemon restart
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### 验证运行
|
|
88
|
+
|
|
89
|
+
启动守护进程后,正常使用 Claude Code 即可。发一条消息,观察 Claude 回复前是否出现执行路径卡片:
|
|
90
|
+
|
|
91
|
+
```
|
|
92
|
+
┏━━━ Forge 执行路径 ━━━
|
|
93
|
+
┃ 🎯 意图:重构认证模块(复杂度:complex)
|
|
94
|
+
┃ 🛤️ 路径:编排流程
|
|
95
|
+
┃ 📋 计划:analyze → design → code → test → review
|
|
96
|
+
┃ ⏱️ 预估:30-45分钟
|
|
97
|
+
┗━━━━━━━━━━━━━━━━━━━━
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
也可以实时查看日志:
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
tail -f ~/.claude-forge/daemon.log | grep "\[Forge:"
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## API Key 配置
|
|
109
|
+
|
|
110
|
+
Forge 自动从以下位置获取 API Key(优先级从高到低):
|
|
111
|
+
|
|
112
|
+
1. 环境变量 `ANTHROPIC_AUTH_TOKEN`
|
|
113
|
+
2. 环境变量 `ANTHROPIC_API_KEY`
|
|
114
|
+
3. 配置文件 `~/.claude-forge/config.yaml` 中的 `distill.api_key`(已废弃,存在泄露风险)
|
|
115
|
+
|
|
116
|
+
**推荐做法**:通过 shell profile 设置环境变量,避免明文写入配置文件:
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
# 添加到 ~/.zshrc 或 ~/.bashrc
|
|
120
|
+
export ANTHROPIC_API_KEY="sk-ant-..."
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
如果你的环境已经配置了 Claude Code,API Key 会自动生效。如需使用自定义 API 端点(如代理服务),通过 `./forge config` 配置 `base_url`。
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
|
|
127
|
+
## 工作原理
|
|
128
|
+
|
|
129
|
+
### 事件流
|
|
130
|
+
|
|
131
|
+
```
|
|
132
|
+
用户输入
|
|
133
|
+
↓
|
|
134
|
+
Hook 脚本(bash)发送 JSON 事件到 Unix Socket
|
|
135
|
+
↓
|
|
136
|
+
守护进程接收 → 解析 → 分发到对应 Handler → 写入 events.jsonl
|
|
137
|
+
↓
|
|
138
|
+
UserPromptHandler → 意图分析 + 技能关键词更新 + Team 模式注入
|
|
139
|
+
PreToolUseHandler → 技能推荐注入 + Pipeline 阶段指令
|
|
140
|
+
PostToolUseHandler → 质量门禁 + Pipeline 进度跟踪 + 命中率记录
|
|
141
|
+
StopHandler → 蒸馏 + 续接快照 + 技能进化 + CLAUDE.md 自动更新
|
|
142
|
+
↓
|
|
143
|
+
HookResponse(allow + additionalContext)返回给 Claude Code
|
|
144
|
+
↓
|
|
145
|
+
Claude 读取 additionalContext,按指令执行
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
### 关键路径
|
|
149
|
+
|
|
150
|
+
| 路径 | 说明 |
|
|
151
|
+
|------|------|
|
|
152
|
+
| `~/.claude-forge/daemon.sock` | Unix Socket 通信 |
|
|
153
|
+
| `~/.claude-forge/data.db` | SQLite 数据库 |
|
|
154
|
+
| `~/.claude-forge/config.yaml` | 配置文件 |
|
|
155
|
+
| `~/.claude-forge/daemon.log` | 守护进程日志 |
|
|
156
|
+
| `~/.claude-forge/events.jsonl` | 结构化事件日志(JSONL 格式,按项目分类) |
|
|
157
|
+
| `~/.claude-forge/orchestration-config.json` | 技能编排关键词映射 |
|
|
158
|
+
| `~/.claude-forge/knowledge/` | 知识库文件 |
|
|
159
|
+
| `{project}/.claude-forge/decisions.md` | 项目决策日志 |
|
|
160
|
+
| `{project}/.claude-forge/timeline.md` | 项目时间线 |
|
|
161
|
+
| `{project}/.claude/CLAUDE.md` | 续接上下文注入点 |
|
|
162
|
+
|
|
163
|
+
### 日志标签
|
|
164
|
+
|
|
165
|
+
| 标签 | 模块 |
|
|
166
|
+
|------|------|
|
|
167
|
+
| `[Forge:意图]` | 意图分析 |
|
|
168
|
+
| `[Forge:知识库]` | 知识库搜索 |
|
|
169
|
+
| `[Forge:Pipeline]` | Pipeline 编排 |
|
|
170
|
+
| `[Forge:处理器]` | 通用 Handler |
|
|
171
|
+
| `[Forge:编排]` | 技能编排匹配 |
|
|
172
|
+
| `[Forge:技能]` | 技能推荐 |
|
|
173
|
+
| `[Forge:质量门禁]` | 质量门禁审查 |
|
|
174
|
+
| `[Forge:蒸馏]` | 蒸馏触发 |
|
|
175
|
+
| `[Forge:画像]` | 用户画像 |
|
|
176
|
+
| `[Forge:团队]` | Team 模式并行 Agent 分解 |
|
|
177
|
+
| `[Forge:决策]` | 决策历史注入与去重 |
|
|
178
|
+
| `[Forge:预算]` | 上下文预算分配 |
|
|
179
|
+
| `[进化器]` | 技能进化 |
|
|
180
|
+
|
|
181
|
+
---
|
|
182
|
+
|
|
183
|
+
## CLI 命令参考
|
|
184
|
+
|
|
185
|
+
### daemon — 守护进程管理
|
|
186
|
+
|
|
187
|
+
```bash
|
|
188
|
+
claude-forge daemon start [-f] # 启动(-f 前台模式)
|
|
189
|
+
claude-forge daemon stop # 停止
|
|
190
|
+
claude-forge daemon status # 查看状态
|
|
191
|
+
claude-forge daemon restart # 重启
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
### skill — 技能管理
|
|
195
|
+
|
|
196
|
+
```bash
|
|
197
|
+
claude-forge skill list # 列出所有技能
|
|
198
|
+
claude-forge skill search <query> # 搜索技能
|
|
199
|
+
claude-forge skill install <url> # 从 URL 安装技能
|
|
200
|
+
claude-forge skill evolve # 触发技能进化(淘汰低质量、生成项目专属)
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
### profile — 用户画像
|
|
204
|
+
|
|
205
|
+
```bash
|
|
206
|
+
claude-forge profile show # 查看当前画像
|
|
207
|
+
claude-forge profile init # 冷启动初始化(从现有数据推断)
|
|
208
|
+
claude-forge profile set # 更新画像字段
|
|
209
|
+
claude-forge profile reset # 重置为默认值
|
|
210
|
+
claude-forge profile export # 导出画像文件
|
|
211
|
+
claude-forge profile evolve # AI 分析行为日志,自动进化画像
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
`profile init` / `profile set` 支持的选项:
|
|
215
|
+
|
|
216
|
+
| 选项 | 说明 |
|
|
217
|
+
|------|------|
|
|
218
|
+
| `--role <role>` | 角色(如 backend / frontend / fullstack) |
|
|
219
|
+
| `--level <level>` | 经验水平(junior / mid / senior) |
|
|
220
|
+
| `--style <style>` | 工作风格(guided / balanced / autonomous) |
|
|
221
|
+
| `--stack <stack>` | 技术栈(逗号分隔) |
|
|
222
|
+
| `--infer`(仅 init)| 从现有数据自动推断 |
|
|
223
|
+
|
|
224
|
+
### distill — 手动蒸馏
|
|
225
|
+
|
|
226
|
+
```bash
|
|
227
|
+
claude-forge distill # 立即蒸馏
|
|
228
|
+
claude-forge distill -s <session-id> # 蒸馏指定会话
|
|
229
|
+
claude-forge distill -p <project-path> # 蒸馏指定项目
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
### logs — 事件日志查看
|
|
233
|
+
|
|
234
|
+
```bash
|
|
235
|
+
claude-forge logs # 查看最近事件
|
|
236
|
+
claude-forge logs -p <name> # 按项目名过滤
|
|
237
|
+
claude-forge logs -n <N> # 只看最后 N 条
|
|
238
|
+
claude-forge logs -l <level> # 按日志级别过滤
|
|
239
|
+
claude-forge logs -e <event-type> # 按事件类型过滤
|
|
240
|
+
claude-forge logs --since <time> # 查看指定时间之后的日志
|
|
241
|
+
claude-forge logs -f # 实时跟踪(follow)
|
|
242
|
+
claude-forge logs --daemon # 只看守护进程日志
|
|
243
|
+
claude-forge logs --compact # 紧凑格式
|
|
244
|
+
claude-forge logs --raw # 原始 JSON 输出
|
|
245
|
+
claude-forge logs --projects # 列出所有有日志的项目名
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
### query — 数据查询
|
|
249
|
+
|
|
250
|
+
```bash
|
|
251
|
+
claude-forge query stats # 统计信息
|
|
252
|
+
claude-forge query sessions # 会话列表(支持 -p / -s / -l)
|
|
253
|
+
claude-forge query events # 事件列表(支持 -s / -t / --from / --to / -l)
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
### config — 配置管理
|
|
257
|
+
|
|
258
|
+
```bash
|
|
259
|
+
claude-forge config show # 查看当前配置
|
|
260
|
+
claude-forge config set <key> <value> # 设置配置项(支持嵌套键,如 distill.api_key)
|
|
261
|
+
claude-forge config reset # 重置为默认值
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
### backup — 备份与恢复
|
|
265
|
+
|
|
266
|
+
```bash
|
|
267
|
+
claude-forge backup # 创建备份
|
|
268
|
+
claude-forge backup -e # 加密备份
|
|
269
|
+
claude-forge backup -o <path> # 指定输出路径
|
|
270
|
+
claude-forge restore <file> # 从备份恢复(默认策略:merge)
|
|
271
|
+
claude-forge restore <file> -s overwrite # 覆盖恢复
|
|
272
|
+
claude-forge export -p <project> # 导出指定项目数据
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
### claudemd — CLAUDE.md 管理
|
|
276
|
+
|
|
277
|
+
```bash
|
|
278
|
+
claude-forge claudemd detect # 检测项目技术栈(无需 API)
|
|
279
|
+
claude-forge claudemd init # 生成项目级 CLAUDE.md
|
|
280
|
+
claude-forge claudemd init -m # 生成模块级 CLAUDE.md(继承父项目规范)
|
|
281
|
+
claude-forge claudemd init -f # 强制重新生成(覆盖已有)
|
|
282
|
+
claude-forge claudemd init -f --reset # 完全重置(丢弃用户内容)
|
|
283
|
+
claude-forge claudemd scan # 扫描并批量生成所有子模块的 CLAUDE.md
|
|
284
|
+
claude-forge claudemd refine # 基于蒸馏数据手动触发 CLAUDE.md 细化
|
|
285
|
+
claude-forge claudemd show # 查看当前 CLAUDE.md 内容
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
所有子命令支持 `-p, --project <path>` 指定项目路径(默认 `cwd`)。
|
|
289
|
+
|
|
290
|
+
#### 业务模块配置(.forge-modules.yaml)
|
|
291
|
+
|
|
292
|
+
`claudemd scan` 默认通过语言标记文件(`package.json`、`go.mod` 等)自动识别子模块。对于没有构建系统的业务功能模块(如 `services/user`、`modules/payment`),可以用 `claudemd modules` 手动配置:
|
|
293
|
+
|
|
294
|
+
```bash
|
|
295
|
+
claude-forge claudemd modules show # 查看当前配置
|
|
296
|
+
claude-forge claudemd modules add-root services # services/ 下每个子目录视为独立模块
|
|
297
|
+
claude-forge claudemd modules add-dir infrastructure/k8s # 将具体路径注册为独立模块
|
|
298
|
+
claude-forge claudemd modules skip legacy # 扫描时跳过该目录
|
|
299
|
+
claude-forge claudemd modules remove root services # 移除配置项(root | dir | skip)
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
配置写入项目根目录的 `.forge-modules.yaml`,`claudemd scan` 自动读取,三类配置结果自动去重合并。
|
|
303
|
+
|
|
304
|
+
### 其他
|
|
305
|
+
|
|
306
|
+
```bash
|
|
307
|
+
claude-forge init # 初始化(注册 Hook)
|
|
308
|
+
claude-forge uninit # 卸载(移除 Hook,数据保留)
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
---
|
|
312
|
+
|
|
313
|
+
## 配置说明
|
|
314
|
+
|
|
315
|
+
配置文件位于 `~/.claude-forge/config.yaml`,所有选项均可通过 `CLAUDE_FORGE_*` 环境变量覆盖。
|
|
316
|
+
|
|
317
|
+
```yaml
|
|
318
|
+
# 存储
|
|
319
|
+
storage:
|
|
320
|
+
path: ~/.claude-forge/data.db
|
|
321
|
+
max_size_mb: 1024
|
|
322
|
+
|
|
323
|
+
# 蒸馏
|
|
324
|
+
distill:
|
|
325
|
+
auto_trigger: true
|
|
326
|
+
event_threshold: 20 # 触发蒸馏的事件数阈值
|
|
327
|
+
timer_interval_minutes: 5
|
|
328
|
+
model: claude-sonnet-4-6
|
|
329
|
+
api_key: "" # 留空自动从环境变量获取
|
|
330
|
+
base_url: "" # 自定义 API 端点(留空使用官方)
|
|
331
|
+
|
|
332
|
+
# 会话续接
|
|
333
|
+
resume:
|
|
334
|
+
enabled: true
|
|
335
|
+
timeout_minutes: 10
|
|
336
|
+
max_age_days: 7
|
|
337
|
+
|
|
338
|
+
# 备份
|
|
339
|
+
backup:
|
|
340
|
+
include_profile: false
|
|
341
|
+
encrypt_by_default: false
|
|
342
|
+
|
|
343
|
+
# CLAUDE.md 自动生成
|
|
344
|
+
claudemd:
|
|
345
|
+
auto_generate: true
|
|
346
|
+
auto_refine: true
|
|
347
|
+
refine_interval: 3 # 每 N 次蒸馏优化一次
|
|
348
|
+
|
|
349
|
+
# Autopilot(意图识别 + 技能编排)
|
|
350
|
+
autopilot:
|
|
351
|
+
enabled: true
|
|
352
|
+
intent_analysis: true
|
|
353
|
+
knowledge_search: true
|
|
354
|
+
quality_gate: true
|
|
355
|
+
quality_review_interval: 3 # 每 N 次代码修改触发一次审查
|
|
356
|
+
knowledge_max_age_days: 90
|
|
357
|
+
auto_start_pipeline: true
|
|
358
|
+
pipeline_confirm_mode: prompt # prompt | auto | preview
|
|
359
|
+
```
|
|
360
|
+
|
|
361
|
+
### pipeline_confirm_mode 说明
|
|
362
|
+
|
|
363
|
+
| 值 | 行为 |
|
|
364
|
+
|----|------|
|
|
365
|
+
| `prompt` | 展示 A/B/C 选项,等待用户选择(默认) |
|
|
366
|
+
| `auto` | 自动启动完整编排,无需确认 |
|
|
367
|
+
| `preview` | 仅展示执行卡片,不启动 Pipeline |
|
|
368
|
+
|
|
369
|
+
---
|
|
370
|
+
|
|
371
|
+
## 意图识别
|
|
372
|
+
|
|
373
|
+
| 复杂度 | 条件 | 是否走 Pipeline |
|
|
374
|
+
|--------|------|----------------|
|
|
375
|
+
| simple | 查询、git 操作、无代码改动 | 否 |
|
|
376
|
+
| moderate | 1-5 个文件改动、范围明确 | 否 |
|
|
377
|
+
| complex | 6+ 文件、架构变更、范围不清 | 是 |
|
|
378
|
+
|
|
379
|
+
---
|
|
380
|
+
|
|
381
|
+
## Pipeline 编排
|
|
382
|
+
|
|
383
|
+
意图分析判断为 `complex` 时,Forge 展示三种方案:
|
|
384
|
+
|
|
385
|
+
```
|
|
386
|
+
A. 完整编排(推荐)— analyze → design → code → test → review
|
|
387
|
+
B. 快速编排 — design → code → test
|
|
388
|
+
C. 手动控制 — 不使用自动编排
|
|
389
|
+
```
|
|
390
|
+
|
|
391
|
+
Pipeline 运行期间,每次代码修改后自动触发质量门禁审查(spec / security / quality / test / performance)。
|
|
392
|
+
|
|
393
|
+
---
|
|
394
|
+
|
|
395
|
+
## Team 模式
|
|
396
|
+
|
|
397
|
+
同时满足以下条件时自动启用:复杂度为 `complex`、预估文件 > 5、需要 Pipeline。
|
|
398
|
+
|
|
399
|
+
启用后要求 Claude 并行启动三个子 Agent:
|
|
400
|
+
|
|
401
|
+
| 子 Agent | 职责 |
|
|
402
|
+
|----------|------|
|
|
403
|
+
| Agent A — 需求分析 | 分析核心功能点、边界条件、验收标准 |
|
|
404
|
+
| Agent B — 代码库搜索 | 定位相关文件、测试和可复用组件 |
|
|
405
|
+
| Agent C — 方案规划 | 制定文件改动清单和分阶段实现步骤 |
|
|
406
|
+
|
|
407
|
+
> Team 模式仅在 `pipeline_confirm_mode: auto` 或 `interventionLevel: auto` 时触发。
|
|
408
|
+
|
|
409
|
+
---
|
|
410
|
+
|
|
411
|
+
## 用户画像
|
|
412
|
+
|
|
413
|
+
| work_style | 行为 |
|
|
414
|
+
|------------|------|
|
|
415
|
+
| `guided`(默认)| 提供建议和编排选项 |
|
|
416
|
+
| `balanced` | 根据经验水平和复杂度决定 |
|
|
417
|
+
| `autonomous` | 静默模式,不注入任何上下文 |
|
|
418
|
+
|
|
419
|
+
```bash
|
|
420
|
+
claude-forge profile set --style autonomous
|
|
421
|
+
```
|
|
422
|
+
|
|
423
|
+
---
|
|
424
|
+
|
|
425
|
+
## 开发
|
|
426
|
+
|
|
427
|
+
```bash
|
|
428
|
+
npm install
|
|
429
|
+
npm run test # 运行测试(Vitest)
|
|
430
|
+
npm run build # 构建(tsc)
|
|
431
|
+
npm run lint # 代码检查(ESLint)
|
|
432
|
+
npm run format:check # 格式检查(Prettier)
|
|
433
|
+
npx tsc --noEmit # 仅类型检查
|
|
434
|
+
```
|
|
435
|
+
|
|
436
|
+
Node.js 版本更换后需重新编译 native 模块:
|
|
437
|
+
|
|
438
|
+
```bash
|
|
439
|
+
npm rebuild better-sqlite3
|
|
440
|
+
```
|
|
441
|
+
|
|
442
|
+
---
|
|
443
|
+
|
|
444
|
+
## 技术栈
|
|
445
|
+
|
|
446
|
+
- TypeScript + Node.js 18+
|
|
447
|
+
- better-sqlite3(本地 SQLite 存储)
|
|
448
|
+
- @anthropic-ai/sdk(Claude API)
|
|
449
|
+
- Commander.js(CLI)
|
|
450
|
+
- Zod(配置校验)
|
|
451
|
+
- Vitest(测试)
|
|
452
|
+
|
|
453
|
+
---
|
|
454
|
+
|
|
455
|
+
## 常见问题
|
|
456
|
+
|
|
457
|
+
**Q: 守护进程没有启动,Claude Code 还能正常用吗?**
|
|
458
|
+
|
|
459
|
+
可以。Hook 脚本在守护进程不可用时会静默失败,不影响 Claude Code 正常使用。
|
|
460
|
+
|
|
461
|
+
**Q: 如何查看 Forge 是否在工作?**
|
|
462
|
+
|
|
463
|
+
```bash
|
|
464
|
+
claude-forge daemon status
|
|
465
|
+
tail -f ~/.claude-forge/daemon.log | grep "\[Forge:"
|
|
466
|
+
```
|
|
467
|
+
|
|
468
|
+
**Q: 重装 Node.js 后守护进程启动失败?**
|
|
469
|
+
|
|
470
|
+
```bash
|
|
471
|
+
npm rebuild better-sqlite3
|
|
472
|
+
```
|
|
473
|
+
|
|
474
|
+
**Q: 如何关闭某个功能?**
|
|
475
|
+
|
|
476
|
+
编辑 `~/.claude-forge/config.yaml`,例如关闭质量门禁:
|
|
477
|
+
|
|
478
|
+
```yaml
|
|
479
|
+
autopilot:
|
|
480
|
+
quality_gate: false
|
|
481
|
+
```
|
|
482
|
+
|
|
483
|
+
重启守护进程生效:`claude-forge daemon restart`
|
|
484
|
+
|
|
485
|
+
**Q: decisions.md 和 timeline.md 在哪里?**
|
|
486
|
+
|
|
487
|
+
```
|
|
488
|
+
your-project/
|
|
489
|
+
└── .claude-forge/
|
|
490
|
+
├── decisions.md
|
|
491
|
+
└── timeline.md
|
|
492
|
+
```
|
|
493
|
+
|
|
494
|
+
**Q: 如何完全卸载?**
|
|
495
|
+
|
|
496
|
+
```bash
|
|
497
|
+
claude-forge uninit # 移除 Hook(保留数据)
|
|
498
|
+
rm -rf ~/.claude-forge # 彻底清除数据
|
|
499
|
+
```
|
|
500
|
+
|
|
501
|
+
---
|
|
502
|
+
|
|
503
|
+
## License
|
|
504
|
+
|
|
505
|
+
MIT
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { IntentEngine, type IntentAnalysis, type IntentComplexity } from './intent-engine.js';
|
|
2
|
+
export { KnowledgeEngine, type KnowledgeEntry } from './knowledge-engine.js';
|
|
3
|
+
export { QualityGateEngine, type QualityResult, type QualityCheck, type QualityLevel } from './quality-gate.js';
|
|
4
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/autopilot/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,KAAK,cAAc,EAAE,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC9F,OAAO,EAAE,eAAe,EAAE,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC7E,OAAO,EAAE,iBAAiB,EAAE,KAAK,aAAa,EAAE,KAAK,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/autopilot/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA8C,MAAM,oBAAoB,CAAC;AAC9F,OAAO,EAAE,eAAe,EAAuB,MAAM,uBAAuB,CAAC;AAC7E,OAAO,EAAE,iBAAiB,EAA4D,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { ClaudeAPI } from '../utils/claude-api.js';
|
|
2
|
+
export type IntentComplexity = 'simple' | 'moderate' | 'complex';
|
|
3
|
+
export interface IntentAnalysis {
|
|
4
|
+
complexity: IntentComplexity;
|
|
5
|
+
requiresPipeline: boolean;
|
|
6
|
+
requirement: string;
|
|
7
|
+
reasoning: string;
|
|
8
|
+
estimatedFiles?: number;
|
|
9
|
+
suggestedPhases: string[];
|
|
10
|
+
clarifyQuestions?: string[];
|
|
11
|
+
searchKeywords?: string[];
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* IntentEngine — 意图识别引擎
|
|
15
|
+
*
|
|
16
|
+
* 所有用户输入都会拦截分析,根据项目实际情况判断:
|
|
17
|
+
* - simple: 纯对话、查看文件、运行命令等不涉及代码改动的操作 → 直接放行
|
|
18
|
+
* - moderate: 改动范围较小(少量文件) → 注入提示,不启动 Pipeline
|
|
19
|
+
* - complex: 改动范围大、需求不明确、需要任务拆分和质量管控 → 启动 Pipeline 编排
|
|
20
|
+
*/
|
|
21
|
+
export declare class IntentEngine {
|
|
22
|
+
private api;
|
|
23
|
+
/** 项目结构缓存,TTL=2min,避免每次分析都读文件系统 */
|
|
24
|
+
private structureCache;
|
|
25
|
+
/** decisions.md 内容缓存,TTL=2min */
|
|
26
|
+
private decisionsCache;
|
|
27
|
+
private static readonly CACHE_TTL_MS;
|
|
28
|
+
constructor(api: ClaudeAPI);
|
|
29
|
+
/**
|
|
30
|
+
* 分析用户输入的意图和复杂度
|
|
31
|
+
*/
|
|
32
|
+
analyze(userPrompt: string, projectPath: string, techStack?: string): Promise<IntentAnalysis>;
|
|
33
|
+
/**
|
|
34
|
+
* 快速放行:只过滤明确不涉及代码改动的操作
|
|
35
|
+
*/
|
|
36
|
+
private quickFilter;
|
|
37
|
+
/**
|
|
38
|
+
* AI 分析意图(带项目上下文)
|
|
39
|
+
*/
|
|
40
|
+
private aiAnalyze;
|
|
41
|
+
/**
|
|
42
|
+
* 获取项目结构摘要(给 AI 提供上下文)
|
|
43
|
+
*/
|
|
44
|
+
private getProjectStructure;
|
|
45
|
+
/**
|
|
46
|
+
* 降级分析:AI 不可用时的保底策略
|
|
47
|
+
* 默认倾向 moderate,让用户自己决定是否需要编排
|
|
48
|
+
*/
|
|
49
|
+
private fallbackAnalyze;
|
|
50
|
+
private parseAnalysis;
|
|
51
|
+
/**
|
|
52
|
+
* 读取项目蒸馏产出的 decisions.md 作为上下文(最近 500 字符)
|
|
53
|
+
*/
|
|
54
|
+
private readDecisionsContext;
|
|
55
|
+
/**
|
|
56
|
+
* 生成注入给 Claude Code 的编排指令
|
|
57
|
+
*/
|
|
58
|
+
generateDirective(analysis: IntentAnalysis): string | null;
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=intent-engine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"intent-engine.d.ts","sourceRoot":"","sources":["../../src/autopilot/intent-engine.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAGnD,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;AAEjE,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,gBAAgB,CAAC;IAC7B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED;;;;;;;GAOG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,GAAG,CAAY;IACvB,mCAAmC;IACnC,OAAO,CAAC,cAAc,CAAyD;IAC/E,iCAAiC;IACjC,OAAO,CAAC,cAAc,CAAyD;IAC/E,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAiB;gBAEzC,GAAG,EAAE,SAAS;IAI1B;;OAEG;IACG,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAiBnG;;OAEG;IACH,OAAO,CAAC,WAAW;IA2DnB;;OAEG;YACW,SAAS;IAqEvB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAiD3B;;;OAGG;IACH,OAAO,CAAC,eAAe;IAyBvB,OAAO,CAAC,aAAa;IAuBrB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAiB5B;;OAEG;IACH,iBAAiB,CAAC,QAAQ,EAAE,cAAc,GAAG,MAAM,GAAG,IAAI;CAsB3D"}
|